systemd: add weekly and monthly scrub timers
Timers can be enabled as follows: systemctl enable zfs-scrub-weekly@rpool.timer --now systemctl enable zfs-scrub-monthly@datapool.timer --now Each timer will pull in zfs-scrub@${poolname}.service, which is not schedule-specific. Added PERIODIC SCRUB section to zpool-scrub.8. Reviewed-by: Richard Laager <rlaager@wiktel.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org> Closes #12193
This commit is contained in:
parent
f291fa658e
commit
2300621dc7
1
etc/systemd/system/.gitignore
vendored
1
etc/systemd/system/.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
*.service
|
||||
*.target
|
||||
*.preset
|
||||
*.timer
|
||||
|
@ -12,7 +12,10 @@ systemdunit_DATA = \
|
||||
zfs-volume-wait.service \
|
||||
zfs-import.target \
|
||||
zfs-volumes.target \
|
||||
zfs.target
|
||||
zfs.target \
|
||||
zfs-scrub-monthly@.timer \
|
||||
zfs-scrub-weekly@.timer \
|
||||
zfs-scrub@.service
|
||||
|
||||
SUBSTFILES += $(systemdpreset_DATA) $(systemdunit_DATA)
|
||||
|
||||
|
12
etc/systemd/system/zfs-scrub-monthly@.timer.in
Normal file
12
etc/systemd/system/zfs-scrub-monthly@.timer.in
Normal file
@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Monthly zpool scrub timer for %i
|
||||
Documentation=man:zpool-scrub(8)
|
||||
|
||||
[Timer]
|
||||
OnCalendar=monthly
|
||||
Persistent=true
|
||||
RandomizedDelaySec=1h
|
||||
Unit=zfs-scrub@%i.service
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
12
etc/systemd/system/zfs-scrub-weekly@.timer.in
Normal file
12
etc/systemd/system/zfs-scrub-weekly@.timer.in
Normal file
@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Weekly zpool scrub timer for %i
|
||||
Documentation=man:zpool-scrub(8)
|
||||
|
||||
[Timer]
|
||||
OnCalendar=weekly
|
||||
Persistent=true
|
||||
RandomizedDelaySec=1h
|
||||
Unit=zfs-scrub@%i.service
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
14
etc/systemd/system/zfs-scrub@.service.in
Normal file
14
etc/systemd/system/zfs-scrub@.service.in
Normal file
@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=zpool scrub on %i
|
||||
Documentation=man:zpool-scrub(8)
|
||||
Requires=zfs.target
|
||||
After=zfs.target
|
||||
ConditionACPower=true
|
||||
ConditionPathIsDirectory=/sys/module/zfs
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/sh -c '\
|
||||
if @sbindir@/zpool status %i | grep "scrub in progress"; then\
|
||||
exec @sbindir@/zpool wait -t scrub %i;\
|
||||
else exec @sbindir@/zpool scrub -w %i; fi'
|
||||
ExecStop=-/bin/sh -c '@sbindir@/zpool scrub -p %i 2>/dev/null || true'
|
@ -116,8 +116,29 @@ scanned at 100M/s, and 68.4M of that file data has been
|
||||
scrubbed sequentially at 10.0M/s.
|
||||
.El
|
||||
.El
|
||||
.Sh PERIODIC SCRUB
|
||||
On machines using systemd, scrub timers can be enabled on per-pool basis.
|
||||
.Nm weekly
|
||||
and
|
||||
.Nm monthly
|
||||
timer units are provided.
|
||||
.Bl -tag -width Ds
|
||||
.It Xo
|
||||
.Xc
|
||||
.Nm systemctl
|
||||
.Cm enable
|
||||
.Cm zfs-scrub-\fIweekly\fB@\fIrpool\fB.timer
|
||||
.Cm --now
|
||||
.It Xo
|
||||
.Xc
|
||||
.Nm systemctl
|
||||
.Cm enable
|
||||
.Cm zfs-scrub-\fImonthly\fB@\fIotherpool\fB.timer
|
||||
.Cm --now
|
||||
.El
|
||||
.
|
||||
.Sh SEE ALSO
|
||||
.Xr systemd.timer 5 ,
|
||||
.Xr zpool-iostat 8 ,
|
||||
.Xr zpool-resilver 8 ,
|
||||
.Xr zpool-status 8
|
||||
|
Loading…
Reference in New Issue
Block a user