zfs send / zfs receive
Ces deux commandes s’utilisent avec des snapshots.
local
En admettant un serveur avec deux pools (baie1 et baie2) :
zfs snapshot baie1/data@transfert
zfs send -veLR baie1/data@transfert | zfs recv -d baie2
send -v : verbeux
send -e : flux plus compact, profitant de l'option "embedded_data" des pools
send -L : flux avec des blocs plus large (> 128KiB)
send -R : flux de réplication, incluant la descendance du système de fichier (propriétés, snapshots, filesystems enfants et clones)
recv -d : ne pas tenir compte du premier élément du filesystem (ici, "baie1") lors de la réception
distant, netcat
En admettant un serveur source (localhost) et un serveur destination (IP: 192.168.0.7).
Création d’un snapshot sur le serveur source, puis envoi, via netcat, vers le serveur destination :
# sur serveur source
zfs snapshot rpool@20230404
zfs send rpool@20230404 | nc 192.168.0.7 12224
Ouverture du port correspondant sur le serveur destination, et réception du flux :
# sur 192.168.0.7
nc -l 12224 | zfs receive tank/backup/zfs/host/rpool
distant, ssh
Transfert entre data6 (serveur source, IP: 172.16.2.32) et data12 (serveur destination, IP: 172.16.2.34) du volume geoflow.
sur baie1 de data12 (destination)
Création du volume de réception :
zfs create -p -o mountpoint=/data baie1/data
sur data6 (source)
Création du snapshot, envoi via ssh :
zfs snapshot baie1/data/geoflow@transfert
zfs send -vP baie1/data/geoflow@transfert | ssh root@data12 zfs receive -d baie1
# ou
zfs send -vP baie1/data/geoflow@transfert | ssh root@172.16.2.34 zfs receive -d baie1
send -v : verbeux
send -P : Affiche des informations détaillées sur le flux (progression)
distant, mbuffer
Transfert entre data6 (serveur source, IP: 172.16.2.32) et data12 (serveur destination, IP: 172.16.2.34) du volume geoflow, en utilisant mbuffer.
mbuffer est un tampon pour flux réseau.
sur baie1 de data12 (destination)
zfs create -p -o mountpoint=/data baie1/data
mbuffer -4 -v 1 -s 128k -m 4G -I 172.16.2.32:1030 | zfs receive -d baie1
Création du volume d’accueil, et lancement en attente d’un démon mbuffer, avec un tampon RAM de 4 GiB (-m 4G), écoutant la machine source en ipv4 (-I 172.16.2.32:1030).
sur baie1 de data6 (source)
zfs snapshot baie1/data/geoflow@transfert
zfs send baie1/data/geoflow@transfert | mbuffer -4 -v 1 -s 128k -m 4G -O 172.16.2.34:1030
On crée le snapshot, qu’on envoie ensuite au mbuffer local, qui va le transmettre au mbuffer distant (-O 172.16.2.34:1030) sur la machine destination.
Si le transfert a été long (supérieur à 24h, c’est le cas ici), on finira avec un envoi incrémental des derniers snapshots :
sur baie1 de data12 (destination)
mbuffer -4 -v 1 -s 128k -m 4G -I 172.16.2.32:1030 | zfs receive -d baie1
sur baie1 de data6 (source)
zfs snapshot baie1/data/geoflow@final
zfs send -I baie1/data/geoflow@transfert baie1/data/geoflow@final | mbuffer -4 -v 1 -s 128k -m 4G -O 172.16.2.34:1030
send -I : envoi incrémental, comprenant tous les snapshots entre "@transfert" et "@final"
Sauvegarde et restauration depuis un serveur distant
À faire
exemple de sauvegarde et restauration depuis un serveur distant