トップ 最新

かってきままな日々

2019-09-30 (Mo) [長年日記]

_ zfsnap を設定した

zfs の snapshot。

http://april.fool.jp/blogs/2018/12/02/zfs-zfsnap2%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E6%97%A5%E3%80%85%E3%81%AEzfs-snapshot/

↑BSD系にはこんなツールがあるらしい。

archlinux にもあるかな、と思ったら、AUR にあったので設定してみた。

yay -S zfsnap

設定例は特に含まれてなかったので、適当に systemd の timer を使って設定した。

/etc/systemd/system/zfsnap@.service:

[Unit]
Description=ZFS Snapshot

[Service]
Type=oneshot
ExecStart=/usr/bin/zfsnap snapshot -a %i zroot/opt zroot/home zroot/usr zroot/root

/etc/systemd/system/zfsnap-daily.timer:

[Unit]
Description=ZFS Daily Snapshot

[Timer]
OnCalendar=daily
Persistent=true
Unit=zfsnap@3d.service

[Install]
WantedBy=timers.target

/etc/systemd/system/zfsnap-weekly.timer:

[Unit]
Description=ZFS Weekly Snapshot

[Timer]
OnCalendar=weekly
Persistent=true
Unit=zfsnap@2w.service

[Install]
WantedBy=timers.target

/etc/systemd/system/zfsnap-monthly.timer:

[Unit]
Description=ZFS Monthly Snapshot

[Timer]
OnCalendar=monthly
Persistent=true
Unit=zfsnap@2m.service

[Install]
WantedBy=timers.target

と適当に unit file を作って、

sudo systemctl enable zfsnap-daily.timer
sudo systemctl start zfsnap-daily.timer
sudo systemctl enable zfsnap-weekly.timer
sudo systemctl start zfsnap-weekly.timer
sudo systemctl enable zfsnap-monthly.timer
sudo systemctl start zfsnap-monthly.timer

こんなもんだったかな。

sudo systemctl list-timers --all

で timer の確認。

これでひとまず様子見。たぶん、この中には古い snapshot の削除は含まれてない。

ちなみに構造としては、/usr/bin/zfsnap が subcommand を見て /usr/share/zfsnap/commands/ から同名の script を読み込んで、 処理はそっちに任せる感じ。 destroy.sh ってのがあるので、古い snapshot の削除はこれでやるのだろうと思ってる。

あー、hourly も対応してるな。3時間分くらい取っておこうか。

[Unit]
Description=ZFS Hourly Snapshot

[Timer]
OnCalendar=hourly
Persistent=true
Unit=zfsnap@3h.service

[Install]
WantedBy=timers.target

よし削除も設定した。

/etc/systemd/system/zfsnap-remove.service:

[Unit]
Description=ZFS Snapshot Removal

[Service]
Type=oneshot
ExecStart=/usr/bin/zfsnap destroy zroot/opt zroot/home zroot/usr zroot/root

/etc/systemd/system/zfsnap-remove.timer:

[Unit]
Description=Periodical ZFS Snapshot Removal

[Timer]
OnCalendar=hourly
Persistent=true

[Install]
WantedBy=timers.target

同様に enable と start。