backup: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
backup:zfs [2020/05/08 10:05] – [Sauvegarde incrémentale] davidbackup:zfs [2024/03/30 16:13] (Version actuelle) – [Sauvegarder] david
Ligne 34: Ligne 34:
  
 Préparez votre hôte <label type="success">D</label> pour recevoir la sauvegarde. Préparez votre hôte <label type="success">D</label> pour recevoir la sauvegarde.
 +
 +==== Disque ====
 +
 +Si vous avez un disque dédié à la sauvegarde, préparez le:
  
 <code bash> <code bash>
-$ zfs create zroot/BCK +zpool create svgd /dev/da0 
-$ zfs create zroot/BCK/S +</code> 
-$ zfs set canmount=off zroot/BCK/S+ 
 +==== Dataset ==== 
 + 
 +Créer vos //dataset//: 
 + 
 +<code bash> 
 +$ zfs create svgd/BCK 
 +$ zfs create svgd/BCK/S 
 +$ zfs set canmount=off svgd/BCK/S
 </code> </code>
  
 La dernière ligne vous assure que votre sauvegarde ne sera jamais remontée automatiquement, ce qui va éviter de sérieux problèmes si la sauvegarde contient des points de montage de la hiérarchie standard, hier(7). Ce qui est en général le cas. La dernière ligne vous assure que votre sauvegarde ne sera jamais remontée automatiquement, ce qui va éviter de sérieux problèmes si la sauvegarde contient des points de montage de la hiérarchie standard, hier(7). Ce qui est en général le cas.
  
 +=== Chiffrement ===
 +Vous pouvez aussi chiffrer le disque, pour éviter que votre disque soit lisible par d'autres:
 +<code>
 +zfs create -o encryption=aes-256-gcm -o keyformat=passphrase  svgd/BCK
 +</code>
 +
 +=== Permissions  ===
 Nous allons faire passer le flux de données au travers d'un tunnel //ssh//, nous allons avoir besoin: Nous allons faire passer le flux de données au travers d'un tunnel //ssh//, nous allons avoir besoin:
  
Ligne 49: Ligne 68:
  
 <code bash> <code bash>
-$ zfs allow -u david create,mount,destroy,receive zroot/BCK/S+$ zfs allow -u david create,mount,destroy,receive svgd/BCK/S
 </code> </code>
  
 +==== options ====
  
 +Comme ce //dataset// est dédié à la sauvegarde, utilisez des paramètres appropriés:
 +
 +<code bash>
 +$ zfs set -o compression=lz4 svgd/BCK/
 +$ zfs set copies=2 svgd/BCK/
 +$ zfs set atime=off svgd/BCK/
 +$ zfs set dedup=off svgd/BCK/
 +</code>
 ===== Sauvegarder ===== ===== Sauvegarder =====
  
Ligne 58: Ligne 86:
  
 <code bash> <code bash>
-$ zfs send -R zroot@maintenant | ssh -i my_id_rsa david@sauvegarde.D.net zfs recv -Fduv zroot/BCK/S+$ zfs send -R zroot@maintenant | ssh -i my_id_rsa david@sauvegarde.D.net zfs recv -Fduv svgd/BCK/S
 </code> </code>
  
   * ''my_id_rsa'' est  [[net::ssh|la clef SSH]] pour se connecter à <label type="success">D</label>.   * ''my_id_rsa'' est  [[net::ssh|la clef SSH]] pour se connecter à <label type="success">D</label>.
-  * ''-F'' va supprimer sur la cible les clichés qui ne sont plus sur la source.+  * ''-d'' va supprimer le nom du ''pool'' du chemin de la sauvegarde. 
 +  * ''-u'' ne pas monter le système sur la cible. 
 +  * ''-F'' va supprimer sur la cible les clichés qui ne sont plus sur la source. Ne fonctionne qu'avec ''-R''.
  
-Affinez et accélérer le transfert par +Affinez et accélérer le transfert par :
  
 <code bash> <code bash>
-$ zfs send -c -D -R zroot@maintenant | ssh -i my_id_rsa david@sauvegarde.D.net zfs recv -Fduv zroot/BCK/S+$ zfs send -c -R zroot@maintenant | ssh -i my_id_rsa david@sauvegarde.D.net zfs recv -Fduv svgd/BCK/S
 </code> </code>
  
   * ''-c'' pour compresser ce qui peut l'être   * ''-c'' pour compresser ce qui peut l'être
-  ''-D'' pour utiliser la -duplicationc'est à dire n'envoyer qu'une fois les blocs qui sont identiques.+ 
 +Selon les capacités de vos ''pool'', soit ''large_blocks'' et ''embedded_data'', autant sur la cible que sur la source: 
 + 
 +<code bash> 
 +root@popeye:~ # zpool get feature@embedded_data zroot 
 +NAME   PROPERTY               VALUE                  SOURCE 
 +zroot  feature@embedded_data  active                 local 
 +root@popeye:~ # zpool get feature@large_blocks zroot 
 +NAME   PROPERTY              VALUE                 SOURCE 
 +zroot  feature@large_blocks  enabled               local 
 +</code> 
 + 
 +vous pouvez ajouter les options ''-L'' et ''-e'' à la commande ''send''
 + 
 + 
 +<callout type="warning" icon="true"> 
 +Attention à ne pas activer certaines capacités dans l'unique but  d'accélérer le transfert. Consultez d'abord la documentation, zpool-features(7). 
 +\\ 
 +En particulierun //dataset// qui aurait des blocs de taille supérieurs à ''128K'' (paramètre ''recordsize'') autorisé par l'option ''large_blocks'' n'est pas pris en charge par le boot-loader. 
 +</callout> 
 + 
 +==== Précautions ==== 
 +Pour éviter des montages inattendus sur la machine cible, évitez de transférer les point de montages avec la sauvegarde 
 + 
 +  * '' zfs recv … -x canmount -x mountpoint '' 
 +ou 
 +  *'' zfs recv … -o canmount=off -x mountpoint '' 
 + 
 +Si vous avez autorisé le passage de la propriété ''canmount'' sur <label type="success">D</label>.
  
 ==== Sauvegarde incrémentale ==== ==== Sauvegarde incrémentale ====
Ligne 80: Ligne 138:
  
 <code bash> <code bash>
-zfs send -c -D -i zroot/dataset@${REMOTE_ZLAST} zroot/dataset@${LOCAL_ZLAST} | ssh user@D zfs recv -Fdu zfs/${REMOTE_POOL}+zfs send -c -i zroot/dataset@${REMOTE_ZLAST} zroot/dataset@${LOCAL_ZLAST} | ssh user@D zfs recv -Fdu zfs/${REMOTE_POOL}
 </code> </code>
  
Ligne 91: Ligne 149:
  
  
-L'option ''-r'' (//récursif//) donnée à ''zfs send'' va envoyer en cascade le ''dataset'' parent ainsi que ses enfants. +L'option ''-R'' (//replicate//) donnée à ''zfs send'' va envoyer en cascade le ''dataset'' parent ainsi que ses enfants. 
-Ça a un coté pratique, puisque vous n'aurez pas à définir un par un les éléments que vous voulez sauvegarder. +Ça a un coté pratique, puisque vous n'aurez pas à définir un par un les éléments que vous voulez sauvegarder et qu'il est nécessaire pour que ''-F'' fonctionne.
 D'un autre coté, vous allez absolument tout sauvegarder, en particulier de nombreuses données dont vous n'aurez pas besoin ensuite, par exemple ''/usr/src'', ''/tmp'' et une partie des enfants de ''/var''. D'un autre coté, vous allez absolument tout sauvegarder, en particulier de nombreuses données dont vous n'aurez pas besoin ensuite, par exemple ''/usr/src'', ''/tmp'' et une partie des enfants de ''/var''.
  
Ligne 114: Ligne 172:
 $ zfs destroy  -vr zroot@%vieux  $ zfs destroy  -vr zroot@%vieux 
 </code> </code>
 +==== Sauvegarde dans un fichier ====
  
-Utilisé avec l'option ''-F'' de ''receive'', la cible sera aussi nettoyée.+Vous pouvez tout simplement sauvegarder vos //dataset// dans des fichiersPour les transférer ensuite à votre guise sur un autre support:
  
 +<code bash>
 +zfs send -c -e ${dataset}@${LAST} > /bck/${ZFILE}.bck
 +</code>
 +
 +Avec:
 +<code bash>
 +ZFILE=`echo "${dataset}" | sed 's+\/+_+g'`
 +</code>
 +
 +par exemple, pour remplacer les séparateurs.
  
 ===== En savoir plus ===== ===== En savoir plus =====
Ligne 124: Ligne 193:
   * [[https://www.freebsd.org/doc/handbook/zfs-zfs.html|Le manuel ]].   * [[https://www.freebsd.org/doc/handbook/zfs-zfs.html|Le manuel ]].
 </alert> </alert>
 +
 +
  • backup/zfs.1588932311.txt.gz
  • Dernière modification : 2020/05/08 10:05
  • de david