| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| zfs [Le 14/02/2026, 04:46] – [Installation] TODO à vérifier krodelabestiole | zfs [Le 14/02/2026, 18:05] (Version actuelle) – typos / orga screenshots krodelabestiole |
|---|
| ====== ZFS ====== | ====== ZFS ====== |
| |
| **[[wpfr>ZFS]]** est un [[:système de fichiers]] //[[wpfr>open source]]// pour la gestion de "très haute capacité de stockage". | **[[wpfr>ZFS]]** est un [[:système de fichiers]] //[[wpfr>open source]]// conçu par Sun Microsystem (société rachetée par Oracle) en 2004 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 : | 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 stockage). | |
| * 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 [[wpfr>UNIX]] ([[:permissions]] [[wpfr>POSIX]]), ce qui en fait un bon candidat pour une infrastructure Linux (et un concurrent à [[:Btrfs]]). | * Il est compatible [[wpfr>UNIX]] ([[:permissions]] [[wpfr>POSIX]]), ce qui en fait un bon candidat pour une infrastructure Linux (et un concurrent à [[:Btrfs]]). |
| | * Il implémente des fonctionnalités de chiffrement et de compression. |
| | * Il fournit des fonctionnalités d'instantanés (//snapshots//), permettant de restaurer le stockage à un état antérieur, en nécessitant un minimum de ressources. |
| | * À la place des traditionnelles [[:partitions]], il permet d'agréger de multiples supports de stockage sur une infrastructure, à la manière du [[:RAID]], sous forme de //volumes// (agrégats de plusieurs supports ou //clusters// de stockage) organisés par //pools// (descriptions de ces volumes, avec leurs caractéristiques et leurs //snapshots//). |
| |
| Il est cependant particulièrement gourmand en mémoire vive, et son utilisation est relativement complexe. | Il est cependant particulièrement gourmand en mémoire vive, et son utilisation est complexe. |
| |
| Il est principalement utilisé par des administrateurs système et //[[wpfr>devops]]// pour faciliter la gestion de grappes de serveurs (//clusters//) en //[[wpfr>Centre_de_données|data centers]]//, et éviter des coupures de service dans le cadre de services d'hébergement //[[:cloud]]// (ou autre traitement de //[[wpfr>big data]]//). | Il est principalement utilisé par des administrateurs système et //[[wpfr>devops]]// pour faciliter la gestion de grappes de serveurs (//clusters//) en //[[wpfr>Centre_de_données|data centers]]//, et éviter des coupures de service dans le cadre de services d'hébergement //[[:cloud]]// (ou autre traitement de //[[wpfr>big data]]//). |
| Contrairement à d'autres [[:système de fichiers|systèmes de fichiers]] comme **[[:ext4]]** ou **[[:Btrfs]]**, le support de **ZFS** n'est pas inclus dans le [[:kernel|noyau Linux]]. Un conflit de licence en empêche en effet son intégration native. | Contrairement à d'autres [[:système de fichiers|systèmes de fichiers]] comme **[[:ext4]]** ou **[[:Btrfs]]**, le support de **ZFS** n'est pas inclus dans le [[:kernel|noyau Linux]]. Un conflit de licence en empêche en effet son intégration native. |
| |
| Ce support peut cependant être apporté sur n'importe quelle version et [[:variante]] d'Ubuntu par l'[[:deb#installer un paquet deb|installation du paquet]] ''[[apt>zfs-dkms]]'', qui permet donc d'accéder en lecture et écriture aux partitions formatées en **ZFS**. | Ce support peut cependant être apporté sur n'importe quelle version et [[:variante]] d'Ubuntu par l'[[:deb#installer un paquet deb|installation du paquet]] ''[[apt>zfs-dkms]]'', qui permet donc d'accéder en lecture et écriture aux volumes **ZFS**. |
| |
| Si besoin, le [[:deb|paquet]] ''[[apt>zfsutils-linux]]'' fournit des outils supplémentaires pour la gestion des [[:partitions]] et des volumes (//pools//). | Si besoin, le [[:deb|paquet]] ''[[apt>zfsutils-linux]]'' fournit des outils supplémentaires pour la gestion des //pools// et des volumes. |
| |
| Il est aussi possible d'installer certaines [[:versions]] d'Ubuntu directement sur une partition **ZFS**. Cette option est parfois donnée par l'installateur d'Ubuntu : | <note> |
| | Vous trouverez aussi des informations en anglais concernant l'installation du support de **ZFS** sur Ubuntu sur le [[https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/index.html#installation|site officiel]] d'**OpenZFS**. |
| | </note> |
| | |
| | Il est aussi possible d'installer certaines [[:versions]] d'Ubuntu directement sur un volume **ZFS**. Cette méthode est parfois proposée par l'installateur d'Ubuntu : |
| |
| ==== Lors de l'installation d'Ubuntu ==== | ==== Lors de l'installation d'Ubuntu ==== |
| |
| Ubuntu propose propose de s'installer sur [[:partitions|partition]] **ZFS** pour certaines de ses [[:versions]] : | Ubuntu propose de s'installer sur un volume **ZFS** pour certaines de ses [[:versions]] : |
| * de façon expérimentale en version [[:focal|Focal 20.04]] | * de façon expérimentale en version [[:focal|Focal 20.04]] |
| * en version [[:jammy|Jammy 22.04.2]]\\ {{:zfs:zfs.png?200|Capture d'un écran d'installation d'Ubuntu.}} | * en version [[:jammy|Jammy 22.04.2]]\\ {{:zfs:zfs.png?200|Capture d'un écran d'installation d'Ubuntu.}} |
| * en version 21.10 voir [[https://www.tremplin-numerique.org/comment-installer-et-configurer-zfs-sur-ubuntu-cloudsavvy-it|ce guide]] | |
| * Non proposé par la version 23.04 | |
| * Non proposé par la version 23.10 | |
| * en version [[:noble|Noble 24.04]] | * en version [[:noble|Noble 24.04]] |
| * incertain en version [[:resolute|resolute 26.04]] | * incertain en version [[:resolute|Resolute 26.04]] |
| |
| Exemple pour la partie spécifique **ZFS** lors d'une installation 22.04. | {{:zfs:zfsinstal01.png?600}} |
| |
| Sur la page du type d'installation, pour créer une [[:partitions|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//. | Pour créer une infrastructure **ZFS** lors de l'installation d'Ubuntu (ici [[:jammy|Jammy 22.04]]), à l'étape du choix du //Type d'installation//, choisir //Effacer le disque et installer Ubuntu// et cliquer sur le bouton //Fonctions avancées...//. Sur la fenêtre ainsi ouverte sélectionner //Effacer le disque et utiliser ZFS//. Choisir éventuellement de //Chiffrer la nouvelle installation//, puis //OK// -> //Continuer//. |
| |
| {{:zfs:zfsinstal01.png?800}} | {{:zfs:zfsinstal02.png?600}} |
| |
| É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. | Dans le cas d'une installation chiffrée, un formulaire permet d'entrer sa clé de chiffrement (le mot de passe qu'il faudra entrer à l'ouverture de chaque [[:session utilisateur|session]]) et sa clé de récupération (//recovery key//). Vous devriez être en mesure de vous souvenir du mot de passe, mais il est impératif de noter ces informations, et particulièrement la clé, idéalement au moyen d'un [[:securite#gestionnaires_de_mots_de_passe|gestionnaire de mots de passe]]. |
| |
| 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. | <note tip> |
| | Attention au fait qu'à cette étape il arrive que le verrouillage numérique du clavier ne soit pas activé. |
| |
| 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.** | Cliquer sur l'œil à droite d'un champs protégé permet de s'assurer des informations entrées. |
| | </note> |
| |
| {{:zfs:zfsinstal02.png?800}} | {{:zfs:zfsinstal03.png?600}} |
| |
| 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. | {{:zfs:zfsinstal04.png?600}} |
| |
| 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**. | * La première partition de 512 Mo en **[[:systeme de fichiers#FAT32]]** contient la structure [[:EFI]] ainsi que [[:GRUB]]. |
| | * La seconde partition de 2 Go est formatée en //linux-swap//. En effet, **ZFS** ne gérerait pas correctement un [[:swap#creer_un_fichier_d_echange|fichier swap]]. |
| 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 troisième "partition" est en fait un //pool boot// **ZFS** de 2 Go, qui contient les fichiers de démarrage du système (équivalent au répertoire ''[[:arborescence#la_norme_selon_la_fhs|/boot]]''). |
| | * La quatrième "partition" est un //[[https://docs.oracle.com/cd/E37927_01/html/E36654/gjtuk.html|pool root]]// **ZFS**, dont le //volume// contient le système d'exploitation et les données. |
| {{:zfs:zfsinstal03.png?800}} | |
| | |
| 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. | |
| | |
| {{:zfs:zfsinstal04.png?800}} | |
| | |
| 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 ===== | ===== Utilisation ===== |
| |
| <note warning>Ce chapitre n'est pas développé.</note> | Les //pools// **ZFS** gèrent les espaces de stockage en //volumes// qui offrent une plus grande souplesse que les [[:partitions]] traditionnelles. Les principales différences sont qu'un même espace physique peut être utilisé pour un volume ou un autre en fonction des besoins de ceux-ci, et qu'un volume peut s'étendre sur plusieurs supports de stockage physiques différents. |
| |
| ==== Contraintes ==== | <note important>Pour fonctionner correctement, un volume doit conserver au minimum 20% d'espace libre. |
| |
| Pour bien fonctionner, il faut au moins 20% d'espace libre sinon message d'avertissement : | On rencontre dans le cas contraire un message d'erreur de ce type : |
| <code>Requesting to save current system state. | <code>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%. | 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%.</code> | Free space on pool "rpool" is 20%.</code> |
| | </note> |
| |
| ==== Créations des partitions ==== | ==== Création des volumes ==== |
| | |
| | <note tip>Voir la [[https://docs.oracle.com/cd/E24843_01/html/820-2315/gayob.html|documentation officielle]] en français.</note> |
| | |
| | <note warning>FIXME La suite de ce chapitre n'a pas encore été corrigée.</note> |
| |
| 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. | 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. |
| ===== Voir aussi ===== | ===== Voir aussi ===== |
| |
| * [[:systeme_de_fichiers#ZFS]] sur la page //[[:Système de fichiers]]// | * [[https://www.oracle.com/fr/storage/nas/|Site officiel]] |
| * [[https://github.com/openzfs/zfs|GitHub]] OpenZFS | * [[https://github.com/openzfs/zfs|GitHub]] OpenZFS |
| | * [[:systeme_de_fichiers#ZFS]] sur la page //[[:Système de fichiers]]// |
| * **(//en//)** [[https://openzfs.github.io/openzfs-docs/|Documentation]] OpenZFS | * **(//en//)** [[https://openzfs.github.io/openzfs-docs/|Documentation]] OpenZFS |
| * [[https://www.lmgc.univ-montp2.fr/perso/norbert-deleutre/2017/09/08/zfs-terminologie-et-commandes-de-bases/|ZFS terminologie et commandes de bases sur lmgc.univ-montp2.fr par Norbert Deleutre]] | * [[https://www.lmgc.univ-montp2.fr/perso/norbert-deleutre/2017/09/08/zfs-terminologie-et-commandes-de-bases/|ZFS terminologie et commandes de bases sur lmgc.univ-montp2.fr par Norbert Deleutre]] |
| * **(//en//)** [[https://pthree.org/2012/12/05/zfs-administration-part-ii-raidz/|ZFS Administration, Part II- RAIDZ - Aaron Toponce]] | |
| * [[https://forum.ubuntu-fr.org/viewtopic.php?id=2071553|échanges sur le forum]] | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=2071553|échanges sur le forum]] |
| * **(//en//)** [[https://wiki.ubuntu.com/ZFS]] | |
| |
| ==== Alternative ==== | ==== Alternative ==== |
| * [[:Btrfs]] | * [[:Btrfs]] |
| |
| ----- | ---- |
| * [[https://forum.ubuntu-fr.org/viewtopic.php?id=2094391|Discussion]] au sujet de cette page sur le forum. | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=2094391|Discussion]] au sujet de cette page sur le forum. |
| * //[[:Contributeurs]] : [[:utilisateurs:bcag2]], geole, [[:utilisateurs:krodelabestiole]].// | * //[[:Contributeurs]] : [[:utilisateurs:bcag2]], geole, [[:utilisateurs:krodelabestiole]].// |