tie*_*nou 6 zfs systemd ubuntu-16.04
我想在我的 ZFS 服务器上自动进行 zpool 清理。我已将以下 systemd 服务编写为/etc/systemd/system/zfs-scrub.service)
[Unit]
Description=Scrub ZFS tank pool
[Service]
Type=simple
ExecStart=/bin/sh -c 'zpool scrub `zpool list -H -o name`'
RemainAfterExit=yes
ExecStop=/bin/sh -c 'zpool scrub -s `zpool list -H -o name`'
Run Code Online (Sandbox Code Playgroud)
以及计时器(如/etc/system.d/system/zfs-scrub.timer):
[Unit]
Description=Run zpool scrub every 1st Saturday
[Timer]
OnCalendar=Sat *-*-* 22:00:00
Run Code Online (Sandbox Code Playgroud)
几周前开始使用后,我检查了它是否正常运行。看来systemd仍然认为服务正在运行,所以计时器没有运行。
似乎没有ExecStatus,所以 systemd 不知道服务已完成。
OnCalendar一行意思是“每月一次,仅在周末”?为了回答你的第二个问题,以下内容可以理解为在午夜过后一分钟运行每个月的前 7 天,但前提是当天也是星期日。因此,它应该在每个月的第一个星期日运行。
OnCalendar=Sun *-*-01..07 00:01:00
Run Code Online (Sandbox Code Playgroud)
关于您的第一个问题,查看期刊的内容会很有帮助,而不仅仅是通过 zpool status 命令确认它已运行。我注意到您的服务单元不需要 zfs.target。另外,我会将服务类型设置为“一次性”而不是“简单”。
编辑:这应该适合您,尽管您需要为每个池启动/启用:
对您的 zfs-scrub@.service 文件尝试以下操作:
[Unit]
Description=Scrub ZFS tank pool
[Service]
Type=oneshot
ExecStart=/bin/zpool scrub %i
Run Code Online (Sandbox Code Playgroud)
然后这对于您的 zfs-scrub@.timer 文件:
[Unit]
Description=Run zpool scrub every 1st Saturday
[Timer]
OnCalendar=Sun *-*-01..07 00:01:00
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过计时器启动服务:
systemctl start zfs-scrub@[pool name].timer
systemctl enable zfs-scrub@[pool name].timer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |