zfsnap2

[zfs] zfsnap2を使った日々のzfs snapshot(取得編) | Nobwak's Lair
[zfs] zfsnap2を使った日々のzfs snapshot(削除編) | Nobwak's Lair

インストール

# pkg install zfsnap2
※ 2.0.0.b3_3 以降は
/usr/local/etc/periodic/daily/500.daily_zfsnap.sh
/usr/local/etc/periodic/daily/500.daily_zfsnap_delete.sh
の作成は不要
/usr/local/etc/periodic/daily/402.zfsnap がインストールされる
スナップショット作成+削除のスクリプトで
「付属のスクリプトではdestroyするfsの指定がないので補う。」も修正されている。

https://www.freshports.org/sysutils/zfsnap2

〜 以下 2.0.0.b3_3 以降は不要 〜

/usr/local/share/zfsnap/periodic/xPERIODICx_zfsnap_delete.sh を修正

付属のスクリプトではdestroyするfsの指定がないので補う。
[zfs] zfsnap2を使った日々のzfs snapshot(削除編) | Nobwak's Lair

# curl -O https://raw.githubusercontent.com/kurita0/zfsnap-v2.0.0-beta3-patch/master/patch-xPERIODICx_zfsnap_delete.sh
# patch /usr/local/share/zfsnap/periodic/xPERIODICx_zfsnap_delete.sh < patch-xPERIODICx_zfsnap_delete.sh 

dailyのスナップショット作成、削除スクリプトを作成

# sed -e 's|xPERIODICx|daily|g' -e 's|xPREFIXx|/usr/local/sbin|g' /usr/local/share/zfsnap/periodic/xPERIODICx_zfsnap.sh > /usr/local/etc/periodic/daily/500.daily_zfsnap.sh
chmod +x /usr/local/etc/periodic/daily/500.daily_zfsnap.sh 

# sed -e 's|xPERIODICx|daily|g' -e 's|xPREFIXx|/usr/local/sbin|g' /usr/local/share/zfsnap/periodic/xPERIODICx_zfsnap_delete.sh > /usr/local/etc/periodic/daily/500.daily_zfsnap_delete.sh
chmod +x /usr/local/etc/periodic/daily/500.daily_zfsnap_delete.sh

datatank/home のスナップショットをdailyで取得、2週間分残す

取得

# vi /etc/periodic.conf 
daily_zfsnap_enable="YES"
daily_zfsnap_flags="-n -s -S -z"
daily_zfsnap_fs="datatank/home"
daily_zfsnap_ttl="2w"
daily_zfsnap_verbose="YES"

-n (Dry-run) で確認
# /usr/local/etc/periodic/daily/500.daily_zfsnap.sh
/sbin/zfs snapshot  datatank/home@daily-2020-04-03_16.05.00--2w

-n を外す
# vi /etc/periodic.conf 
daily_zfsnap_flags="-s -S -z"

実行確認
# /usr/local/etc/periodic/daily/500.daily_zfsnap.sh
/sbin/zfs snapshot  datatank/home@daily-2020-04-03_16.07.00--2w ... DONE

スナップショット確認
# zfs list -t snapshot
NAME                                          USED  AVAIL  REFER  MOUNTPOINT
datatank/home@daily-2020-04-03_16.07.00--2w  7.11M      -  31.0G  -
-s  : resilver中は作業しない
-S : scrub中は作業しない
-z : 日付シリアルの秒切り捨て(18:06:15を18:06:00にする)

http://april.fool.jp/blogs/2018/12/01/zfszpool-%E3%82%89%E3%81%8F%E3%82%89%E3%81%8F%E3%82%B9%E3%83%8A%E3%83%83%E3%83%97%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88zfsnap2/

削除

# vi /etc/periodic.conf 
daily_zfsnap_delete_enable="YES"
daily_zfsnap_delete_flags="-n -s -S"
daily_zfsnap_delete_fs="datatank/home"
daily_zfsnap_delete_verbose="YES"

-n (Dry-run) で確認
# /usr/local/etc/periodic/daily/500.daily_zfsnap_delete.sh
結果なし

スナップショット名が削除対象になるようにリネーム
4/19 → 3/20
# zfs rename datatank/home@daily-2020-04-19_16.07.00--2w datatank/home@daily-2020-03-20_16.07.00--2w

-n (Dry-run) で確認
# /usr/local/etc/periodic/daily/500.daily_zfsnap_delete.sh
/sbin/zfs destroy datatank/home@daily-2020-03-20_16.07.00--2w

-n を外す
# vi /etc/periodic.conf 
daily_zfsnap_delete_flags="-s -S"

# /usr/local/etc/periodic/daily/500.daily_zfsnap_delete.sh
/sbin/zfs destroy datatank/home@daily-2020-03-20_16.07.00--2w ... DONE

スナップショット確認
# zfs list -t snapshot
NAME                                          USED  AVAIL  REFER  MOUNTPOINT

daily_zfsnap_recursive_fs を使うと -r 相当、削除は daily_zfsnap_delete_recursive_fs を使用する