先日のエントリー ではディスクが故障した場合の対処法を備忘録として残しましたが、今回は ZFS FreeBSD のフルシステムバックアップとそこからのシステムリストアの方法をメモしておきます。
といっても、次のサイトの手順をそのまま追っただけです ^^;
まず、バックアップ用のドライブを用意します。以下では /dev/da0
のデータを消去して ZFS のファイルシステムを作成し /backup
にマウントしています。
# gpart destroy -F da0 # dd if=/dev/zero of=/dev/da0 bs=1m count=128 # zpool create zbackup /dev/da0 # zfs set mountpoint=/backup zbackup
次に zroot
のファイルシステムすべてのスナップショットを取り、先ほど作成した /backup
に圧縮して (gzip
) 送ります。処理後、スナップショットを破棄しています。
# zfs snapshot -r zroot@backup # zfs send -Rv zroot@backup | gzip > /backup/full-system-backup.zfs.gz # zfs destroy -r zroot@backup
以上でバックアップは完了です。
# ls -l /backup/ total 20076141 -rw-r--r-- 1 root wheel 20543942367 1月 11 23:53 full-system-backup.zfs.gz
問題が生じて、新しいシステムをリストアしなければならない場合、まずは、
の手順の “zfs set checksum=fletcher4 zroot” まで進みます (cf. Dan さんの Blog)。
次に、ZFS バックアップドライブをインポートし、それをマウントしておきます。その上で、ファイルシステムとすべての依存関係をリストアするため ZFS の receive コマンドを利用します。
# zpool import -f zbackup # zfs set mountpoint=/boot/zfs/backup zbackup # zfs mount zbackup # gunzip -c /boot/zfs/backup/full-system-backup.zfs.gz | zfs receive -vdF zroot
ここで、バックアップドライブをアンマウントしておきます。そして、キャッシュファイルを作成できるように オリジナルの root ZFS をマウントします (システムは正しいキャッシュファイルがないとブートしません)。
# zpool export zbackup # zfs set mountpoint=/boot/zfs/zroot zroot # cd /boot/zfs # zpool export zroot && zpool import zroot # cp /boot/zfs/zpool.cache /boot/zfs/zroot/boot/zfs/zpool.cache # zfs unmount -a # zfs set mountpoint=legacy zroot # reboot
これでオリジナルの状態でシステムは再起動します。
バックアップメディアをもう一度マウントしたい場合、以下のように再びインポートしてマウントする必要があります。
# zpool import -f zbackup # zfs set mountpoint=/backup zbackup