Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tutoriel:donnees_stockees_dans_un_systeme_de_fichiers_zfs [Le 06/07/2024, 13:31] geole [Pré-requis] |
tutoriel:donnees_stockees_dans_un_systeme_de_fichiers_zfs [Le 23/04/2025, 02:25] (Version actuelle) krodelabestiole pas un wiki windows. et que fait cannot create 'MesDonneesPersonnelles': Passphrase too short (min 8). sur une doc !? |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
Ce document traite de l'utilisation de ZFS à partir de la version 24.04 de ubuntu pour stocker les données des utilisateurs. \\ | Ce document traite de l'utilisation de ZFS à partir de la version 24.04 de ubuntu pour stocker les données des utilisateurs. \\ | ||
Pour toute version antérieure, se référer à [[:utilisateurs/bcag2/zfs|ce document.]] | Pour toute version antérieure, se référer à [[:utilisateurs/bcag2/zfs|ce document.]] | ||
+ | |||
+ | |||
===== Pré-requis ===== | ===== Pré-requis ===== | ||
Soit disposer d'une version ubuntu ZFS **24.04** chiffrée[[https://doc.ubuntu-fr.org/_media/tutoriel/installer_ubuntu_avec_subiquity/41.png?w=600&tok=1d4597|installée]] dans la totalité d'un disque dur pouvant être externe. \\ | Soit disposer d'une version ubuntu ZFS **24.04** chiffrée[[https://doc.ubuntu-fr.org/_media/tutoriel/installer_ubuntu_avec_subiquity/41.png?w=600&tok=1d4597|installée]] dans la totalité d'un disque dur pouvant être externe. \\ | ||
- | Soit disposer d'une version ubuntu **24.04** installée de façon classique dans une partition EXT4 ou BTRFS. | + | Soit disposer d'une version ubuntu **24.04** installée de façon classique dans une partition EXT4 ou BTRFS. \\ |
+ | Lors de l'installation de la version standard 24.04.1, il est nécessaire d'ajouter le paquet **[[apt>zfs-zed|zfs-zed]]** | ||
===== Création de l'enveloppe de stockage ===== | ===== Création de l'enveloppe de stockage ===== | ||
Ligne 21: | Ligne 24: | ||
Enter new passphrase: | Enter new passphrase: | ||
cannot create 'MesDonneesPersonnelles': Passphrase too short (min 8).</code> \\ | cannot create 'MesDonneesPersonnelles': Passphrase too short (min 8).</code> \\ | ||
- | * **-f** indique de forcer le montage | + | * ''-f'' indique de forcer le montage. |
- | * **-m** indique le point de montage à utiliser. J ai choisis **media** à cause des applications snap | + | * ''-m'' indique le point de montage à utiliser. J'ai choisis **media** à cause des applications snap. |
- | * **-O encryption=on** indique Option de chiffrement activée | + | * ''-O encryption=on'' indique Option de chiffrement activée. |
- | * **-O keyformat=passphrase** Indique Option de format de la phrase de chiffrement au format lisible. | + | * ''-O keyformat=passphrase'' Indique Option de format de la phrase de chiffrement au format lisible. |
- | * **-O keylocation=prompt** indique Option de saisie de la phrase au clavier d ou le choix du format lisible. | + | * ''-O keylocation=prompt'' indique Option de saisie de la phrase au clavier d'où le choix du format lisible. |
- | * **-o feature@lz4_compress=enabled** indique option de compression** LZ4** activée.La littérature semble conseiller cette option | + | * ''-o feature@lz4_compress=enabled'' indique option de compression **LZ4** activée. La littérature semble conseiller cette option. |
- | * **[[https://www.recuperation-donnees-raid.com/raid-z|raidz]]** Indique que l acces aux partitions se fait dans ce format équivalent au format [[https://doc.ubuntu-fr.org/raid_logiciel|raids5]]. On pouvait ne rien mettre ou mettre **mirror** équivalent du RAID1. | + | * ''[[https://www.recuperation-donnees-raid.com/raid-z|raidz]]'' Indique que l'accès aux partitions se fait dans ce format équivalent au format [[https://doc.ubuntu-fr.org/raid_logiciel|raids5]]. On pouvait ne rien mettre ou mettre **mirror** équivalent du RAID1. |
- | A l'issue de cette commande réussie, le point de montage **/media/ZFS** est automatiquement créé et accessible en écriture. | + | A l'issue de cette commande réussie, le point de montage ''/media/ZFS'' est automatiquement créé et accessible en écriture. |
+ | |||
+ | <note tip>Si l'une des partitions est stockée dans un disque externe, n'utiliser le nommage **/dev/sdXn** qui peut évoluer en fonction des montages, mais le nom réel de la partition **/dev/disk/by-id/xxxxxxxxxx** </note> | ||
===== Réutilisation de cet espace disque lors d'un nouveau démarrage ===== | ===== Réutilisation de cet espace disque lors d'un nouveau démarrage ===== | ||
- | Le logiciel ZFS étant actuellement en phase expérimentale, il n'est pas facile de savoir si l'**oubli** de rendre disponible auprès de l'utilisateur ces données **__chiffrées__**, est définitif ou sera réparé. \\ Voici deux palliatifs. | + | Le logiciel ZFS étant actuellement en phase expérimentale, il n'est pas facile de savoir si l'**oubli** de rendre disponible auprès de l'utilisateur ces données **__chiffrées__**, est définitif ou sera réparé. \\ Voici trois palliatifs. |
==== Solution manuelle ==== | ==== Solution manuelle ==== | ||
Lorsque l'utilisateur se connecte, il doit penser à monter la structure zfs s'il souhaite l'utiliser. La seule solution est la ligne de commande. C'est simplement: | Lorsque l'utilisateur se connecte, il doit penser à monter la structure zfs s'il souhaite l'utiliser. La seule solution est la ligne de commande. C'est simplement: | ||
<code bash>sudo zfs mount -vl MesDonneesPersonnelles</code> | <code bash>sudo zfs mount -vl MesDonneesPersonnelles</code> | ||
Le mot de déchiffrement sera demandé à l'écran de l'utilisateur. | Le mot de déchiffrement sera demandé à l'écran de l'utilisateur. | ||
- | ==== Solution automatique ==== | + | ==== Solution standard==== |
+ | Un service **utilisateur** demande la valeur de la clé de chiffrement au moment de la connexion de l'utilisateur. | ||
+ | === Le script de montage === | ||
+ | <code bash>cat<<'EOF'>$HOME/ZFS.sh | ||
+ | #!/bin/bash | ||
+ | Data=MesDonneesPersonnelles | ||
+ | Statut=$(zpool list $Data |tail -1 ) | ||
+ | if [[ ! $Statut =~ "$Data" ]] ; then | ||
+ | echo Importation des données par le service USER de ZFS | ||
+ | sudo zpool export $Data ### Pour se prémunir des noms de partitions des disques externes susceptible de changer de valeur si besoin | ||
+ | sudo zpool import -f $Data | ||
+ | fi | ||
+ | sudo zfs set mountpoint=/media/$Data $Data | ||
+ | for (( i=1; i < 9; i++ )); do | ||
+ | echo itération-$i dans le service USER de ZFS | ||
+ | Statut=$(zfs get mounted $Data |tail -1 ) | ||
+ | if [[ $Statut =~ "no" ]] ; then | ||
+ | ret=`DISPLAY=:1 zenity --entry --title="Montage de la partition $Data ($i/8)." --text "veuillez fournir la phrase de déchiffrement de $Data." ` | ||
+ | sleep 2 | ||
+ | sudo zfs mount -l $Data <<<$ret | ||
+ | else i=10 | ||
+ | fi | ||
+ | done | ||
+ | if [[ ! $Statut =~ "yes" ]] ; then | ||
+ | DISPLAY=:1 zenity --error --text "La partition $Data n'est pas disponible; veuillez investiguer!" | ||
+ | fi | ||
+ | EOF | ||
+ | sleep 1 | ||
+ | chmod +x /$HOME/ZFS.sh | ||
+ | cat $HOME/ZFS.sh | ||
+ | $HOME/ZFS.sh</code> | ||
+ | === Le script d'automatisation === | ||
+ | <code bash>mkdir -pv $HOME/.config/systemd/user | ||
+ | cat <<'EOF'>$HOME/.config/systemd/user/ZFS.service | ||
+ | [Unit] | ||
+ | Description=Montage de la partition de données personnelles. | ||
+ | DefaultDependencies=no | ||
+ | [Service] | ||
+ | Type=simple | ||
+ | ExecStartPre=echo Montage de la partition de données personnelles ZFS. | ||
+ | ExecStart=/home/%u/ZFS.sh | ||
+ | ExecStopPost=echo Le ontage de la partition de données personnelles ZFS est terminé. | ||
+ | StandardOutput=journal+console | ||
+ | [Install] | ||
+ | WantedBy=default.target | ||
+ | EOF | ||
+ | sleep 1 | ||
+ | systemctl --user stop ZFS.service ; systemctl --user disable ZFS.service ; systemctl --user daemon-reload; | ||
+ | systemctl --user enable ZFS.service ; systemctl --user start ZFS.service | ||
+ | systemctl --user --no-pager -l status ZFS.service</code> | ||
+ | ==== Solution automatique alternative==== | ||
**La valeur de la clé de déchiffrement doit être dans un fichier**. Il existe trois solutions: | **La valeur de la clé de déchiffrement doit être dans un fichier**. Il existe trois solutions: | ||
- Le logiciel est déjà chiffré. Dans ce cas la valeur de la clé de chiffrement peut être dans un fichier stocké sous** /root**. Solution aisément installable. | - Le logiciel est déjà chiffré. Dans ce cas la valeur de la clé de chiffrement peut être dans un fichier stocké sous** /root**. Solution aisément installable. | ||
- Le logiciel n'est pas chiffré, La clé de chiffrement peut être dans une clé usb que l'utilisateur branche au moment de se connecter et enlève aussitôt la connexion réalisée. C'est la solution privilégiée par les concepteurs. Solution aisément installable avec un risque de perdre la clé ou qu'elle soit lue par une personne non-habilitée. | - Le logiciel n'est pas chiffré, La clé de chiffrement peut être dans une clé usb que l'utilisateur branche au moment de se connecter et enlève aussitôt la connexion réalisée. C'est la solution privilégiée par les concepteurs. Solution aisément installable avec un risque de perdre la clé ou qu'elle soit lue par une personne non-habilitée. | ||
- | - Un service demande à l'utilisateur la valeur de la clé de chiffrement, la stocke dans un fichier, ouvre la structure chiffrée et détruit le contenu du fichier. Cela ne laisse que quelques instants cette valeur disponible à la vue de tout le monde.... C'est un développement personnel susceptible d'être amélioré par qui connait mieux. \\ Il est basé sur les services de [[:/systemd|systemd]] qui semblent destinés à se passer d'utilisateur. Le dialogue à l'écran étant inconnu. | + | - Un service **système** demande à l'utilisateur la valeur de la clé de chiffrement, la stocke dans un fichier, ouvre la structure chiffrée et détruit le contenu du fichier. Cela ne laisse que quelques instants cette valeur disponible à la vue de tout le monde.... C'est un développement personnel susceptible d'être amélioré par qui connaît mieux. \\ Il est basé sur les services de [[:/systemd|systemd]] qui semblent destinés à se passer d'utilisateur. Le dialogue à l'écran étant inconnu. |
- | + | S'affranchir de la contrainte des mots de passe si cela n'a pas déjà été fait: | |
- | Pensez à devenir administrateur en frappant **sudo -i**. | + | <code bash>echo $USER ALL = '(ALL)' NOPASSWD: /usr/sbin/zpool, /usr/sbin/zfs |sudo tee /etc/sudoers.d/zfsbis</code> |
- | === Nouvelle commande de création de l'espace à utiliser. === | + | Devenir administrateur en frappant **sudo -i** pour définir la nouvelle commande de création de l'espace à utiliser. |
<code bash>echo -n LeBonMotDeDéchiffrement | tee /root/ZFS.pwd | <code bash>echo -n LeBonMotDeDéchiffrement | tee /root/ZFS.pwd | ||
wc /root/ZFS.pwd ; cat /root/ZFS.pwd | wc /root/ZFS.pwd ; cat /root/ZFS.pwd | ||
Ligne 256: | Ligne 311: | ||
sudo zpool import MesDonneesPersonnelles</code> | sudo zpool import MesDonneesPersonnelles</code> | ||
Il était probablement inutile de bricoler pour retrouver la lettre C et les numéros 11 et 12. | Il était probablement inutile de bricoler pour retrouver la lettre C et les numéros 11 et 12. | ||
- | ===== Utilisation sous windows ===== | + | ==== Importation dans une version 22.04 ==== |
- | Quelques contraintes rencontrées: | + | <code bash>sudo apt install zfs-zed --simulate |
- | * L'application [[https://openzfsonwindows.org/|openzfs]] doit être installée. Elle est en cours de développement et pas encore stabilisée ( https://github.com/openzfsonwindows/openzfs/releases/download/zfswin-2.2.3rc5/OpenZFSOnWindows-debug-2.2.3rc5.exe). \\ | + | Lecture des listes de paquets... Fait |
- | * Importer l'espace disque avec la commande **import -f**. | + | Construction de l'arbre des dépendances... Fait |
- | * Remettre **off** l'option** sharenfs** qui n'est pas supportée. | + | Lecture des informations d'état... Fait |
- | * Dire que la clé de chiffrement doit être saisie au clavier car la commande disant de l'obtenir dans un fichier stocké dans C: ne fonctionne pas (Le caractère **:** est interdit). Il faut probablement écrire keylocation=file:/ / /Harddisk0Partition4/ZFS.pwd ( pas d'espace entre les trois /). | + | zfs-zed est déjà la version la plus récente (2.1.5-1ubuntu6~22.04.4). |
- | * Faire le montage des points de montages hérités car cela n'est pas traité. (mount MesDonneesPersonnelles/sports ; mount MesDonneeesPersonnelles/sports/Football). | + | zfs-zed passé en « installé manuellement ». |
- | * Accepter que visual basic signale des "anomalies". | + | 0 mis à jour, 0 nouvellement installés, 0 à enlever et 3 non mis à jour. |
- | * Utiliser l'explorateur de fichier pour accéder classiquement aux données qui sont stockées sous une **L**ettre**:** | + | |
- | * L'accès en écriture est possible. Mais le débit en écriture ne semble pas performant. | + | |
- | Ci-dessous une vision depuis windows powershell | + | |
- | <code bash>PS C:\> zpool status | + | |
- | pool: MesDonneesPersonnelles | + | |
- | state: ONLINE | + | |
- | status: Some supported and requested features are not enabled on the pool. | + | |
- | The pool can still be used, but some features are unavailable. | + | |
- | action: Enable all features using 'zpool upgrade'. Once this is done, | + | |
- | the pool may no longer be accessible by software that does not support | + | |
- | the features. See zpool-features(7) for details. | + | |
- | scan: resilvered 8.39M in 00:00:09 with 0 errors on Sun Jun 16 14:46:16 2024 | + | |
- | config: | + | |
- | + | ||
- | NAME STATE READ WRITE CKSUM | + | |
- | MesDonneesPersonnelles ONLINE 0 0 0 | + | |
- | raidz1-0 ONLINE 0 0 0 | + | |
- | Harddisk0Partition16 ONLINE 0 0 0 | + | |
- | Harddisk2Partition12 ONLINE 0 0 0 | + | |
- | raidz1-1 ONLINE 0 0 0 | + | |
- | Harddisk2Partition11 ONLINE 0 0 0 | + | |
- | Harddisk0Partition10 ONLINE 0 0 0 | + | |
- | + | ||
- | errors: No known data errors | + | |
- | + | ||
- | pool: TEST1 | + | |
- | state: ONLINE | + | |
- | status: Some supported and requested features are not enabled on the pool. | + | |
- | The pool can still be used, but some features are unavailable. | + | |
- | action: Enable all features using 'zpool upgrade'. Once this is done, | + | |
- | the pool may no longer be accessible by software that does not support | + | |
- | the features. See zpool-features(7) for details. | + | |
- | config: | + | |
- | + | ||
- | NAME STATE READ WRITE CKSUM | + | |
- | TEST1 ONLINE 0 0 0 | + | |
- | Harddisk2Partition7 ONLINE 0 0 0 | + | |
- | + | ||
- | errors: No known data errors | + | |
- | + | ||
- | pool: TEST3 | + | |
- | state: ONLINE | + | |
- | status: Some supported and requested features are not enabled on the pool. | + | |
- | The pool can still be used, but some features are unavailable. | + | |
- | action: Enable all features using 'zpool upgrade'. Once this is done, | + | |
- | the pool may no longer be accessible by software that does not support | + | |
- | the features. See zpool-features(7) for details. | + | |
- | config: | + | |
- | NAME STATE READ WRITE CKSUM | + | sudo zpool import -f Commun |
- | TEST3 ONLINE 0 0 0 | + | This pool uses the following feature(s) not supported by this system: |
- | raidz1-0 ONLINE 0 0 0 | + | com.klarasystems:vdev_zaps_v2 |
- | Harddisk2Partition8 ONLINE 0 0 0 | + | cannot import 'Commun': unsupported version or feature</code> |
- | Harddisk2Partition9 ONLINE 0 0 0 | + | Comme une fonctionnalité activée ne peut pas s'invalider, il aurait fallu créer l'espace en indiquant de ne pas utiliser la fonctionnalité! |
- | Harddisk2Partition10 ONLINE 0 0 0 | + | |
- | errors: No known data errors | ||
- | PS C:\> zpool list | ||
- | NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT | ||
- | MesDonneesPersonnelles 191G 78.5G 113G - - 0% 41% 1.00x ONLINE - | ||
- | TEST1 9.50G 9.21G 294M - - 79% 96% 1.00x ONLINE - | ||
- | TEST3 29.5G 14.8G 14.7G - - 0% 50% 1.00x ONLINE - | ||
- | PS C:\></code> | ||
- | En résumé: La clé de chiffrement doit être saisie au clavier, il faut exporter sous ubuntu et importer sous windows qui pourra modifier les fichiers créés par ubuntu, puis exporter sous windows et importer sous ubuntu qui pourra modifier les fichiers créés par windows. | + | ===== Annexes ===== |
+ | * [[https://www.recuperation-donnees-raid.com/raid-z|Présentation rapide du RAIDZ]] | ||
+ | * [[https://www.raidz-calculator.com/raidz-types-reference.aspx|Detailled presentation of RAIDZ]] | ||