Add systemd-unit for importing specific pools
This patch addresses the problems some users experience when some zpools are created/imported with cachefile (which then causes other pools not to get imported during boot) - when our tooling creates a pool we explictly instantiate the service with the pool's name, ensuring that it will get imported by scanning. Suggested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
		
							parent
							
								
									38e2c8078f
								
							
						
					
					
						commit
						e3da0bd88a
					
				
							
								
								
									
										75
									
								
								debian/patches/0008-Add-systemd-unit-for-importing-specific-pools.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								debian/patches/0008-Add-systemd-unit-for-importing-specific-pools.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | |||||||
|  | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Stoiko Ivanov <s.ivanov@proxmox.com> | ||||||
|  | Date: Tue, 15 Sep 2020 19:07:24 +0200 | ||||||
|  | Subject: [PATCH] Add systemd-unit for importing specific pools | ||||||
|  | 
 | ||||||
|  | The unit can be instantiated with a specific poolname, which will get imported | ||||||
|  | by scanning /dev/disk/by-id, irrespective of the existence and content of | ||||||
|  | /etc/zfs/zpool.cache. | ||||||
|  | 
 | ||||||
|  | the instance name is used unescaped (see systemd.unit(5)), since zpool names | ||||||
|  | can contain characters which will be escaped by systemd. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com> | ||||||
|  | ---
 | ||||||
|  |  etc/systemd/system/50-zfs.preset.in       |  1 + | ||||||
|  |  etc/systemd/system/Makefile.am            |  2 ++ | ||||||
|  |  etc/systemd/system/zfs-import@.service.in | 17 +++++++++++++++++ | ||||||
|  |  3 files changed, 20 insertions(+) | ||||||
|  |  create mode 100644 etc/systemd/system/zfs-import@.service.in | ||||||
|  | 
 | ||||||
|  | diff --git a/etc/systemd/system/50-zfs.preset.in b/etc/systemd/system/50-zfs.preset.in
 | ||||||
|  | index e4056a92c..030611419 100644
 | ||||||
|  | --- a/etc/systemd/system/50-zfs.preset.in
 | ||||||
|  | +++ b/etc/systemd/system/50-zfs.preset.in
 | ||||||
|  | @@ -1,6 +1,7 @@
 | ||||||
|  |  # ZFS is enabled by default | ||||||
|  |  enable zfs-import-cache.service | ||||||
|  |  disable zfs-import-scan.service | ||||||
|  | +enable zfs-import@.service
 | ||||||
|  |  enable zfs-import.target | ||||||
|  |  enable zfs-mount.service | ||||||
|  |  enable zfs-share.service | ||||||
|  | diff --git a/etc/systemd/system/Makefile.am b/etc/systemd/system/Makefile.am
 | ||||||
|  | index 4e14467a0..ae72102af 100644
 | ||||||
|  | --- a/etc/systemd/system/Makefile.am
 | ||||||
|  | +++ b/etc/systemd/system/Makefile.am
 | ||||||
|  | @@ -5,6 +5,7 @@ systemdunit_DATA = \
 | ||||||
|  |  	zfs-zed.service \ | ||||||
|  |  	zfs-import-cache.service \ | ||||||
|  |  	zfs-import-scan.service \ | ||||||
|  | +	zfs-import@.service \
 | ||||||
|  |  	zfs-mount.service \ | ||||||
|  |  	zfs-share.service \ | ||||||
|  |  	zfs-volume-wait.service \ | ||||||
|  | @@ -16,6 +17,7 @@ EXTRA_DIST = \
 | ||||||
|  |  	$(top_srcdir)/etc/systemd/system/zfs-zed.service.in \ | ||||||
|  |  	$(top_srcdir)/etc/systemd/system/zfs-import-cache.service.in \ | ||||||
|  |  	$(top_srcdir)/etc/systemd/system/zfs-import-scan.service.in \ | ||||||
|  | +	$(top_srcdir)/etc/systemd/system/zfs-import@.service.in \
 | ||||||
|  |  	$(top_srcdir)/etc/systemd/system/zfs-mount.service.in \ | ||||||
|  |  	$(top_srcdir)/etc/systemd/system/zfs-share.service.in \ | ||||||
|  |  	$(top_srcdir)/etc/systemd/system/zfs-import.target.in \ | ||||||
|  | diff --git a/etc/systemd/system/zfs-import@.service.in b/etc/systemd/system/zfs-import@.service.in
 | ||||||
|  | new file mode 100644 | ||||||
|  | index 000000000..2db9fdaab
 | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/etc/systemd/system/zfs-import@.service.in
 | ||||||
|  | @@ -0,0 +1,17 @@
 | ||||||
|  | +[Unit]
 | ||||||
|  | +Description=Import ZFS pool %i
 | ||||||
|  | +Documentation=man:zpool(8)
 | ||||||
|  | +DefaultDependencies=no
 | ||||||
|  | +Requires=systemd-udev-settle.service
 | ||||||
|  | +After=systemd-udev-settle.service
 | ||||||
|  | +After=cryptsetup.target
 | ||||||
|  | +After=multipathd.target
 | ||||||
|  | +Before=zfs-import.target
 | ||||||
|  | +
 | ||||||
|  | +[Service]
 | ||||||
|  | +Type=oneshot
 | ||||||
|  | +RemainAfterExit=yes
 | ||||||
|  | +ExecStart=@sbindir@/zpool import -N -d /dev/disk/by-id -o cachefile=none %I
 | ||||||
|  | +
 | ||||||
|  | +[Install]
 | ||||||
|  | +WantedBy=zfs-import.target
 | ||||||
							
								
								
									
										1
									
								
								debian/patches/series
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/patches/series
									
									
									
									
										vendored
									
									
								
							| @ -5,3 +5,4 @@ | |||||||
| 0005-Enable-zed-emails.patch | 0005-Enable-zed-emails.patch | ||||||
| 0006-dont-symlink-zed-scripts.patch | 0006-dont-symlink-zed-scripts.patch | ||||||
| 0007-Use-installed-python3.patch | 0007-Use-installed-python3.patch | ||||||
|  | 0008-Add-systemd-unit-for-importing-specific-pools.patch | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								debian/zfsutils-linux.install
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/zfsutils-linux.install
									
									
									
									
										vendored
									
									
								
							| @ -5,6 +5,7 @@ etc/zfs/zpool.d/ | |||||||
| lib/systemd/system-preset/ | lib/systemd/system-preset/ | ||||||
| lib/systemd/system/zfs-import-cache.service | lib/systemd/system/zfs-import-cache.service | ||||||
| lib/systemd/system/zfs-import-scan.service | lib/systemd/system/zfs-import-scan.service | ||||||
|  | lib/systemd/system/zfs-import@.service | ||||||
| lib/systemd/system/zfs-import.target | lib/systemd/system/zfs-import.target | ||||||
| lib/systemd/system/zfs-import.service | lib/systemd/system/zfs-import.service | ||||||
| lib/systemd/system/zfs-mount.service | lib/systemd/system/zfs-mount.service | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Stoiko Ivanov
						Stoiko Ivanov