Pourquoi le système de fichiers ZFS sous Linux Ubuntu est-il si bon?

Système de fichiers ZFS sous Linux Ubuntu: Quelles sont les particules de sa structure, ses avantages et ses inconvénients? Explorons-le dans l’article d’aujourd’hui et découvrons-le.

Pourquoi le système de fichiers ZFS sous Linux Ubuntu est-il si bon?

ZFS ou Zettabyte File System est un système de fichiers spécial créé à l’origine par Sun Microsystems pour le système d’exploitation appelé Solaris. Il prend en charge d’énormes quantités de données, combine les concepts de système de fichiers, de disque physique et de gestionnaire de volumes, et propose des méthodes simples de gestion des volumes de stockage.

Il s’agit d’un système de fichiers de nouvelle génération initialement conçu pour les solutions NAS avec une sécurité, une fiabilité et des performances améliorées. Contrairement à de nombreux autres systèmes, ZFS est un système de fichiers 128 bits offrant une capacité pratiquement illimitée. ZFS est un projet open source sous licence CDDL (Common Development and Distribution License).

ZFS - Structure du système de fichiers Zettabyte

Si vous souhaitez utiliser ZFS “prêt à l’emploi”, vous devrez installer soit FreeBSD ou un système d’exploitation utilisant le noyau illumos (illumos est un fork du noyau OpenSolaris).

Si vous souhaitez utiliser ZFS sur Ubuntu, vous devez ajouter les fonctionnalités de support manuellement – mais c’est une chose assez simple à faire et cela implique d’exécuter quelques commandes. Nous l’explorerons en détail un peu plus tard, mais parlons maintenant des avantages et des inconvénients de ce système de fichiers.

Visualisation
ZFS File System on Linux Ubuntu and Its Key Advantages

ZFS File System on Linux Ubuntu and Its Key Advantages

Avantages de ZFS

En parlant des avantages de ZFS, on peut distinguer les suivants:

Son modèle d’administration est simplifié.

Il combine la gestion des volumes, des matrices RAID et du système de fichiers. Tout ce dont vous avez besoin pour gérer les volumes, les niveaux de redondance, les systèmes de fichiers, les taux de compression et les points de montage, ce sont quelques commandes.

Cette approche simplifie également la surveillance car il y a moins de niveaux à prendre en compte.

Un autre avantage est lié à la garantie de l’intégrité des données.

Pendant que certaines données sont écrites, leur somme de contrôle est également calculée et écrite. Plus tard, lorsque les données sont lues, la somme de contrôle est à nouveau vérifiée. Si la somme de contrôle ne correspond pas aux données lues, ZFS identifie une erreur. Après cela, le système de fichiers tente de réparer automatiquement une telle erreur.

De plus, ZFS est parfaitement évolutif avec la possibilité d’ajouter de nouveaux périphériques de stockage, des options de gestion du cache, etc.

La fonction de copie sur écriture.

Dans la plupart des systèmes de fichiers, les données sont perdues pour toujours lorsqu’elles sont écrasées. D’un autre côté, dans ZFS, les nouvelles informations sont écrites dans un bloc différent.

La fonction de copie sur écriture

Une fois l’opération d’écriture terminée, les métadonnées du système de fichiers sont mises à jour pour pointer vers les nouvelles informations. Cela permet de préserver les anciennes données en cas de panne du système (ou si un autre événement malheureux se produit).

Ce système de fichiers comporte des options de stockage intégrées

  • Réplication – le processus de création de copies de quelque chose.

  • Déduplication – une technique permettant d’éliminer les copies en double de données répétitives et de réduire la charge de stockage.

    Déduplication
  • La compression est l’option qui permet d’économiser de l’espace disque et d’augmenter la vitesse, car le nombre de bits requis pour représenter les données est réduit.

  • Les Snapshots sont des reflets cohérents de l’ensemble des données représentant la forme sous laquelle elles existaient à un moment donné.

    Snapshots
  • Les clones sont des copies identiques de quelque chose.

Limites de ZFS

Cependant, comme tout autre système de fichiers, ZFS présente quelques inconvénients.

