Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
utilisateurs:bcag2:zfs [Le 28/03/2018, 14:21]
bcag2 créée
utilisateurs:bcag2:zfs [Le 11/04/2022, 10:58]
geole [Utilisation]
Ligne 5: Ligne 5:
   * [[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]]   * [[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]]
   * (en) [[https://​pthree.org/​2012/​12/​05/​zfs-administration-part-ii-raidz/​|ZFS Administration,​ Part II- RAIDZ - Aaron Toponce]]   * (en) [[https://​pthree.org/​2012/​12/​05/​zfs-administration-part-ii-raidz/​|ZFS Administration,​ Part II- RAIDZ - Aaron Toponce]]
 +
 +===== Installation =====
 +  * Proposée de façon expérimentale en version 20.04
 +  * Proposée normalement en version 21.10 voir [[https://​www.tremplin-numerique.org/​comment-installer-et-configurer-zfs-sur-ubuntu-cloudsavvy-it|ce guide]]
 +  *  Exemple pour la partie spécifique ZFS lors d'une installation 22.04.
 +L'​option présélectionnée n'est pas bonne.
 +Cocher la seconde option. Cliquer sur "​**Fonctions avancées**"​. Cliquer sur //Effacer le disque et utiliser zfs//. Éventuellement,​ cliquer sur "​**Chiffrer la nouvelle installation** …" Cliquer sur continuer.
 +
 +{{ :​zfs:​zfsinstal01.png?​800 |}}
 +
 +É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.
 +
 +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.
 +
 +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:​zfsinstal02.png?​800 |}} 
 +
 +Un exemple du contenu généré. <​code>​ 920189797920843512397973295758628339336693743317a@a:/​media/​a/​U22-04/​home/​ubuntu/​Images/​ZFS$ </​code>​
 +
 +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.
 +
 +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**.
 +
 +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.
 +
 +{{ :​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.
 +
 +===== Le boot d'​UBUNTU installé =====
 +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é.
 +
 +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à]].
 +
 +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__.
 +
 +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**.
 +
 +Il est aussi possible de faire tracer le démarrage en ajoutant cette ligne: ​ **GRUB_CMDLINE_LINUX_DEFAULT="​ "​**. ​
 +
 +S'il est nécessaire de rétablir un dual-boot, il faudra ajouter cette ligne:​ **GRUB_DISABLE_OS_PROBER=false**.
 +Les explication sont disponibles à cet endroit ​ [[:/​tutoriel/​grub2_parametrage_manuel|endroit]]. ​
 +
 +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 =====
 +<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>​
 +
 +
 +==== Un contexte ====
 + 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.
 +
 + 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.
 +
 +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é.
 +
 +  *  Création des points de montage dédiés avec un nom identique aux labels des partitions à sauver. ​ Action à ne faire qu'une fois.
 +<code bash>​sudo zfs create rpool/​USERDATA/​Win21H2
 +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>​
 +
 +
 +
 +
 +
 +
 +===== Accès aux partitions depuis un autre Ubuntu =====
 +<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 ====
 +<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
 +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>​
 +
 +
 +//​Contributeurs : [[utilisateurs:​bcag2]],​ geole
 +
 +
 +
 +
 +
 +
 +
  • utilisateurs/bcag2/zfs.txt
  • Dernière modification: Le 15/10/2023, 09:40
  • par geole