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 | *.service | ||||||
| *.target | *.target | ||||||
| *.preset | *.preset | ||||||
|  | *.timer | ||||||
|  | |||||||
| @ -12,7 +12,10 @@ systemdunit_DATA = \ | |||||||
| 	zfs-volume-wait.service \
 | 	zfs-volume-wait.service \
 | ||||||
| 	zfs-import.target \
 | 	zfs-import.target \
 | ||||||
| 	zfs-volumes.target \
 | 	zfs-volumes.target \
 | ||||||
| 	zfs.target | 	zfs.target \
 | ||||||
|  | 	zfs-scrub-monthly@.timer \
 | ||||||
|  | 	zfs-scrub-weekly@.timer \
 | ||||||
|  | 	zfs-scrub@.service | ||||||
| 
 | 
 | ||||||
| SUBSTFILES += $(systemdpreset_DATA) $(systemdunit_DATA) | 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. | scrubbed sequentially at 10.0M/s. | ||||||
| .El | .El | ||||||
| .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 | .Sh SEE ALSO | ||||||
|  | .Xr systemd.timer 5 , | ||||||
| .Xr zpool-iostat 8 , | .Xr zpool-iostat 8 , | ||||||
| .Xr zpool-resilver 8 , | .Xr zpool-resilver 8 , | ||||||
| .Xr zpool-status 8 | .Xr zpool-status 8 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Georgy Yakovlev
						Georgy Yakovlev