FreeBSD - メンテナンス・トラブルシュート - zfs - 実際どうするか

クラウディア 
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
 てな感じです。  まだ、動かしてないので、保証できませんぜ。