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 20:42]
luc
zfs [2018/10/13 20:32] (Version actuelle)
Ligne 21: Ligne 21:
 Sans surprise, c'est la commande ''zpool'' qu'il faut utiliser. Sans surprise, c'est la commande ''zpool'' qu'il faut utiliser.
  
-==== Importer des zpool existants ====+==== 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 27: 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 33: 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 102: Ligne 107:
 zfs receive ZPOOL/SNAPSHOT < /PATH/TO/FILE zfs receive ZPOOL/SNAPSHOT < /PATH/TO/FILE
  
-# pour n'envoyer que le différentiel (à méditer, c'est un copier coller non vérifié)  +# Pour envoyer et recevoir en une seule commande 
-zfs send -i ZPOOL/SNAPSHOT | ssh SERVER zfs recv testpool/testfs+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 ..
  
  
Ligne 109: Ligne 123:
  
 Il existe la possibilité de rollback, mais c'est dangereux, on préfèrera faire des clones 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 ==== ==== 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.1506717734.txt.gz · Dernière modification: 2018/10/13 20:32 (modification externe)