ZFS (Zettabyte File System) est un système de fichiers développé par Sun Microsystems. Il combine les fonctionnalités d'un système de fichiers avec celles d'un gestionnaire de volume de stockage. ZFS fonctionne sur FreeBSD, Linux (via OpenZFS) et d'autres systèmes Unix.
Chaque bloc de données dans ZFS possède une somme de contrôle (checksum). Cette somme n'est pas stockée avec les données, mais dans le pointeur du bloc parent. Les checksums remontent l'ensemble de la hiérarchie du système de fichiers jusqu'à la racine, créant une structure appelée arbre de Merkle.
Avantages :
- À chaque lecture, ZFS recalcule le checksum et le compare à la valeur stockée
- Si une corruption est détectée, ZFS peut la réparer automatiquement en utilisant les copies disponibles
- Détecte les défauts matériels, les bugs firmware et les corruptions silencieuses (bit rot)
ZFS utilise le mécanisme copy-on-write : les données ne sont jamais modifiées sur place. Lors d'une écriture, les données sont écrites dans un nouveau bloc, et les métadonnées sont mises à jour pour pointer vers le nouveau bloc. Les anciennes données restent intactes jusqu'à suppression.
Avantages :
- Protège contre les écritures incomplètes en cas de panne électrique
- Permet une récupération facile des données
- Base des snapshots et des clones
Un snapshot est une copie point-dans-le-temps (un instant T) du système de fichiers. C'est une image en lecture seule de vos données à un moment précis.
- Espace efficace : Grâce au copy-on-write, un snapshot occupe très peu d'espace. Seules les modifications après sa création consomment de l'espace disque supplémentaire
- Nombre illimité : ZFS peut créer virtuellement autant de snapshots que voulu (jusqu'à 2⁴⁸)
- Automatisation possible : Les snapshots peuvent être créés automatiquement à intervalles réguliers
- Clones possibles : Contrairement aux snapshots (en lecture seule), on peut créer des clones modifiables basés sur un snapshot
- Récupérer rapidement un fichier accidentellement supprimé
- Restaurer le système à un état antérieur en cas d'erreur
- Créer des points de sauvegarde avant des opérations risquées
- Effectuer des sauvegardes cohérentes sans interruption du service
ZFS implémente le RAID en logiciel, directement dans le système de fichiers. Les configurations principales sont :
- RAID-Z1 : Nécessite au minimum 3 disques. Tolère la perte d'1 disque
- RAID-Z2 : Nécessite au minimum 4 disques. Tolère la perte de 2 disques
- RAID-Z3 : Nécessite au minimum 5 disques. Tolère la perte de 3 disques
- Mirror : Duplication de données sur 2 disques minimum
- Gestion intégrée : pas besoin d'un contrôleur RAID matériel
- Meilleure protection : ZFS a accès direct aux disques et peut vérifier l'intégrité lors de la reconstruction
- Pas de "write hole" : contrairement au RAID 5 matériel, ZFS évite la vulnérabilité où les écritures incomplètes causent une corruption lors de défaillance
- Plus d'espace utilisable qu'un simple miroir
ZFS organise le stockage en pools. Un pool est un ensemble de disques travaillant ensemble. On ajoute des vdevs (virtual devices) au pool pour ajouter du stockage. Chaque vdev est indépendant : si un vdev utilise RAID-Z1 et qu'on y ajoute un nouveau vdev RAID-Z1, ZFS alterne les écritures entre les deux pour améliorer les performances.
Le scrubbing est une vérification complète de l'intégrité des données. ZFS parcourt toutes les données et métadonnées du pool, recalcule les checksums et détecte les corruptions. Cette opération peut être programmée régulièrement (par exemple mensuellement).
ZFS peut compresser les données avant écriture. La compression est transparente : l'application ne le sait pas, mais les données occupent moins d'espace disque.
ZFS peut éliminer les données en double dans le pool. Cependant, cela consomme beaucoup de RAM et ralentit les écritures, donc elle n'est pas recommandée sauf dans des cas précis.
| Avantage | Détail |
|---|---|
| Intégrité | Checksums end-to-end détectent et réparent les corruptions |
| Snapshots | Récupération facile et rapide, consomme peu d'espace |
| RAID logiciel | Gestion intégrée, plus sûr que le RAID 5 matériel |
| Copy-on-write | Protège contre les défaillances lors de l'écriture |
| Scalabilité | Gère très grandes capacités (zettaoctets) |
| Gestion simplifiée | Pool unifié au lieu de gérer des partitions |
- Performance dégradée quand le pool atteint 80% de capacité
- Impossible de réduire un pool (on ne peut qu'ajouter)
- Difficile de changer le type de redondance après création
- Consomme plus de RAM qu'un système de fichiers simple
- La déduplication peut ralentir le système si mal configurée
- Serveurs NAS (stockage en réseau)
- Environnements de virtualisation (Proxmox, VMware)
- Sauvegarde et archivage de données
- Systèmes d'entreprise nécessitant une haute disponibilité
- Infrastructure de stockage pour bases de données