Die grundlegenden und einführenden Informationen zu Systemd enthält
die Handbuchseite Systemd-Start
Die alle Unit-Dateien betreffenden Sektionen [Unit] und
[Install] behandelt unsere Handbuchseite Systemd
Unit-Datei
In der vorliegenden Handbuchseite erklären wir die Funktion der
systemd-Units mount und automount. Mit
ihnen verwaltet systemd Einhängepunkte für Laufwerke und deren
Partitionen, die sowohl lokal als auch über das Netzwerk erreichbar sein
können.
Die mount-Unit ist eine Konfigurationsdatei, die für
systemd Informationen über einen Einhängepunkt bereitstellt.
Die automount-Unit überwacht das Dateisystem und
aktiviert die gleichnamige mount-Unit, wenn das darin bezeichnete
Dateisystem verfügbar ist.
Für unmittelbar im PC verbaute Laufwerke und deren Partitionen
verwenden wir nur die mount-Unit. Sie wird aktiviert (enabled) und
gestartet um die Laufwerke bei jedem Boot einzuhängen.
Bei Netzwerk-Dateisystemen bietet die mount-Unit den Vorteil,
Abhängigkeiten deklarieren zu können, damit die Unit erst aktiv wird,
wenn das Netzwerk bereit steht. Auch hier benutzen wir nur die
mount-Unit und aktivieren und starten sie, um das Netzwerk-Dateisystemen
bei jedem Boot einzuhängen. Die mount-Unit unterstützt alle Arten von
Netzwerk-Dateisystemen (NFS, SMB, FTP, WEBDAV, SFTP, SSH).
Entfernbare Geräte, wie USB-Sticks, und Netzwerk-Dateisysteme, die nicht permanent erreichbar sind, müssen immer an eine automount-Unit gekoppelt werden. In diesem Fall darf die mount-Unit nicht aktiviert werden und sollte auch keine [Install]-Sektion enthalten.
mount- und automount-Units müssen nach dem Einhängepunkt, den sie steuern, benannt sein. Beispiel: Der Einhängepunkt “/home/musteruser” muss in einer Unit-Datei “home-musteruser.mount”, bzw. “home-musteruser.automount”, konfiguriert werden.
Die in der /etc/fstab
deklarierten Geräte und ihre
Einhängepunkte übersetzt systemd in der frühen Bootphase mit Hilfe des
systemd-fstab-generators in native mount-Units.
Die mount-Unit verfügt über die folgenden Optionen in der zwingend erforderlichen [Mount]-Sektion:
What=
(Pflicht)
Enthält den absoluten Pfad des eingehängten Geräts, also z.B.
Festplatten-Partitionen wie /dev/sda8
oder eine
Netzwerkfreigabe wie NFSv4 oder Samba.
Where=
(Pflicht)
Hier wird der Einhängepunkt (mount point) festgelegt, d.h. der Ordner,
in den die Partition, das Netzlaufwerk oder Gerät eingehängt werden
soll. Falls dieser nicht existiert, wird er beim Einhängen
erzeugt.
Type=
(optional)
Hier wird der Typ des Dateisystems angegeben, gemäß dem mount-Parameter
-t.
Options=
(optional)
Enthält alle verwendeten Optionen in einer Komma getrennten Liste, gemäß
dem mount-Parameter -o.
LazyUmount=
(Standard: off)
Wenn der Wert auf true gesetzt wird, wird das Dateisystem wieder
ausgehängt, sobald es nicht mehr benötigt wird.
SloppyOptions=
(Standard: off)
Falls true, erfolgt eine entspannte Auswertung der in
Options=
festgelegten Optionen und unbekannte
Einhängeoptionen werden toleriert. Dies entspricht dem mount-Parameter
-s.
ReadWriteOnly=
(Standard: off)
Falls false, wird bei dem Dateisystem oder Gerät, das read-write
eingehängt werden soll, das Einhängen aber scheitert, versucht es
read-only einzuhängen. Falls true, endet der Prozess sofort mit einem
Fehler, wenn die Einhängung read-write scheitert. Dies entspricht dem
mount-Parameter -w.
ForceUnmount=
(Standard: off)
Falls true, wird das Aushängen erzwungen wenn z. B. ein NFS-Dateisystem
nicht erreichbar ist. Dies entspricht dem mount-Parameter -f.
DirectoryMode=
(Standard: 0755)
Die, falls notwendig, automatisch erzeugten Verzeichnisse von
Einhängepunkten, erhalten den deklarierten Dateisystemzugriffsmodus.
Akzeptiert einen Zugriffsmodus in oktaler Notation.
TimeoutSec=
(Vorgabewert aus der Option
DefaultTimeoutStartSec=
in systemd-system.conf)
Konfiguriert die Zeit, die auf das Beenden des Einhängebefehls gewartet
wird. Falls ein Befehl sich nicht innerhalb der konfigurierten Zeit
beendet, wird die Einhängung als fehlgeschlagen betrachtet und wieder
heruntergefahren. Akzeptiert einen einheitenfreien Wert in Sekunden oder
einen Zeitdauerwert wie “5min 20s”. Durch Übergabe von “0” wird die
Zeitüberschreitungslogik deaktiviert.
Die automount-Unit verfügt über die folgenden Optionen in der zwingend erforderlichen [Automount]-Sektion:
Where=
(Pflicht)
Hier wird der Einhängepunkt (mount point) festgelegt, d.h. der Ordner,
in den die Partition, das Netzlaufwerk oder Gerät eingehängt werden
soll. Falls dieser nicht existiert, wird er beim Einhängen
erzeugt.
DirectoryMode=
(Standard: 0755)
Die, falls notwendig, automatisch erzeugten Verzeichnisse von
Einhängepunkten erhalten den deklarierten Dateisystemzugriffsmodus.
Akzeptiert einen Zugriffsmodus in oktaler Notation.
TimeoutIdleSec=
(Standard: 0)
Bestimmt die Zeit der Inaktivität, nach der systemd versucht das
Dateisystem auszuhängen. Akzeptiert einen einheitenfreien Wert in
Sekunden oder einen Zeitdauerwert wie “5min 20s”. Der Wert “0”
deaktiviert die Option.
Systemd liest den Einhängepunkt aus dem Namen der mount- und
automount-Units. Deshalb müssen sie nach dem Einhängepunkt, den sie
steuern, benannt sein.
Dabei ist zu beachten, keine Bindestriche “-” in den Dateinamen zu
verwenden, denn sie deklarieren ein neues Unterverzeichnis im
Verzeichnisbaum. Einige Beispiele:
Um einen fehlerfreien Dateinamen für die mount- und automount-Unit zu
erhalten, verwenden wir im Terminal den Befehl
systemd-escape
.
$ systemd-escape -p --suffix=mount "/data/home-backup"
data/home\x2dbackup.mount
Festplatten-Partition
Eine Partition soll nach jedem Systemstart unter
/disks/TEST
erreichbar sein.
Wir erstellen mit einem Texteditor die Datei
disks-TEST.mount
im Verzeichnis
/usr/local/lib/systemd/system/
. (Ggf. ist das Verzeichnis
zuvor mit dem Befehl
mkdir -p /usr/local/lib/systemd/system/
anzulegen.)
[Unit]
Description=Mount /dev/sdb7 at /disks/TEST
After=blockdev@dev-disk-by\x2duuid-a7af4b19\x2df29d\x2d43bc\x2d3b12\x2d87924fc3d8c7.target
Requires=local-fs.target
Wants=multi-user.target
[Mount]
Where=/disks/TEST
What=/dev/disk/by-uuid/a7af4b19-f29d-43bc-3b12-87924fc3d8c7
Type=ext4
Options=defaults,noatime
[Install]
WantedBy=multi-user.target
Anschließend aktivieren und starten wir die neue mount-Unit.
# systemctl enable --now disks-TEST.mount
NFS
Das “document-root”-Verzeichnis eines Apache Webservers im heimischen
Netzwerk soll in das Home-Verzeichnis des Arbeitsplatz-Rechners mittels
NFS eingehängt werden.
Wir erstellen mit einem Texteditor die Datei
home-<user>-www_data.mount
im Verzeichnis
/usr/local/lib/systemd/system/
.
“<user>” bitte mit dem eigenen Namen ersetzen.
[Unit]
Description=Mount server1/var/www/ using NFS
After=network-online.target
Wants=network-online.target
[Mount]
What=192.168.3.1:/
Where=/home/<user>/www_data
Type=nfs
Options=nfsvers=4,rw,users,soft
ForceUnmount=true
Diese Datei enthält keine [Install]-Sektion und wird auch nicht aktiviert. Die Steuerung übernimmt die nun folgende Datei “home-<user>-www_data.automount” im gleichen Verzeichnis.
[Unit]
Description=Automount server1/var/www/ using NFS
ConditionPathExists=/home/<user>/www_data
Requires=NetworkManager.service
After=network-online.target
Wants=network-online.target
[Automount]
Where=/home/<user>/www_data
TimeoutIdleSec=60
[Install]
WantedBy=remote-fs.target
WantedBy=multi-user.target
Anschließend:
# systemctl enable --now home-<user>-www_data.automount
Jetzt wird das “document-root”-Verzeichnis des Apache Webservers
eingehangen, sobald wir in das Verzeichnis
/home/\<user\>/www_data
wechseln.
Die Statusabfrage bestätigt die Aktion.
# systemctl status home-<user>-www_data.mount
home-<user>-www_data.mount Mount server1/var/www/ using NFS
Loaded: loaded (/usr/local/lib/systemd/system/home-<user>-www_data.mount; disabled; vendor preset: enabled)
Active: active (mounted) since Wed 2021-03-10 [...]
TriggeredBy: ● home-<user>-www_data.automount
Where: /home/<user>/www_data
What: 192.168.3.1:/
Tasks: 0 (limit: 4279)
Memory: 120.0K
CPU: 5ms
CGroup: /system.slice/home-<user>-www_data.mount
[...]
# systemctl status home-<user>-www_data.automount
home-<user>-www_data.automount Automount server1/var/www/ usuing NFS
Loaded: loaded (/usr/local/lib/systemd/system/home-<user>-www_data.automount; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-03-10 [...]
Triggers: ● home-<user>-www_data.mount
Where: /home/<user>/www_data
[...]
Der Journalauszug protokolliert anschaulich die Funktion von
“TimeoutIdleSec=60” zum Aushängen des Dateisystems und das
wieder Einhängen durch den Start des Dateimanagers Thunar sowie einen
Aufruf von /home/\<user\>/www_data
im Terminal.
# journalctl -f -u home-<user>-www_data.*
[...]systemd[1]: Mounted Mount server1/var/www/ using NFS
[...]systemd[1]: Unmounting Mount server1/var/www/ using NFS
[...]systemd[1]: home-<user>-www_data.mount: Succeeded.
[...]systemd[1]: Unmounted Mount server1/var/www/ using NFS
[...]systemd[1]: home-<user>-www_data.automount: Got
automount request for /home/<user>/www_data
triggered by 2500 (Thunar)
[...]systemd[1]: Mounting Mount server1/var/www/ using NFS
[...]systemd[1]: Mounted Mount server1/var/www/ using NFS
[...]systemd[1]: Unmounting Mount server1/var/www/ using NFS
[...]systemd[1]: home-<user>-www_data.mount: Succeeded.
[...]systemd[1]: Unmounted Mount server1/var/www/ using NFS
[...]systemd[1]: home-<user>-www_data.automount: Got
automount request for /home/<user>/www_data
triggered by 6582 (bash)
[...]systemd[1]: Mounting Mount server1/var/www/ using NFS
[...]systemd[1]: Mounted Mount server1/var/www/ using NFS
[...]systemd[1]: Unmounting Mount server1/var/www/ using NFS
[...]systemd[1]: home-<user>-www_data.mount: Succeeded.
[...]systemd[1]: Unmounted Mount server1/var/www/ using NFS
Weitere Beispiele
Im Internet finden sich mit Hilfe der favorisierten Suchmaschine
vielerlei Beispiele für die Anwendung der mount- und automount-Unit. Das
Kapitel “Quellen” enthält einige Webseiten mit einer ganzen Reihe
weiterer Beispiele. Dringend empfohlen sind auch die man-Pages.
Deutsche
Manpage, systemd.mount
Deutsche
Manpage, mount
Manjaro
Forum, systemd.mount
Manjaro
Forum, Use systemd to mount ANY device
Linuxnews,
nfs per systemd
Debianforum,
Netzlaufwerke einbinden
Ubuntuusers,
Mount-Units