Ceci est une ancienne révision du document !
Il parait que c'est LE système de fichiers ultime, avec un focus sur l'intégrité des données, les backup et très 'scalable'. Son problème : pour bien faire il faudrait de la RAM ECC…
On trouve sur le net plein de docs sur les caractéristiques et fonctionnalités de zfs, je ne vais pas revenir dessus.
Allez, un petit rappel de la hierarchie :
En revanche, j'ai eu besoin de quelques commandes pour mettre en place mon système et j'ai eu du mal à les trouver, d'où cette section sur zfs : comment utilise-t-on en pratique zfs sur une debian ?
Il y a des petites histoires d'incompatibilités de licences entre zfs (CDDL) et linux (GPL), d'où un processus un peu tordu.
On suit le wiki de zfs_onlinux.
Il faut autoriser le dépot contrib
, puis installer les paquets linux-headers-xx
adaptés, puis zfs-dkms
.
Sans surprise, c'est la commande zpool
qu'il faut utiliser.
C'est la commande zpool
qu'il faut utiliser.
# liste les zpool existants sur les disques durs mais pas encore montés zpool import # l'option -d est indispensable pour ne pas utiliser l'identification via /dev/sda qui est susceptible de changer d'un boot à l'autre : zpool import -d /dev/disk/by-id # importer le zpool (et le monte automatiquement) zpool import -d /dev/disk/by-id <pool_name>
On doit pouvoir monter dans un dossier spécifique, de base ils sont à la racine /<pool_name>/
# voir les zpool importés/montés zpool list # voir comment se portent les zpool zpool status
Et là, c'est la commande zfs
qu'il faut regarder
# lister les dataset zfs list # créer un dataset zfs create -o mountpoint=/path/to/dir POOL_NAME/DATASET_NAME
# lire un paramètre (sur un dataset / zpool) zfs get zfs get PARAMETER zfs get PARAMETER ZPOOL/DATASET # régler un paramètre zfs set ...
Ce sont des copies en read-only d'un dataset.
# lister les snapshots zfs list -t snapshot # créer un snapshot zfs snapshot (-r) ZPOOL/DATASET # -r : recursive, tous les dataset enfants sont concernés # détruire un snapshot zfs destroy ZPOOL/SNAPSHOT # renommer un snapshot zfs rename ZPOOL/OLD_NAME_SNAPSHOT ZPOOL/NEW_NAME_SNAPSHOT # déplacer un snapshot (crée une "image stream" vers la sortie standard --> pipe) zfs send ZPOOL/SNAPSHOT > /PATH/TO/FILE # et la réciproque zfs receive ZPOOL/SNAPSHOT < /PATH/TO/FILE # Pour envoyer et recevoir en une seule commande zfs send -i ZPOOL/SNAPSHOT | ssh SERVER zfs receive ANOTHER_POOL/DATASET # pour n'envoyer que le différentiel zfs send -i ZPOOL/SNAPSHOT | ssh SERVER zfs recv ANOTHER_POOL/DATASET # pour ne récupérer qu'un seul fichier en accédant au dossier snapshot du dataset : ''.zfs/snapshot/snapshot_name created under the file system for which snapshot was taken ls .. cp ..
Il existe la possibilité de rollback, mais c'est dangereux, on préfèrera faire des clones
Le paquet zfs-auto-snapshot
est disponible sur debian et archlinux permet de faire comme son nom l'indique des snapshot autoamatiquement. Son usage ? …
Les clones sont des copies write/read du système de fichiers, uniquement créées à partir des snapshot
# créer un clone zfs clone ZPOOL/SNAPSHOT ZPOOL/DATASET/CLONE # lister les clones zfs list -r # détruire un clone zfs destroy ZPOOL/DATASET/CLONE
Pour inspecter un zpool (et le réparer automatiquement si une erreur est trouvée et qu'il y a de la redondance).
1 seul scrub n'est possible à la fois, ça consomme trop de ressources sinon.
# lancer un scrub zpool scrub ZPOOL # arrêter un scrub zpool scrub -s ZPOOL