Systèmes de stockage et NAS
Résumé succinct
Le stockage est une combinaison de médias (SSD/NVMe/HDD), de réseaux (Ethernet/IB/FC), de protocoles (NFS/SMB/iSCSI/S3) et de logiciels (ZFS, Ceph, NetApp, TrueNAS, etc.) qui garantissent les performances, la fiabilité, la sécurité et l'économie. Le bon choix dépend du profil I/O (rand/séquentiel, bloc/fichier/objet), des exigences RPO/RTO et SLO en termes de latence/bande passante.
Taxonomie des entrepôts
DAS (Direct Attached Storage) : Disques à côté du serveur. Latence minimale, il n'y a pas de gorge de bouteille en réseau, mais il est plus difficile de partager les ressources.
SAN (Storage Area Network) : Stockage par blocs selon FC/iSCSI/NVMe-oF. Performances élevées, LUN partagés, gestion centralisée.
NAS (Network Attached Storage) - boules de fichiers NFS/SMB. Pratique pour les répertoires généraux, les logs, les artefacts, le contenu multimédia.
Stockage objet - API S3 compatibles (Ceph RGW/MinIO/cloud). Pour les backaps, les logs, les archives, les médias, les artefacts modèles.
Solutions hyperconvergées (HCI) : Combinent calcul et stockage (Ceph, vSAN, StarWind, etc.) pour une échelle horizontale.
Protocoles d'accès
Fichiers :- NFSv3/v4 - environnement Unix/Posix, statful-lock, Kerberos/KRB5i/KRB5p.
- SMB 3. x - Windows/domaines AD, cryptage/signatures, multichannel, DFS.
- iSCSI - sur Ethernet, LUN, de nombreux chemins (MPIO), pratique pour la virtualisation/OBD.
- FC/NVMe-oF - faible latence, usines/cartes spécialisées.
- S3 API - versions des objets, lifecycle, WORM/Compliance mode, multipart upload.
- OBD/virtualiseurs → bloc (iSCSI/NVMe-oF).
- Dossiers communs/artefacts CI → NFS/SMB.
- Logi/backup/media/model → objet compatible S3.
Données et codage : RAID, ZFS, Erasure Coding
RAID
RAID1/10 - faible latence et IOPS/rand-lecture/écriture.
RAID5/6 est une économie de capacité, mais une amende d'écriture (write penalty).
ZFS : Copie-sur-écriture (CoW), pools et vdev, cache ARC/L2ARC, ZIL/SLOG pour les opérations de synchronisation, snapshots/répliques et intégrité intégrée (checksums).
Erasure Coding (EC) dans les systèmes distribués (Ceph/MinIO) : le code de Reed-Solomon "k + m'est une économie par rapport à trois fois la réplication avec une dégradation acceptable des performances par écriture.
- Charges aléatoires chaudes (métadonnées, petits fichiers) → mirrors RAID10/ZFS sur NVMe.
- Froid/archives → EC, gros HDD, caches agressifs.
- Pour les enregistrements sync (NFS export), le SLOG dédié aux NVMe (PLP) robustes et à faible latence.
Performances : IOPS, passe, latence
L'IOPS est important pour les petites opérations aléatoires (DB/métadonnées).
Bande passante - pour les fichiers volumineux (vidéos, backups).
La latence p95/p99 est critique pour les bases de données, les files d'attente, les API de cache.
Files d'attente et parallélisme : multithread sur le client, 'rsize/wsize' pour NFS, 'rw, queue _ depth' pour iSCSI.
Réseau : 25/40/100 GbE (ou IB) + RSS/RPS, jumbo MTU à l'intérieur du centre de données.
Mise en cache et tonte
ARC/L2ARC (ZFS) - RAM et cache de lecture NVMe ; SLOG est un journal d'enregistrements sync.
Cache Write-back/Write-through des contrôleurs - attention, seulement avec batterie/supercondensateur (BBU/PLP).
Tiering : NVMe (chaud) → SSD (chaud) → HDD (froid) → objet (archive). Politiques de migration et lifecycle.
Snapshots, clones, réplication, DR
Snapshots (CoW) : points instantanés de retour/backup ; stocker les catalogues « à l'intérieur » de l'entrepôt, et pas seulement dans l'hyperviseur.
Réplication : synchrone (RPO≈0, ci-dessus laticy), asynchrone (RPO = N min).
Clones : environnement économique dev/test.
Schémas DR : 3-2-1 (trois copies, deux types de supports, un hors site), exercices DR réguliers ; objectifs du RPO/RTO.
Sécurité, conformité et polyvalence
Authentification/autorisation : LDAP/AD, Kerberos/NTLMv2 pour SMB, AUTH_SYS/KRB pour NFSv4.
Isolation : VLAN/VRF, stratégies d'exportation, tenant-quotas/quotas.
Cryptage : au repos (LUKS/ZFS native/SED) et en vol (NFS-krb5p/SMB encryption/TLS pour S3).
WORM/Compliance pour les données juridiquement significatives (S3 Object Lock, SnapLock analogiques).
Audit : logs d'accès immuables, intégration avec SIEM.
Surveillance et SLO
Métriques :- Par pools/volumes : utilisation, 'p95/p99 latency', IOPS, throughput, queue depth, cache hit, write amplification.
- Par réseau : drops, retransmits, PPS, MTU mismatch.
- Par média : media errors, wear-level, température, SMART.
- Par réplication/snapshots : lag/age, succès des tâches, durée.
- Boule NFS pour CI : p95 latitude ≤ 3 ms, disponibilité ≥ 99. 95%.
- LUN pour OBD : p99 write ≤ 1. 5 ms, réplique synchrone dans la région ; RPO 0, RTO ≤ 5 min.
- Objet : p95 PUT ≤ 50 ms, p95 GET ≤ 30 ms, 11 × 9 durabilité (via EU/réplication).
- Remplissage du pool> 80/90/95 %, chute du cache hit, croissance du write-amp, dégradation du disque, débrayage du réseau, réplication> seuil.
Sauvegarde et archivage
Snapshots + réplique distante + backup séparé dans l'objet/bande.
Politiques de retraite : journalières/hebdomadaires/mensuelles.
Immutabilité : S3 Object Lock (Governance/Compliance), « air-gap » (bande/comptes désactivés).
Tests de récupération - régulièrement.
Modèles pratiques (minimum)
Exportation NFS (exemple)
/pool/projects 10. 0. 0. 0/16(rw,async,no_root_squash,sec=krb5p)
SMB partager (fragment smb. conf)
[media]
path = /pool/media read only = no vfs objects = acl_xattr, recycle ea support = yes kernel oplocks = no smb encrypt = required
ZFS : création de pool et dataset
bash zpool create tank mirror nvme0n1 nvme1n1 zfs set atime=off compression=lz4 tank zfs create tank/projects zfs set recordsize=1M tank/projects # большие файлы zfs set recordsize=16K tank/db # БД/мелкие I/O
iSCSI (idées)
Activer ALUA/MPIO, les délais corrects et queue depth sur les clients.
Disséminer les réseaux iSCSI et le trafic client, utiliser Jumbo MTU à l'intérieur de l'usine.
Planification de la capacité et des performances
Modèle working set (volume chaud) et taux de croissance (croissance mensuelle).
Stock IOPS et capacité de 30 à 50 % sous les pics et rebalance.
Tenez compte de l'amplification write (RAID/EC/CoW) et des métadonnées.
Pour l'objet, le coût des requêtes et du trafic sortant, les classes de stockage (standard/IA/glacier).
Opérations et mises à jour
Mises à jour rolling des contrôleurs/OS/firmware.
Scrubs/Resilver fenêtres et priorités.
Équilibrage des rebilds : limitation I/O à la récupération pour ne pas « tuer » la prod.
Runbooks sur la dégradation/perte de nœuds/réseaux.
Chèque d'implémentation
- Profil d'accès sélectionné : fichier/bloc/objet + RPO/RTO/SLO.
- Schéma de codage (RAID/ZFS/CE) sous charge et prix.
- Réseaux : VLAN/VRF séparés, MTU 9000 à l'intérieur de l'usine, MPIO/ALUA.
- Cache/tasing : ARC/L2ARC/SLOG ou mécanismes similaires.
- Snapshots/répliques/backup : horaires, immutabilité, exercices DR.
- Monitoring : pools/supports/réseaux/métriques de réplication, alertes.
- Accès/sécurité : ACL, Kerberos/AD, cryptage, audit.
- Quotas/limites pour les tenants et catalogues SLA/SLO.
- Documentation et runbooks, récupération de test.
Erreurs typiques
Débordement de pool> 80 % dans les systèmes ZFS/EC → une forte augmentation de la latence.
Un contrôleur/un réseau sans MPIO/redondance.
Les kits de travail chauds et froids sont mélangés dans la même classe de porteurs.
Pas de SLOG pour les charges de synchronisation NFS → des retards imprévisibles.
Les backups sont seulement « à l'intérieur » du même tableau/compte → perte en cas d'accident/compromission.
Pas de surveillance scrub et SMART régulières.
Ignorer les petits I/O patterns : grand 'recordsize' pour la base de données.
Spécificité pour iGaming/fintech
Systèmes OBD transactionnels et porte-monnaie : pools individuels NVMe, mirrors RAID10/ZFS, réplique synchrone vers la zone B, verrouillés indépendants.
Logs/événements bruts et antifrod fiches : objet + lifecycle + classes bon marché, index/vitrines - sur SSD.
Contenu et médias (fournisseurs) : NAS + CDN, cache agressif, déduplication.
Reporting et PII : WORM/immutabilité, cryptage, audit d'accès, géolocalisation des données.
Événements de pointe : cache warm-up, limites d'E/S, contrôle p99 laticy sur les pools.
Résultat
Un système de stockage fiable est une répartition correcte en classes (fichier/bloc/objet), un schéma de codage adéquat (RAID/ZFS/EC), un réseau rapide, un cache/tas, des snapshots + réplica + backap, des SLO durs et des opérations automatisées. En suivant ces principes, vous obtiendrez des performances prévisibles, une résilience élevée et une économie de stockage transparente, tout en respectant les exigences de sécurité et de réglementation.