Outils pour utilisateurs

Outils du site


zfs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

zfs [2017/09/30 18:36]
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'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 : 
-  * 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'autre sera perdu. 
-  * zpool -- un ou plusieurs vdev peuvent être regroupés dans des volumes appelés zpool (on peut les voir comme des partitions), rajouter un vdev rajoute de la capacité, perdre un vdev revient à perdre tout le zpool 
-  * dataset -- au sein d'un zpool, on peut créer un ou plusieurs dataset sur lesquels on peut assigner des permissions/quotas/paramètres (snapshot, scrub..) différents 
- 
-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'incompatibilités de licences entre zfs (CDDL) et linux (GPL), d'où un processus un peu tordu.\\ 
-On suit le [[https://github.com/zfsonlinux/zfs/wiki/Debian|wiki de zfs_onlinux]].\\ 
-Il faut autoriser le dépot ''contrib'', puis installer les paquets ''linux-headers-xx'' adaptés, puis ''zfs-dkms''. 
- 
-===== zpool ===== 
- 
-Sans surprise, c'est la commande ''zpool'' qu'il faut utiliser. 
- 
-==== Créer et Importer des zpool existants ==== 
- 
-C'est la commande ''zpool'' qu'il faut utiliser.  
- 
-<code bash> 
-# 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> 
- 
- 
-# créer un zpool  
-zpool create (-f) -m MOUNT_POINT POOL_NAME (raidzX/mirror) DISK_IDs 
-</code> 
- 
-On doit pouvoir monter dans un dossier spécifique, de base ils sont à la racine ''/<pool_name>/'' 
- 
-==== Alors, ces zpool ? ==== 
- 
-<code bash> 
-# voir les zpool importés/montés 
-zpool list 
-# voir comment se portent les zpool 
-zpool status 
-</code> 
- 
- 
-===== dataset ===== 
- 
-Et là, c'est la commande ''zfs'' qu'il faut regarder 
- 
-==== Lister, Créer, modifier, supprimer un dataset ==== 
- 
-<code bash> 
-# lister les dataset 
-zfs list 
- 
-# créer un dataset 
-zfs create -o mountpoint=/path/to/dir POOL_NAME/DATASET_NAME 
- 
- 
- 
-</code> 
- 
-==== Paramètres des dataset ==== 
- 
-<code bash> 
-# 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 ... 
- 
-</code> 
- 
- 
-==== 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/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 .. 
- 
- 
-</code> 
- 
-Il existe la possibilité de rollback, mais c'est dangereux, on préfèrera faire des clones 
- 
-=== auto-snapshot === 
- 
-Le paquet ''zfs-auto-snapshot'' est disponible sur debian et archlinux permet de faire comme son nom l'indique des snapshot autoamatiquement. Son usage ? ... 
- 
-==== 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/SNAPSHOT ZPOOL/DATASET/CLONE 
- 
-# lister les clones  
-zfs list -r 
- 
-# détruire un clone 
-zfs destroy ZPOOL/DATASET/CLONE 
-</code> 
- 
-==== 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 
-</code> 
  
zfs.txt · Dernière modification: 2018/10/13 20:32 (modification externe)