Gestion des Pools de Stockage ZFS sous Linux
ZFS est un système de fichiers et gestionnaire de volumes combiné, conçu à l’origine par Sun Microsystems. Il apporte une intégrité des données exceptionnelle, des snapshots instantanés et une gestion flexible du stockage. Ce guide vous accompagne dans la création et l’administration de pools ZFS sous Linux, de l’installation initiale aux stratégies de production avancées.
Installation et Préparation
Sur Ubuntu, ZFS est disponible directement depuis les dépôts officiels. L’installation est simple et ne nécessite que quelques commandes :
sudo apt update
sudo apt install zfsutils-linux
sudo modprobe zfs
zfs version
Après l’installation, vérifiez que le module noyau est chargé correctement avec lsmod | grep zfs. Identifiez ensuite les disques disponibles pour votre pool avec lsblk ou fdisk -l. Assurez-vous que les disques ne contiennent pas de données importantes, car la création du pool formatera les disques sélectionnés.
Pour les environnements de production, il est recommandé d’utiliser des identifiants de disques persistants (/dev/disk/by-id/) au lieu des noms de périphériques classiques (/dev/sdX) qui peuvent changer au redémarrage.
Création et Configuration des Pools
La création d’un pool ZFS implique le choix d’une topologie de vdevs qui détermine le niveau de redondance et les performances. Les configurations les plus courantes sont le mirror, RAIDZ1, RAIDZ2 et RAIDZ3 :
# Pool en miroir (équivalent RAID1)
sudo zpool create datapool mirror /dev/disk/by-id/disk1 /dev/disk/by-id/disk2
# Pool RAIDZ1 (équivalent RAID5)
sudo zpool create datapool raidz /dev/disk/by-id/disk1 /dev/disk/by-id/disk2 /dev/disk/by-id/disk3
# Pool RAIDZ2 (équivalent RAID6)
sudo zpool create datapool raidz2 /dev/disk/by-id/disk1 /dev/disk/by-id/disk2 /dev/disk/by-id/disk3 /dev/disk/by-id/disk4
# Vérifier l'état du pool
zpool status datapool
zpool list
Une fois le pool créé, configurez les datasets avec la compression et les quotas adaptés à votre utilisation :
zfs create datapool/documents
zfs set compression=lz4 datapool/documents
zfs set quota=100G datapool/documents
zfs set reservation=50G datapool/documents
zfs get all datapool/documents
La compression LZ4 est recommandée pour la majorité des cas d’utilisation : elle offre un excellent ratio compression/performance avec un impact CPU minimal.
Snapshots et Réplication
Les snapshots ZFS sont instantanés et ne consomment presque aucun espace disque initialement. Ils ne grandissent que lorsque les données originales sont modifiées. Cette fonctionnalité est idéale pour les sauvegardes et la récupération rapide :
# Créer un snapshot
zfs snapshot datapool/documents@backup-2026-01-03
# Lister les snapshots
zfs list -t snapshot
# Restaurer un snapshot
zfs rollback datapool/documents@backup-2026-01-03
# Réplication vers un serveur distant
zfs send datapool/documents@backup-2026-01-03 | ssh user@serveur-distant zfs recv backuppool/documents
Pour la réplication incrémentale, utilisez l’option -i avec zfs send pour n’envoyer que les différences entre deux snapshots, réduisant considérablement la bande passante et le temps de transfert.
Surveillance et Maintenance
La maintenance régulière d’un pool ZFS est essentielle pour garantir l’intégrité des données à long terme. Le scrubbing vérifie tous les blocs de données et corrige automatiquement les erreurs détectées grâce aux copies redondantes :
# Lancer un scrub
sudo zpool scrub datapool
# Vérifier l'état du scrub
zpool status datapool
# Automatiser le scrub mensuel avec cron
echo "0 2 1 * * root /sbin/zpool scrub datapool" | sudo tee /etc/cron.d/zfs-scrub
# Surveiller l'utilisation de l'espace
zpool list -v
zfs list -o name,used,avail,refer,compressratio
Surveillez régulièrement les compteurs d’erreurs avec zpool status. Si des erreurs de checksum apparaissent sur un disque, planifiez son remplacement rapidement. Pour remplacer un disque défaillant dans un mirror ou RAIDZ, utilisez zpool replace datapool /dev/ancien_disque /dev/nouveau_disque et le resilvering démarrera automatiquement.