Autofs ist ein vielen Administratoren bekannter Begriff, Ziel ist es ein Dateisystem beim ersten Zugriff einzuhängen. Vom Prinzip her eine sehr gute Idee, ich konnte das früher™ mal testen und war davon nicht begeistert. Das ganze ist jetzt aber schon einige Jahre her, und seitdem hat sich natürlich sehr viel verändert. Autofs und Automount behandle ich in diesem kurzem Artikel gleichberechtigt, auch wenn Autmount natürlich der Überbegriff für das automatische einhängen von Datenträgern ist.

Ein guter bekannter hat mich auf die Idee gebracht dem ganzen mal wieder eine Chance zu geben, und zwar in Form vom systemd automounter. Dieser macht Grundlegend erstmal nichts anderes, er bindet Dateisysteme beim ersten Zugriff ein.

Schon allein die Konfiguration unterscheidet sich aber vom normalen automount welcher via /etc/auto.master konfiguriert wird. Wir verwenden stattdessen einfach unsere /etc/fstab, ein Beispiel eines NFS Shares welches auf meinem System vorhanden ist:

server:/home /home nfs4 defaults,rw,nodev,nosuid 0 0
Wie man sieht würde das Dateisystem beim booten automatisch mit allen anderen Netzwerkdateisystemen eingehängt werden. Das ganze erfordert jedoch das die Netzwerkbindung für das Ziel (Target) network.target schon vorhanden ist.

Dies wird erreicht indem der systemd Service NetworkManager-wait-online.service aktiviert ist, welcher dafür sorgt das unser network.target eben erst verfügbar/erledigt ist wenn auch DHCP durchgelaufen ist. Der Bootvorgang wird hierbei für Dienste die von diesem Ziel abhängig sind natürlich blockiert.

Der entsprechende Eintrag um den automounter von systemd zu verwendet sieht wie folgt aus:

server:/home /home nfs4 defaults,rw,nodev,nosuid,noauto,x-systemd.automount 0 0
Zusätzlich können wir den oben genannten Zusatzdienst für Network Manager deaktivieren:
sudo systemctl disable NetworkManager-wait-online.service
Das war es schon mit der Konfiguration, mehr muss nicht gemacht werden. Beim nächsten Start vom System wird unser /home erst beim ersten Zugriff gemounted, bis DHCP durchgelaufen ist und das Netzwerkinterface bereit ist sollte auf den meisten Maschinen auch schon der GDM am laufen sein, perfekt.

Technisch passiert bei diesem ganzen Vorgang übrigens keine schwarze Magie, systemd legt durch systemd-fstab-generator beim starten für Einträge aus der fstab die x-systemd.automount gesetzt haben ein entsprechendes Unit an, wer möchte kann sich dies auch einmal anschauen (/run/systemd/generator/home.automount):

# Automatically generated by systemd-fstab-generator

[Unit]
SourcePath=/etc/fstab
DefaultDependencies=no
Conflicts=umount.target
Before=umount.target remote-fs.target

[Automount]
Where=/home
Auch in der Ausgabe vom Befehl mount taucht dies auf:
systemd-1 on /home type autofs (rw,relatime,fd=32,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
Sobald das Dateisystem wirklich gemounted ist sieht man zusätzlich auch noch den normalen Eintrag vom jeweiligen Dateisystem.