backup:zfs

Ceci est une ancienne révision du document !


Faire une sauvegarde avec zfs

zfs(8) va vous permettre de sauvegarder vos systèmes et données d'une machine à une autre très simplement.


Dans cet article S désigne le système à sauvegarder et D, le système qui va contenir la sauvegarde.

Faites un cliché de votre système S:

$ zfs snap -r zroot@maintenant

Dans le cas présent, je fais un instantané de toute la hiérarchie qui se trouve sous le dataset zroot. En général, il s'agit de tout votre pool.

Pensez à nettoyer tout ce qui pourrait être mis en cache et qu'il n'est pas nécessaire de sauvegarder avant de lancer la procédure.

$ pkg clean -a

Par exemple, les paquets téléchargé, dans /usr/ports/distfiles:

  • depuis une poudriere:
     $ poudriere distclean -a 

    .

Préparez votre hôte D pour recevoir la sauvegarde.

$ zfs create zroot/BCK
$ zfs create zroot/BCK/S
$ zfs set canmount=off zroot/BCK/S

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.

Nous allons faire passer le flux de données au travers d'un tunnel ssh, nous allons avoir besoin:

  1. d'un utilisateur sans droits root ;
  2. que cet utilisateur puisse travailler sur le dataset cible.
$ zfs allow -u david create,mount,destroy,receive zroot/BCK/S

Depuis le système S, envoyer votre cliché vers la cible D:

$ zfs send -R zroot@maintenant | ssh -i my_id_rsa david@sauvegarde.D.net zfs recv -Fduv zroot/BCK/S
  • my_id_rsa est la clef SSH pour se connecter à D.
  • -F va supprimer sur la cible les clichés qui ne sont plus sur la source.

Affinez et accélérer le transfert par

$ zfs send -c -D -R zroot@maintenant | ssh -i my_id_rsa david@sauvegarde.D.net zfs recv -Fduv zroot/BCK/S
  • -c pour compresser ce qui peut l'être
  • -D pour utiliser la dé-duplication, c'est à dire n'envoyer qu'une fois les blocs qui sont identiques.

Pour éviter de multiplier les clichés sur un hôte, effacer régulièrement, ou par script, les clichés les plus vieux:

$ zfs destroy  -pr zroot@%vieux 

Utilisé avec l'option -F de receive, la cible sera aussi nettoyée.

  • backup/zfs.1587898515.txt.gz
  • Dernière modification : 2020/04/26 10:55
  • de david