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
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
sudo systemctl disable NetworkManager-wait-online.service
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
systemd-1 on /home type autofs (rw,relatime,fd=32,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)