Ceci est une ancienne révision du document !


ZFS est un système de fichiers open source pour la gestion de "très haute capacité de stockage".
ZFS est utilisable sous Ubuntu, sous mac et sous windows
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 à ce document.

Soit disposer d'une version ubuntu ZFS chiffréeinstallé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.
Dans ce second cas, il est alors nécessaire d'ajouter les applications absentes.

  • Installer le paquet chiffrement.
  • Installer le paquet ZFS de la version 24.04 disponible en ligne de commandes.
     sudo apt install zfs-zed

Ce tuto montre un cas d'utilisation en structure sécurisée nécessitant au moins deux partitions avec des données chiffrées.
Bien entendu, il est possible de ne pas choisir l'option de chiffrement et de ne pas utiliser la redondance.

Sélection de l'espace disque.

Grâce à l'application gparted, fabriquer deux partitions de tailles identiques. de préférence dans deux disques différents.
Si les partitions utilisées sont déjà formatées ZFS, il est nécessaire de les reformater (en EXT4 par exemple) car la création sera refusée. Sinon, les partitions peuvent être déclarées non-formatées.

Mise disposition de cet espace disque

La mise à disposition pour l'utilisateur de cet espace prévu, se fait obligatoirement en ligne de commande.
L'auto-documentation (man zpool create) n'est pas mauvaise mais elle dispose de peu d'exemples pratiques.
Voici la commande à exécuter.

sudo zpool create -f -m   /media/ZFS -O encryption=on -O keyformat=passepasse -O keylocation=prompt  -o feature@lz4_compress=enabled MesDonneesPersonnelles raidz /dev/sda18 /dev/sdb11
Enter new passphrase:
cannot create 'MesDonneesPersonnelles': Passphrase too short (min 8).


  • -f indique de forcer le montage
  • -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 keyformat=passepasse 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 feature@lz4_compress=enabled indique option de compression LZ4 activée.La littérature semble conseiller cette option
  • raidz Indique que l acces aux partitions se fait dans ce format équivalent au format 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.

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.

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:

sudo zfs mount -vl MesDonneesPersonnelles

Le mot de déchiffrement sera demandé à l'écran de l'utilisateur.

Solution automatique

La valeur de la clé de déchiffrement doit être dans un fichier. Il existe trois solutions:

  1. 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.
  2. 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.
  3. 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 qui semblent destinés à se passer d'utilisateur. Le dialogue à l'écran étant inconnu.

Pensez à devenir administrateur en frappant sudo -i.

Nouvelle commande de création de l'espace à utiliser.

echo -n LeBonMotDeDéchiffrement | tee /root/ZFS.pwd
wc /root/ZFS.pwd ; cat /root/ZFS.pwd
zpool create -f -m   /media/ZFS -O encryption=on -O keyformat=passphrase -O keylocation=file:///root/ZFS.pwd -o feature@lz4_compress=enabled MesDonneesPersonnelles raidz /dev/sda18 /dev/sdc11
shred  /root/ZFS.pwd

Penser à personnaliser la première ligne et le nom retenu pour la désignation de l'espace de stockage.

Le script de montage

cat<<'EOF'>/root/ZFS.sh
#!/bin/bash
Data=MesDonneesPersonnelles
echo  Entrée dans le service USER de ZFS  | tee -a  /dev/kmsg
for (( i=1; i < 300; i++ ));  do
MOI=$(loginctl list-users | head -2 | tail -1)
IDn=$(echo $MOI | cut -d" " -f1) ; IDx=$(echo $MOI | cut -d" " -f2) ;
if [[  $IDn -gt  999   ]] ; then
   i=300
else   
   sleep 1
   echo  itération-1-$i dans le module USER de ZFS  | tee -a  /dev/kmsg
fi 
done
for (( i=1; i < 9; i++ ));  do 
    echo  itération-2-1-$i dans le service USER de ZFS  | tee -a  /dev/kmsg
    Statut=$(zfs get mounted  $Data |tail -1 )
    if [[  $Statut =~  "no"  ]] ; then 
       ret=`sudo -u $IDx DISPLAY=:1 zenity --entry --title="Montage de la partition $Data ($i/8)." --text "veuillez fournir la phrase de déchiffrement de $Data." `
       echo $ret  > /root/ZFS.pwd
       sleep 1
       zfs mount -vl $Data       
       shred -n 0 -z  /root/ZFS.pwd 
    else i=10    
    fi   
done
if  [[ ! $Statut =~  "yes"  ]] ; then
   sudo -u $IDx DISPLAY=:1 zenity --error --text "La partition $Data n'est pas disponible; veuillez investiguer!"
fi
EOF
sleep 1
chmod +x /root/ZFS.sh
cat /roo/ZFS.sh
/root/ZFS.sh

Penser à personnaliser la troisième ligne. Cela ne coute rien de l'essayer.

Le script d'automatisation

cat <<'EOF'>/etc/systemd/system/ZFS.service
[Unit] 
Description=Montage de la partition de données personnelles.
DefaultDependencies=no
[Service]
Type=simple
TimeoutSec=5minutes
ExecStartPre=echo  Montage de la partition de données personnelles ZFS. |  tee -a  /dev/kmsg
ExecStartPre=sleep 60
# Temps approximatif pour l'arrivée de l'écran d'accueil
ExecStartPre=echo  Montage de la partition de données personnelles ZFS ( Fin de sommeil ) |  tee -a  /dev/kmsg
ExecStart=/root/ZFS.sh
ExecStopPost=echo Montage de la partition de données personnelles ZFS  est terminé  |  tee -a  /dev/kmsg
StandardOutput=journal+console
StandardError=journal+console
[Install]
WantedBy=multi-user.target
EOF
sleep 1
##### Essais.
systemctl  stop ZFS.service ; systemctl  disable ZFS.service ; systemctl --user daemon-reload; 
systemctl enable ZFS.service ; systemctl start ZFS.service 
systemctl  --no-pager -l status ZFS.service  
exit

Une utilisation classique pour sauvegarder les données personnelles

Création du répertoire

sudo mkdir /media/ZFS/$USER
sudo chown -Rv $USER  /media/ZFS/$USER 
sudo chmod 775 /media/ZFS/$USER 

Déplacement des répertoires

mv -v Documents Images Modèles Musique Public Téléchargements Vidéos    /media/ZFS/$USER 

Création les liens

ln -s  /media/ZFS/$USER/Documents ; ln -s  /media/ZFS/$USER/Images ; ln -s   /media/ZFS/$USER/Modèles   ; ln -s   /media/ZFS/$USER/Musique ; ln -s  /media/ZFS/$USER/Public ; ln -s  /media/ZFS/$USER/Téléchargements ; ln -s   /media/ZFS/$USER/Vidéos
mv -v Bureau /media/ZFS/$USER && ln -s /media/ZFS/$USER/Bureau 

Figer le changement

cp -v /etc/xdg/user-dirs.conf $HOME/.config && sed -i 's/True/False/' $HOME/.config/user-dirs.conf 
  • tutoriel/donnees_stockees_dans_un_systeme_de_fichiers_zfs.1718215068.txt.gz
  • Dernière modification: Le 12/06/2024, 19:57
  • par geole