UFSにはSnapshot機能があることは知っていたが、いつか試そうと思って放っていた。
今日rm *~しようとしてrm *してしまい激しく後悔。
定期的にSnapshotを作成するように設定することにした。
『FreeBSD UFS Snapshot Management Environmentを使って定期的にSnapshotを作成する』 – mteramotoの日記
によるとFreeBSD UFS Snapshot Management Environmentというのがあって、設定したスケジュールに従ってSnapshotをrotateしてくれるらしい。
sysutils/freebsd-snapshotというportsになっているのでこれをインストール。
/etc/crontabに
# /etc/crontab 0 * * * * root /usr/local/sbin/periodic-snapshot hourly 0 0 * * * root /usr/local/sbin/periodic-snapshot daily 0 0 * * 0 root /usr/local/sbin/periodic-snapshot weekly
と記述してperiodic-snapshotを呼び出す時間を指定。
スケジュールは/etc/periodic.confに記述する。
インストール時には作られないので新規に作成。
napshot_enable="YES" snapshot_schedule="/usr,/usr/pub:2:10:0"
のように書く。
/usrとか/usr/pubとかはマウントポイント。
snapshot_scheduleの書式は
<schedule> ::= <entry>* <entry> ::= <fs> (", <fs>)* : <spec> <fs> ::= /^.*$/ <spec> ::= <gen_weekly> : <gen_daily> : <gen_hourly> <gen_weekly> ::= <generation> <gen_daily> ::= <generation> <gen_hourly> ::= <generation> ("@ <hour> (", <hour>)*)? <generation> ::= /^[0-9]+$/ <hour> ::= /^(0?[0-9]|1[0-9]|2[0-3])$/
のようになっていて、週ごと、日ごと、時間ごとに保持するSnapshotの個数を指定する。
はじめは2:2:2とかにしてみたが、毎時のSnapshotの作成に5分ほどかかる。
わりと負荷が高いので今のところ2:10:0としている。
空き容量を気にしながらしばらくは様子見。
参考
『FreeBSD UFS Snapshot Management Environmentを使って定期的にSnapshotを作成する』 – mteramotoの日記
『periodic-snapshot — run periodic UFS/ZFS backup snapshot maintenance task』