zfs
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
zfs [2017/09/29 21:15] – luc | zfs [2018/10/13 20:32] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== zfs ====== | ||
+ | Il parait que c'est LE système de fichiers ultime, avec un focus sur l' | ||
+ | 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 : | ||
+ | * vdev -- les vdev regroupent des disques durs avec ou non des redondances appelées RAIDZx, x étant le nombre de disques qu'on peut perdre sans perdre le vdev. Tous les disques d'un vdev doivent avoir la même taille, à défaut le surplus d'un disque par rapport à l' | ||
+ | * zpool -- un ou plusieurs vdev peuvent être regroupés dans des volumes appelés zpool (on peut les voir comme des partitions), | ||
+ | * dataset -- au sein d'un zpool, on peut créer un ou plusieurs dataset sur lesquels on peut assigner des permissions/ | ||
+ | |||
+ | 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 ? | ||
+ | |||
+ | ===== Installation de zfs (sur debian 9) ===== | ||
+ | |||
+ | Il y a des petites histoires d' | ||
+ | On suit le [[https:// | ||
+ | Il faut autoriser le dépot '' | ||
+ | |||
+ | ===== zpool ===== | ||
+ | |||
+ | Sans surprise, c'est la commande '' | ||
+ | |||
+ | ==== Créer et Importer des zpool existants ==== | ||
+ | |||
+ | C'est la commande '' | ||
+ | |||
+ | <code bash> | ||
+ | # liste les zpool existants sur les disques durs mais pas encore montés | ||
+ | zpool import | ||
+ | |||
+ | # l' | ||
+ | zpool import -d / | ||
+ | |||
+ | # importer le zpool (et le monte automatiquement) | ||
+ | zpool import -d / | ||
+ | |||
+ | |||
+ | # créer un zpool | ||
+ | zpool create (-f) -m MOUNT_POINT POOL_NAME (raidzX/ | ||
+ | </ | ||
+ | |||
+ | On doit pouvoir monter dans un dossier spécifique, | ||
+ | |||
+ | ==== Alors, ces zpool ? ==== | ||
+ | |||
+ | <code bash> | ||
+ | # voir les zpool importés/ | ||
+ | zpool list | ||
+ | # voir comment se portent les zpool | ||
+ | zpool status | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== dataset ===== | ||
+ | |||
+ | Et là, c'est la commande '' | ||
+ | |||
+ | ==== Lister, Créer, modifier, supprimer un dataset ==== | ||
+ | |||
+ | <code bash> | ||
+ | # lister les dataset | ||
+ | zfs list | ||
+ | |||
+ | # créer un dataset | ||
+ | zfs create -o mountpoint=/ | ||
+ | |||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Paramètres des dataset ==== | ||
+ | |||
+ | <code bash> | ||
+ | # lire un paramètre (sur un dataset / zpool) | ||
+ | zfs get | ||
+ | zfs get PARAMETER | ||
+ | zfs get PARAMETER ZPOOL/ | ||
+ | |||
+ | # régler un paramètre | ||
+ | zfs set ... | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== snapshot ==== | ||
+ | |||
+ | Ce sont des copies en read-only d'un dataset. | ||
+ | |||
+ | <code bash> | ||
+ | # lister les snapshots | ||
+ | zfs list -t snapshot | ||
+ | |||
+ | # créer un snapshot | ||
+ | zfs snapshot (-r) ZPOOL/ | ||
+ | |||
+ | # détruire un snapshot | ||
+ | zfs destroy ZPOOL/ | ||
+ | |||
+ | # renommer un snapshot | ||
+ | zfs rename ZPOOL/ | ||
+ | |||
+ | |||
+ | # déplacer un snapshot (crée une "image stream" | ||
+ | zfs send ZPOOL/ | ||
+ | |||
+ | # et la réciproque | ||
+ | zfs receive ZPOOL/ | ||
+ | |||
+ | # Pour envoyer et recevoir en une seule commande | ||
+ | zfs send -i ZPOOL/ | ||
+ | |||
+ | # pour n' | ||
+ | zfs send -i ZPOOL/ | ||
+ | |||
+ | |||
+ | # pour ne récupérer qu'un seul fichier en accédant au dossier snapshot du dataset : | ||
+ | # '' | ||
+ | ls .. | ||
+ | cp .. | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | Il existe la possibilité de rollback, mais c'est dangereux, on préfèrera faire des clones | ||
+ | |||
+ | === auto-snapshot === | ||
+ | |||
+ | Le paquet '' | ||
+ | |||
+ | En réalité, c'est un script cron qui s' | ||
+ | < | ||
+ | PATH="/ | ||
+ | |||
+ | */5 * * * * root / | ||
+ | 00 * * * * root / | ||
+ | 59 23 * * * root / | ||
+ | 59 23 * * 0 root / | ||
+ | 00 00 1 * * root / | ||
+ | </ | ||
+ | |||
+ | On peut aussi rajouter le paramètre '' | ||
+ | <code BASH> | ||
+ | # zfs get all DATASET_NAME | ||
+ | NAME PROPERTY | ||
+ | DATASET_NAME | ||
+ | DATASET_NAME | ||
+ | DATASET_NAME | ||
+ | DATASET_NAME | ||
+ | DATASET_NAME | ||
+ | DATASET_NAME | ||
+ | </ | ||
+ | |||
+ | et pour détruire des lots de snapshots : | ||
+ | |||
+ | <code bash> | ||
+ | zfs list -H -o name -t snapshot | grep hourly | xargs -n1 zfs destroy | ||
+ | </ | ||
+ | |||
+ | ==== clones ==== | ||
+ | |||
+ | Les clones sont des copies write/read du système de fichiers, uniquement créées à partir des snapshot | ||
+ | |||
+ | <code bash> | ||
+ | # créer un clone | ||
+ | zfs clone ZPOOL/ | ||
+ | |||
+ | # lister les clones | ||
+ | zfs list -r | ||
+ | |||
+ | # détruire un clone | ||
+ | zfs destroy ZPOOL/ | ||
+ | </ | ||
+ | |||
+ | ==== scrub ==== | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <code bash> | ||
+ | # lancer un scrub | ||
+ | zpool scrub ZPOOL | ||
+ | |||
+ | # arrêter un scrub | ||
+ | zpool scrub -s ZPOOL | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Des trucs en vrac, à trier ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | Transfer ZFS Snapshot Over Network | ||
+ | |||
+ | zfs send mypool/ | ||
+ | zfs send mypool/ | ||
+ | zfs send -p -R ... ## transmit settings like compression | ||
+ | zfs send mypool/ | ||
+ | ## speedup receive | ||
+ | zfs send -i mypool/ | ||
+ | ## speedup send & receive: | ||
+ | # Start the receiver first. This listens on port 9090, has a 1GB buffer, | ||
+ | and uses 128kb chunks (same as zfs): | ||
+ | mbuffer -s 128k -m 1G -I 9090 | zfs receive data/ | ||
+ | # Now we send the data, also sending it through mbuffer: | ||
+ | zfs send -i data/ | ||
+ | 128k -m 1G -O 10.0.0.1: | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | aptitude install zfs-auto-snapshot | ||
+ | zfs-auto-snapshot --quiet --syslog --label=daily --keep=31 pool1/ | ||
+ | zfs-auto-snapshot --quiet --syslog --label=monthly --keep=12 pool1/ | ||
+ | </ |