Cloner un systeme zfs en live

Cloner un serveur live ZFS

Booter le systeme cible sur un live-cd. Le clavier est qwerty, on le modifie en azerty.

# kbdmap

Preparation du serveur cible.

Configurer le ou les disques pour recevoir le systeme à cloner.

cible#   kldload zfs.ko
cible#    foreach n ( 0 1 2 )
cible#    gpart destroy -F ada${n}
cible#    gpart create -s gpt ada${n}
cible#    gpart add -a 4k -s 512k -t freebsd-boot -l boot${n} ada${n}
cible#    gpart add -a 4k -s 2g -t freebsd-swap -l swap${n} ada${n}
cible#    gpart add -a 4k -t freebsd-zfs -l disk${n} ada${n}
cible#    gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada${n}
cible#    gnop create -S 4096 /dev/gpt/disk${n}
cible#  end
cible#  zpool create -f -o altroot=/mnt -O canmount=off -m none zroot raidz /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2

Configurer et activer ssh sur le serveur cible

cible#  ifconfig em0 inet 1.2.3.4 netmask ... # Si on utilise une adresse statique
cible#  mkdir /tmp/etc
cible#  mount_unionfs /tmp/etc /etc
cible#  vi /etc/ssh/sshd_config     # allow root login
cible#  passwd root                 # Set a root password
cible#  service sshd onestart       # Activer le deamon ssh 

Sur le serveur à cloner. Faire un snapshot récursif.

clone# zfs snapshot -r zroot@clone

Envoyer la copie du snapshot à destination du serveur cible:

clone# zfs send -R zroot@clone | ssh root@cible zfs recv -Fdv zroot
receiving full stream of zroot/var/crash@clone into zroot/var/crash@clone
received 47.9KB stream in 1 seconds (47.9KB/sec)
receiving full stream of zroot/var/tmp@clone into zroot/var/tmp@clone
received 153KB stream in 1 seconds (153KB/sec)
receiving full stream of zroot/ROOT@clone into zroot/ROOT@clone
received 46.3KB stream in 1 seconds (46.3KB/sec)

Une fois que la copie est terminéé. Comparer la source et la destination. Finaliser la configuration en effectuant les mofifcations nécessaires sur le serveur cible.

clone#  zfs list
cible#  zfs list
cible#  zpool set bootfs=zroot/ROOT/default zroot
cible#  zpool export zroot
cible#  zpool import zroot
cible#  reboot

Conclusion

Le snapshot peut être détruit sur les 2 serveurs :

cible#  zfs destroy -R zroot@clone
clone#  zfs destroy -R zroot@clone