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 30/03/2026, 22:23] – réorganisation | on va éviter de traduire pool hein, c'est déjà assez compliqué... 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 (son cache en particulier est stocké en RAM), et son utilisation est particulièrement 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 de type [[:RAID]](([[wpfr>RAID_(informatique)|RAID]] sur Wikipedia)), ainsi que des fonctionnalités de //snapshots//, en apportant les notions de //volumes// de stockage (qui s'étendent sur un //pool// d'un ou plusieurs supports physiques), et de //dataset//, qui offrent une grande souplesse, au prix d'une importante complexité (abstractions à saisir).+**[[: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 important+<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 certains nombre de supports de stockage, idéalement de performances similaires, d'avoir aussi beaucoup de RAM, de solides connaissances en informatique, et du temps.+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> </note>
  
Ligne 26: 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 34: 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 58: 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 79: Ligne 93:
 </note> </note>
  
-==== Création de 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> +
- +
-<note warning>FIXME La suite de ce chapitre n'a pas encore été corrigée.</note>+
  
 === Avec GParted === === Avec GParted ===
  
-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.+[[: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.
  
-Les utilisations principales seront les[[https://pve.proxmox.com/wiki/ZFS_on_Linux|suivantes]] +==== Création de pools ====
-  * 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.+
  
-=== En ligne de commande ===+<note tip>Voir la [[https://docs.oracle.com/cd/E24843_01/html/820-2315/gayob.html|documentation officielle]] en français.</note>
  
-Fabrication en mode sécurisé avec par exemple cette commande : +Les types de //pool// disponibles sont les suivants : 
-<code bash>sudo zpool create -f pool-test mirror  /dev/sda16 /dev/sda17</code>+  * 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.
  
-  * Il faut laisser l'option ''-f''  si les partitions avaient été formatées sinon elle est inutile. +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é).
-  * Il faut supprimer l'option ''mirror'' si on veut du  non sécurisé.+
  
-Il ne reste plus qu'à l'utiliser, par exemple +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> +<code bash>zpool create monStockage /dev/sdb1 /dev/sdc1</code>
-sudo mkdir  /pool-test/MyDATA +
-sudo cp -Rv /DATA/R*/*  /pool-test/MyDATA +
-</code>+
  
-Et suive le taux de remplissage avec la commande standard ''df -h'' ou la commande ''zpool''+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.
-<code bash> +
-zpool list +
-NAME        SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT +
-pool-test    61G  36,8G  24,2G        -             0%    60%  1.00x    ONLINE  -+
  
-df -h | grep pool +<note warning
-pool-test           60G     37G   23G  63% /pool-test +Si vous chiffrez votre //pool//, notez votre mot de passeidéalement avec un [[:securite#gestionnaires_de_mots_de_passe|gestionnaire]] : sa perte entraîne l'impossibilité définitive d'accéder aux données. 
-</code> +</note>
- +
-Si l'ordinateur s'arrête, il faut remonter le //pool// avec cette commande : +
-<code bash>sudo zpool import pool-test</code> +
-Un autre exemple compatible avec les applications [[:snap]] +
-<code bash> +
-sudo zpool create -f -m   /media/ZFS -o feature@lz4_compress=enabled MesDonneesPersonnelles /dev/disk/by-label/ZFS +
-df -htzfs +
-Sys. de fichiers       Taille Utilisé Dispo Uti% Monté sur +
-MesDonneesPersonnelles   4,4G    128K  4,4G   1% /media/ZFS +
-</code> +
-  +
-Pour plus de détails voir **(//en//)** [[https://ubuntu.com/tutorials/setup-zfs-storage-pool#1-overview]]+
- +
-=== Création d'un pool === +
- +
-installons le logiciel manquant. +
-<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. +
- +
-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. +=== 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 165: 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 173: 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]].//