Lorsque sa capacité de stockage est utilisée à 80% ou plus, les performances de ZFS ont tendance à se dégrader fortement.

Il s’agit d’un problème courant pour de nombreux systèmes de fichiers. Lorsque le pool actuel consomme 80% du stockage disponible, vous devez soit étendre le groupe, soit le migrer vers un système de stockage avec une plus grande capacité.

Aucune possibilité de réduire le groupe de stockage.

Vous ne pouvez pas supprimer des périphériques ou des vdevs (qui signifie périphériques virtuels) du groupe après leur ajout.

Il existe également des limites à la modification du type de redondance.

À l’exception du basculement d’un groupe sur disque unique vers un groupe de mise en miroir, vous ne pouvez pas modifier le type de redondance. Après avoir choisi le type de redondance, la seule solution est de la détruire et d’en créer une nouvelle, tout en restaurant les données à partir de sauvegardes ou d’un autre emplacement.

Installer ZFS sur Ubuntu

Voyons maintenant comment installer ZFS sur un système d’exploitation Linux, avec l’exemple d’Ubuntu version 20.04.

Vous aurez besoin du terminal pour l’installation, alors appuyez sur le raccourci clavier Ctrl+Alt+T pour l’ouvrir.

Exécutez ensuite cette commande:

$ sudo apt update

pour vérifier les mises à jour de l'application. Lorsque la commande est saisie, le système vous demandera le mot de passe root; tapez-le et appuyez sur Entrée.

sudo apt update

Et celui-ci, pour l'installation:

$ sudo apt install zfsutils-linux

sudo apt install zfsutils-linux

Tapez y pour confirmer la commande d'installation et appuyez sur Entrée. Il démarre le processus d'installation du logiciel.

Pour vérifier l'installation de ZFS, utilisez cette commande:

$ zfs –version

Vérifiez la version installée de ZFS

As a result, the program's version will be displayed. Now you can create a storage pool with a vdev, a virtual device.

Groupe de stockage

Un groupe de stockage est un ensemble comprenant un ou plusieurs périphériques virtuels sur lesquels des données peuvent être stockées. Un groupe ZFS, également connu sous le nom de Zpool, est un conteneur de données de niveau supérieur dans ce système de fichiers. Il permet de créer un ou plusieurs systèmes de fichiers (ensembles de données) ou de bloquer des périphériques (volumes). Ces systèmes de fichiers et périphériques de bloc sont alors capables d'utiliser le rythme restant des groupes. Toutes les opérations de partitionnement et de formatage seront effectuées par ZFS.

Un appareil virtuel (vdev)

Un périphérique virtuel (vdev) peut être constitué d'un ou plusieurs périphériques physiques. Il peut s'agir d'un groupe ou d'une partie de celui-ci, et il peut avoir différents niveaux de redondance: miroir, miroir à trois voies, RAIDZ, RAIDZ-2 ou RAIDZ-3.

RAID-Z est une implémentation d'une RAID-5 modifiée. Dans ZFS, il est conçu pour surmonter l'erreur de trou d'écriture, qui affecte souvent les systèmes RAID-5 conventionnels. RAID-Z1 nécessite au moins trois disques: deux pour le stockage des données et un pour la parité.

RAID-Z2 doit avoir au moins quatre disques – deux pour le stockage et deux pour la parité.

RAID-Z2

Enfin, pour RAID-Z3, vous avez besoin d'au moins deux disques pour le stockage et trois disques pour la parité.

RAID-Z3

Comment créer une RAIDz

Voyons maintenant comment créer un système RAID-Z avec plusieurs disques. Tout d’abord, décidons quels lecteurs doivent être inclus.

Utilisez l'utilitaire fdisk pour voir quels lecteurs sont connectés et lesquels d'entre eux conviennent à vos besoins. Exécutez cette commande pour lister les lecteurs:

$ sudo fdisk -l

En conséquence, vous verrez une liste de lecteurs avec des informations détaillées sur chacun.

Vérifier les disques connectés

