Man page - zfs-mount-generator(8)
Manual
ZFS-MOUNT-GENERATOR (8) System Manager’s Manual ZFS-MOUNT-GENERATOR (8)
NAME
zfs-mount-generator — generate systemd mount units for ZFS filesystems
SYNOPSIS
/usr/lib/systemd/system-generators/zfs-mount-generator
DESCRIPTION
zfs-mount-generator is a systemd.generator (7) that generates native systemd.mount (5) units for configured ZFS datasets.
Properties
mountpoint =
Skipped if legacy or none .
canmount =
Skipped if off . Skipped if only noauto datasets exist for a given mountpoint and there’s more than one. Datasets with yes take precedence over ones with noauto for the same mountpoint. Sets logical noauto flag if noauto . Encryption roots always generate zfs-load-key@ root .service , even if off .
atime =, relatime =, devices =, exec =, readonly =, setuid =, nbmand =
Used to generate mount options equivalent to zfs mount .
encroot =, keylocation =
If the dataset is an encryption root, its mount unit will bind to zfs-load-key@ root .service , with additional dependencies as follows:
keylocation = prompt
None, uses systemd-ask-password (1)
keylocation = https:// URL (et al.)
Wants =, After =: network-online.target
keylocation = file:// < path >
RequiresMountsFor = path
The service also uses the same Wants =, After =, Requires =, and RequiresMountsFor =, as the mount unit.
org.openzfs.systemd:requires
=
path
[
path
]…
Sets Requires = for the mount- and key-loading unit.
org.openzfs.systemd:requires-mounts-for
=
path
[
path
]…
Sets RequiresMountsFor = for the mount- and key-loading unit.
org.openzfs.systemd:before
=
unit
[
unit
]…
Sets Before = for the mount unit.
org.openzfs.systemd:after
=
unit
[
unit
]…
Sets After = for the mount unit.
org.openzfs.systemd:wanted-by
=
unit
[
unit
]…
Sets logical noauto flag (see below). If not none , sets WantedBy = for the mount unit.
org.openzfs.systemd:required-by
=
unit
[
unit
]…
Sets logical noauto flag (see below). If not none , sets RequiredBy = for the mount unit.
org.openzfs.systemd:nofail =(unset)| on | off
Waxes or wanes strength of default reverse dependencies of the mount unit, see below.
org.openzfs.systemd:ignore = on | off
Skip if on . Defaults to off .
Unit Ordering And Dependencies
Additionally, unless the pool the dataset resides on is imported at generation time, both units gain Wants = zfs-import.target and After = zfs-import.target .
Additionally, unless the logical noauto flag is set, the mount unit gains a reverse-dependency for local-fs.target of strength
(unset)
WantedBy = + Before =
on
WantedBy =
off
RequiredBy = + Before =
Cache File
Because ZFS pools may not be available very early in the boot process, information on ZFS mountpoints must be stored separately. The output of
zfs list -Ho name ,⟨ every property above in order⟩
for datasets that should be mounted by systemd should be kept at /etc/zfs/zfs-list.cache/poolname , and, if writeable, will be kept synchronized for the entire pool by the history_event-zfs-list-cacher.sh ZEDLET, if enabled (see zed (8)).
ENVIRONMENT
If the ZFS_DEBUG environment variable is nonzero (or unset and /proc/cmdline contains " debug "), print summary accounting information at the end.
EXAMPLES
To begin, enable tracking for the pool:
# touch /etc/zfs/zfs-list.cache/poolname
Then enable the tracking ZEDLET:
# ln -s
/usr/lib/zfs-linux/zed.d/history_event-zfs-list-cacher.sh
/etc/zfs/zed.d
# systemctl enable
zfs-zed.service
# systemctl restart
zfs-zed.service
If no history event is in the queue, inject one to ensure the ZEDLET runs to refresh the cache file by setting a monitored property somewhere on the pool:
# zfs set
relatime
=
off
poolname/dset
# zfs inherit relatime
poolname/dset
To test the generator output:
$ mkdir
/tmp/zfs-mount-generator
$ /usr/lib/systemd/system-generators/zfs-mount-generator
/tmp/zfs-mount-generator
If the generated units are satisfactory, instruct systemd to re-run all generators:
# systemctl daemon-reload
SEE ALSO
systemd.mount (5), systemd.target (5), zfs (5), systemd.generator (7), systemd.special (7), zed (8), zpool-events (8) OpenZFS May 31, 2021 ZFS-MOUNT-GENERATOR (8)