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

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
zfs [2017/09/29 18:48]
luc
zfs [2018/10/13 20:32] (Version actuelle)
Ligne 19: Ligne 19:
 ===== zpool ===== ===== zpool =====
  
-==== Importer des zpool existants ====+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.  C'est la commande ''zpool'' qu'il faut utiliser. 
Ligne 25: Ligne 27:
 <code bash> <code bash>
 # liste les zpool existants sur les disques durs mais pas encore montés # liste les zpool existants sur les disques durs mais pas encore montés
-zpool import   +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 : # 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    zpool import -d /dev/disk/by-id   
Ligne 31: Ligne 34:
 # importer le zpool (et le monte automatiquement) # importer le zpool (et le monte automatiquement)
 zpool import -d  /dev/disk/by-id <pool_name> 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> </code>
  
Ligne 47: Ligne 54:
 ===== dataset ===== ===== dataset =====
  
-==== Créer, modifier, supprimer un 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 ==== ==== 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 et d'en faire une gestion automatique (supprimer les anciennes).
 +
 +En réalité, c'est un script cron qui s'occupe de tout ça : sur debian, il est ici ''/etc/cron.d/zfs-auto-snapshot''
 +<code>
 +PATH="/usr/bin:/bin:/usr/sbin:/sbin"
 +
 +*/5 * * * * root /sbin/zfs-auto-snapshot -q -g --label=frequent --keep=24 //
 +00 * * * * root /sbin/zfs-auto-snapshot -q -g --label=hourly --keep=24 //
 +59 23 * * * root /sbin/zfs-auto-snapshot -q -g --label=daily --keep=14 //
 +59 23 * * 0 root /sbin/zfs-auto-snapshot -q -g --label=weekly --keep=4 //
 +00 00 1 * * root /sbin/zfs-auto-snapshot -q -g --label=monthly --keep=4 //
 +</code>
 +
 +On peut aussi rajouter le paramètre ''-r recursive'', et ''--default-exclude'' pour exclure les dataset dont la sauvegarde n'a pas été explicitement autorisée via le paramètre zfs ''com.sun:auto-snapshot''
 +<code BASH>
 +# zfs get all DATASET_NAME
 +NAME          PROPERTY                        VALUE SOURCE
 +DATASET_NAME  com.sun:auto-snapshot           true  local
 +DATASET_NAME  com.sun:auto-snapshot:monthly   true  local
 +DATASET_NAME  com.sun:auto-snapshot:weekly    true  local
 +DATASET_NAME  com.sun:auto-snapshot:hourly    true  local
 +DATASET_NAME  com.sun:auto-snapshot:frequent  true  local
 +DATASET_NAME  com.sun:auto-snapshot:daily     true  local
 +</code>
 +
 +et pour détruire des lots de snapshots :
 +
 +<code bash>
 +zfs list -H -o name -t snapshot | grep hourly | xargs -n1 zfs destroy
 +</code>
 +
 +==== 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 ==== ==== 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>
 +
 +
 +==== Des trucs en vrac, à trier ====
 +
 +<code>
 +
 +Transfer ZFS Snapshot Over Network
 +
 +zfs send mypool/testarea@first-snapshot | gzip > /mnt/backup/snapshot.img.gz ## save snapshot as image
 +zfs send mypool/testarea@first-snapshot | ssh host "zfs receive remotepool/blabla" ## send snaphsot to remote host
 +zfs send -p -R ... ## transmit settings like compression
 +zfs send mypool/testarea@first-snapshot mypool/testarea@second-snapshot ... ## send just incremental changes
 +## speedup receive
 +zfs send -i mypool/testarea@first-snapshotman s | ssh host "mbuffer -s 128k -m 1G | zfs receive -F tank/pool
 +## 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/filesystem
 +# Now we send the data, also sending it through mbuffer:
 +zfs send -i data/filesystem@1 data/filesystem@2 | mbuffer -s
 +    128k -m 1G -O 10.0.0.1:9090
 +
 +</code>
 +
 +<code>
 +aptitude install zfs-auto-snapshot
 +zfs-auto-snapshot --quiet --syslog --label=daily --keep=31 pool1/dataset1 ## make daily snapshots, keep for 31 days
 +zfs-auto-snapshot --quiet --syslog --label=monthly --keep=12 pool1/dataset1
 +</code>
zfs.1506710914.txt.gz · Dernière modification: 2018/10/13 20:32 (modification externe)