À des fins d'illustration, je vais vous montrer comment construire une RAID-Z1 - c'est un équivalent du RAID 5 avec un seul disque de parité. Sa conception vous permet d'utiliser la matrice et de conserver vos données intactes même en cas de panne de l'un des disques.

J'ai trois disques durs répertoriés comme /dev/sdd, /dev/sde et /dev/sdf. Je vais créer un pool avec le nom «zdata». Voici la commande à utiliser :

$ sudo zpool create ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf

$ sudo zpool create zdata raidz /dev/sdd /dev/sde /dev/sdf

Créez un groupe avec le nom zdata

S'il y a une erreur, vous pouvez exécuter cette commande en ajoutant -f après «zpool create» - cela force la commande.

$ sudo zpool create -f ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf

Pour trouver le point de montage, exécutez la commande df -h après la création du groupe:

$ df –h

Trouver le point de montage

Le groupe est monté dans /zdata. Pour modifier le point de montage de votre groupe, utilisez la syntaxe suivante:

$ sudo zfs set mountpoint =<path> <pool_name>

Dans cet exemple, j'ai utilisé /var/pool comme nouveau point de montage.

$ sudo zfs set mountpoint=/var/pool zdata

Vérifions le nouveau point:

$ df –h

Vérifiez le nouveau point de montage

Vous pouvez créer des répertoires dans le groupe de stockage. Par exemple, créons un répertoire avec le nom mydata.

$ sudo zfs create zdata/mydata

Pour afficher tous les pools de stockage ZFS de ce système, exécutez la commande suivante:

$ zpool list

Afficher tous les groupes de stockage ZFS dans ce système

Pour voir la configuration et l'état de chaque périphérique du pool ZFS, utilisez la commande status.

$ zpool status

Pour afficher les événements et éliminer les problèmes, il existe une commande supplémentaire:

$ sudo zpool events zdata –v

Consultez la configuration et l'état de chaque périphérique du pool ZFS.

Si vous devez ajouter un disque dur supplémentaire au groupe de stockage ZFS, vous devez exécuter cette commande avec le nom du disque à ajouter.

$ sudo zpool add zdata /dev/sdb

Une fois le disque ajouté, regardons l'état du groupe:

$ zpool status

Ajouter un disque dur supplémentaire au groupe de stockage ZFS

Enfin, la dernière commande pouvant être utilisée pour supprimer un groupe de stockage ZFS.

$ sudo zpool destroy zdata

Comment créer, restaurer et supprimer des snapshots ZFS

Ce système de fichiers vous permet de créer des snapshots de votre groupe.

Un snapshot est une copie ponctuelle en lecture seule du système de fichiers créé à un moment donné. Vous pouvez créer des snapshots d’ensembles de données ou de groupes entiers. Un snapshot inclut une version originale du système de fichiers ainsi que toutes les modifications apportées après la création de ce snapshot. En d’autres termes, il s’agit d’une copie en lecture seule des différences.

Pour créer des snapshots, utilisez la commande - zfs snapshot, suivie du nom de snapshot. Dans cet exemple, j'ai utilisé zdata/mydata pour créer un snapshot.

$ sudo zfs snapshot zdata/mydata@snap1

Utilisez la commande suivante pour vérifier le snapshot:

$ zfs list -t snapshot

Créer un snapshot de groupe ZFS

Le snapshot peut être renommé si nécessaire:

sudo zfs rename zdata/mydata@snap1 zdata/mydata@snap2

Vous pouvez annuler les modifications en annulant le snapshot. Cependant, cela signifie que vous perdrez toutes les modifications apportées après la création de snapshot.

Pour revenir à un certain snapshot, exécutez la commande zfs rollback avec le nom d'un certain snapshot. Cela annulera toutes les actions effectuées dans ce répertoire après la création de snapshot.

$ sudo zfs rollback test-pool/mydata@snap1

Déplacer ZFS vers un snapshot requis

Cette commande ramènera le système à une certaine date.

Une fois l'opération de restauration terminée, vous pouvez vérifier dans le répertoire la disponibilité des fichiers qui ont été supprimés après la création de snapshot.

Envoyer et recevoir ZFS

