💾 Storage Systems — Chapitre 4 : Interfaces, bus et protocoles physiques
Guide hyper-densifié sur la couche basse du stockage : SATA, SAS, PCIe/NVMe, Fibre Channel, Ethernet, USB, Thunderbolt, eSATA, câbles, connecteurs, latence, débit, files de commandes, topologies, zoning, fabrics, multipathing, risques physiques et critères de choix production.
SATA
Architecture AHCI, 6 Gb/s, câble point-à-point, NCQ, limites serveur, usages NAS et compatibility layer.
AHCINCQLegacySAS
Serial Attached SCSI, dual-port, expanders, multipath, 12G/24G, fiabilité enterprise et backplanes datacenter.
SCSIDual PortExpanderPCIe
Base physique du NVMe moderne : lanes, générations, switches, retimers, signal integrity, NUMA et CPU affinity.
NVMex4/x8/x16DMAFibre Channel
SAN enterprise à faible latence : WWN, zoning, fabric, ISL, NPIV, multipathing, isolation réseau et hautes vitesses.
SANFabricWWPNEthernet Storage
iSCSI, NFS, SMB, NVMe/TCP, NVMe/RDMA, Ceph, S3 et cloud storage sur IP.
TCP/IPRoCES3USB, Thunderbolt, eSATA
Stockage externe, workstation, backup local, DAS moderne, limites de fiabilité et pièges de connectique.
DASBackupExternalMatrice de choix
Comparatif synthétique : latence, débit, coût, disponibilité, scalabilité, compatibilité et dette technique.
DecisionArchitectureCâbles, connecteurs, backplanes
SFF, SlimSAS, U.2/U.3, M.2, EDSFF, DAC/AOC, fibre optique, cages, airflow et erreurs physiques.
SFFU.2EDSFFStack protocolaire
De l'application au disque : filesystem, block layer, driver, queue, HBA/NIC, fabric, target, LUN, namespace.
BlockFileObjectLatence & files de commandes
AHCI vs SCSI vs NVMe : profondeur de queue, interruptions, polling, CPU overhead, tail latency et QoS.
IOPSp99QoSRedondance & multipathing
MPIO, ALUA, ANA, chemins actifs/passifs, failover, zoning dual-fabric, tests de coupure.
HAMPIOANARunbooks production
Commandes Linux/Windows, fio, smartctl, nvme-cli, lsscsi, multipath, fc_host, ethtool, perf.
CLIDiagnosticsSécurité bas niveau
Zoning, LUN masking, CHAP, TLS, DMA, Thunderbolt security, rogue initiator et segmentation physique.
SecurityRiskCloud & hyperscale
Comment AWS/GCP/Azure abstraient PCIe, NVMe, Ethernet, Nitro-like offload, EBS, local SSD et object storage.
CloudNVMeObjectRéférences & normes
Liens utiles : SATA-IO, T10/T11, PCI-SIG, FCIA, SNIA, NVM Express, IEEE, USB-IF.
StandardsURLsPrincipe SATA
SATA est une liaison point-à-point historiquement pensée pour les disques grand public, postes de travail, petits serveurs et NAS. Un port SATA relie généralement un contrôleur hôte à un périphérique : HDD, SSD SATA ou lecteur optique. Sa grande force est le coût, la compatibilité et la simplicité ; sa faiblesse est l'absence native de dual-port enterprise, la profondeur de queue modeste et la latence de pile AHCI.
- SATA I : 1.5 Gb/s brut.
- SATA II : 3 Gb/s brut.
- SATA III : 6 Gb/s brut, environ 600 MB/s utiles selon overhead.
- Topologie : point-à-point, pas un fabric SAN.
Positionnement moderne
| Contexte | Apport SATA | Limite |
|---|---|---|
| NAS domestique / PME | Excellent coût par To | Pas de dual path natif |
| Serveur simple | Boot, logs, cache secondaire | Peu adapté aux workloads critiques |
| SSD SATA | Compatibilité universelle | Plafond à ~550 MB/s |
| Archivage HDD | Très économique | Pas optimisé pour haute disponibilité multi-chemin |
Débit, latence et vrai plafond
Le débit SATA III suffit encore largement à un HDD mécanique, mais bride fortement un SSD moderne. Dans un serveur, le problème principal n'est pas seulement le débit : c'est la profondeur de queue, la gestion des interruptions, l'absence de multipath natif et la faible densité de commandes parallèles par rapport à NVMe.
| Workload | SATA acceptable ? | Commentaire |
|---|---|---|
| Boot OS | Oui | Très courant, surtout si miroir RAID1. |
| Base OLTP lourde | Non | Préférer NVMe enterprise ou SAN. |
| Sauvegarde séquentielle | Oui | Le disque HDD est souvent le facteur limitant. |
| Virtualisation dense | Limité | Queue depth et latence p99 deviennent bloquantes. |
NCQ : Native Command Queuing
NCQ permet au disque de réordonner des commandes pour réduire les mouvements de tête sur HDD ou optimiser l'accès côté SSD. C'est utile, mais très loin de la philosophie NVMe qui expose des dizaines de milliers de files et commandes.
AHCI vs NVMe
| Critère | AHCI/SATA | NVMe/PCIe |
|---|---|---|
| Queues | 1 queue | Jusqu'à 65k queues |
| Commandes / queue | 32 | Jusqu'à 65k |
| Objectif initial | HDD | Flash / SSD |
| Latence stack | Plus élevée | Très faible |
Usage serveur et règles d'architecture
Boot RAID1, stockage froid, petit NAS, sauvegarde locale, repository offline.
Backplane grand public, absence de TLER/ERC côté disque, contrôleur sans cache protégé, câbles de mauvaise qualité.
Cluster critique, base transactionnelle lourde, haute disponibilité multi-chemin, virtualisation dense avec latence stricte.
| Erreur fréquente | Symptôme | Correction |
|---|---|---|
| Câble SATA fatigué | CRC errors, reset link | Remplacer câble, vérifier latch. |
| Disque SMR non adapté | Débits qui s'effondrent | Choisir CMR/NAS/Enterprise. |
| Contrôleur saturé | Latency spikes | Limiter queue, changer HBA. |
Diagnostics Linux / Windows
# Linux: identify SATA disks and link speed lsblk -o NAME,MODEL,SERIAL,ROTA,SIZE,TRAN sudo smartctl -a /dev/sdX sudo dmesg -T | egrep -i 'ata|sata|link|crc|reset' # Check SATA negotiated speed sudo smartctl -a /dev/sdX | egrep -i 'SATA Version|SATA' # Windows PowerShell Get-PhysicalDisk | Select FriendlyName,MediaType,BusType,HealthStatus,Size Get-StorageReliabilityCounter -PhysicalDisk (Get-PhysicalDisk)[0]
Pourquoi SAS existe
SAS reprend la richesse du protocole SCSI sur un lien série moderne. Il est conçu pour les serveurs : adressage robuste, commandes SCSI, dual-port, expanders, zoning de domaine SAS, meilleure intégration RAID/HBA et comportement plus prévisible sous panne.
SAS vs SATA
| Critère | SATA | SAS |
|---|---|---|
| Protocole | ATA/AHCI | SCSI sur serial |
| Dual-port natif | Non | Oui |
| Usage | Cost/capacity | Enterprise HA |
| Backplane dense | Possible | Conçu pour |
| Multipath | Non natif | Oui |
Dual-port, ALUA et chemins redondants
Un disque SAS enterprise peut exposer deux ports indépendants. Dans une baie, chaque contrôleur voit le disque par un chemin différent. C'est la base des architectures de stockage redondantes : maintenance contrôleur, panne câble, panne expander ou upgrade firmware sans perte d'accès.
| Concept | Description | Impact |
|---|---|---|
| Dual Port | Deux chemins physiques vers le même disque | Résilience |
| ALUA | Asymmetric Logical Unit Access | Chemin optimisé / non optimisé |
| Persistent Reservations | Verrouillage SCSI cluster | Cluster HA |
| SES | SCSI Enclosure Services | LED, slots, température, PSU |
Évolutions de débit
12G SAS reste très répandu en datacenter. 24G SAS vise les environnements où les SSD SAS doivent suivre les plateformes PCIe Gen4. Pour des latences extrêmes et un parallélisme maximal, NVMe/PCIe remplace souvent SAS sur les baies full-flash modernes ; mais SAS reste très fort pour les backplanes HDD denses et les environnements enterprise éprouvés.
Expanders SAS
Un expander est l'équivalent d'un switch interne SAS. Il permet de connecter beaucoup de disques à un nombre limité de ports HBA. Il peut être intégré dans un backplane de serveur, un JBOD ou une baie.
- Fan-out : beaucoup de disques derrière peu de ports.
- Domain SAS : topologie interne adressée.
- Oversubscription : possible si trop de disques rapides partagent trop peu de liens uplink.
- Firmware : élément critique, souvent négligé.
Risques
| Expander saturé | Débits instables sur rebuild ou backup. |
| Firmware ancien | Timeouts SCSI, disques qui disparaissent. |
| Backplane chaud | Erreurs lien, thermal throttling SSD. |
Diagnostics SAS
# Linux: list SCSI/SAS devices lsscsi -g sudo sg_map -i sudo sg_ses --page=0x2 /dev/sgX sudo smartctl -a -d scsi /dev/sdX # HBA / expander depending on vendor tools storcli /c0 show all storcli /c0/eall/sall show sas3ircu LIST sas3ircu 0 DISPLAY # Multipath multipath -ll multipathd show paths
Lanes, générations et bande passante
PCIe est un bus série point-à-point composé de lanes. Un SSD NVMe client utilise souvent x4 ; un HBA, une NIC 100/200/400G ou une carte GPU utilise x8/x16. Chaque génération double approximativement le débit brut par lane, mais la bande passante réellement exploitable dépend du protocole, de l'encodage, de la plateforme, du root complex, des switches et de la charge CPU.
| Génération | Débit par lane | x4 théorique | Usage stockage |
|---|---|---|---|
| PCIe 3.0 | 8 GT/s | ~3.94 GB/s | NVMe Gen3 |
| PCIe 4.0 | 16 GT/s | ~7.88 GB/s | Serveurs modernes, SSD enterprise |
| PCIe 5.0 | 32 GT/s | ~15.75 GB/s | NVMe haute perf, AI, DB |
| PCIe 6.0 | 64 GT/s | ~31.5 GB/s | Déploiements enterprise émergents |
NVMe : protocole natif flash
NVMe n'est pas seulement un SSD plus rapide : c'est un modèle d'I/O pensé pour la mémoire non volatile. Il réduit la profondeur logicielle, expose énormément de queues, limite les verrous globaux et s'aligne mieux avec les CPU multicœurs.
| Submission Queue | Queue où l'hôte dépose les commandes. |
| Completion Queue | Queue où le périphérique signale les réponses. |
| Doorbell | Mécanisme MMIO pour notifier le device. |
| Namespace | Unité logique exposée par un contrôleur NVMe. |
Flux simplifié
# NVMe namespaces and controllers nvme list nvme id-ctrl /dev/nvme0 nvme id-ns /dev/nvme0n1
Switches PCIe, bifurcation, retimers
Dans les serveurs denses, tous les SSD ne sont pas directement reliés au CPU. Des switches PCIe, retimers et backplanes permettent de multiplier les slots NVMe, mais ajoutent coût, complexité, consommation et points de panne.
| Élément | Rôle | Risque |
|---|---|---|
| PCIe Switch | Fan-out de lanes | Oversubscription, firmware |
| Retimer | Régénère le signal | Latence minime, compatibilité |
| Redriver | Renforce le signal | Moins intelligent qu'un retimer |
| Bifurcation | Découpe x16 en 4×x4 | Dépend BIOS/plateforme |
NUMA, CPU affinity et latence
Un SSD PCIe est attaché à un root complex, donc souvent à un socket CPU. Sur serveur bi-socket, accéder à un SSD attaché au socket opposé peut traverser l'interconnexion inter-CPU et ajouter de la latence. Pour les bases de données, moteurs de cache, logs haute fréquence ou NVMe-oF target, placer threads, IRQ et mémoire sur le bon NUMA node change fortement les p99/p999.
# Linux NUMA and PCI topology lspci -tv cat /sys/block/nvme0n1/device/numa_node numactl --hardware cat /proc/interrupts | grep nvme # Pin a benchmark to a NUMA node numactl --cpunodebind=0 --membind=0 fio job.fio
Diagnostics PCIe
# Link speed and width sudo lspci -vv -s 0000:xx:yy.z | egrep 'LnkCap|LnkSta' # AER errors sudo dmesg -T | egrep -i 'pcie|aer|corrected|uncorrected|nvme reset' # NVMe SMART and error log sudo nvme smart-log /dev/nvme0 sudo nvme error-log /dev/nvme0 sudo nvme get-log /dev/nvme0 --log-id=2 --log-len=512
Pourquoi Fibre Channel reste présent
Fibre Channel est conçu pour transporter du block storage SCSI dans un réseau dédié, avec une latence basse, une perte contrôlée et une isolation forte. Là où Ethernet doit souvent être configuré pour devenir prévisible, FC part d'un modèle SAN spécialisé : HBA, switches FC, WWPN, fabric login, zoning et multipathing.
- Initiator : HBA serveur.
- Target : ports contrôleurs baie.
- LUN : volume logique présenté au serveur.
- WWPN : identifiant port mondial.
Architecture type
Zoning + LUN Masking
La sécurité SAN se fait par couches. Le zoning limite quels WWPN peuvent se voir au niveau fabric. Le LUN masking côté baie décide quels volumes sont visibles par quels initiators. Les deux sont nécessaires : le zoning seul ne suffit pas, le masking seul expose trop le fabric.
| Couche | Contrôle | Bonne pratique |
|---|---|---|
| Fabric zoning | Switch FC | Single initiator zoning |
| LUN masking | Baie de stockage | Host group par cluster |
| Multipath | OS/Hyperviseur | Policy vendor-aware |
| Audit | CMDB / SAN tool | Tracer WWPN ↔ host |
Vitesses et générations
| Nom | Usage | Commentaire |
|---|---|---|
| 8GFC | Legacy encore visible | À moderniser si SAN actif. |
| 16GFC | Très répandu | Encore suffisant pour beaucoup de workloads. |
| 32GFC | Standard moderne | Bon compromis datacenter. |
| 64GFC | Haut débit | Baies modernes et consolidation. |
| 128GFC | Nouvelle génération | Produits en arrivée progressive. |
Dual fabric : règle d'or SAN
Un SAN sérieux évite le point unique de défaillance : deux fabrics totalement séparés, deux switches ou directors, deux HBA côté serveur, deux chemins vers chaque contrôleur de baie. Les ISL doivent être dimensionnés, mais il faut éviter de mélanger Fabric A et Fabric B.
| Test | Attendu |
|---|---|
| Débrancher HBA A | I/O continue via HBA B |
| Reboot switch Fabric A | Pas d'arrêt applicatif |
| Masquer un target port | Chemins réduits, volume toujours online |
Diagnostics Fibre Channel
# Linux FC hosts ls /sys/class/fc_host/ cat /sys/class/fc_host/host*/port_name cat /sys/class/fc_host/host*/port_state cat /sys/class/fc_host/host*/speed # Rescan SCSI for h in /sys/class/scsi_host/host*; do echo "- - -" | sudo tee $h/scan; done # Multipath view multipath -ll multipathd show paths # Vendor tools examples systool -c fc_host -v sanlun lun show
Ethernet est devenu le bus universel du stockage distribué
Ethernet transporte aujourd'hui du block, du file, de l'object et du NVMe-oF. L'avantage : coût, standardisation, scalabilité, exploitation réseau connue. Le risque : latence variable, congestion, mauvaise QoS, jumbo frames incohérentes, pertes microburst et dépendance au design réseau.
| Famille | Protocoles | Usage |
|---|---|---|
| Block over IP | iSCSI, NVMe/TCP | Volumes pour serveurs, virtualisation, DB |
| File | NFS, SMB | Partage fichiers, VM datastores, home dirs |
| Object | S3, Swift, Ceph RGW | Archives, data lakes, cloud-native |
| RDMA | RoCEv2, iWARP | Latence faible, CPU réduit |
iSCSI
iSCSI encapsule des commandes SCSI dans TCP/IP. Il permet d'exposer des LUNs block sur Ethernet standard. Bien configuré, il est robuste ; mal configuré, il souffre vite de congestion, perte de paquets, MTU incohérente ou mauvaise séparation réseau.
- IQN : identifiant initiator/target.
- CHAP : authentification simple.
- MPIO : chemins multiples, pas du bonding naïf.
- VLAN dédié : recommandé pour isolation.
# Linux iSCSI discovery and login iscsiadm -m discovery -t sendtargets -p 10.10.10.10 iscsiadm -m node --login iscsiadm -m session -P 3 # Multipath multipath -ll
NFS et SMB
| Critère | NFS | SMB |
|---|---|---|
| Culture | Unix/Linux, VMware | Windows, AD, fichiers utilisateurs |
| Version moderne | NFSv4.1/4.2 | SMB3.x |
| HA | pNFS, cluster NAS | Continuous Availability, witness |
| Sécurité | Kerberos, export policies | NTFS ACL, Kerberos, signing/encryption |
Le file storage est plus simple à consommer que le block, mais il impose une attention forte aux locks, aux ACLs, aux caches clients, aux snapshots et aux workloads de petits fichiers.
NVMe over Fabrics
NVMe-oF transporte les commandes NVMe sur un fabric : TCP, RDMA, Fibre Channel. NVMe/TCP est attractif car il fonctionne sur Ethernet IP standard ; NVMe/RDMA réduit davantage la latence et la charge CPU mais exige un réseau lossless ou très bien maîtrisé.
| Transport | Avantage | Contrainte |
|---|---|---|
| NVMe/TCP | Déploiement simple sur IP | CPU et latence TCP |
| NVMe/RDMA RoCEv2 | Latence très basse | DCB/PFC/ECN délicats |
| NVMe/FC | Intégration SAN FC | Infrastructure FC |
# Linux NVMe/TCP example modprobe nvme-tcp nvme discover -t tcp -a 10.20.30.40 -s 4420 nvme connect -t tcp -a 10.20.30.40 -s 4420 -n nqn.2014-08.org.nvmexpress:uuid:target
Ceph, S3 et cloud storage
Object storage transforme le réseau Ethernet en couche fondamentale : les objets sont distribués, répliqués ou codés par erasure coding sur un cluster. La latence unitaire n'est pas celle d'un disque local ; l'intérêt est la durabilité, la scalabilité, la géo-distribution et le coût au To.
- Ceph public network : client traffic.
- Ceph cluster network : replication/recovery/backfill.
- Risque : recovery massif qui sature le réseau et dégrade les clients.
Diagnostics Ethernet Storage
# NIC and link ethtool eth0 ethtool -S eth0 | egrep -i 'drop|error|crc|timeout|pause' ip -s link show eth0 # Latency and path ping -i 0.2 target mtr -ezbw target iperf3 -c target -P 8 # NFS / SMB / iSCSI quick checks nfsstat -m smbstatus iscsiadm -m session -P 3 # NVMe/TCP nvme list-subsys nvme show-hostnqn
Interfaces externes : pratiques, mais pas toujours enterprise
USB et Thunderbolt sont excellents pour la mobilité, la sauvegarde locale, la vidéo, la photo, le dev workstation et les boîtiers NVMe externes. En revanche, ils doivent être utilisés avec prudence pour les services critiques : connectique exposée, alimentation instable, firmware de pont USB/SATA/NVMe variable, thermal throttling, absence de vraie télémétrie enterprise.
| Interface | Usage | Risque |
|---|---|---|
| USB 3.x | Backup, disque externe | Déconnexion, pont USB |
| USB4 | Dock, NVMe externe | Compatibilité câble/port |
| Thunderbolt | Workstation, DAS rapide | DMA/security, coût |
| eSATA | Legacy external SATA | Obsolescence, pas d'alimentation standard |
USB : vitesse marketing vs vitesse réelle
Les noms USB ont changé plusieurs fois, ce qui crée de la confusion. Au-delà du chiffre, vérifier le câble, le contrôleur, le boîtier externe, UASP, la dissipation thermique et le support SMART pass-through.
| Point | Impact |
|---|---|
| UASP | Permet une meilleure gestion des commandes que BOT. |
| Bridge chipset | Détermine stabilité, TRIM, SMART, firmware. |
| Câble | Peut brider à une vitesse inférieure ou provoquer resets. |
| Power delivery | Un disque 2.5" peut devenir instable si sous-alimenté. |
# Linux USB storage inspection lsusb -t lsblk -o NAME,TRAN,MODEL,SIZE smartctl -a -d sat /dev/sdX
Thunderbolt : PCIe externe
Thunderbolt transporte PCIe et DisplayPort. Pour le stockage, cela permet des boîtiers NVMe externes très rapides. Mais comme il expose PCIe, les politiques de sécurité Thunderbolt, IOMMU/VT-d, autorisation périphérique et firmware deviennent importantes.
# Linux Thunderbolt boltctl cat /sys/bus/thunderbolt/devices/*/authorized 2>/dev/null
eSATA : héritage externe SATA
eSATA a longtemps servi à connecter des disques externes avec des performances proches du SATA interne, avant que USB 3.x et Thunderbolt ne dominent. Il reste utile en environnement legacy, mais n'apporte pas la souplesse moderne d'USB-C ni les performances NVMe/Thunderbolt.
- Pas toujours d'alimentation via câble.
- Hotplug dépend contrôleur/BIOS/OS.
- Pas adapté aux nouveaux designs.
Bonnes pratiques
| Usage | Recommandation |
|---|---|
| Backup local | Chiffrer, vérifier, débrancher après sauvegarde. |
| Workstation vidéo | Préférer Thunderbolt/NVMe avec boîtier ventilé. |
| Serveur production | Éviter pour volumes actifs critiques. |
| Transport données | Utiliser checksum, chiffrement, inventaire. |
Tableau comparatif synthétique
| Interface | Type | Latence | Scalabilité | HA | Coût | Positionnement |
|---|---|---|---|---|---|---|
| SATA | DAS | Moyenne | Faible | Faible | Très bas | Capacité, NAS simple, boot |
| SAS | DAS/JBOD | Basse | Bonne | Très bonne | Moyen | Enterprise HDD/SSD, backplanes |
| PCIe/NVMe | Local block | Très basse | Locale | Variable | Moyen/haut | Performance maximale locale |
| Fibre Channel | SAN block | Basse stable | Très bonne | Excellente | Haut | Enterprise SAN critique |
| Ethernet storage | Block/file/object | Variable à basse | Excellente | Bonne | Variable | Cloud, NAS, scale-out |
| USB/TB | External DAS | Variable | Faible | Faible | Bas/moyen | Backup, workstation, mobilité |
Choix par cas d'usage
NVMe enterprise local si performance locale, ou FC SAN si HA centralisée. Éviter SATA/USB.
FC, iSCSI bien designé, NFS enterprise, NVMe/TCP. Multipath obligatoire pour block.
Ethernet + object storage : S3/Ceph/cloud. Optimiser réseau est-ouest et recovery.
SATA/SAS HDD, object storage, Ethernet. Le coût par To prime, mais vérifier restauration.
NVMe local, NVMe-oF, RDMA, parallel filesystem. Attention NUMA et congestion.
Thunderbolt NVMe ou NAS 10/25GbE. Ventilation et câble certifié.
Dette technique par interface
| Dette | Symptôme | Prévention |
|---|---|---|
| SATA partout | Pas de HA, latence variable | SAS/NVMe pour critique |
| FC non documenté | WWPN inconnus, zones fantômes | CMDB SAN stricte |
| Ethernet partagé | Microbursts, pertes, tail latency | QoS, VLAN/VRF, capacité dédiée |
| USB pour prod | Déconnexion aléatoire | Réserver backup/offline |
| NVMe sans monitoring | Thermal throttling, endurance cachée | nvme-cli, SMART, firmware |
Arbre de décision rapide
Form factors modernes
| Format | Interface | Usage | Attention |
|---|---|---|---|
| 3.5" | SATA/SAS | HDD capacité | Vibrations, chaleur |
| 2.5" | SATA/SAS/U.2 | SSD/HDD enterprise | Densité thermique |
| M.2 | PCIe/SATA | PC, boot, edge | Pas idéal hot-swap |
| U.2/U.3 | PCIe/SAS/SATA selon backplane | NVMe hot-swap serveur | Compatibilité backplane |
| EDSFF E1.S/E3.S | PCIe/NVMe | Serveurs denses | Plateforme récente |
Câbles et transceivers
| Type | Usage | Risque |
|---|---|---|
| SATA data | Disque interne | CRC, latch absent |
| Mini-SAS / SlimSAS | Backplane/HBA | Mauvais sens, compatibilité |
| DAC | Ethernet courte distance | Vendor lock, longueur |
| AOC | Ethernet/FC plus long | Coût, diagnostic optique |
| Optique FC/Eth | Datacenter | Budget optique, poussière |
Backplanes : la zone invisible des incidents
Le backplane est souvent oublié : il transporte alimentation, données, signaux de présence, LED, sideband et parfois expander/switch. Un disque “défaillant” peut en réalité être victime d'un slot, d'un câble HBA, d'un expander, d'un retimer ou d'une alimentation partagée.
# Check enclosure and slots if SES is available lsscsi -g sg_ses --page=0x2 /dev/sgX storcli /c0/eall/sall show
Airflow et contraintes physiques
Les SSD NVMe haute performance dissipent beaucoup plus que les anciens SSD SATA. Un slot mal ventilé provoque thermal throttling, latence p99 élevée, resets et baisse d'endurance. Les HDD denses souffrent aussi des vibrations rotatives.
Block storage path
Chaque couche peut ajouter latence, cache, reorder, flush, barriers, queueing et retries. Comprendre la stack est indispensable pour expliquer pourquoi un benchmark simple ne représente pas une base de données réelle.
File storage path
NFS/SMB ajoutent une sémantique fichier : locks, permissions, attributs, metadata server, cache client, oplocks/delegations, snapshots. C'est plus convivial, mais les workloads metadata-heavy peuvent saturer bien avant le débit brut.
Object storage path
S3/Ceph/Swift déplacent la complexité vers l'application : PUT/GET, multipart upload, versioning, metadata, lifecycle, erasure coding. La performance dépend fortement du parallélisme client et du réseau.
Virtualisation
| Couche | Exemples | Attention |
|---|---|---|
| Guest FS | ext4, XFS, NTFS | Alignement, cache |
| Virtual disk | VMDK, VHDX, QCOW2 | Snapshots, thin provision |
| Datastore | VMFS, NFS, vSAN | Queue depth HBA/VM |
| Physical | FC/iSCSI/NVMe | Multipath, latency |
Queue depth : l'outil et le piège
Augmenter la queue depth peut améliorer le débit total, mais aussi augmenter la latence si le périphérique est saturé. Une base de données sensible à la latence préfère souvent une latence p99 stable plutôt qu'un pic d'IOPS en benchmark.
| Stack | Modèle de queue | Impact |
|---|---|---|
| AHCI/SATA | Queue unique, 32 commandes | Limité |
| SCSI/SAS | Tag command queuing | Enterprise stable |
| NVMe | Queues multiples massives | Très haut parallélisme |
| Network storage | Sessions/queues selon protocole | Dépend réseau |
Tail latency : le vrai ennemi
La moyenne ment. Les incidents applicatifs apparaissent souvent en p99/p999 : garbage collection SSD, rebuild RAID, congestion Ethernet, path failover, pauses FC, snapshots, thin provisioning, thermal throttling, ou flush synchrones.
CPU overhead
Plus le stockage est rapide, plus le coût CPU de la pile devient visible. NVMe local réduit l'overhead par I/O ; NVMe/TCP consomme plus de CPU que RDMA ; SMB/NFS ajoutent une sémantique fichier ; chiffrement et compression peuvent déplacer le bottleneck.
iostat -x 1 pidstat -d 1 mpstat -P ALL 1 perf top cat /proc/interrupts | egrep 'nvme|eth|qla|lpfc'
Benchmark fio utile
[global] ioengine=libaio direct=1 time_based=1 runtime=120 group_reporting=1 randrepeat=0 [randread-latency] filename=/dev/nvme0n1 rw=randread bs=4k iodepth=32 numjobs=4 write_lat_log=lat log_avg_msec=1000
Multipath ≠ load balancing simple
Le multipathing permet à un serveur de voir plusieurs chemins physiques vers le même volume. Il gère failover, path grouping, retry, queueing et parfois répartition de charge. Il doit être cohérent avec le type de baie : active/active, active/passive, ALUA ou NVMe ANA.
| Technologie | Multipath | Rôle |
|---|---|---|
| FC | MPIO / DM-Multipath / PowerPath | Chemins SAN |
| iSCSI | MPIO | Sessions multiples |
| SAS | MPIO | Dual controllers/JBOD |
| NVMe-oF | Native multipath / ANA | NVMe namespaces |
ALUA et ANA
ALUA indique quels chemins SCSI sont optimisés. ANA joue un rôle similaire côté NVMe : certains chemins vers un namespace sont optimized, non-optimized ou inaccessible. Ignorer ces états peut provoquer des latences ou bascules inutiles.
# Linux multipath multipath -ll multipathd show config multipathd show paths # NVMe native multipath cat /sys/module/nvme_core/parameters/multipath nvme list-subsys nvme list -v
Tests de coupure obligatoires
| Test | Objectif | Validation |
|---|---|---|
| Débrancher un chemin | Failover sans I/O error | Application continue |
| Reboot contrôleur baie | Maintenance transparente | Chemins changent d'état |
| Upgrade switch | Dual fabric fonctionnel | Pas de freeze long |
| Stress + failover | Comportement sous charge | p99 acceptable |
Inventaire Linux stockage
lsblk -o NAME,KNAME,TYPE,SIZE,MODEL,SERIAL,ROTA,TRAN,MOUNTPOINT lsscsi -g findmnt blkid cat /proc/mounts udevadm info --query=all --name=/dev/sdX smartctl -a /dev/sdX nvme list nvme smart-log /dev/nvme0 multipath -ll
Inventaire Windows
Get-Disk Get-PhysicalDisk Get-StoragePool Get-VirtualDisk Get-Volume Get-InitiatorPort Get-IscsiSession Get-MPIOAvailableHW mpclaim -s -d
fio baseline
fio --name=seqread --filename=/dev/nvme0n1 --rw=read --bs=1M --iodepth=32 --direct=1 --runtime=60 --time_based --group_reporting fio --name=randwrite --filename=/dev/nvme0n1 --rw=randwrite --bs=4k --iodepth=32 --numjobs=4 --direct=1 --runtime=120 --time_based --group_reporting fio --name=mix --filename=/dev/nvme0n1 --rw=randrw --rwmixread=70 --bs=8k --iodepth=64 --numjobs=4 --direct=1 --runtime=120 --time_based --group_reporting
Checklist incident performance
| Étape | Question | Commande |
|---|---|---|
| 1 | Disque saturé ? | iostat -x 1 |
| 2 | Réseau stockage en erreur ? | ethtool -S / switch counters |
| 3 | Chemin perdu ? | multipath -ll |
| 4 | SSD throttle ? | nvme smart-log |
| 5 | Firmware/log kernel ? | dmesg -T |
SAN Fibre Channel
- Single initiator zoning.
- LUN masking strict par host/cluster.
- Auditer régulièrement les WWPN orphelins.
- Ne pas recycler un host group sans nettoyage.
- Tracer fabric A/B et changements de zoning.
Stockage IP
| Protocole | Protection |
|---|---|
| iSCSI | CHAP/mutual CHAP, VLAN/VRF dédié, ACL target. |
| NFS | Kerberos, export policies, root squash, segmentation. |
| SMB | Kerberos, signing/encryption, ACL NTFS, audit. |
| NVMe/TCP | Host NQN allowlist, TLS si disponible, réseau dédié. |
| S3 | IAM, bucket policy, object lock, encryption, logs. |
DMA et ports externes
Thunderbolt et certains périphériques PCIe externes peuvent exposer des surfaces DMA. Sur postes sensibles, activer IOMMU/VT-d, niveaux de sécurité Thunderbolt, autorisation périphérique et blocage des ports non nécessaires.
Ops sécurité
| Changement zoning | Ticket, peer review, sauvegarde config switch. |
| Décommission serveur | Retirer WWPN/IQN/NQN et mapping baie. |
| Backup externe | Chiffrement + offline + test restore. |
Volumes block cloud
EBS, Persistent Disk, Managed Disks et équivalents abstraient le réseau, le stockage, la réplication et les interfaces physiques. Pour l'OS, le volume peut apparaître comme NVMe, SCSI ou virtio selon plateforme. La performance dépend du type de volume, de la taille, des IOPS provisionnées, du throughput, de l'instance et du réseau interne.
Local NVMe / ephemeral SSD
Les disques locaux cloud offrent une latence très basse et un débit élevé, souvent via NVMe attaché à l'hôte. Mais ils sont éphémères : panne hôte, stop/start ou migration peuvent perdre les données. À utiliser avec réplication applicative ou cache reconstructible.
Object storage cloud
S3, GCS, Azure Blob et compatibles déplacent le problème de l'interface physique vers API, durabilité, lifecycle, coût de requête, egress et classes de stockage. Le design applicatif doit paralléliser et tolérer la latence réseau.
Design cloud storage
| Besoin | Choix |
|---|---|
| DB transactionnelle | Block provisionné IOPS / local NVMe + réplication |
| Data lake | Object storage + formats colonne |
| Cache | Local NVMe ou service managé |
| Backup | Snapshots + object archive + immutability |
Liens de référence
Glossaire minimal
| HBA | Host Bus Adapter, carte d'accès stockage block. |
| WWPN | World Wide Port Name, identifiant port Fibre Channel. |
| IQN | iSCSI Qualified Name. |
| NQN | NVMe Qualified Name. |
| LUN | Logical Unit Number, volume block exposé. |
| Namespace | Unité logique NVMe. |
| MTU | Maximum Transmission Unit, taille paquet Ethernet. |
| RDMA | Remote Direct Memory Access. |
Checklist avant choix d'interface
| Question | Pourquoi |
|---|---|
| Block, file ou object ? | Détermine la pile protocolaire. |
| Latence p99 cible ? | Évite choix uniquement au débit. |
| Besoin HA/multipath ? | Élimine SATA/USB pour critique. |
| Distance serveur-stockage ? | Local PCIe vs SAN vs IP. |
| Compétences équipe ? | FC, RDMA, Ceph exigent expertise. |
| Observabilité disponible ? | Sans métriques, impossible d'opérer. |
| Plan firmware/câbles ? | Les incidents physiques sont fréquents. |
