ZFS est un système de fichiers local et un gestionnaire de volume logique créé par Sun Microsystems Inc. pour diriger et contrôler le placement, le stockage et la récupération des données dans les systèmes informatiques de classe entreprise.
Le système de fichiers et le gestionnaire de volume ZFS se caractérisent par l’intégrité des données, une grande évolutivité et des fonctions de stockage intégrées telles que :
- Réplication – processus consistant à faire une réplique (une copie) de quelque chose.
- Dédoublonnage – un processus qui élimine les copies redondantes de données et réduit la surcharge de stockage.
- Compression – une réduction du nombre de bits nécessaires pour représenter les données.
- Snapshots – un ensemble de marqueurs de référence pour les données à un moment particulier dans le temps.
- Clones – une copie identique de quelque chose.
- Protection des données – le processus de sauvegarde des informations importantes contre la corruption et/ou la perte.
Histoire de ZFS
Les ingénieurs de Sun ont commencé à développer ZFS en 2001 pour le système d’exploitation (OS) Solaris basé sur Unix de la société. En 2005, Sun a publié le code source de ZFS sous une licence de développement et de distribution commune (CDDL) dans le cadre du système d’exploitation open source OpenSolaris. Une communauté de développeurs, comprenant des représentants de Sun et d’autres fournisseurs, a travaillé sur des améliorations du code open source et a porté ZFS sur des OS supplémentaires, notamment FreeBSD, Linux et Mac OS X.
Le projet open source OpenSolaris, qui comprenait ZFS, a pris fin après l’acquisition de Sun par Oracle Corp. en 2010 et le dépôt de la marque ZFS. Les ingénieurs d’Oracle continuent à améliorer et à ajouter des fonctionnalités à ZFS sur Solaris. Oracle utilise son code propriétaire ZFS comme base d’Oracle Solaris, de l’appliance de stockage Oracle ZFS et d’autres technologies Oracle.
Une communauté de développement a lancé un nouveau projet open source, appelé OpenZFS, basé sur le code source ZFS dans la version finale d’OpenSolaris. La communauté ouverte travaille sur les nouvelles fonctionnalités, les améliorations et les corrections de bogues du code d’OpenZFS. Les systèmes d’exploitation qui prennent en charge OpenZFS comprennent Apple OS X, FreeBSD, illumos (qui est basé sur OpenSolaris), et des variantes de Linux telles que Debian, Gentoo et Ubuntu. OpenZFS fonctionne sur toutes les distributions Linux, mais seuls quelques vendeurs commerciaux le fournissent comme partie intégrante de leurs distributions. Les entreprises ayant des produits commerciaux construits sur OpenZFS incluent Cloudscaling, Datto, Delphix, Joyent, Nexenta, SoftNAS et Spectra Logic.
ZFS et OpenZFS ont tendance à attirer les entreprises qui doivent gérer de grandes quantités de données et assurer l’intégrité des données. Les utilisateurs comprennent des institutions scientifiques, des laboratoires nationaux, des agences gouvernementales, des sociétés financières, des télécommunications et des sociétés de médias et de divertissement.
ZFS signifiait initialement Zettabyte File System, mais le mot zettabyte n’a plus aucune signification dans le contexte du système de fichiers. En tant que système de fichiers 128 bits, ZFS a le potentiel pour évoluer jusqu’à 256 quadrillions de zettaoctets.
Comment fonctionne ZFS
ZFS est conçu pour fonctionner sur un seul serveur, potentiellement avec des centaines, voire des milliers de disques de stockage attachés. ZFS met en commun le stockage disponible et gère tous les disques comme une seule entité. Un utilisateur peut ajouter d’autres lecteurs de stockage au pool si le système de fichiers a besoin d’une capacité supplémentaire. ZFS est hautement évolutif et prend en charge une grande taille maximale de fichier.
ZFS stocke au moins deux copies de métadonnées chaque fois que des données sont écrites sur le disque. Les métadonnées comprennent des informations telles que les secteurs du disque où les données sont stockées, la taille des blocs de données et une somme de contrôle des chiffres binaires d’une donnée. Lorsqu’un utilisateur demande l’accès à un fichier, un algorithme de somme de contrôle effectue un calcul pour vérifier que les données récupérées correspondent aux bits originaux écrits sur le disque. Si la somme de contrôle détecte une incohérence, elle signale les mauvaises données. Dans les systèmes dotés d’un pool de stockage en miroir ou de la version ZFS du RAID, ZFS peut récupérer la copie correcte sur l’autre lecteur et réparer la copie de données endommagée.
ZFS est communément appelé système de fichiers à copie sur écriture, bien qu’Oracle le décrive comme une redirection sur écriture. Lorsque ZFS écrit des données sur le disque, il n’écrase pas les données en place. ZFS écrit un nouveau bloc à un endroit différent du disque et met à jour les métadonnées pour qu’elles pointent vers le bloc nouvellement écrit, tout en conservant également les anciennes versions des données.
Un véritable système de fichiers de copie sur écriture ferait une réplique exacte d’un bloc de données dans un emplacement séparé avant d’écraser le bloc original. Avant d’écraser les données, le système aurait besoin de lire la valeur précédente du bloc. Un système de fichiers de type « copy-on-write » nécessite trois opérations d’E/S — lecture, modification et écriture — pour chaque écriture de données. En revanche, un système de redirection en écriture ne nécessite qu’une seule opération d’E/S, ce qui facilite une plus grande efficacité et des performances plus élevées.
ZFS est un choix populaire pour les systèmes de stockage attachés au réseau, exécutant NFS au-dessus du système de fichiers, ainsi que dans les environnements de serveurs virtuels. Un autre scénario de déploiement courant consiste à superposer un système de fichiers en cluster, tel que le General Parallel File System (GPFS) ou Lustre, au-dessus de ZFS pour permettre la mise à l’échelle vers des nœuds de serveur supplémentaires. Les utilisateurs d’OpenStack peuvent déployer ZFS comme système de fichiers sous-jacent pour le stockage en bloc Cinder et le stockage objet Swift.
Fonctionnalités clés de ZFS
Snapshots et clones : ZFS et OpenZFS peuvent effectuer des copies ponctuelles du système de fichiers avec une grande efficacité et rapidité car le système conserve toutes les copies des données. Les instantanés sont des copies immuables du système de fichiers, tandis que les clones peuvent être modifiés. Les instantanés et les clones sont intégrés dans les environnements de démarrage avec ZFS sur Solaris, ce qui permet aux utilisateurs de revenir à un instantané si quelque chose ne va pas lorsqu’ils appliquent un correctif ou mettent à jour le système. Un autre avantage potentiel de ZFS est en tant que technique de récupération contre les ransomwares.
RAID-Z : RAID-Z permet de stocker les mêmes données à plusieurs endroits pour renforcer la tolérance aux pannes et améliorer les performances. Le système reconstruit les données du disque perdu à l’aide des informations stockées sur les autres disques du système. Comme le RAID 5, le RAID-Z répartit les informations de parité sur chaque disque pour permettre au système de stockage de fonctionner même si un disque est défaillant. Toutefois, avec le RAID-Z, les données rayées sont un bloc complet, dont la taille est variable. Bien que le RAID-Z soit généralement comparé au RAID 5, il effectue certaines opérations différemment afin de résoudre certains problèmes de longue date du RAID traditionnel. L’un de ces problèmes est connu sous le nom de « write hole effect », c’est-à-dire qu’un système ne peut pas déterminer quels blocs de données ou de parité ont été écrits sur le disque en raison d’une panne de courant ou d’une interruption catastrophique du système. Les vendeurs de systèmes qui utilisent le RAID traditionnel résolvent généralement le problème par l’utilisation d’une alimentation ininterrompue ou d’un matériel dédié.
RAID-Z2 prend en charge la perte de deux disques de stockage, de manière similaire au RAID 6, et RAID-Z3 peut tolérer la perte de trois périphériques de stockage. Les utilisateurs ont la possibilité de disposer les lecteurs en groupes, comme avec le RAID classique. Par exemple, un système avec deux groupes de six lecteurs configurés en RAID-Z3 pourrait tolérer la perte de trois lecteurs dans chaque groupe.
Compression : La compression des données en ligne est une fonctionnalité intégrée dans ZFS et OpenZFS pour réduire le nombre de bits nécessaires au stockage des données. ZFS et OpenZFS prennent chacun en charge un certain nombre d’algorithmes de compression. Les utilisateurs ont la possibilité d’activer ou de désactiver la compression en ligne.
Dédoublonnage : La déduplication des données en ligne est une fonctionnalité intégrée à ZFS et OpenZFS qui permet une efficacité de stockage en éliminant les données redondantes. ZFS et OpenZFS trouvent les données en double en examinant la somme de contrôle d’un bloc, dont la taille peut varier. Les utilisateurs peuvent activer ou désactiver la déduplication en ligne.
ZFS envoi/réception : ZFS et OpenZFS permettent d’envoyer un instantané du système de fichiers à un nœud de serveur différent, ce qui permet à un utilisateur de répliquer des données sur un système distinct à des fins telles que la sauvegarde ou la migration de données vers un stockage en nuage.
Sécurité : ZFS et OpenZFS prennent en charge les permissions déléguées et les listes de contrôle d’accès à granularité plus fine pour gérer qui peut effectuer des tâches administratives. Les utilisateurs ont la possibilité de définir ZFS en lecture seule, de sorte qu’aucune donnée ne peut être modifiée. Oracle prend en charge le cryptage dans ZFS sur Solaris.
Avantages et limites de ZFS
ZFS intègre le système de fichiers et le gestionnaire de volume afin que les utilisateurs n’aient pas à obtenir et à apprendre des outils et des ensembles de commandes distincts. ZFS offre un riche ensemble de fonctionnalités et de services de données sans frais, car il est intégré au système d’exploitation Oracle. Le logiciel OpenZFS est disponible gratuitement. Le système de fichiers peut être étendu en ajoutant des disques au pool de stockage. Les systèmes de fichiers traditionnels exigent que la partition du disque soit redimensionnée pour augmenter la capacité, et les utilisateurs ont souvent besoin de produits de gestion de volume pour les aider.
ZFS est limité à l’exécution sur un seul serveur, contrairement aux systèmes de fichiers distribués ou parallèles, tels que GPFS et Lustre, qui peuvent évoluer vers plusieurs serveurs.
Le riche ensemble de fonctionnalités offert avec ZFS peut rendre le logiciel compliqué à utiliser et à gérer. Des fonctionnalités telles que les algorithmes de somme de contrôle ZFS intégrés peuvent nécessiter une puissance de traitement supplémentaire et affecter les performances.
Dans la communauté Linux, il existe différentes opinions sur les licences en ce qui concerne la redistribution du code ZFS et des modules binaires du noyau. Par exemple, Red Hat considère qu’il est problématique de distribuer du code protégé par une CDDL avec du code protégé par une licence publique générale (GPL). En revanche, Canonical, qui distribue Ubuntu, a déterminé qu’il était en conformité avec les termes des licences CDDL et GPL.
ZFS vs. OpenZFS
Le ZFS d’Oracle et l’open source OpenZFS dérivent du même code source ZFS. Sur des pistes distinctes, Oracle et la communauté open source ont ajouté des extensions et apporté des améliorations de performance significatives à ZFS et OpenZFS, respectivement. Les mises à jour d’Oracle ZFS sont propriétaires et disponibles uniquement dans les technologies Oracle. Les mises à jour du code open source d’OpenZFS sont disponibles gratuitement.
La liste des améliorations qu’Oracle a apportées à ZFS depuis 2010 comprend :
- le chiffrement;
- la prise en charge de la persistance des données compressées à travers les redémarrages du système d’exploitation dans le cache de remplacement adaptatif (ARC) L2;
- les étiquettes amorçables de l’interface Extensible Firmware qui fournissent un support pour les disques physiques et les volumes de disques virtuels de plus de 2 To;
- les quotas d’utilisateurs et de groupes par défaut ; et
- la surveillance des pools/systèmes de fichiers.
La liste des mises à jour que la communauté open source a apportées à OpenZFS comprend :
- algorithmes de compression supplémentaires;
- envoi/réception résumable, qui permet à une opération d’envoi/réception ZFS de longue durée de redémarrer à partir du point d’interruption du système;
- envoi/réception compressé, qui permet au système d’envoyer des données compressées d’un pool ZFS à un autre sans avoir à décompresser/recompresser les données lors du déplacement du nœud d’envoi vers la destination ;
- Archivage compressé, qui permet à ZFS de conserver les données compressées en mémoire, permettant un ensemble de données de travail plus important dans le cache ; et
- augmentation de la taille maximale des blocs de 128 Ko à 16 Mo pour améliorer les performances lors du travail avec des fichiers volumineux et accélérer la reconstruction des données lors de la récupération après une panne de disque.