Les snapshots peuvent être enregistrés dans un fichier puis récupérés, ce qui est parfait pour créer des sauvegardes ou pour envoyer des copies sur le réseau (par exemple, avec SSH) pour copier le système de fichiers.

La commande «envoyer» envoie un snapshot du système de fichiers qui peut être redirigé vers un fichier ou vers une autre machine du flux. La commande «recevoir» reçoit ce flux et réécrit une copie de snapshot sur le système de fichiers ZFS.

Par exemple, créons un snapshot supplémentaire et enregistrons-le dans un fichier à l'aide de cette commande:

sudo zfs snapshot -r zdata/mydata@snap3

sudo zfs send zdata/mydata@snap2> ~/mydata-snap.zfs

Créez un snapshot et enregistrez-le dans un fichier

Et puis restaurons-le avec une autre commande:

sudo zfs receive -F zdata/mydata-copy < ~/mydata-snap.zfs

Restaurer un snapshot à partir d'un fichier

À l'aide de scripts supplémentaires, vous pouvez configurer le système de fichiers pour créer automatiquement des snapshots et les envoyer à un serveur avec le protocole SSH.

Compression des données ZFS

Comme je l'ai mentionné précédemment, ZFS vous permet de compresser automatiquement les données. Compte tenu de la puissance de calcul des processeurs actuels, cette option est très utile, car le volume réduit de données signifie qu'il y a moins de données à lire et à écrire physiquement, ce qui se traduit par des opérations d'entrée/sortie plus rapides. ZFS propose une large gamme de méthodes de compression. L'option par défaut est lz4 (un substitut hautes performances à lzjb) qui permet une compression et une extraction plus rapides par rapport à lzjb, tout en utilisant un taux de compression légèrement plus élevé. Pour modifier le taux de compression, utilisez cette commande:

sudo zfs set compression=gzip-9 zdata

Ou même changer le type de compression avec une autre commande:

sudo zfs set compression=lz4 zdata

Vous pouvez vérifier le taux de compression actuellement utilisé avec cette commande:

sudo zfs get compressratio

Compression des données ZFS

Le choix le plus sûr est le lz4, car il est beaucoup plus rapide que les autres options, tout en conservant un très bon niveau de performances.

Conclusion

Tout bien considéré, ZFS est évidemment le système de fichiers qui vous offre un large éventail de possibilités. Non seulement il vous permet de gérer vos données d'une manière très efficace et innovante, mais il peut également récupérer des données sans interrompre votre travail, en cas d'urgence. De plus, en cas d'erreur ou de panne du système, l'ensemble du système peut être facilement restauré grâce à la fonction d'instantané, de sorte que vous reviendrez simplement à l'état dans lequel il se trouvait à un moment donné.

Si vous rencontrez des problèmes de perte de données depuis ZFS et RAID-Z, essayez Hetman RAID Recovery. Cela vous aidera certainement à récupérer des fichiers supprimés accidentellement du système de fichiers ZFS ou à accéder aux données stockées dans une matrice RAID-Z endommagée. Ce programme s'avérera utile si vos informations disparaissent à la suite d'erreurs, de formatage, d'écrasement ou d'autres scénarios courants de perte de données.

Abdelhamid Balti

Auteur: , Rédacteur technique

AbdelHamid Balti est un rédacteur technique chez Hetman Software. Il gère les tutoriels, les procédures et les revues détaillées concernant le fonctionnement des outils de l'entreprise avec toutes sortes de périphériques de stockage de données.

Mykhailo Miroshnychenko

Éditeur: , Rédacteur technique

Mykhailo Miroshnychenko est l'un des principaux programmeurs de la société Hetman Software. S'appuyant sur quinze années d'expérience en développement logiciel, il partage ses connaissances avec les lecteurs de notre blog. En plus de la programmation, Mykhailo est un expert dans le domaine de la récupération de données, des systèmes de fichiers, des périphériques de stockage de données et des matrices RAID.

Recommandé pour vous

Vous êtes accueilli par l'assistant Hetman Software, créé sur la base de l'intelligence artificielle.
Démarrer la discussion