Fstab - Use SystemD automount (de)

Aus Gemini-Wiki
Version vom 27. März 2017, 18:49 Uhr von EgLe (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{|width="40%" |Bild:deutsch.png - in Deutsch |Bild:english.png - Fstab - Use SystemD automount (en)|in Engli…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
Deutsch.png - in Deutsch English.png - in English


Einführung

Betriebssysteme die das init-System "systemd" verwenden enthalten einen Automounter der nicht extra installiert werden muss.

Dieser Automount kann recht einfach über einen Eintrag in der /etc/fstab aktiviert werden.


Wer dies nur testen will weil er die ganze Zeit seine Automounts mittels "autofs" erledigte muss unbedingt sein autofs vorher benden und deaktieren. Beides zusammen gibt nur Probleme...

Dies kann man recht einfach mit den folgenden zwei Befehlen erledigen:

systemctl stop autofs.service
systemctl disable autofs.service


Datei Beispiel

Ein Simples Automount-Beispiel (NFS) der /etc/fstab, Mit Kernelnamen deskriptoren:

# <file system>           <dir>             <type>   <options>                  <dump> <pass>
192.168.1.10:/Multimedia  /media/Qnap-Media  nfs     x-systemd.automount,noauto    0      0


Kurze Erläuterung zu <dump> <pass>

  • <dump> - Verwendung des Dump-Dienstes zum entscheiden, ob eine Sicherung zu machen ist. Dump überprüft den Eintrag und verwendet die Nummer, um zu entscheiden, ob ein Dateisystem gesichert werden soll. Mögliche Einträge sind 0 und 1. Wenn 0, wird Dump das Dateisystem ignorieren; Wenn 1, wird Dump eine Sicherung machen. Die meisten Benutzer haben keinen Dump installiert, also sollten sie 0 für den <dump> Eintrag setzen.


  • <pass> - Verwendung des Filesystemcheck von fsck, um zu entscheiden, welche Order-Dateisysteme überprüft werden sollen. Mögliche Eingaben sind 0, 1 und 2. Das Root-Dateisystem sollte die höchste Priorität 1 haben (es sei denn, sein Typ ist btrfs, in diesem Fall sollte dieses Feld 0 sein) - alle anderen Dateisysteme, die Sie überprüft haben sollen Haben ein 2. Dateisysteme mit einem Wert 0 werden nicht vom fsck-Dienstprogramm überprüft.

Mehr infos zu den Kernelnamen deskriptoren und der /etc/fstab siehe in den Anleitungen zur "fstab"


Kurze Erläuterung (Auswahl) zu <options>

Die Optionen können erweiterut und verlängert werden, diese sind immer mit einem "Komma" ohne Leerzeichen zu trennen.

  • noauto, auto - Mit "noauto" wird dieser mount nicht als Abhängigkeit für local-fs.target oder remote-fs.target hinzugefügt. Dies bedeutet, dass er nicht automatisch während des Bootvorgangs eingebunden wird, es sei denn, er wird von einer anderen Einheit eingezogen. Die automatische Option hat die entgegengesetzte Bedeutung und ist die Voreinstellung.


  • x-systemd.automount - Für das Dateisystem wird eine Automount-Einheit erstellt.


  • x-systemd.idle-timeout - Konfiguriert das Leerlauf-Timeout des Automount-Geräts. Angabe in Sekunden nach dem Leerlauf wird der Automount von systemd wieder gelöst. Laut der Manpage sollte aber auch eine Zeitangabe wie "5min 20s" funktionieren. Habe ich aber nicht getestet und verwende selbst lieber nur die Sekunden.


  • x-systemd.device-timeout - Konfigurieren Sie, wie lange systemd auf ein Gerät warten soll, bevor Sie einen Eintrag aus / etc / fstab aufgeben. Geben Sie eine Zeit in Sekunden an oder geben Sie explizit eine Einheit wie "s", "min", "h", "ms" an.


  • retry=0 - Diese sorgt dafür, dass mount sofort aufgibt, falls der Server nicht erreichbar ist. Anderenfalls würde mount für zwei Minuten versuchen den Server zu erreichen und so lange blockieren. Dieses Verhalten ist an sich kein Problem, kann man aber somit vermeiden.


  • nolock - Deaktiviert das Sperren von Dateien. Wird gelegentlich für die Verbindung zu alten NFS-Servern benötigt


  • soft - Bei Unterbrechungen sofort einen Timeout machen (verhindert ein Einfrieren des Dateimanagers)


  • timeo=<SEKUNDEN> - In Verbindung mit soft kann festgelegt werden, wann der Timeout erfolgen soll.


  • nofail - Mit nofail wird der mount nur von local-fs.target oder remote-fs.target gewünscht, nicht benötigt. Dies bedeutet, dass der Bootvorgang fortgesetzt wird, auch wenn dieser Einhängepunkt nicht erfolgreich eingebunden ist.


  • retrans=n - Die Anzahl der Mountversuche, die der NFS-Client eine Anforderung wiederholt, bevor er eine weitere Wiederherstellungsaktion ausführt. Wenn die Retrans-Option nicht angegeben ist, versucht der NFS-Client jede Anfrage dreimal. Der NFS-Client generiert eine "Server nicht reagierende" Nachricht nach Retrans-Wiederholungen, dann versucht weitere Wiederherstellung (je nachdem, ob die Hard-Mount-Option in Kraft ist).


Mehr infos zu den möglichen Mount-Optionen siehe in den Anleitungen (ManPage) zu mount, systemd.mount, autofs, NFS, CIFS usw.


Praxis Beispiel einer /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>                           <mount point>  <type>  <options>  <dump>  <pass>
UUID=A210-956E                            /boot/efi      vfat    defaults,noatime 0       2
UUID=1e0c7f27-b0ad-4b31-b411-e5d555c31708 swap           swap    defaults,noatime,discard 0       0
UUID=955936f6-0205-4c55-9395-b0470269dbff /              ext4    defaults,noatime,discard 0       1
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0       0


# NFS - automounts per systemd für Dreambox
192.168.1.15:/media/hdd  /media/DB7080-hdd nfs	x-systemd.automount,noauto,retry=0,x-systemd.idle-timeout=60,nolock,rw,timeo=2,retrans=1,x-systemd.device-timeout=2,soft,nofail	0 0

# NFS - automounts per systemd für Qnap
192.168.1.10:/Multimedia /media/Qnap-media nfs x-systemd.automount,noauto,retry=0,x-systemd.idle-timeout=60,nolock,rw,timeo=2,retrans=1,x-systemd.device-timeout=2,soft,nofail	0 0
Ambox attention.png Nach dem Letzten Eintrag in der fstab muss immer noch eine Leerzeile kommen, sonst erhält man die Fehlermeldung: no final newline at the end of /etc/fstab


Automount Units

Wer sich einen Automount in der Art des obiogen Beispiels in die /etc/fstab eingetragen hat. Muss nur noch sein System neu booten oder mit dem folgenden Befehl die Änderungen aktivieren:

systemctl daemon-reload


Zum Glück für den einfachen User werden dann die Mount Units vom systemd-generator selbst erstellt.

Laut der systemd.generator - Man page

werden diese dann im regelfall automatisch unter /run/systemd/system-generators/* erstellt und können dort betrachtet werden.


Es wird zu jedem Automount ein passende automount-name.mount und eine automount-name.automount erstellt.


Aufbau der Automount Units

Nach dem obigen Beispiel der /etc/fstab würde nun im Verzeichnis /run/systemd/system-generators/* folgendes erstellt:

media-Qnap\x2dmedia.automount

Mit folgendem Inhalt:

# Automatically generated by systemd-fstab-generator

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=remote-fs.target

[Automount]
Where=/media/Qnap-media
TimeoutIdleSec=1min

und dann noch eine Datei mit dem Namen:

media-Qnap\x2dmedia.mount

mit folgendem Inhalt:

# Automatically generated by systemd-fstab-generator

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)

[Mount]
What=192.168.1.10:/Multimedia
Where=/media/Qnap-media
Type=nfs
Options=x-systemd.automount,noauto,retry=0,x-systemd.idle-timeout=60,nolock,rw,timeo=2,retrans=1,soft,nofail


Steuerbefehle der Automounts

Der Hauptbefehl um Änderungen neu einzulesen haben wir weiter oben schon kennen gelernt:

systemctl daemon-reload


bei den einzelnen Automounts kann man diese mit dem echten Namen ansprechen:

systemctl restart media-Qnap\x2dmedia.automount

systemctl start media-Qnap\x2dmedia.automount

systemctl stop media-Qnap\x2dmedia.automount

systemctl status media-Qnap\x2dmedia.automount 


Wer mehrere Mounts in einem Verzeichnis hat, bsp. /media kann auch mit dem Joker "*" arbeiten:

systemctl restart media-*.automount

systemctl start media-*.automount

systemctl stop media-*.automount

systemctl status media-*.automount

Hier mal ein extremes Beispiel:

root@dm7080:~# systemctl status media-*.automount          
● media-nas-Qnap\x2desata.automount
  Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
  Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 14s ago
   Where: /media/nas/Qnap-esata
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Unset automount media-nas-Qnap\x2desata.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-nas-Qnap\x2desata.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-nas-Qnap\x2desata.automount.


● media-nas-Qnap\x2dsonstiges.automount
   Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
   Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 14s ago
    Where: /media/nas/Qnap-sonstiges
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Unset automount media-nas-Qnap\x2dsonstiges.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-nas-Qnap\x2dsonstiges.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-nas-Qnap\x2dsonstiges.automount.


● media-dreambox-DB7020\x2dhdd.automount
  Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
  Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 13s ago
   Where: /media/dreambox/DB7020-hdd
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Unset automount media-dreambox-DB7020\x2dhdd.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-dreambox-DB7020\x2dhdd.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-dreambox-DB7020\x2dhdd.automount.


● media-nas-Qnap\x2dpublic.automount
  Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
  Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 13s ago
   Where: /media/nas/Qnap-public
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Unset automount media-nas-Qnap\x2dpublic.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-nas-Qnap\x2dpublic.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-nas-Qnap\x2dpublic.automount.




● media-nas-Qnap\x2dmedia.automount
  Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
  Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 13s ago
   Where: /media/nas/Qnap-media
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Unset automount media-nas-Qnap\x2dmedia.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-nas-Qnap\x2dmedia.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-nas-Qnap\x2dmedia.automount.


● media-dreambox-DB820\x2dhdd.automount
  Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
  Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 13s ago
   Where: /media/dreambox/DB820-hdd
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Unset automount media-dreambox-DB820\x2dhdd.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-dreambox-DB820\x2dhdd.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-dreambox-DB820\x2dhdd.automount.


● media-nas-Qnap\x2dusb1.automount
  Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
  Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 13s ago
   Where: /media/nas/Qnap-usb1
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Unset automount media-nas-Qnap\x2dusb1.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-nas-Qnap\x2dusb1.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-nas-Qnap\x2dusb1.automount.


● media-nas-Qnap\x2ddreambox.automount
  Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
  Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 14s ago
   Where: /media/nas/Qnap-dreambox
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Unset automount media-nas-Qnap\x2ddreambox.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-nas-Qnap\x2ddreambox.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-nas-Qnap\x2ddreambox.automount.


● media-nas-Qnap\x2dusb2.automount
  Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
  Active: active (waiting) since Sat 2017-03-04 16:09:57 CET; 14s ago
   Where: /media/nas/Qnap-usb2
    Docs: man:fstab(5)
          man:systemd-fstab-generator(8)


Mar 04 16:09:57 dm7080 systemd[1]: Stopping media-nas-Qnap\x2dusb2.automount.
Mar 04 16:09:57 dm7080 systemd[1]: Set up automount media-nas-Qnap\x2dusb2.automount.


weitere Befehle zum Überprüfen und zur Fehlersuche

folgende Befehle können zur Überprüfung oder bei Fehlersuche verwendet werden:

cat /proc/mounts
systemctl status *.automount
mount
systemctl | grep .mount


Automount von autofs zu systemd wechseln

Wer sich schon erfolgreich automounts mittles autofs eingerichtet hat und nun nach systemd wechseln will, warum auch immer...

Kann sich das recht leicht einrichten, und seine Vorgaben von autofs einfach leicht umstellen bzw. umwandel.

Damit sich beide Arten von automount nicht mit einander Kollidieren muss autofs zuerst beendet und deaktiviert werden.

Dies kann man einfach mittels den beiden Befehlen erreichen:

systemctl stop autofs.service

systemctl disable autofs.service


Umstellen der autofs Konfiguration zur systemd (fstab)

von autofs sieht ja z.B. ein NFS Mount so in der Art aus:

<mount name/punkt>   <optionen>                      <quelle>
DB7080-hdd          -fstype=nfs,rw,soft,tcp,retry=0  192.168.1.15:/media/hdd

Wie wir oben nun schon gesehen haben müsseen wir den Eintrag einfach nur für die /etc/fstab umschreiben. Im Prinzip ist der Aufbau ähnlich wie bei autofs nur das die <mount name/punkt> <quelle> umgestellt werden müssen und bei den <optionen> noch weitere Optionen dazu kommen.

Aus dem obigen Beispiel könnte man dies so umstellen für einen EIntrag in der /etc/fstab

192.168.1.15:/media/hdd  /media/DB7080-hdd nfs	x-systemd.automount,noauto,retry=0,x-systemd.idle-timeout=60,nolock,rw,timeo=2,retrans=1,x-systemd.device-timeout=2,soft,nofail	0 0


Hier sieht man nun gut das die Reihenfolge so aussieht:

1. <quelle>                 vollständige Angabe
2. <mount name/punkt>       mountpunkt wohin es eingebunden werden soll (hier der komplette Pfad, bei autofs wird dies ja über die automount.autofs angegeben)
3. <optionen>               zuerst das Protokoll mit Leerzeichen getrennt und den Mountoptionen
4. <dump>  <pass>           weil dies zu einem Eintrag der /etc/fstab dazu geöhrt

Unterschied beim Mounten systemd zu autofs

Bei einem Linuxsystem Ohne Gui wird man im normalen Betrieb eigentlich kaum einen Unterschied feststellen. Verwendet man aber ein "vollwertiges Linuxsystem mit GUI (ich verwende KDE) habe ich folgendes Verhalten festgestellt.


Der Eintrag des Automount über die fstab bewirkt das die Mounts als "Geräte" eingebunden werden.

Es wird also bei starten eines Dateimanager wie Dolhin oder Krusader alle Mountpunkt unter den Geräten angezeigt, egal ob diese nun eingebunden sind oder nicht. Bei mir hat es über systemd/fstab den Effekt das wenn ich den Dolphin starte ich genau höhre wie die ganzen Festplatten meines NAS aus dem Standby aufgeweckt werden auch wenn ich darauf nicht zugreifen will, und ich dadurch eine Startverzögerung des Dateimanagers habe weil er wartet bis die Platten aufgeweckt wurden.

Wenn ich die Automounts über die autofs mache habe ich diesen Effekt nur wenn ich wirklich auf einen Mount navigiere, wie hier im obigen Beispiel /media/DB7080-hdd


Auch wenn viele behaupten autofs sei tot und gehöre eingemistet, finde ich "persönlich" das Verhalten von autofs in Verbindung mit dem starten von einem Dateimanager angenehmer


Dolphin-automount.png