Ci-dessous, les différences entre deux révisions de la page.
zfs [2017/10/29 22:01] luc |
zfs [2018/10/13 20:32] |
||
---|---|---|---|
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 '' | ||
- | |||
- | ==== 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: | ||
- | |||
- | </ |