Ceci est une ancienne révision du document !


Logo de OpenZFS

ZFS

ZFS est un système de fichiers open source pour la gestion de "très haute capacité de stockage".

C'est un système de fichiers moderne implémentant des fonctionnalités avancées :

  • Il permet d'agréger de multiples supports de stockage sur une infrastructure, à la manière du RAID, sous forme de pool (agrégat de plusieurs supports ou clusters de supports).
  • Il fournit des fonctionnalités d'instantannés (snapshots), permettant de restaurer le stockage à un état antérieur, en nécessitant un minimum de ressources.
  • Il est compatible UNIX (permissions POSIX), ce qui en fait un bon candidat pour une infrastructure Linux (et un concurrent à Btrfs).

Il est cependant particulièrement gourmand en mémoire vive, et son utilisation est relativement complexe.

Il est principalement utilisé par des administrateurs système et devops pour faciliter la gestion de grappes de serveurs (clusters) en data centers, et éviter des coupures de service dans le cadre de services d'hébergement cloud (ou autre traitement de big data).

Installation

  • Proposé de façon expérimentale en version 20.04
  • Proposé en version 22.04.2
    Capture d'un écran d'installation d'Ubuntu.
  • Proposé normalement en version 21.10 voir ce guide
  • Non proposé en version 23.04
  • Non proposé en version 23.10
  • Avenir incertain en version 24.04
  • Exemple pour la partie spécifique ZFS lors d'une installation 22.04.

Sur la page du type d'installation, pour créer une partition ZFS, il faut sélectionner la seconde option donnant accès aux Fonctions avancées. Sélectionner Effacer le disque et utiliser ZFS. Éventuellement, cliquer sur Chiffrer la nouvelle installation…. Cliquer sur Continuer.

Éventuellement, la grille de saisie de la clé de chiffrement est affichée. Il est possible de choisir moins de six caractères en ignorant le message d'avertissement de taille insuffisante.

Attention au moment de la saisie de la clé lors du démarrage, le clavier numérique n'est pas activé. Il faut donc utiliser les chiffres du clavier normal.

Par défaut, le stockage est proposé sur le support d'installation qui est souvent une clé USB. C'est déconseillé par l'installateur. Si le support d'installation n'a pas été fait en mode persistant, le fichier sera détruit à l'arrêt de l'installation. Il n'est pas obligatoire de générer la clé de sécurité. Cliquer sur Installer maintenant.

L'installateur va maintenant inspecter les supports connectés, y compris les clés USB, et les proposer pour faire la sélection du bon.

Le disque interne SDA est le premier de la liste. Faire donc bien attention au choix. Si deux disques sont de même taille et du même constructeur, la confusion reste possible. Après avoir fait le bon choix, cliquer sur Installer maintenant.

Installer sur clé USB est possible. Il faut compter une douzaine d'heures. Mais booter depuis une clé USB est impossible. Environ 80% des applications de base ne sont pas opérationnelles pour cause de temps de chargement trop long. En effet, maintenant, au démarrage, plein d'opérations sont faites en parallèle et il n'est pas évident de modifier le temps d'attente avant de déclarer l'action en échec.

La grille de confirmation est affichée. À ce niveau, il n'y a plus que le N° du SCSI et la lettre du disque qui sont repérables. Il est indiqué que 4 partitions seront créées.

La table de partition GPT ou MSDOS est supprimée pour fabriquer du ZFS.

La première partition fait 512 Mo et est en FAT 32. Elle contient la structure de BOOT EFI ainsi que la structure de boot du GRUB

La seconde partition fait 2 Go et est formatée en linux-swap. En effet ZFS ne sait pas gérer un fichier swap.

Ces deux partitions sont standard, du point de vue GPARTED.

La troisième partition fait 2 Go et est en ZFS. Elle contient les fichiers de boot de ubuntu

La quatrième partition fait le reste de la taille disque. Elle contient le système d'exploitation et les données.

Ces deux dernières partitions sont bien vues par GPARTED. Il ne sait pas les rétrécir. Il sait juste les supprimer. Si la décision de supprimer la quatrième partition est prise, les trois autres partitions sont supprimées, et on obtient un disque ZFS totalement vide.

Utilisation

Ce chapitre n'est pas développé.

Contraintes

Pour bien fonctionner, il faut au moins 20% d'espace libre sinon message d'avertissement :

Requesting to save current system state.
ERROR couldn't save system state: Minimum free space to take a snapshot and preserve ZFS performance is 20%.
Free space on pool "rpool" is 20%.

Créations des partitions

Lancer GParted pour faire les créations des partitions. Elles seront de tailles identiques, de préférence sur des disques différents pouvant être externes. Le type de "système de fichiers" à retenir sera "non formaté" car l'exécution sera plus rapide. Mais ce n'est pas grave de mettre un autre type. Il y aura juste à accepter son écrasement au moment de la création.

Les utilisations principales seront lessuivantes

  • mirror. Si seulement deux partitions. (Le cas de ce chapitre).
  • raidz-1. Si trois partitions ou plus et on veut dupliquer en un seul exemplaire.
  • raidz-2. Si quatre partitions ou plus et on veut dupliquer en deux exemplaires.
  • raidz-3. Si cinq partitions ou plus et on veut dupliquer en trois exemplaires.

Création du regroupement

installons le logiciel manquant.

sudo apt install zfsutils-linux

La commande est, par exemple, la suivante :

zpool create MesDonnees mirror /dev/sdb8 /dev/sdc11

Puis fabriquons l'enveloppe qui convient.

sudo zpool create -f -m $HOME/data -O encryption=on -O keyformat=passphrase -O keylocation=prompt -o feature@lz4_compress=enabled MesDonneesPersonnelles mirror /dev/sdb8 /dev/sdc11

Il est exigé que la taille du mot de passe soit au minima de 8 caractères quelconques sans aucune autre contrainte.

Ne pas oublier que la perte de ce mot de passe entraine l'impossibilité définitive d'accéder aux données.

Activation de la compression

On va constater qu'actuellement, il est nécessaire, si on veut en profiter, d'activer la compression.

sudo zfs get compression
NAME                    PROPERTY     VALUE           SOURCE
MesDonneesPersonnelles  compression  off             default
 
sudo zfs set compression=on MesDonneesPersonnelles
 
sudo zfs get compression
NAME                    PROPERTY     VALUE           SOURCE
MesDonneesPersonnelles  compression  on              local

Voir aussi

Alternative