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, 18:05] – typos / orga screenshots krodelabestiolezfs [Le 01/04/2026, 21:42] (Version actuelle) – [Alternative] geole
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 10: Ligne 10:
   * Il implémente 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> 
 +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. 
 +</note>
  
 ===== Installation ===== ===== Installation =====
Ligne 20: Ligne 26:
 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 34:
 </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 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]]   * incertain en version [[:resolute|Resolute 26.04]]
  
-{{:zfs:zfsinstal01.png?600}}+{{: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:zfsinstal02.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 ces informations, 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]].
Ligne 52: Ligne 58:
 </note> </note>
  
-{{:zfs:zfsinstal03.png?600}}+{{:zfs:zfsinstal03.png?500}}
  
-{{:zfs:zfsinstal04.png?600}}+{{:zfs:zfsinstal04.png?500}}
  
   * 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.+==== vdevszpools 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 93:
 </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éfautsans paramètreest l'absence de parité).
-<code bash>sudo apt install zfsutils-linux</code> +
-La commande estpar exemplela 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 136:
   * **(//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 145:
 ---- ----
   * [[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]].//