Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
zfs [Le 14/02/2026, 17:18] – site officiel / pools vs partitions / +corrections importantes / détails divers krodelabestiolezfs [Le 01/07/2026, 04:43] (Version actuelle) – [Lors de l'installation d'Ubuntu] experimental sur resolute https://lecrabeinfo.net/app/uploads/2026/04/fonctions-avancees-chiffrement-et-systeme-de-fichiers-installation-ubuntu-26-04-lts-69f34cc842b0f.webp krodelabestiole
Ligne 1: Ligne 1:
-{{tag>installation administration système partitions cloud brouillon}}+{{tag>installation administration système partitions cloud}}
  
 {{ :logo:openzfs.png?100|Logo de OpenZFS}} {{ :logo:openzfs.png?100|Logo de OpenZFS}}
Ligne 8: Ligne 8:
 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 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 aussi des fonctionnalités de chiffrement et de compression.+  * 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.   * 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//).+  * À la place des traditionnelles [[:partitions]], il permet d'agréger de multiples supports de stockage sur une infrastructure, à la manière du [[:RAID]], mais en offrant davantage de souplesse que les autres solutions, car il repose sur des niveaux d'abstractions supplémentaires (voir //[[#Utilisation]]//).
  
-Il est cependant particulièrement gourmand en mémoire vive, et son utilisation est complexe.+Il est cependant particulièrement gourmand en mémoire vive (son cache est stocké en RAM), et son utilisation est particulièrement 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 [[:administration|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]]//). 
 + 
 +**[[:ZFS]]** permet de mettre en place une redondance et/ou concaténation proche du [[:RAID|RAID 5]](([[wpfr>RAID_(informatique)#RAID-Z|RAID-Z]] sur Wikipedia)), en apportant les notions de //vdev// (//virtual device//), de //pools// et de //datasets//, qui offrent une grande souplesse, au prix d'une importante complexité (abstractions à saisir, voir //[[#Utilisation]]//). 
 + 
 +<note warning> 
 +**ZFS** est conçu pour gérer des //clusters// de stockage dans des //datacenters//, par extension il est parfois utilisé sur des [[:NAS]] professionnels, mais il ne convient pas à un ordinateur personnel. 
 + 
 +Pour que les fonctionnalités de **ZFS** soient intéressantes (comparées à celles de **[[:Btrfs]]** par ex.), il est nécessaire de disposer d'un certain nombre de supports de stockage, idéalement de performances similaires, d'être prêt à sacrifier entre 20% et la moitié de leur capacité, d'avoir aussi //beaucoup// de RAM disponible, de solides connaissances en informatique, et du temps. Il est aussi nécessaire de maîtriser un minimum l'anglais car la documentation francophone est encore [[https://resinfo-gt.pages.in2p3.fr/zfs/doc/index.html|rudimentaire]]. 
 +</note>
  
 ===== Installation ===== ===== Installation =====
Ligne 20: Ligne 28:
 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 volumes **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 //pools// ZFS.
  
-Si besoin, le [[:deb|paquet]] ''[[apt>zfsutils-linux]]'' fournit des outils supplémentaires pour la gestion des //pools// et des volumes.+Si besoin, le [[:deb|paquet]] ''[[apt>zfsutils-linux]]'' fournit des outils supplémentaires pour la gestion des //pools// et des //vdevs//.
  
 <note> <note>
Ligne 28: Ligne 36:
 </note> </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 :+Il est aussi possible d'installer certaines [[:versions]] d'Ubuntu directement sur une structure **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 un volume **ZFS** pour certaines de ses [[:versions]] :+Ubuntu propose de s'installer sur une structure **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?500|Capture d'un écran d'installation d'Ubuntu.}}
   * en version [[:noble|Noble 24.04]]   * en version [[:noble|Noble 24.04]]
-  * incertain en version [[:resolute|Resolute 26.04]]+  * de façon expérimentale en version [[:resolute|Resolute 26.04]] 
 + 
 +{{:zfs:zfsinstal01.png?500}}
  
 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//. 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?600}}+{{:zfs:zfsinstal02.png?500}}
  
-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 ses information, et particulièrement la clé, idéalement au moyen d'un [[:securite#gestionnaires_de_mots_de_passe|gestionnaire de mots de passe]].+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]].
  
-<note>+<note tip>
 Attention au fait qu'à cette étape il arrive que le verrouillage numérique du clavier ne soit pas activé. Attention au fait qu'à cette étape il arrive que le verrouillage numérique du clavier ne soit pas activé.
  
Ligne 50: Ligne 60:
 </note> </note>
  
-{{:zfs:zfsinstal02.png?600}}+{{:zfs:zfsinstal03.png?500}}
  
-{{:zfs:zfsinstal03.png?600}} +{{:zfs:zfsinstal04.png?500}}
- +
-{{:zfs:zfsinstal04.png?600}}+
  
   * La première partition de 512 Mo en **[[:systeme de fichiers#FAT32]]** contient la structure [[:EFI]] ainsi que [[:GRUB]].   * 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]].   * 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]].
-  * 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 troisième "partition" est en fait un //vdev// de 2 Go utilisé par le //pool boot//, 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.+  * La quatrième "partition" est aussi //vdev// **ZFS**, cette fois utilisé par un //[[https://docs.oracle.com/cd/E37927_01/html/E36654/gjtuk.html|pool root]]//, qui contient le système d'exploitation et les données.
  
 ===== Utilisation ===== ===== Utilisation =====
  
-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.+==== vdevs, zpools et datasets ====
  
-<note important>Pour fonctionner correctement, un volume doit conserver au minimum 20% d'espace libre.+  * Les espaces de stockages **ZFS** sont organisés en **//pools//** équivalent à une [[:partitions|partition]], ou un volume utilisable //pour l'[[:utilisateur]]//. Il s'agit de l'espace de stockage visible dans un gestionnaire de fichiers. Les //pools// sont des agrégats d'un ou plusieurs supports ou //clusters// de stockage, appelés //vdevs//. 
 +  * Les **//vdevs//** (pour //virtual devices//) correspondent à une [[:partitions|partition]] //pour le support matériel// -- ou à de la mémoire vive. Ils sont à disposition des //pools//. 
 + 
 +Ceci permet aux //pools// d'offrir une plus grande souplesse que les [[:partitions]] traditionnelles. Les principales différences sont qu'un même espace "physique" (//vdev//) peut être utilisé pour un //pool// ou un autre en fonction des besoins de ceux-ci, et qu'un //pool// peut s'étendre sur un ou plusieurs supports de stockage physiques (//vdev//) différents. 
 + 
 +<note> 
 +Il s'agit ici de //vdev data// (de données). 
 + 
 +**ZFS** gère aussi un //vdev cache// de manière plus ou moins transparente pour l'utilisateur (si la RAM est saturée). Il existe aussi un //vdev boot// si le système lui-même est installé sur un //pool// **ZFS**. 
 +</note> 
 + 
 +  * De plus, les **//datasets//** permettent de subdiviser chaque //pool// en sous-volumes, permettant de définir différentes politiques pour les //snapshots//, les [[:sauvegarde|sauvegardes]], les permissions, etc.\\ Ils peuvent être considérés comme des [[:arborescence|répertoires]] qui contiennent différents types de données, et amènent à différentes manières de gérer le stockage. 
 + 
 +<note important> 
 +Pour fonctionner correctement, un //pool// doit conserver au minimum 20% d'espace libre.
  
 On rencontre dans le cas contraire un message d'erreur de ce type : On rencontre dans le cas contraire un message d'erreur de ce type :
Ligne 73: Ligne 95:
 </note> </note>
  
-==== Création des volumes ====+==== Création de vdevs ====
  
-<note tip>Voir la [[https://docs.oracle.com/cd/E24843_01/html/820-2315/gayob.html|documentation officielle]] en français.</note>+=== Avec GParted ===
  
-<note warning>FIXME La suite de ce chapitre n'a pas encore été corrigée.</note>+[[:GParted]] ne gère pas les //vdevs// **ZFS**, mais permet de créer des [[:partitions]] //non formatées// qu'on pourra ensuite utiliser comme telles.
  
-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.+==== Création de pools ====
  
-Les utilisations principales seront les[[https://pve.proxmox.com/wiki/ZFS_on_Linux|suivantes]] +<note tip>Voir la [[https://docs.oracle.com/cd/E24843_01/html/820-2315/gayob.html|documentation officielle]] en français.</note>
-  * 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 ===+Les types de //pool// disponibles sont les suivants : 
 +  * pas de calcul de parité (pas de redondance) 
 +  * ''mirror'' : deux partitions en miroir. 
 +  * ''raidz'' : un support de parité (supporte un support crashé), on perd un stockage d'espace. 
 +  * ''raidz2'' : deux supports de parité (supporte deux supports crashés), on perd deux stockages d'espace. 
 +  * ''raidz3'' : trois supports de parité (supporte trois supports crashés), on perd trois stockages d'espace.
  
-installons le logiciel manquant. +On peut les utiliser en argument de ''[[man>zpool-create|zpool create]]'' pour ajouter de la parité (le choix par défaut, sans paramètre, est l'absence de parité).
-<code bash>sudo apt install zfsutils-linux</code> +
-La commande est, par exemple, la suivante : +
-<code bash>zpool create MesDonnees mirror /dev/sdb8 /dev/sdc11</code> +
-Puis fabriquons l'enveloppe qui convient. +
-<code bash>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</code>+
  
-Il est exigé que la taille du mot de passe soit au minima de 8 caractères quelconques sans aucune autre contrainte.+Pour créer un //pool// ''monStockage'' qui s'étend sur les //vdevs// ''/dev/sdb1'' et ''/dev/sdc1''((Voir //[[:partitions#Règle de dénomination]]//.)) : 
 +<code bash>zpool create monStockage /dev/sdb1 /dev/sdc1</code>
  
-Ne pas oublier que la perte de ce mot de passe entraine l'impossibilité définitive d'accéder aux données.+On peut aussi choisir de chiffrer le //pool// avec l'option ''-O encryption=on''. Le mot de passe doit être d'au moins 8 caractères.
  
-=== Activation de la compression ===+<note warning> 
 +Si vous chiffrez votre //pool//, notez votre mot de passe, idéalement avec un [[:securite#gestionnaires_de_mots_de_passe|gestionnaire]] : sa perte entraîne l'impossibilité définitive d'accéder aux données. 
 +</note>
  
-On va constater qu'actuellement, il est nécessaire, si on veut en profiter, d'activer la compression. +=== Compression ===
-<code bash> +
-sudo zfs get compression +
-NAME                    PROPERTY     VALUE           SOURCE +
-MesDonneesPersonnelles  compression  off             default+
  
-sudo zfs set compression=on MesDonneesPersonnelles+On peut activer la compression avec la sous-commande ''[[man>zfs-set|zfs set]]'' : 
 +<code bash>sudo zfs set compression=on monStockage</code>
  
-sudo zfs get compression +La commande ''[[man>zfs-get|zfs get]]'' permet d'obtenir son état : 
-NAME                    PROPERTY     VALUE           SOURCE +<code bash>sudo zfs get compression monStockage</code>
-MesDonneesPersonnelles  compression  on              local</code>+
  
 ===== Voir aussi ===== ===== Voir aussi =====
Ligne 121: Ligne 138:
   * **(//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]]
 +  * [[https://www.youtube.com/watch?v=Vc1PXMkd1vY|Présentation vidéo]] en français
   * [[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]]
  
Ligne 129: Ligne 147:
 ---- ----
   * [[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]], [[:utilisateurs:krodelabestiole]].//