systemd zfs-import.target and documentation
zfs-import-{cache,scan}.service must complete before any mounting of filesystems can occur. To simplify this dependency, create a target that is reached After (in the systemd sense) the pool is imported. Additionally, recommend that legacy zfs mounts use the option x-systemd.requires=zfs-import.target to codify this requirement. Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov> Signed-off-by: Antonio Russo <antonio.e.russo@gmail.com> Closes #6764
This commit is contained in:
parent
246e515cf8
commit
1c4f5e7d92
|
@ -7,6 +7,7 @@ systemdunit_DATA = \
|
||||||
zfs-import-scan.service \
|
zfs-import-scan.service \
|
||||||
zfs-mount.service \
|
zfs-mount.service \
|
||||||
zfs-share.service \
|
zfs-share.service \
|
||||||
|
zfs-import.target \
|
||||||
zfs.target
|
zfs.target
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
|
@ -15,6 +16,7 @@ EXTRA_DIST = \
|
||||||
$(top_srcdir)/etc/systemd/system/zfs-import-scan.service.in \
|
$(top_srcdir)/etc/systemd/system/zfs-import-scan.service.in \
|
||||||
$(top_srcdir)/etc/systemd/system/zfs-mount.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-share.service.in \
|
||||||
|
$(top_srcdir)/etc/systemd/system/zfs-import.target.in \
|
||||||
$(top_srcdir)/etc/systemd/system/zfs.target.in \
|
$(top_srcdir)/etc/systemd/system/zfs.target.in \
|
||||||
$(top_srcdir)/etc/systemd/system/50-zfs.preset.in
|
$(top_srcdir)/etc/systemd/system/50-zfs.preset.in
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ After=systemd-udev-settle.service
|
||||||
After=cryptsetup.target
|
After=cryptsetup.target
|
||||||
After=systemd-remount-fs.service
|
After=systemd-remount-fs.service
|
||||||
Before=dracut-mount.service
|
Before=dracut-mount.service
|
||||||
|
Before=zfs-import.target
|
||||||
ConditionPathExists=@sysconfdir@/zfs/zpool.cache
|
ConditionPathExists=@sysconfdir@/zfs/zpool.cache
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
@ -15,5 +16,4 @@ ExecStartPre=/sbin/modprobe zfs
|
||||||
ExecStart=@sbindir@/zpool import -c @sysconfdir@/zfs/zpool.cache -aN
|
ExecStart=@sbindir@/zpool import -c @sysconfdir@/zfs/zpool.cache -aN
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=zfs-mount.service
|
WantedBy=zfs-import.target
|
||||||
WantedBy=zfs.target
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ Requires=systemd-udev-settle.service
|
||||||
After=systemd-udev-settle.service
|
After=systemd-udev-settle.service
|
||||||
After=cryptsetup.target
|
After=cryptsetup.target
|
||||||
Before=dracut-mount.service
|
Before=dracut-mount.service
|
||||||
|
Before=zfs-import.target
|
||||||
ConditionPathExists=!@sysconfdir@/zfs/zpool.cache
|
ConditionPathExists=!@sysconfdir@/zfs/zpool.cache
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
@ -14,5 +15,4 @@ ExecStartPre=/sbin/modprobe zfs
|
||||||
ExecStart=@sbindir@/zpool import -aN -o cachefile=none
|
ExecStart=@sbindir@/zpool import -aN -o cachefile=none
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=zfs-mount.service
|
WantedBy=zfs-import.target
|
||||||
WantedBy=zfs.target
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
[Unit]
|
||||||
|
Description=ZFS pool import target
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=zfs-mount.service
|
||||||
|
WantedBy=zfs.target
|
|
@ -2,8 +2,7 @@
|
||||||
Description=Mount ZFS filesystems
|
Description=Mount ZFS filesystems
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
After=systemd-udev-settle.service
|
After=systemd-udev-settle.service
|
||||||
After=zfs-import-cache.service
|
After=zfs-import.target
|
||||||
After=zfs-import-scan.service
|
|
||||||
After=systemd-remount-fs.service
|
After=systemd-remount-fs.service
|
||||||
Before=local-fs.target
|
Before=local-fs.target
|
||||||
|
|
||||||
|
|
|
@ -440,7 +440,16 @@ If needed, ZFS file systems can also be managed with traditional tools
|
||||||
If a file system's mount point is set to
|
If a file system's mount point is set to
|
||||||
.Sy legacy ,
|
.Sy legacy ,
|
||||||
ZFS makes no attempt to manage the file system, and the administrator is
|
ZFS makes no attempt to manage the file system, and the administrator is
|
||||||
responsible for mounting and unmounting the file system.
|
responsible for mounting and unmounting the file system. Because pools must
|
||||||
|
be imported before a legacy mount can succeed, administrators should ensure
|
||||||
|
that legacy mounts are only attempted after the zpool import process
|
||||||
|
finishes at boot time. For example, on machines using systemd, the mount
|
||||||
|
option
|
||||||
|
.Pp
|
||||||
|
.Nm x-systemd.requires=zfs-import.target
|
||||||
|
.Pp
|
||||||
|
will ensure that the zfs-import completes before systemd attempts mounting
|
||||||
|
the filesystem. See systemd.mount(5) for details.
|
||||||
.Ss Deduplication
|
.Ss Deduplication
|
||||||
Deduplication is the process for removing redundant data at the block level,
|
Deduplication is the process for removing redundant data at the block level,
|
||||||
reducing the total amount of data stored. If a file system has the
|
reducing the total amount of data stored. If a file system has the
|
||||||
|
|
Loading…
Reference in New Issue