mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	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
							
								
									d76917b2ec
								
							
						
					
					
						commit
						f471a0a0a7
					
				
							
								
								
									
										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
	 Georgy Yakovlev
						Georgy Yakovlev