NFS-Freigaben per Systemd einbinden

Bild: share | By airpix | Lizenz: CC BY 2.0

Ich habe gerade einen neuen Rechner in Betrieb genommen. Beim alten PC wurden die Freigaben per autofs automatisch eingebunden, da das Einbinden per fstab mit Nachteilen verbunden sein kann. Leider ist es mir nicht gelungen, die Konfiguration des alten Rechners auf die der neuen Box anzupassen.

Systemd to the Rescue

Nach Stunden des Probierens suchte ich nach Alternativen und entschloss mich, Systemd-Mounts zu testen. Und siehe da, nach 10 Minuten war der erste Share da und erschien auch im Dateimanager Dolphin. Um dahin zu kommen, mussten lediglich zwei einfache Systemd-Units erstellt werden. Als Vorgabe muss lediglich das Paket nfs-common installiert sein.

Units erstellen

Die Units bei Systemd unterscheiden sich nicht sehr von den Service-Files, die vermutlich jeder Linux-Nutzer schon mal gesehen hat. Die erste Unit endet auf .mount, die zweite auf .automount. Bei mir sehen diese wie folgt aus:

[Unit]
Description=Mount NFS Share

[Mount]
What=192.168.XXX.YY:/Music
Where=/media/ft/nas
Type=nfs
Options=soft,async

Eigentlich ist es selbsterklärend. Description ist lediglich beschreibend. Der Eintrag hinter What verweist auf die Adresse und die Freigabe, das Where legt fest, wohin gemounted wird. Der Typ ist bei mir NFS, könnte aber auch Cifs sein. Die benötigten Optionen kann man sich im NFS-Howto zusammenstellen.

Die zweite Unit mit der Endung .automount macht genau was der Name besagt: Sie liest die soeben beschriebene .mount und hängt die dort benannte Freigabe ein:

[Unit]
Description=Automount NFS-Share
Requires=NetworkManager.service
After=network-online.target
Wants=network-online.target

[Automount]
Where=/media/ft/nas
TimeoutIdleSec=10min

[Install]
WantedBy=multi-user.target

Auch hier wieder die Beschreibung an erster Stelle. Die zweite Zeile legt fest, dass die Datei NetworkManager.service benötigt wird. Der Automounter soll dann die Freigaben einhängen, nachdem das Netzwerk steht. TimeoutIdle legt fest, dass die Freigabe ohne Aktivität nach der angegebenen Zeit wieder ausgehängt wird. Die Install-Anweisung besagt, in welchem Runlevel die Unit gestartet werden soll. Ich habe hier das Multi-User-Runlevel gewählt.

Nomen est Omen

Was die Namen der beiden Units angeht, so werden sie aus dem Pfad des Einhängepunkts gebildet, indem / gegen ausgetauscht wird. Aus media/ft/nas wird media-ft-nas.mount bzw. media-ft-nas.automount. Bei längeren Namen kann man sich auch des Befehls sudo systemd escape [mountpoint] bedienen.

Verschieben und aktivieren

Die solchermaßen benannten Dateien werden nach /etc/systemd/system verschoben. Jetzt fehlen noch zwei Befehle um die Automount-Unit jetzt und künftig beim Booten zu starten:

systemctl start media-ft-nas.automount

systemctl enable media-ft-nas.automount

Der Zustand kann mit systemctl status media-ft-nas.automount kontrolliert werden und liefert im Erfolgsfall beispielsweise zurück:

ft@blue:/etc/systemd/system$ systemctl status media-ft-nas.automount
media-ft-nas.automount - Automount /media/ft/nas
    Loaded: loaded (/etc/systemd/system/media-ft-nas.automount; enabled; vendor preset: enabled)
    Active: active (waiting) since Sun 2019-12-22 12:45:52 CET; 2h 57min ago
  Triggers: ● media-ft-nas.mount
     Where: /media/ft/nas

Das wars auch schon. Sollte etwas nicht funktionieren, kann man als erstes testen, welche Freigaben überhaupt vorhanden sind. Das geht mittels:

sudo showmount -e 192.168.XXX.YY

Der einzige Nachteil, der ins Auge springt, ist, dass für jede Freigabe eigene Units angelegt werden müssen. Aber die müsste man in der fstab auch einzeln eintragen. Und man muss es ja nur einmal machen. Falls jemand hier eine Abkürzung kennt, ich bin ganz Ohr.

Teilt den Beitrag, falls ihr mögt

Abonnieren
Benachrichtige mich bei
9 Kommentare
Most Voted
Newest Oldest
Inline Feedbacks
View all comments