đŸ Storage Systems â Partie 3 : Organisation logique du stockage
Chapitre 5 â Partitions, volumes et systĂšmes de fichiers : MBR/GPT, LVM, ZFS pools, ext4, XFS, Btrfs, NTFS, ReFS, APFS, journaling, snapshots, compression, dĂ©duplication et runbooks production.
Carte mentale du chapitre
De lâoctet physique au fichier applicatif : partitions, volumes, FS, snapshots, compression et dĂ©duplication.
stackLBAFSMBR / GPT
Historique, limites, UEFI, protective MBR, partitions systÚme, bootloaders et scénarios de migration.
MBRGPTUEFIPartitions classiques
Linux, Windows, BSD : tables, alignement, types, labels, identifiants et piĂšges production.
LinuxWindowsBSDVolumes logiques
LVM, Windows Dynamic Disk / Storage Spaces, ZFS pools, thin provisioning et gestion des extents.
LVMVHDXzpoolSystĂšmes de fichiers
ext4, XFS, Btrfs, ZFS, NTFS, ReFS, APFS : architecture, limites, usages et choix design.
ext4XFSZFSJournaling & crash recovery
Métadonnées, data journaling, copy-on-write, fsck, replay, ordering barriers et cohérence.
journalCOWfsckSnapshots niveau FS
Btrfs, ZFS, LVM, APFS, VSS : snapshot, clone, rollback, réplication et stratégie de rétention.
snapshotsclonerollbackCompression & déduplication
Inline, post-process, block-level, file-level : ratios, CPU, RAM, risques et cas data center.
ZSTDdedupratioPerformance logique
Block size, inode, queue depth, recordsize, allocation groups, fragmentation et benchmarks.
IOPSlatencefioSécurité & intégrité
Permissions, ACL, encryption, checksums, bit rot, scrub, immutability et ransomware recovery.
ACLcryptoscrubCloud, VM & containers
Disques virtuels, CSI/Kubernetes, snapshots cloud, thin disks, overlays et volumes persistants.
K8sCSIcloudRunbooks production
Commandes Linux/Windows/BSD, diagnostic dâespace, rĂ©paration, extension et procĂ©dures dâurgence.
runbookopsprodMatrice de décision
Comment choisir partitionnement, volume manager et systĂšme de fichiers selon les workloads.
choixdesignTCOURLs & références
Liens techniques utiles : kernel, Microsoft, OpenZFS, Btrfs, XFS, LVM, Kubernetes CSI.
docsRFCstandardsDu disque physique au fichier : chaĂźne logique complĂšte
Un systĂšme de stockage moderne nâest pas simplement un disque. Câest une superposition de couches : support physique, contrĂŽleur, bus, namespace, table de partition, volume manager, systĂšme de fichiers, cache, permissions, snapshot et application. Chaque couche ajoute une capacitĂ©, mais aussi une latence, un Ă©tat, des mĂ©tadonnĂ©es et un risque opĂ©rationnel.
Pourquoi cette couche est critique
| Couche | Erreur typique | Impact |
|---|---|---|
| Partition | Alignement 4K incorrect | IOPS divisés, write amplification. |
| Volume | Thin pool saturé | I/O errors, VM figées, FS corrompu. |
| FS | inode exhaustion | Espace libre mais création impossible. |
| Snapshot | rétention non maßtrisée | consommation explosive, rollback impossible. |
Taxonomie de lâorganisation logique
| Famille | Technologies | Idée clé | Risque caché |
|---|---|---|---|
| Partitionnement | MBR, GPT, BSD disklabel | Découper un espace bloc brut. | Boot cassé, mauvais type GUID, mauvaise table. |
| Volume manager | LVM, Storage Spaces, Dynamic Disk, ZFS vdev/pool | Abstraction, extension, agrégation, snapshots. | Complexité de récupération et dépendances metadata. |
| File systems | ext4, XFS, Btrfs, ZFS, NTFS, ReFS, APFS | Nommer, indexer, sécuriser, rendre cohérentes les données. | Limites inodes, fragmentation, bugs firmware, mauvais tuning. |
| Protection logique | Snapshots, clones, replication, checksums | Revenir dans le temps et dĂ©tecter corruption. | Ce nâest pas une sauvegarde si mĂȘme pool/site. |
Ordres de grandeur Ă garder en tĂȘte
| Sujet | RepÚre | Lecture opérationnelle |
|---|---|---|
| Block size FS | 4 KiB fréquent | Bon compromis général, sensible aux petits fichiers. |
| XFS allocation groups | parallélisme metadata | Excellent pour gros volumes et serveurs de fichiers. |
| ZFS recordsize | 128 KiB défaut courant | à adapter aux DB, VM et gros fichiers. |
| LVM PE size | 4 MiB fréquent | Unité de mapping, impacte granularité et metadata. |
# Visualiser la pile logique Linux lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID,MODEL findmnt -R / blkid pvs; vgs; lvs -a
Mini-lab pédagogique : comprendre la pile sans risque
# Créer un fichier disque de test, le partitionner, créer un FS et le monter truncate -s 2G /tmp/lab-disk.img losetup --find --show /tmp/lab-disk.img # Supposons /dev/loop10 parted /dev/loop10 --script mklabel gpt mkpart primary ext4 1MiB 100% mkfs.ext4 -L LABFS /dev/loop10p1 mkdir -p /mnt/labfs mount /dev/loop10p1 /mnt/labfs df -hT /mnt/labfs
MBR : lâhĂ©ritage BIOS
Le Master Boot Record est historiquement placĂ© au dĂ©but du disque. Il contient Ă la fois un petit code de boot et une table de partitions limitĂ©e. Sa conception correspond Ă une Ă©poque oĂč les disques Ă©taient petits, les firmwares BIOS simples et les besoins de redondance de mĂ©tadonnĂ©es inexistants.
- Table de 4 entrées primaires.
- Partitions étendues/logiques pour dépasser 4 volumes.
- Adressement classique limité par la taille des secteurs et le champ LBA 32 bits.
- Pas de checksum natif de la table.
GPT : design moderne
GUID Partition Table remplace la table MBR par des entrées typées GUID, un header primaire, un header secondaire en fin de disque et des CRC pour vérifier la cohérence.
| ĂlĂ©ment GPT | RĂŽle |
|---|---|
| Protective MBR | EmpĂȘche les vieux outils MBR de voir le disque comme vide. |
| Primary GPT header | Décrit les entrées et leur checksum. |
| Backup GPT header | Récupération en fin de disque. |
| Partition entries | Type GUID, unique GUID, nom lisible. |
MBR vs GPT : comparaison dâingĂ©nierie
| CritÚre | MBR | GPT | Décision |
|---|---|---|---|
| Firmware | BIOS legacy | UEFI | Serveur moderne = GPT/UEFI. |
| Redondance metadata | Non | Oui | GPT plus récupérable. |
| Nombre partitions | 4 primaires | nombre élevé selon OS | GPT simplifie. |
| Gros disques | limité historiquement | adapté aux grands espaces | GPT obligatoire en stockage moderne. |
| Identification | type hexadécimal | GUID + nom + UUID | GPT plus explicite. |
UEFI, ESP et démarrage
En UEFI, le firmware lit une partition spéciale appelée ESP, généralement formatée en FAT32. Les bootloaders y sont stockés sous forme de fichiers EFI. Cela rend le démarrage plus structuré que le MBR legacy.
- ESP : EFI System Partition.
- MSR : Microsoft Reserved Partition cÎté Windows.
- /boot : parfois séparé cÎté Linux selon chiffrement/LVM.
- NVRAM UEFI : contient lâordre des entrĂ©es de boot.
# Linux : voir les entrées UEFI efibootmgr -v # Voir le partitionnement et les flags parted -l sgdisk -p /dev/nvme0n1 # Exemple ESP dans /etc/fstab UUID=XXXX-YYYY /boot/efi vfat umask=0077 0 1
Migration MBR â GPT : scĂ©nario prudent
# Linux : audit non destructif avant toute action lsblk -f parted /dev/sda print sgdisk -v /dev/sda cat /etc/fstab mount | grep boot
Partitions Linux : logique actuelle
- /boot/efi : ESP UEFI, FAT32.
- /boot : utile si root chiffré, RAID complexe ou bootloader limité.
- / : racine systĂšme.
- /var : logs, DB locales, files dâattente ; souvent Ă isoler.
- /home : données utilisateurs.
- swap : partition ou fichier selon distribution.
# Créer une table GPT propre parted /dev/sdb --script mklabel gpt parted /dev/sdb --script mkpart primary 1MiB 100% parted /dev/sdb --script set 1 lvm on # Alternative moderne sgdisk --zap-all /dev/sdb sgdisk -n 1:1MiB:0 -t 1:8e00 -c 1:"linux-lvm" /dev/sdb partprobe /dev/sdb
Partitions Windows modernes
| Partition | RĂŽle | Commentaire |
|---|---|---|
| EFI System Partition | Démarrage UEFI | FAT32, contient bootmgfw.efi. |
| MSR | Réserve Microsoft | Pas de systÚme de fichiers visible. |
| Windows | NTFS systĂšme | C:, ACL, VSS, BitLocker. |
| Recovery | WinRE | Environnement de récupération. |
| Data | Données | à séparer des workloads et journaux. |
# PowerShell : inventaire stockage Get-Disk Get-Partition Get-Volume Get-PhysicalDisk Get-StoragePool # Voir BitLocker Get-BitLockerVolume
BSD : disklabel, GEOM, ZFS
Les systĂšmes BSD ont historiquement utilisĂ© des disklabels et une couche GEOM puissante. Aujourdâhui, GPT + ZFS est courant pour les serveurs modernes, mais lâadministrateur doit comprendre la diffĂ©rence entre slice, partition BSD et partition GPT.
| Concept | RĂŽle | Note |
|---|---|---|
| GEOM | Framework stockage FreeBSD | RAID, chiffrement, labels, multipath. |
| gpart | Gestion GPT/MBR | Ăquivalent opĂ©rationnel de parted/sgdisk. |
| ZFS root | Boot sur pool | Snapshots systĂšme avant upgrade. |
# FreeBSD : audit rapide gpart show geom disk list zpool status zfs list -t filesystem,snapshot
Alignement 4K / 1MiB : petite erreur, gros impact
Les disques modernes exposent souvent des secteurs logiques de 512 B mais Ă©crivent physiquement en 4 KiB, tandis que les SSD et RAID ont des tailles dâeffacement ou de stripe plus grandes. Une partition mal alignĂ©e peut provoquer deux opĂ©rations physiques pour une Ă©criture logique.
| Alignement | Usage | Pourquoi |
|---|---|---|
| 1 MiB | Défaut recommandé | Compatible 4K, RAID stripe, SSD. |
| 4K strict | Minimal | OK mais moins universel. |
| Ancien 63 secteurs | Legacy | à éviter. |
# Vérifier alignement Linux parted /dev/sdb align-check optimal 1 lsblk -t blockdev --getss --getpbsz /dev/sdb
LVM : PV, VG, LV, extents
Linux Logical Volume Manager transforme un ou plusieurs périphériques blocs en groupe de volumes, puis en volumes logiques redimensionnables. Il permet extension à chaud, snapshots, thin provisioning, cache et mirroring selon configuration.
- PV : Physical Volume, disque ou partition.
- VG : Volume Group, pool dâextents.
- LV : Logical Volume, bloc présenté au FS.
- PE/LE : unités de mapping physique/logique.
pvcreate /dev/sdb1 vgcreate vg_data /dev/sdb1 lvcreate -n lv_app -L 500G vg_data mkfs.xfs /dev/vg_data/lv_app mkdir -p /srv/app mount /dev/vg_data/lv_app /srv/app # Extension lvextend -r -L +200G /dev/vg_data/lv_app
Windows : Dynamic Disk, Storage Spaces, ReFS
Windows a progressivement déplacé la logique des volumes depuis Dynamic Disk vers Storage Spaces et Storage Spaces Direct. Pour les environnements modernes, Storage Spaces offre pools, virtual disks, tiers, parity, mirror et intégration PowerShell.
| Technologie | Usage | Limite / attention |
|---|---|---|
| Basic Disk | Partitions simples | Le plus simple, trÚs récupérable. |
| Dynamic Disk | Legacy volumes spanned/striped/mirrored | Moins recommandé pour nouveaux designs. |
| Storage Spaces | Pools logiciels modernes | Nécessite monitoring sérieux. |
| S2D | Cluster hyperconvergé | Dépendance réseau/RDMA/cluster. |
Get-StoragePool Get-VirtualDisk Get-PhysicalDisk | Sort-Object HealthStatus Repair-VirtualDisk -FriendlyName "DataVDisk"
ZFS : pool, vdev, datasets
ZFS nâest pas seulement un systĂšme de fichiers : câest aussi un volume manager transactionnel. Les disques forment des vdevs, les vdevs forment un pool, et les datasets/zvols exposent des espaces fichiers ou blocs.
| Concept | RÎle | Décision critique |
|---|---|---|
| vdev mirror | Redondance + IOPS | Excellent pour VM/DB. |
| RAIDZ1/2/3 | Capacité + parité | Bon pour fichiers larges, archive. |
| dataset | FS administrable | Quotas, compression, snapshots. |
| zvol | Bloc virtuel | iSCSI, VM disks, block workloads. |
zpool create tank mirror /dev/disk/by-id/d1 /dev/disk/by-id/d2 zfs create tank/app zfs set compression=zstd tank/app zfs set atime=off tank/app zpool status -v zpool scrub tank
Thin provisioning : promesse et danger
Le thin provisioning permet dâallouer logiquement plus dâespace que la capacitĂ© physique immĂ©diatement disponible. TrĂšs utile pour VM, dev/test et cloud interne, mais dangereux sans alerting, car la saturation du pool peut provoquer des erreurs dâĂ©criture brutales.
| Indicateur | Seuil dâalerte | Action |
|---|---|---|
| Data% | 70% | prévenir, prévoir extension. |
| Data% | 85% | extension urgente / suppression snapshots. |
| Metadata% | 70% | extension metadata thin pool. |
| Overcommit | > 150% | revalider croissance réelle. |
# LVM thin pool lvcreate --type thin-pool -L 2T -n thinpool vg_vm lvcreate --thin -V 500G -n vm01 vg_vm/thinpool lvs -a -o+seg_monitor,data_percent,metadata_percent # Autoextend dans lvm.conf à vérifier # thin_pool_autoextend_threshold # thin_pool_autoextend_percent
Incidents classiques de couche volume
| SymptÎme | Cause probable | Diagnostic | Réponse |
|---|---|---|---|
| FS read-only | erreurs bloc ou thin plein | dmesg, lvs, journalctl | stop writes, snapshot, fsck si requis. |
| VM figée | thin pool saturé | lvs data_percent | extend pool, libérer snapshots. |
| boot impossible | VG non activé/initramfs | rescue shell | vgchange -ay, rebuild initramfs. |
| performances faibles | stripe/mirror mal adapté | iostat, lvs -o devices | rebalance, migrer LV, revoir design. |
Panorama des systĂšmes de fichiers
| FS | Force | Usage recommandé | Attention |
|---|---|---|---|
| ext4 | simple, mature, universel | Linux généraliste, petits/moyens serveurs | moins riche que COW/ZFS. |
| XFS | scalabilité, gros fichiers, parallélisme | serveurs, logs, backup repos, data | shrink non supporté classiquement. |
| Btrfs | snapshots, subvolumes, compression | workstations, systÚmes snapshotés | RAID5/6 à éviter selon contexte. |
| ZFS | checksums, snapshots, send/receive | NAS, backup, VM, intégrité | RAM, design vdev, licensing Linux. |
| NTFS | ACL, compat Windows | Windows généraliste | fragmentation, VSS à surveiller. |
| ReFS | résilience, checksums metadata | Windows Server, Hyper-V, backup | pas pour tous scénarios boot/generalistes. |
| APFS | snapshots, clones, SSD-first | macOS, iOS, local SSD | écosystÚme Apple. |
ext4 vs XFS : choix Linux classique
ext4
- TrÚs stable et simple à récupérer.
- Bon choix pour partitions systĂšme.
- Support large des outils.
- Peut ĂȘtre rĂ©duit offline selon contraintes.
mkfs.ext4 -L ROOTFS /dev/vg/root tune2fs -l /dev/vg/root e2fsck -f /dev/vg/root resize2fs /dev/vg/root
XFS
- TrĂšs bon pour gros volumes et I/O parallĂšles.
- Allocation groups et journal robuste.
- Expansion online efficace.
- Pas de réduction standard : prévoir design.
mkfs.xfs -L DATA /dev/vg/data xfs_info /srv/data xfs_growfs /srv/data xfs_repair -n /dev/vg/data
File systems Copy-on-Write : Btrfs et ZFS
Les systĂšmes COW Ă©crivent les nouvelles donnĂ©es ailleurs puis basculent les mĂ©tadonnĂ©es de maniĂšre transactionnelle. Cela facilite snapshots et checksums, mais peut gĂ©nĂ©rer fragmentation et amplification dâĂ©criture si mal tunĂ©.
| Fonction | Btrfs | ZFS |
|---|---|---|
| Snapshots | subvolume snapshot | zfs snapshot |
| Send/receive | btrfs send/receive | zfs send/receive mature |
| Compression | zstd, lzo, zlib | lz4, zstd selon version |
| Checksums | données + metadata | end-to-end avec self-healing si redondance |
| RAID intégré | oui, prudence RAID5/6 | mirror/RAIDZ trÚs utilisé |
# Btrfs btrfs subvolume create /mnt/@data btrfs filesystem df /mnt btrfs scrub start -Bd /mnt # ZFS zfs list -o name,used,refer,compressratio,mountpoint zpool status -v zpool scrub tank
NTFS et ReFS : vision Windows Server
NTFS
SystÚme généraliste, riche en ACL, quotas, compression, EFS, hardlinks, alternate data streams, VSS. TrÚs compatible, y compris pour disque systÚme.
- Bon pour OS et données mixtes.
- Excellent support outils.
- VSS largement utilisé.
ReFS
Conçu pour la rĂ©silience, les trĂšs grands volumes et certains workloads serveur comme Hyper-V ou backup repositories. Son intĂ©rĂȘt augmente avec Storage Spaces et intĂ©gritĂ© metadata.
- Integrity streams selon usage.
- Block cloning utile avec Hyper-V/backup.
- Ne remplace pas NTFS partout.
# Windows : informations FS Get-Volume | Select DriveLetter,FileSystem,HealthStatus,SizeRemaining,Size fsutil fsinfo volumeinfo C: fsutil dirty query C:
APFS : design SSD-first Apple
APFS est optimisĂ© pour SSD, chiffrement, snapshots et clones rapides. Sa logique de containers et volumes permet le partage dâespace entre volumes logiques.
| Concept | Description |
|---|---|
| Container | Pool dâespace partagĂ©. |
| Volume | Espace logique avec rÎle spécifique. |
| Snapshot | Point-in-time cohérent, utilisé par Time Machine. |
| Clone | Copie logique rapide par partage de blocs. |
# macOS : audit APFS diskutil apfs list diskutil info / tmutil listlocalsnapshots /
Inodes, MFT, metadata : le stockage invisible
Un FS stocke les donnĂ©es, mais aussi beaucoup de mĂ©tadonnĂ©es : propriĂ©taires, permissions, timestamps, extents, index de rĂ©pertoires, journaux, checksums, snapshots. Les incidents dâespace viennent souvent des mĂ©tadonnĂ©es, pas seulement des octets de fichiers.
| SymptÎme | FS concerné | Diagnostic | Correction |
|---|---|---|---|
| No space left malgrĂ© df -h OK | ext4 | df -i | supprimer petits fichiers, recrĂ©er FS avec plus dâinodes. |
| MFT trÚs fragmentée | NTFS | perfmon, defrag analyse | défragmentation / migration. |
| Metadata full | Btrfs | btrfs fi usage | balance metadata, ajouter espace. |
| Snapshots cachés | ZFS/APFS/VSS | list snapshots | rétention, pruning. |
df -hT df -i find /var -xdev -type f | wc -l find /var -xdev -size +1G -ls
Journaling : pourquoi un FS survit au crash
Le journaling enregistre dâabord lâintention de modification dans une zone dĂ©diĂ©e, puis applique les changements. AprĂšs un crash, le FS relit le journal pour terminer ou annuler les opĂ©rations incomplĂštes. Objectif : retrouver vite une cohĂ©rence de mĂ©tadonnĂ©es sans scanner tout le volume.
| Mode | Journalise | Avantage | Coût |
|---|---|---|---|
| Metadata | structures FS | rapide | données récentes possiblement anciennes. |
| Ordered | metadata + ordre write data | bon compromis | barriers nécessaires. |
| Data journal | metadata + données | cohérence forte | écritures doublées. |
Journaux ext4 et XFS
ext4
ext4 propose plusieurs modes de journaling et des options comme barriers, commit interval, lazy init. Le mode ordered est courant.
tune2fs -l /dev/vg/root | grep -i journal mount | grep ext4 journalctl -k | grep -i ext4
XFS
XFS journalise les métadonnées avec un design orienté parallélisme. Les outils xfs_repair et xfs_logprint aident à analyser des états anormaux.
xfs_info /srv/data xfs_repair -n /dev/vg/data xfs_logprint /dev/vg/data | head
Copy-on-Write vs journal classique
ZFS, Btrfs et APFS préfÚrent une approche transactionnelle COW : les blocs existants ne sont pas écrasés immédiatement. Les nouveaux blocs et métadonnées sont écrits ailleurs, puis un pointeur atomique valide le nouvel état.
| CritĂšre | Journal classique | COW transactionnel |
|---|---|---|
| Crash recovery | replay journal | dernier arbre cohérent |
| Snapshots | ajoutés via couche séparée | naturels |
| Fragmentation | modérée | peut augmenter |
| Write amplification | journal + données | nouveaux blocs + metadata |
| Checksums | selon FS | souvent centraux |
Ordering, barriers, flush et caches contrĂŽleur
Un FS cohĂ©rent suppose que les Ă©critures arrivent dans lâordre attendu sur le support. Les caches disques, contrĂŽleurs RAID, hyperviseurs et SAN peuvent rĂ©ordonner ou retarder des writes. Les flush/barriers forcent certains points de persistance.
| Composant | Question Ă poser |
|---|---|
| RAID controller | BBU/supercap OK ? write-back safe ? |
| SSD enterprise | Power-loss protection réelle ? |
| Hyperviseur | cache mode writeback/writethrough ? |
| SAN | acknowledge aprĂšs persistance ou cache volatil ? |
Réparation : méthode froide et prudente
# Ne pas lancer directement une réparation destructrice sur prod umount /dev/vg/data fsck -n /dev/vg/data xfs_repair -n /dev/vg/xfsdata # Image de secours si possible ddrescue -f -n /dev/sdb /mnt/rescue/sdb.img /mnt/rescue/sdb.map
Snapshot : point-in-time, pas sauvegarde magique
Un snapshot capture une vue cohĂ©rente dâun volume ou dataset Ă un instant donnĂ©. Il est gĂ©nĂ©ralement rapide car il partage les blocs existants avec lâĂ©tat courant. Mais si le mĂȘme pool, la mĂȘme baie ou le mĂȘme compte cloud disparaĂźt, le snapshot disparaĂźt aussi.
| Type | Granularité | Avantage | Limite |
|---|---|---|---|
| LVM snapshot | bloc LV | simple, universel | performance, taille snapshot. |
| Btrfs snapshot | subvolume | rapide, send/receive | gestion subvolumes nécessaire. |
| ZFS snapshot | dataset/zvol | trÚs mature, réplication | pool design critique. |
| VSS | volume/app aware | Windows app consistency | writers Ă surveiller. |
Snapshots COW : Btrfs et ZFS
Btrfs
btrfs subvolume snapshot -r /srv/data /srv/.snapshots/data-$(date +%F) btrfs subvolume list /srv btrfs send /srv/.snapshots/data-2026-05-02 | btrfs receive /backup
ZFS
zfs snapshot tank/app@daily-2026-05-02 zfs list -t snapshot zfs rollback tank/app@daily-2026-05-02 zfs send -R tank/app@daily-2026-05-02 | ssh backup zfs receive backup/app
app-prod-hourly-20260502T2100Z.LVM snapshot : pratique mais Ă surveiller
Un snapshot LVM classique utilise un espace de copy-on-write séparé. Si cet espace se remplit, le snapshot devient inutilisable. Les thin snapshots sont plus souples, mais dépendent de la santé du thin pool.
# Snapshot classique lvcreate -s -n lv_app_snap -L 50G /dev/vg_data/lv_app mount -o ro /dev/vg_data/lv_app_snap /mnt/snap # Suppression aprĂšs backup umount /mnt/snap lvremove /dev/vg_data/lv_app_snap # Monitoring lvs -a -o+origin,data_percent,metadata_percent,seg_monitor
| Erreur | Conséquence | Prévention |
|---|---|---|
| snapshot trop petit | invalidé | estimer churn pendant backup. |
| snapshot laissé longtemps | performance dégradée | TTL automatique. |
| backup non app-aware | données incohérentes | freeze DB / quiesce applicatif. |
Windows VSS et APFS local snapshots
VSS
Volume Shadow Copy Service coordonne writers applicatifs, providers stockage et snapshots. Indispensable pour Exchange, SQL Server, AD, fichiers ouverts et sauvegardes cohérentes.
vssadmin list writers vssadmin list shadows Get-ComputerRestorePoint
APFS
macOS utilise les snapshots APFS pour Time Machine et les mises Ă jour systĂšme. TrĂšs pratique, mais peut masquer de lâespace consommĂ©.
tmutil listlocalsnapshots / tmutil deletelocalsnapshots 2026-05-02-210000 diskutil apfs listSnapshots /
Politique de rétention snapshot
La rĂ©tention doit ĂȘtre proportionnĂ©e au churn, pas seulement au calendrier. Une base de donnĂ©es qui réécrit 20% du volume par jour consommera beaucoup plus quâun dĂ©pĂŽt documentaire froid.
| Fréquence | Rétention exemple | Usage |
|---|---|---|
| 15 min | 24 h | rollback opérationnel rapide. |
| Horaire | 7 jours | erreurs humaines récentes. |
| Journalier | 30-60 jours | restauration métier. |
| Mensuel | 12-24 mois | audit, conformité, archive légÚre. |
Compression inline : gagner de lâespace sans casser les performances
La compression inline compresse les blocs avant Ă©criture. Sur donnĂ©es textuelles, logs, JSON, VM peu remplies et dumps, le gain peut ĂȘtre trĂšs Ă©levĂ©. Sur vidĂ©os, images JPEG, ZIP, donnĂ©es dĂ©jĂ compressĂ©es ou chiffrĂ©es, le gain est faible voire nul.
| Algo | Profil | Usage |
|---|---|---|
| LZ4 | trÚs rapide, ratio moyen | FS généraliste, ZFS classique. |
| ZSTD | bon ratio, CPU modulable | Btrfs/ZFS modernes, backups. |
| Gzip/Zlib | ratio bon, plus lent | archive, compatibilité. |
| Hardware compression | selon baie/CPU | arrays enterprise, appliances backup. |
# ZFS zfs set compression=zstd tank/data zfs get compressratio tank/data # Btrfs mount option mount -o compress=zstd:3 /dev/sdb1 /srv/data
Déduplication : puissante mais dangereuse sans sizing
La dĂ©duplication dĂ©tecte des blocs identiques et ne stocke quâune copie physique. Elle est excellente pour VDI, sauvegardes, VM similaires, ISO et clones ; elle est souvent inutile sur flux chiffrĂ©s ou compressĂ©s.
| Mode | Principe | Avantage | Risque |
|---|---|---|---|
| Inline | dédup avant écriture | économie immédiate | latence CPU/RAM. |
| Post-process | analyse aprÚs écriture | moins pénalisant en write path | besoin espace temporaire. |
| Block-level | hash des blocs | efficace sur VM/backups | table énorme. |
| File-level | fichiers identiques | simple | moins granulaire. |
Ratios réalistes par type de données
| Données | Compression | Dédup | Commentaire |
|---|---|---|---|
| Logs texte / JSON | 2:1 Ă 10:1 | faible Ă moyen | compression excellente. |
| VM clones | 1.2:1 à 2:1 | 3:1 à 20:1 | dédup trÚs intéressante. |
| DB OLTP | 1.2:1 Ă 4:1 | variable | tester recordsize/page size. |
| Photos/vidéos | ~1:1 | faible | déjà compressé. |
| Données chiffrées | ~1:1 | quasi nul | entropie élevée. |
Tester avant dâactiver
On ne choisit jamais compression/dédup sur croyance. Il faut prendre un échantillon représentatif, mesurer ratio, CPU, latence p95/p99 et comportement en restauration.
# Mesurer compression simple sur échantillon tar -cf - /srv/sample | zstd -T0 -3 -o /tmp/sample.tar.zst ls -lh /tmp/sample.tar.zst du -sh /srv/sample # fio : latence avant/aprÚs compression FS fio --name=randwrite --directory=/srv/data --size=10G --rw=randwrite --bs=4k --iodepth=32 --numjobs=4 --time_based --runtime=120 --group_reporting
ParamĂštres logiques qui changent vraiment les performances
| ParamĂštre | Impact | Workload sensible |
|---|---|---|
| block size | granularité allocation | petits fichiers, DB pages. |
| recordsize / volblocksize | taille COW ZFS | VM, DB, gros fichiers. |
| inode density | nombre max fichiers | maildir, cache, npm, millions de petits fichiers. |
| allocation groups | parallélisme metadata | XFS gros volumes. |
| mount noatime | réduit writes metadata | lecture intensive. |
| discard/TRIM | récupÚre blocs SSD | thin, SSD, VM. |
fio : benchmark minimal mais sérieux
# Random read 4K, profil IOPS fio --name=rr4k --filename=/srv/data/fio.test --size=20G --rw=randread --bs=4k --iodepth=64 --numjobs=4 --time_based --runtime=180 --direct=1 --group_reporting # Sequential write 1M, profil backup/media fio --name=sw1m --filename=/srv/data/fio.seq --size=50G --rw=write --bs=1M --iodepth=16 --numjobs=1 --direct=1 --group_reporting # Mixed DB-like fio --name=mix --filename=/srv/data/fio.mix --size=20G --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --time_based --runtime=180 --direct=1 --group_reporting
Fragmentation logique
La fragmentation augmente les seeks sur HDD et peut accroßtre les métadonnées / extents sur SSD. Les FS modernes masquent une partie du problÚme, mais les snapshots COW, VM images et workloads append/delete peuvent générer une fragmentation significative.
| FS | Diagnostic | Action |
|---|---|---|
| ext4 | e4defrag -c | e4defrag si besoin. |
| XFS | xfs_db, filefrag | xfs_fsr selon cas. |
| Btrfs | filefrag, btrfs filesystem defrag | defrag ciblé, attention snapshots. |
| ZFS | pas defrag simple | prévenir par design, send/receive recrée parfois propre. |
| NTFS | defrag /A | Optimize-Volume. |
Observer la couche logique
# Linux iostat -xz 1 pidstat -d 1 sar -d 1 bpftrace tools si disponible journalctl -k | grep -Ei "error|xfs|ext4|btrfs|nvme|scsi" # FS usage df -hT du -xhd1 /var | sort -h lsof +L1
# Windows PowerShell Get-Counter '\PhysicalDisk(*)\Avg. Disk sec/Read' Get-Counter '\LogicalDisk(*)\% Free Space' Get-Volume Get-EventLog -LogName System -Source disk -Newest 20 # ReFS/Storage Spaces Get-VirtualDisk | Get-StorageJob
Permissions : POSIX, ACL, NTFS ACL
| ModĂšle | Forces | PiĂšge |
|---|---|---|
| POSIX mode | simple rwx user/group/other | limité pour organisations complexes. |
| POSIX ACL | droits fins sur Linux | backup doit préserver ACL. |
| NTFS ACL | héritage, deny, audit, groupes AD | héritages cassés, migrations délicates. |
| NFSv4 ACL | interop NAS/Unix | mapping identités. |
# Linux ACL getfacl /srv/share setfacl -m u:appuser:rwx /srv/share # Windows ACL icacls D:\Data icacls D:\Data /grant "DOMAIN\AppTeam:(OI)(CI)M"
Chiffrement : couche bloc, FS ou application
| Couche | Exemples | Avantage | Limite |
|---|---|---|---|
| Bloc | LUKS, BitLocker | transparent pour FS | snapshot/backup voient données chiffrées selon couche. |
| FS | ZFS encryption, APFS | granularité dataset/volume | gestion clés. |
| Fichier | EFS, age, gpg | portable | complexe à grande échelle. |
| Application | DB TDE, app-level | contrÎle métier | dédup/compression souvent réduites. |
# LUKS rapide cryptsetup luksFormat /dev/sdb1 cryptsetup open /dev/sdb1 cryptdata mkfs.xfs /dev/mapper/cryptdata # BitLocker Enable-BitLocker -MountPoint "D:" -EncryptionMethod XtsAes256
Checksums, bit rot et scrubbing
Un disque peut retourner une donnĂ©e techniquement lisible mais incorrecte. Sans checksum bout-en-bout, la corruption silencieuse peut remonter jusquâĂ lâapplication. ZFS et Btrfs dĂ©tectent ces erreurs ; avec redondance, ils peuvent les rĂ©parer automatiquement.
# ZFS scrub zpool scrub tank zpool status -v tank # Btrfs scrub btrfs scrub start -Bd /srv/data btrfs scrub status /srv/data
Snapshots immuables et défense ransomware
Un ransomware chiffre les fichiers au niveau logique. Les snapshots permettent un retour rapide si lâattaquant ne peut pas les supprimer. Il faut donc sĂ©parer les droits admin applicatifs des droits snapshot/backup.
| Mesure | But | Exemple |
|---|---|---|
| Snapshots read-only | retour instantané | ZFS/Btrfs snapshots non montés en écriture. |
| Immutability | empĂȘcher suppression | S3 Object Lock, appliances WORM. |
| Admin séparé | limiter blast radius | compte backup distinct hors domaine. |
| Détection churn | alerte chiffrement massif | pics rename/write entropy. |
Disques virtuels : VMDK, VHDX, QCOW2, RAW
| Format | Usage | Avantage | Attention |
|---|---|---|---|
| RAW | KVM/performance | simple, rapide | snapshots dépendant couche externe. |
| QCOW2 | KVM dev/test | snapshots, thin | overhead si mal tuné. |
| VMDK | VMware | écosystÚme vSphere | datastore, snapshots à gérer. |
| VHDX | Hyper-V | robuste, resize, logs | fragmentation dynamique possible. |
Le FS invitĂ© voit un disque logique ; lâhyperviseur voit un fichier ; le SAN voit des blocs. Les problĂšmes de performance traversent toutes ces couches.
Kubernetes CSI et volumes persistants
Dans Kubernetes, le stockage persistant est abstrait par PV, PVC, StorageClass et CSI driver. Le choix du FS et du mode dâaccĂšs impacte directement les bases de donnĂ©es, les brokers et les workloads stateful.
| Objet | RĂŽle | Point dâattention |
|---|---|---|
| StorageClass | politique de provisionnement | type disque, reclaimPolicy, expansion. |
| PVC | demande dâespace | taille, access mode. |
| PV | volume réel | binding, zone, driver. |
| CSI Snapshot | point-in-time | app consistency non automatique. |
kubectl get storageclass kubectl get pv,pvc -A kubectl describe pvc -n prod data-postgres-0 kubectl get volumesnapshot -A
Overlay filesystems : Docker/containers
Les containers utilisent souvent overlayfs : une couche image read-only et une couche writable. TrÚs efficace pour déploiement, mais inadapté aux données persistantes critiques si utilisé comme stockage principal.
| Usage | Bon choix | Mauvais choix |
|---|---|---|
| Image applicative | overlayfs | volume host manuel désordonné. |
| DB | volume dédié / CSI | écriture lourde dans layer container. |
| Logs | driver logging + rotation | json logs sans limite. |
| Cache | emptyDir/ephemeral | PV durable inutile. |
docker system df docker inspect CONTAINER_ID | jq '.[0].GraphDriver' du -xhd1 /var/lib/docker | sort -h
Snapshots cloud : pratiques, mais pas toujours application-consistent
AWS EBS snapshots, Azure Managed Disk snapshots et Google Persistent Disk snapshots capturent le bloc. Selon OS et application, il faut quiescer, flush ou utiliser un agent pour garantir une cohérence applicative.
| Snapshot | Garantie typique | Pour DB |
|---|---|---|
| Crash-consistent | comme coupure électrique | journal/recovery nécessaire. |
| File-system consistent | flush FS | mieux, pas toujours suffisant. |
| Application-consistent | writer DB coordonné | recommandé. |
Runbook Linux : espace, montage, croissance
# 1. Comprendre la pile lsblk -o NAME,KNAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID findmnt -R /srv blkid # 2. Espace logique df -hT df -i du -xhd1 /srv | sort -h lsof +L1 # 3. LVM pvs; vgs; lvs -a -o+devices,data_percent,metadata_percent lvextend -r -L +100G /dev/vg_data/lv_app # 4. FS xfs_info /srv/app || true tune2fs -l /dev/vg/root | head
Runbook Windows : volumes et santé
Get-Disk
Get-Partition
Get-Volume | Sort-Object DriveLetter
Get-PhysicalDisk
Get-StoragePool
Get-VirtualDisk
# Events stockage
Get-WinEvent -LogName System | Where-Object {$_.ProviderName -match 'disk|stor|ntfs|refs'} | Select-Object -First 20
# Chkdsk audit
chkdsk D: /scan
# Extension volume
Resize-Partition -DriveLetter D -Size 2TBIncident : volume plein
# Top dossiers sans traverser autres FS du -xhd1 / | sort -h # Fichiers supprimés mais encore ouverts lsof +L1 # Journald journalctl --disk-usage journalctl --vacuum-time=7d
Runbook rĂ©cupĂ©ration : rĂšgle dâor
# Image disque avec reprise erreurs ddrescue -f -n /dev/sdb /mnt/rescue/sdb.img /mnt/rescue/sdb.map ddrescue -d -r3 /dev/sdb /mnt/rescue/sdb.img /mnt/rescue/sdb.map # Vérification table GPT sgdisk -v /dev/sdb parted /dev/sdb print # Monter read-only mount -o ro,norecovery /dev/vg/data /mnt/recovery || true
Matrice de choix par workload
| Workload | Partition | Volume | FS recommandé | Pourquoi |
|---|---|---|---|---|
| OS Linux standard | GPT | LVM simple | ext4 ou XFS | maintenance simple, extension possible. |
| Serveur fichiers massif | GPT | ZFS pool ou LVM | ZFS/XFS | gros volumes, snapshots/intégrité. |
| VM datastore | GPT | ZFS mirror / SAN LUN | ZFS zvol/XFS selon hyperviseur | IOPS, snapshots, clones. |
| PostgreSQL/MySQL | GPT | LVM/ZFS testé | XFS/ext4, ZFS tuné | latence stable, fsync fiable. |
| Backup repository | GPT | ZFS/RAID | ZFS/XFS/ReFS | intégrité, gros fichiers, rétention. |
| Kubernetes stateful | cloud/provider | CSI | selon driver | provisionnement automatisé. |
Checklist design avant production
TCO logique : ce qui coûte vraiment
| Choix | Gain immédiat | Coût caché |
|---|---|---|
| FS trÚs avancé | snapshots/compression | expertise, récupération, tuning. |
| Thin provisioning | moins de capacité initiale | monitoring critique, incidents brutaux. |
| Déduplication | économie capacité | RAM/CPU, latence, complexité. |
| Pas de snapshots | simplicité | rollback lent, RTO élevé. |
| Pas de séparation /var | install rapide | risque root full. |
URLs techniques de référence
| Sujet | URL | Pourquoi |
|---|---|---|
| Linux kernel filesystems | https://docs.kernel.org/filesystems/ | Documentation noyau officielle. |
| LVM2 | https://sourceware.org/lvm2/ | Projet LVM officiel. |
| OpenZFS | https://openzfs.github.io/openzfs-docs/ | Administration ZFS. |
| Btrfs | https://btrfs.readthedocs.io/ | Commandes et concepts Btrfs. |
| XFS | https://xfs.org/ | Projet XFS. |
| Microsoft Storage | https://learn.microsoft.com/windows-server/storage/ | Storage Spaces, ReFS, NTFS, Server. |
| Kubernetes CSI | https://kubernetes-csi.github.io/docs/ | Storage cloud-native. |
| UEFI Forum | https://uefi.org/specifications | UEFI, GPT, boot moderne. |
Glossaire express
| Terme | Définition |
|---|---|
| LBA | Logical Block Addressing, adressage logique des blocs. |
| ESP | EFI System Partition, partition boot UEFI. |
| UUID | Identifiant stable de volume/FS. |
| Extent | Plage contiguë de blocs alloués. |
| Thin pool | Pool qui alloue physiquement Ă la demande. |
| COW | Copy-on-Write, écriture des nouvelles versions ailleurs. |
| Scrub | lecture/vérification proactive pour détecter corruption. |
| WAF | Write Amplification Factor. |
