Comprendre ZFS : fonctionnement et limites

Auteur : Publié le

En bref : ZFS associe un système de fichiers à un mécanisme de gestion de l’espace disque. Il vérifie l’intégrité des données, permet de créer des instantanés et de regrouper des supports en pools de stockage. Il convient particulièrement aux serveurs et aux NAS, ces appareils qui partagent des fichiers sur le réseau, mais ne remplace pas une sauvegarde.

Comment fonctionne ZFS et ce qui le distingue d’un système de fichiers classique

Un système de fichiers définit la manière dont les données sont enregistrées et retrouvées sur un support. ZFS assure aussi des fonctions souvent confiées à une couche distincte dans d’autres solutions : regroupement des disques, redondance des données et allocation de l’espace. Il dispose ainsi d’une vue directe sur la structure des fichiers comme sur leur emplacement de stockage.

ZFS a été créé chez Sun Microsystems. Aujourd’hui, de nombreuses solutions sous Linux ou fondées sur FreeBSD utilisent OpenZFS, une implémentation de ZFS développée en open source. Les fonctions disponibles et la procédure d’installation dépendent du système et de la version : il faut donc choisir un guide de configuration adapté à son environnement.

L’espace de stockage dans ZFS est organisé en plusieurs niveaux :

Vous pouvez ainsi créer des datasets distincts pour les documents, les contenus multimédias et les sauvegardes des ordinateurs, sans diviser rigidement les disques en partitions de tailles fixes. Les datasets partagent l’espace libre, dans le respect des limites et des réservations définies.

Comment ZFS détecte les données corrompues

ZFS utilise des sommes de contrôle, c’est-à-dire des valeurs calculées à partir du contenu des données. Lors de la lecture, il vérifie que les blocs enregistrés correspondent à leurs sommes de contrôle. Cela permet notamment de détecter les corruptions silencieuses, lorsqu’un périphérique renvoie un contenu incorrect sans signaler d’erreur de lecture.

Détecter une erreur ne signifie pas toujours pouvoir la réparer. Si le pool dispose d’une redondance suffisante, par exemple un miroir, ZFS peut récupérer une copie correcte du bloc et réparer la copie endommagée. Sur un disque unique, il peut détecter la corruption des données d’un fichier, mais ne peut pas en reconstituer le contenu sans autre copie correcte.

ZFS utilise aussi le mécanisme copy-on-write, ou copie sur écriture : au lieu d’écraser un bloc utilisé, il enregistre les données modifiées à un nouvel emplacement, puis met à jour les références. Cela aide à maintenir la cohérence de la structure du système de fichiers et constitue la base du fonctionnement des instantanés. Ce mécanisme ne garantit toutefois pas que toutes les dernières modifications effectuées par une application seront conservées après une coupure soudaine de courant.

Le scrub sert à contrôler périodiquement les données enregistrées en les comparant à leurs sommes de contrôle. Lorsqu’une redondance est disponible, il permet aussi de réparer les erreurs détectées. Le scrub complète la surveillance des disques, mais ne remplace ni leur diagnostic ni les sauvegardes.

Instantanés, compression et sauvegardes

Un instantané (snapshot) conserve l’état d’un dataset à un moment donné. Il occupe initialement peu d’espace supplémentaire ; l’espace nécessaire augmente lorsqu’il faut conserver les anciens blocs de données modifiées ou supprimées. Supprimer un gros fichier ne libère donc pas toujours de place si un instantané conserve encore son contenu.

Par exemple, vous créez un instantané avant de trier vos photos de famille. Si vous supprimez un dossier par erreur, vous pouvez récupérer sa version antérieure sans restaurer toute la collection depuis un disque externe. Toutefois, un instantané conservé dans le même pool ne vous aidera pas si tous les supports sont perdus, si l’appareil est volé ou si un attaquant disposant des droits nécessaires supprime cet instantané.

ZFS peut envoyer des instantanés vers un autre pool, y compris de manière incrémentale, en transmettant uniquement les changements par rapport à un état antérieur. C’est la base d’une réplication pratique. La sécurité de cette copie dépend toutefois de son lieu de stockage, des droits d’accès et des règles de conservation des anciennes versions.

La compression à l’écriture est également utile. Elle peut économiser de l’espace et réduire le nombre d’opérations sur les disques, mais le résultat dépend des données : le texte se compresse généralement mieux que des vidéos déjà encodées ou des archives. Il ne faut pas la confondre avec la déduplication, qui élimine les blocs identiques, mais peut nécessiter d’importantes ressources mémoire et une planification soignée.

Miroir ou RAID-Z : choisir l’organisation des disques

Un miroir enregistre les mêmes données sur plusieurs disques. Avec deux supports de même capacité, l’espace utilisable correspond approximativement à la capacité d’un seul, avant de tenir compte de l’espace occupé par la gestion du stockage et de la réserve d’espace libre recommandée. Cette configuration peut continuer à fonctionner après la panne d’un disque.

RAID-Z répartit les données et les informations permettant de les reconstituer entre les supports. Les variantes RAID-Z1, RAID-Z2 et RAID-Z3 tolèrent respectivement la panne d’un, de deux ou de trois disques au sein d’un même vdev. Le choix dépend de la capacité nécessaire, de la charge et du risque accepté.

L’organisation de l’ensemble du pool est déterminante : la perte d’un vdev contenant des données peut entraîner celle du pool. Ajouter un disque unique comme vdev supplémentaire à un pool protégé par un miroir n’étend pas la protection du miroir à ce disque. Avant toute extension, vérifiez aussi les possibilités de votre version d’OpenZFS : toutes les modifications de configuration ne sont pas disponibles ni faciles à annuler.

Quand choisir ZFS

ZFS est un bon candidat pour stocker des documents, des archives et des sauvegardes lorsque vous avez besoin de contrôles d’intégrité et d’instantanés. Il exige toutefois de planifier l’organisation des disques, de surveiller l’état du pool et de garder une réserve d’espace libre. Les performances et les besoins en RAM dépendent de la charge et des fonctions activées ; il n’existe pas de ratio universel entre la quantité de mémoire et la capacité des disques.

La mémoire ECC, qui détecte et corrige certaines erreurs de mémoire vive, est avantageuse sur un serveur, mais n’est pas une condition indispensable au fonctionnement de ZFS. Il est préférable de donner à ZFS un accès direct aux disques plutôt que de les masquer derrière une matrice RAID matérielle.

Avant de transférer des données importantes, dessinez un plan des vdevs, déterminez où conserver une sauvegarde indépendante et testez la récupération d’un dossier. Ce test vous renseignera davantage sur le caractère opérationnel de votre configuration que la seule création réussie d’un pool.

Voir aussi : Qu’est-ce que Linux ?

À lire aussi

Découvrez comment PHP-FPM traite les requêtes PHP, son rôle face au serveur web et comment adapter ses processus au trafic.
Découvrez BIND, logiciel libre de serveur DNS : ses rôles, la gestion des domaines et les cas où le déployer vous-même.
Découvrez le registre polonais REGON, son numéro, ses différences avec NIP et KRS et comment vérifier les données d’une entreprise.