| Prochaine révision | Révision précédente |
| zfs [Le 13/02/2026, 18:38] – créée depuis /utilisateurs/bcag2/zfs si c''est ok pour toi ? je mets ensuite à jour.. krodelabestiole | zfs [Le 01/04/2026, 21:42] (Version actuelle) – [Alternative] geole |
|---|
| ===== Introduction ===== | {{tag>installation administration système partitions cloud}} |
| [[wpfr>ZFS]] est un [[:systeme_de_fichiers#systemes_de_fichiers_zfs|système de fichiers]] [[wpfr>Open_source|open source]] pour la gestion de "très haute capacité de stockage" | |
| |
| ===== Voir aussi ===== | {{ :logo:openzfs.png?100|Logo de OpenZFS}} |
| * [[http://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]] | ====== ZFS ====== |
| * (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]] | |
| * (en) [[https://wiki.ubuntu.com/ZFS]] | |
| |
| ===== Installation ===== | **[[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". |
| * Proposée de façon expérimentale en version 20.04 | |
| * Proposée en version 22.04.2{{:zfs:zfs.png?200|}} | |
| * Proposée normalement en version 21.10 voir [[https://www.tremplin-numerique.org/comment-installer-et-configurer-zfs-sur-ubuntu-cloudsavvy-it|ce guide]] | |
| * Non proposée en version 23.04 | |
| * Non proposée en version 23.10 | |
| * Avenir très [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22689927#p22689927|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. | |
| |
| {{ :zfs:zfsinstal01.png?800 |}} | 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 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]] , mais en offrant davantage de souplesse que les autres solutions, car il repose sur des niveaux d'abstractions supplémentaires (voir //[[#Utilisation]]//). |
| |
| É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. | Il est cependant particulièrement gourmand en mémoire vive (son cache est stocké en RAM), et son utilisation est particulièrement complexe. |
| |
| 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. | 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]]//). |
| |
| 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.** | **[[: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]]//). |
| |
| {{ :zfs:zfsinstal02.png?800 |}} | <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> |
| |
| Un exemple du contenu généré. <code> 920189797920843512397973295758628339336693743317a@a:/media/a/U22-04/home/ubuntu/Images/ZFS$ </code> | ===== Installation ===== |
| |
| 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. | 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. |
| |
| 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**. | 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. |
| |
| 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. | Si besoin, le [[:deb|paquet]] ''[[apt>zfsutils-linux]]'' fournit des outils supplémentaires pour la gestion des //pools// et des //vdevs//. |
| |
| {{ :zfs:zfsinstal03.png?800 |}} | <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> |
| |
| 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 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 : |
| 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 | ==== Lors de l'installation d'Ubuntu ==== |
| |
| La seconde partition fait 2 Go et est formatée en linux-swap. En effet ZFS ne sait pas gérer un fichier swap. | 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]] |
| | * 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]] |
| | * incertain en version [[:resolute|Resolute 26.04]] |
| |
| Ces deux partitions sont standard, du point de vue GPARTED. | {{:zfs:zfsinstal01.png?500}} |
| |
| La troisième partition fait 2 Go et est en zfs. Elle contient les fichiers de boot de ubuntu | 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//. |
| |
| La quatrième partition fait le reste de la taille disque. Elle contient le système d'exploitation et les données. | {{:zfs:zfsinstal02.png?500}} |
| |
| 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. | 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]]. |
| |
| ===== Le boot d'UBUNTU installé ===== | <note tip> |
| Lorsque le boot a lieu sur ce disque, la première grille affichée à l'écran est celle de la sélection du nom de l'utilisateur si l'installation n'a pas prévu de connexion automatique. En cas de connexion automatique, le bureau est directement affiché. | Attention au fait qu'à cette étape il arrive que le verrouillage numérique du clavier ne soit pas activé. |
| |
| Il reste possible de forcer l'affichage du grub par la technique décrite [[:/kernel#modifier_les_parametres_du_noyau_pour_un_systeme_installe_sur_disque|ici]] ou [[:/recovery_mode#demarrer_le_mode_de_depannage|là]]. | Cliquer sur l'œil à droite d'un champs protégé permet de s'assurer des informations entrées. |
| | </note> |
| |
| Afin de savoir quand il est possible de commencer cette action, dé-commenter la ligne **#GRUB_INIT_TUNE="480 440 1"** du fichier **/etc/default/grub** est envisageable. __Ne pas oublier de générer le grub__. | {{:zfs:zfsinstal03.png?500}} |
| |
| Cependant, il est possible de faire apparaître systématiquement le grub en dé-commentant la ligne **#GRUB_TERMINAL=console** et en ajoutant la ligne **GRUB_TIMEOUT_STYLE=menu**. | {{:zfs:zfsinstal04.png?500}} |
| |
| Il est aussi possible de faire tracer le démarrage en ajoutant cette ligne: **GRUB_CMDLINE_LINUX_DEFAULT=" "**. | * 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]]. |
| S'il est nécessaire de rétablir un dual-boot, il faudra ajouter cette ligne: **GRUB_DISABLE_OS_PROBER=false**. | * 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]]''). |
| Les explication sont disponibles à cet endroit [[:/tutoriel/grub2_parametrage_manuel|endroit]]. | * 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. |
| | |
| Au final, l'affichage de la grille de choix de boot reste possible. Un exemple ci-dessous. | |
| {{ :zfs:zfsboot01.png?600 |}} | |
| Une nouvelle option est apparue. Il est maintenant possible de rebooter à partir d'un historique. Un historique automatique est généré à chaque commande **apt** provoquant une mise à jour. L'utilisateur peut aussi fabriquer un historique. | |
| | |
| Choisir une ligne dans cet historique est facile. Cependant savoir si c'est la bonne ligne est probablement moins aisé. Voici un exemple: | |
| {{ :zfs:zfsboot02.png?600 |}} | |
| Il est possible de choisir de repartir avec une ancienne version de logiciel uniquement ou une ancienne version de logiciel **et de données**. | |
| {{ :zfs:zfsboot03.png?600 |}} | |
| Si on choisit le mode recovery, on obtient la grille habituelle de dépannage | |
| {{ :zfs:zfsboot04.png?600 |}} | |
| |
| ===== Utilisation ===== | ===== Utilisation ===== |
| <note warning>Ce chapitre n'est pas développé. </note> | |
| ==== Quelques contraintes rencontrées. ==== | |
| Pour bien fonctionner, il faut au moins 20% d'espace libre sinon message d'avertissement | |
| <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%. | |
| Free space on pool "rpool" is 20%.</code> | |
| |
| | ==== vdevs, zpools et datasets ==== |
| |
| ==== Un contexte ==== | * 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//. |
| Le disque interne est composé de trois partitions. La première en NTFS, contient le logiciel windows. La seconde en EXT4, contient un logiciel ubuntu. La troisième plus volumineuse en NTFS, contient les données utilisateurs. | * 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//. |
| |
| Le disque externe est composé des duplications de ces trois partitions obtenues par un copie/coller fait par gparted et régulièrement maintenues grace aux commandes RSYNC. | 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. |
| |
| Décision a été prise d'installer ZFS dans ce disque EXTERNE. Cela a détruit les partitions. Elles ont été regénérées sous forme de pool dédié. | <note> |
| | Il s'agit ici de //vdev data// (de données). |
| |
| * Création des points de montage dédiés avec un nom identique aux labels des partitions à sauver. Action à ne faire qu'une fois. | **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**. |
| <code bash>sudo zfs create rpool/USERDATA/Win21H2 | </note> |
| sudo zfs create rpool/USERDATA/Ubuntu22.04 | |
| sudo zfs create rpool/USERDATA/Commun</code> | |
| * Vérification très facultative que tout est correct. Fait le suivi des taux de remplissage comme la commande **df -h** | |
| <code bash>zfs list -o available,compression,compressratio,type,used,mountpoint rpool/USERDATA/Win21H2 rpool/USERDATA/Ubuntu22.04 rpool/USERDATA/Commun </code> | |
| * Transfert régulier des données. Le montage des partitions émettrices n'est pas mentionné. | |
| <code bash>sudo rsync -av --del /media/$USER/Win21H2/* /Win21H2 | |
| sudo rsync -av --del /media/$USER/Ubuntu22.04/* /Ubuntu22.04 | |
| sudo rsync -av --del /media/$USER/Commun/* /Commun </code> | |
| * Obtenir les tailles et les taux de compression des données utilisateur, des logiciels ubuntu et windows | |
| <code bash>zfs list -o available,compression,compressratio,type,used,mountpoint rpool/USERDATA/W21H2b rpool/USERDATA/U20.04 rpool/USERDATA/Commun | |
| AVAIL COMPRESS RATIO TYPE USED MOUNTPOINT | |
| 79.0G lz4 1.11x filesystem 321G /Commun | |
| 79.0G lz4 1.24x filesystem 17.7G /U20.04 | |
| 79.0G lz4 1.57x filesystem 21.3G /W21H2b </code> | |
| |
| | * 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 : |
| | <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%. |
| | Free space on pool "rpool" is 20%.</code> |
| | </note> |
| |
| | ==== Création de vdevs ==== |
| |
| | === Avec GParted === |
| |
| ===== Accès aux partitions depuis un autre Ubuntu ===== | [[: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. |
| <note warning>Ce chapitre doit être validé</note> | |
| Il est possible de lire et d'écrire dans une partition ZFS depuis un autre O.S. La procédure à suivre est décrite ci-dessous. | |
| ==== Préparatifs ==== | |
| * Vérifier si le logiciel utilisé dispose de la couche adéquate. Le plus simple est de faire une commande du paquet "zfs". La réponse dira que le pool est vide ou garni ou qu'il est nécessaire d'installer un paquet et donnera la liste possible des paquets candidats. <code bash>sudo zpool list</code> | |
| * Si nécessaire, installer le paquet proposé par le retour de la commande ci-dessus. Par exemple <code bash>sudo apt install zfsutils-linux </code> | |
| * Vérifier si des partitions formatées en ZFS sont présentes. L'une de ces commandes est possible: <code bash>sudo blkid | grep pool </code> <code bash>sudo blkid | grep zfs_member</code> | |
| ==== Pour une installation non chiffrée, ces commandes fonctionnent ==== | |
| * **Soit** importer la partition désirée en bon état en utilisant le nom de pool trouvé dans l'une des deux commandes précédentes et en donnant un nouveau nom pour le pool d'importation. Dans ce qui suit, le pool trouvé est **temprpool** . Il y a peu de chances qu'il soit le bon. <code bash>sudo zpool import -f temprpool MonPool</code><code bash>zpool list </code> Si l'import se passe bien, la commande de liste donne les caractéristiques de la partition. Si l'import se passe très bien, la partition est même montée à condition que le point de montage de la partition ne soit pas déjà occupé. Le point de montage est au niveau de la racine. Si la liste est vide, l'import n'a pas réussi. L'une des causes peut être une partition en mauvais état. | |
| * **Soit** monter la partition en mauvais état. Mêmes remarques. Les commandes seront <code bash>sudo zpool import -f -D temprpool MonPool </code><code bash>zpool list </code>Si la liste est vide, l'import n'a pas réussi. L'une des causes peut être une partition en bon état. | |
| * **Soit** monter toutes les partitions zfs détectées sur un point de montage défini par l'utilisateur. Il faut faire une commande pour les partitions en bon état et une autre pour les partitions en mauvais état. On peut n'en faire qu'une. <code bash>zpool import -a -f -R /media/$USER/ZFS</code> <code bash>zpool import -a -f -D -R /media/$USER/ZFS</code><code bash>zpool list </code> | |
| * Si une partition n'a pas été montée pour cause de point de montage occupé, il est possible d'indiquer un autre point de montage. Exemple <code bash>sudo zfs set mountpoint=/media/$USER/BPOOL tempbpool </code> La partition est alors automatiquement montée à l'endroit prévu. | |
| * On peut alors utiliser normalement la partition. On peut aussi utiliser ses avantages de sécurité. Lorsque le travail est fini, il faut libérer la partition en la démontant puis l'exporter et vérifier qu'elle a bien disparu du pool. Les commandes sont <code bash>sudo zfs umount temprpool</code><code bash>sudo export temprpool</code> <code bash>zpool list </code> | |
| |
| ==== Pour une installation chiffrée ==== | ==== Création de pools ==== |
| <note tip>ATTENTION, Si votre O.S. ZFS **chiffré** fonctionne, ne faites pas ce traitement, car il rend la partie chiffrement inutilisable pour le vrai ZFS qui ne peut plus mettre en route. Ce script est donc à utiliser uniquement lorsque le ZFS ne peut plus mettre en route et qu'il faut récupérer les données avant de réinstaller par écrasement.</note> | |
| Il est nécessaire de monter les clés de chiffrement si elles sont encore accessibles. Le plus simple est d'utiliser ce script qui devrait aussi fonctionner pour une installation normale. | |
| <code bash>sudo -i </code> | |
| |
| <code bash>zpool import -N -R /mnt rpool ´&& sleep 10 | <note tip>Voir la [[https://docs.oracle.com/cd/E24843_01/html/820-2315/gayob.html|documentation officielle]] en français.</note> |
| if [ -e /dev/zvol/rpool/keystore ] ; then | |
| echo 'Veuillez introduire le mot de passe utilisé pour le chiffrement des données en réponse à la question "Saisissez la phrase secrète pour /dev/zvol/rpool/keystore : " ' Vous avez le droit à trois essais. Pour retenter, il faut relancer le script. | |
| cryptsetup -v open /dev/zvol/rpool/keystore keystore-rpool && sleep 10 | |
| mkdir -p /run/keystore/rpool | |
| mount -v /dev/mapper/keystore-rpool /run/keystore/rpool && sleep 5 | |
| else | |
| echo pas de chiffrement détecté | |
| fi | |
| zfs set canmount=on $(zfs list | grep mnt/home |cut -d" " -f1) | |
| zfs mount -vl $(zfs list | grep mnt/home |cut -d" " -f 1) | |
| echo Voici la liste des répertoires à sauver | |
| cd $(zfs list | grep mnt/home | awk ' { print $5 } ') | |
| ls </code> | |
| ===== Evolution en version 23.04 (Lunar) ===== | |
| ==== Le logiciel ==== | |
| Il existe maintenant deux installateurs. | |
| |
| L'installateur nouveau au format snap ne propose pas l'installation de ubuntu dans une structure ZFS (vérifié). | 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. |
| |
| L'installateur ancien ne propose probablement pas l'installation de ubuntu dans une structure ZFS ( ISO non téléchargée) mais la version 22.10 ne la proposait déjà plus. | 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é). |
| |
| Un [[https://www.omgubuntu.co.uk/2023/01/ubuntu-zfs-support-status|avis externe]] "//il semble que l'engouement éphémère d'Ubuntu pour ce système de fichiers infâme soit carrément terminé, l'effort a expiré. C'est parti pour rejoindre Ubuntu TV, Ubuntu Phone, Unity 8 et d'autres cadavres dans le cimetière des (sanglots) déceptions de Canonical.//" | Pour créer un //pool// ''monStockage'' qui s'étend sur les //vdevs// ''/dev/sdb1'' et ''/dev/sdc1''((Voir //[[:partitions#Règle de dénomination]]//.)) : |
| ==== Création d'une partition de données personnelles ==== | <code bash>zpool create monStockage /dev/sdb1 /dev/sdc1</code> |
| Le but va être de fabriquer une partition de données fiables et sécurisées pour chaque utilisateur de façon la plus simple possible. | |
| === Créations des partitions === | |
| Lancer [[:gparted|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 les[[https://pve.proxmox.com/wiki/ZFS_on_Linux|suivantes]] | 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. |
| * 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 === | <note warning> |
| La commande est, par exemple, la suivante: | 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. |
| <code bash>zpool create MesDonnees mirror /dev/sdb8 /dev/sdc11 | </note> |
| |
| La commande « zpool » n'a pas été trouvée, mais peut être installée avec : | === Compression === |
| sudo apt install zfsutils-linux # version 2.1.9-2ubuntu1, or | |
| sudo apt install zfs-fuse # version 0.7.0-25</code> | |
| On constate donc que tout n'a pas été supprimé et qu'on dispose de deux applications. Je n'ai pas trouvé un comparatif pour choisir. Mais, à ce jour, l'une est déjà disponible dans la version 23.10 (Mantic) et l'autre pas (encore??)) . Je choisis donc celle qui me semble avoir de l'avenir. | |
| |
| Notons que si on en installe une et qu'on installe par la suite l'autre, la première est parfaitement supprimée et quelque soit le choix de cette première. Donc, installons le logiciel manquant. | On peut activer la compression avec la sous-commande ''[[man>zfs-set|zfs set]]'' : |
| <code bash>sudo apt install zfsutils-linux</code> | <code bash>sudo zfs set compression=on monStockage</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 | |
| Enter new passphrase: | |
| Re-enter new passphrase:</code> | |
| |
| Il est exigé que la taille du mot de passe soit au minima de 8 caractères quelconques sans aucune autre contrainte. | La commande ''[[man>zfs-get|zfs get]]'' permet d'obtenir son état : |
| | <code bash>sudo zfs get compression monStockage</code> |
| Ne pas oublier que la perte de ce mot de passe entraine l'impossibilité définitive d'accéder aux données mais que c'est une option. | |
| | |
| Le fait de ne pas avoir de réponse signifie que tout est parfaitement en règle. | |
| === Activation de la compression === | |
| On va constater qu'actuellement, il est nécessaire, si on veut en profiter, d'activer la compression. | |
| <code bash> | |
| 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</code> | |
| | |
| === Dédions cet espace de stockage à nos données personnelles === | |
| <code bash>sudo chown -Rv $USER data && sudo chmod 775 data | |
| | |
| #Déplacement des répertoires | |
| mv -v Documents Images Modèles Musique Public Téléchargements Vidéos data | |
| | |
| #Création les liens | |
| ln -s data/Documents && ln -s data/Images && ln -s data/Modèles && ln -s data/Musique && ln -s data/Public && ln -s data/Téléchargements && ln -s data/Vidéos | |
| | |
| mv -v Bureau data && ln -s data/Bureau | |
| | |
| # Figeons les liens car cet espace n'est pas présent au redémarrage de l'ordinateur. | |
| cp -nv /etc/xdg/user-dirs.conf $HOME/.config && sed -i 's/True/False/' $HOME/.config/user-dirs.conf</code> | |
| === Faisons un test === | |
| Copions quelque chose. | |
| <code bash>mkdir data/W21H2a | |
| time sudo rsync -av /media/W21H2a/* data/W21H2a</code> | |
| Regardons, l'effet de la compression. Elle est de 26 % Certainement un très bon contexte car la partition émettrice ne contient pas de films. | |
| <code bash>df -Bm | egrep 'fichiers|MesDonnees|W21H2a' | |
| Sys. de fichiers blocs de 1M Utilisé Disponible Uti% Monté sur | |
| /dev/sda4 71000M 36103M 34898M 51% /media/W21H2a | |
| MesDonneesPersonnelles 28766M 26716M 2051M 93% /home/a/data</code> | |
| === Décidons === | |
| Cela ne convient pas. On peut alors détruire. | |
| <code bash>sudo zpool destroy MesDonneesPersonnelles</code> | |
| Cela convient. Facultativement, on peut démonter avant l'arrêt de l'ordinateur. | |
| <code bash>sudo zfs umount MesDonneesPersonnelles</code> | |
| **Il faudra obligatoirement remonter** le regroupement après le démarrage de l'ordinateur pour accéder à nos données personnelles. | |
| <code bash>sudo zfs mount -vl MesDonneesPersonnelles</code> | |
| | |
| ==== Evolution en version 23.10 (Mantic) ==== | |
| Voir [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22686470#p22686470|premier essai]]. | |
| | |
| Notons que cette [[https://ubuntu.com/blog/ubuntu-desktop-23-10-mantic-minotaur-deep-dive|documentation]] indique | |
| | |
| L'installation guidée de ZFS fait son retour après avoir été portée à partir de l'ancien programme d'installation d'Ubiquity. ZFS continue d'être une technologie que nous souhaitons explorer davantage et en la prenant en charge dans Subiquity, nous avons également jeté les bases de l'inclusion d'une installation guidée sur Ubuntu Server. Au prochain cycle, nous examinerons le chiffrement ZFS comme option de sécurité supplémentaire. | |
| ==== Evolution en version 24.04 ( ) ==== | |
| ===== Traitement de quelques erreurs ===== | |
| ==== No available pool ==== | |
| <code bash>a@a:~$ sudo zpool list | |
| no pools available | |
| a@a:~$ sudo blkid | grep pool | |
| a@a:~$ sudo blkid | grep zfs_member | |
| /dev/sdb8: LABEL="MesDonneesPersonnelles" UUID="16115389389312419455" UUID_SUB="15605315050402785003" BLOCK_SIZE="4096" TYPE="zfs_member" PARTUUID="62fe9148-493e-4713-82c1-d88653b9f789" | |
| /dev/sdd11: LABEL="MesDonneesPersonnelles" UUID="16115389389312419455" UUID_SUB="7323137528599872624" BLOCK_SIZE="4096" TYPE="zfs_member" PARTUUID="1bf18a57-01c2-400e-9fdf-04f01b22f00e" | |
| a@a:~$ sudo zpool import -a -f -d /dev/sdd11 -d /dev/sdb8 | |
| a@a:~$ sudo zpool list | |
| NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT | |
| MesDonneesPersonnelles 29G 26.1G 2.91G - - 38% 89% 1.00x ONLINE - | |
| a@a:~$ sudo zfs mount -vl MesDonneesPersonnelles | |
| Enter passphrase for 'MesDonneesPersonnelles': | |
| a@a:~$ df -h | grep MesDonneesPersonnelles | |
| MesDonneesPersonnelles 29G 27G 2,1G 93% /home/a/data | |
| a@a:~$ ls /home/a/data | |
| Bureau Documents Images Modèles Musique Public Téléchargements Vidéos W21H2a | |
| a@a:~$</code> | |
| ==== Une partition d'un raid détruite. ==== | |
| | |
| Monter le raids sans citer la partition détruite. Voir le cas ci-dessus. Puis [[https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-9P|Réparer.]] | |
| <code bash>zpool status -x | |
| pool: MesDonneesPersonnelles | |
| state: ONLINE | |
| status: One or more devices has experienced an unrecoverable error. An | |
| attempt was made to correct the error. Applications are unaffected. | |
| action: Determine if the device needs to be replaced, and clear the errors | |
| using 'zpool clear' or replace the device with 'zpool replace'. | |
| see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-9P</code> | |
| | |
| ( C'était le contexte "An administrator accidentally wrote over a portion of the disk using another program" | |
| |
| | ===== Voir aussi ===== |
| |
| | * [[https://www.oracle.com/fr/storage/nas/|Site officiel]] |
| | * [[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 |
| | * [[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]] |
| |
| | ==== Alternative ==== |
| |
| | * [[:Btrfs]] |
| |
| //Contributeurs : [[utilisateurs:bcag2]], geole | ---- |
| | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=2094391|Discussion]] au sujet de cette page sur le forum. |
| | * //[[:Contributeurs]] : [[:utilisateurs:bcag2]], [[:utilisateurs:krodelabestiole]].// |