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.

Kommentare

9 Antworten zu „NFS-Freigaben per Systemd einbinden“

  1. Avatar von Anturix
    Anturix

    Das erstellen der Autmount-Units kann systemd selber übernehmen.
    Die Option in der fstab heißt: x-systemd.automount

    Ist im Manjaro-Wiki ausführlich beschrieben.
    https://wiki.manjaro.org/index.php?title=Fstab_-_Use_SystemD_automount_(de)

    1. Avatar von Ferdinand

      Ja, das habe ich nicht getestet. Ich hab die fstab gerne möglichst übersichtlich.

  2. Avatar von Jörg

    Hallo,
    werde sowohl direkte als auch indirekte Mountpoints wie bei autofs unterstützt.

    MfG
    Jörg

    1. Avatar von Ferdinand

      Meines Wissens muss der Mountpoint bereits bestehen.

  3. Avatar von harley-peter
    harley-peter

    Das mit dem automount hat bei mir nie richtig funktioniert, da die freizugebenden Units verschlüsselt sind und nach dem Entschlüsseln kein neuer Versuch des mounten mehr erfolgt ist. Außerdem hat sich mein Laptop (auf das ich mounten wollte) immer aufgehängt wenn dann eine eingebundene Unit nicht mehr verfügbar war weil beispielsweise der Hauptrechner runtergefahren wurde. Muss ich mal mit diesem Verfahren testen.

    1. Avatar von Ferdinand

      Vielleicht hilft dies hier weiter!?

  4. Avatar von harley-peter
    harley-peter

    Danke für den Hinweis aber das bringt mich nicht wirklich weiter. Mein Problem fängt ja schon damit an, dass ich nach dem Entschlüsseln der Laufwerke erst mal als root einen nfs-kernel-server restart machen muss, damit die Laufwerke anschließend für den Laptop zur Verfügung gestellt werden. Erst dann kann ich sie per Hand auf dem Laptop mounten.

    1. Avatar von Ferdinand

      Da musst du dann weiter Tante Google fragen. Ich arbeite nicht mit Verschlüsselung, kann also dazu wenig sagen. Ich bin aber sicher, es gibt einen Weg.

  5. Avatar von tuxnix
    tuxnix

    > Erst dann kann ich sie per Hand auf dem Laptop mounten.
    So zu sagen der „hand.mount service“.

    FOHE WEIHNACHT allerseits.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert