- 1. 概要
- 2. 状況
- 3. 現時点での結論
1. 概要
前ページまで、これでも比較的、一般論をメモしたつもりであります。
でまぁ、このページは、実際にわたしが使用している、「zfs」のマシンのバックアップをどうとるかなぁという話です。
2. 状況
シングルディスクで、おまかせでフォーマットした状態で、下記のようになっています。
$ zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 314G 329G 96K /zroot
zroot/ROOT 303G 329G 96K none
zroot/ROOT/14.0-RELEASE_2024-06-22_095535 8K 329G 302G /
zroot/ROOT/default 303G 329G 215G /
zroot/home 145M 329G 145M /home
zroot/tmp 497M 329G 497M /tmp
zroot/usr 10.3G 329G 96K /usr
zroot/usr/ports 9.49G 329G 9.49G /usr/ports
zroot/usr/src 816M 329G 816M /usr/src
zroot/var 76.1M 329G 96K /var
zroot/var/audit 96K 329G 96K /var/audit
zroot/var/crash 96K 329G 96K /var/crash
zroot/var/log 75.5M 329G 75.5M /var/log
zroot/var/mail 160K 329G 160K /var/mail
zroot/var/tmp 144K 329G 144K /var/tmp
当初、全体のバックアップをとろうとしたのですが、時間がかかりすぎるのです。
結局ほしいのは。
/home
/usr
/var
なんですよね。
あとは、どこかから持ってきたり、手動でなんとかできると思っております。
スナップショットをとっては、マウントして。
/home
は。
zroot/home 145M 329G 145M /home
にはいっていることがわかりました。
しかし。
/usr
/var
のわたしが欲しいところ(/usr/local 以下、/var/qmail、/var/db 以下)は。
zroot/usr 10.3G 329G 96K /usr
zroot/var 76.1M 329G 96K /var
には、はいっていなくて。
zroot/ROOT/default 303G 329G 215G /
にはいっているようです。
3. 現時点での結論
本来ならば、すべてのプールのスナップショットをとって、「zfs send」で、どこかへ出力するのが、完全バックアップの方法なのでしょうが・・・。
時間や、ディスク容量等の現実的なリソースのことを考えますと。
2024年7月5日時点の結論として。
「/home」「/usr/local」「/var/db」「/var/nsd」「/var/qmail」を含む、スナップショットを作成します。
zfs snapshot zroot/ROOT/default@root_YYYYMMDD
zfs snapshot zroot/home@home_YYYYMMDD
これをマウントして、欲しいディレクトリ以下を「tar」で圧縮しつつ、固める。
「/usr/local」を例にとるならば。
mount -t zfs zroot/ROOT/default@root_YYYYMMDD /mnt
tar -cyf /tmp/usr_local_YYYYMMDD.tar.bz2 /mnt/usr/local
umount /mnt
できあがった、「/tmp/usr_local_YYYYMMDD.tar.bz2」を、外付けのディスクなり、外部のマシンなりにコピーすることでバックアップとします。
便利だなと思うのは、スナップショットは、作成した時点のまま固まっていますので、システム稼働中であっても、誰かがスナップショット自体を操作しない限り、固定されているということです。
この一連の処理を、スクリプト化すると。
#!/bin/sh
export today=`date "+%Y%m%d"`
zfs snapshot zroot/ROOT/default@root_$today
zfs snapshot zroot/home@home_$today
mount -t zfs zroot/ROOT/default@root_$today /mnt
tar -cyf /tmp/usr_local_$today.tar.bz2 /mnt/usr/local
tar -cyf /tmp/var_db_$today.tar.bz2 /mnt/var/db
tar -cyf /tmp/var_qmail_$today.tar.bz2 /mnt/var/qmail
tar -cyf /tmp/var_nsd_$today.tar.bz2 /mnt/var/nsd
umount /mnt
mount -t zfs zroot/home@home_$today /mnt
tar -cyf /tmp/home_$today.tar.bz2
umount /mnt
てな感じです。
まだ、動かしてないので、保証できませんぜ。
|
|