Systemd Baustein Mounts

Aus Xinux Wiki
Version vom 17. Oktober 2026, 15:39 Uhr von Thomas.will (Diskussion | Beiträge) (Neue Seite: Baustein Mounts)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
Baustein ab Stufe Lernpfad
Mounts Stufe 2 Übersicht

Einfach erklärt

  • Auch unter systemd trägt man Dateisysteme meist in /etc/fstab ein.
  • systemd liest die fstab beim Start und macht aus jeder Zeile eine .mount-Unit. Das erledigt der systemd-fstab-generator.
  • Eine Mount-Unit ist eine ganz normale Unit: Sie hat einen Status und Abhängigkeiten, und andere Dienste können auf sie warten.
  • Der Name der Unit ist der Pfad, wobei aus / ein - wird: /mnt/data wird zu mnt-data.mount.

Das Wichtigste

  • Für die meisten Fälle reicht die fstab. Eigene .mount-Dateien braucht man selten.
  • Nach jeder Änderung an der fstab: systemctl daemon-reload
  • Fehlt beim Start ein Gerät aus der fstab, landet das System im emergency.target. Für Wechselplatten und Netzlaufwerke deshalb nofail.
  • Mit x-systemd.automount wird erst eingehängt, wenn jemand zugreift.

Mounts anzeigen

Befehl Wirkung
systemctl list-units --type=mount alle eingehängten Dateisysteme als Units
systemctl status home.mount Zustand, Gerät und Optionen eines Mounts
systemctl cat home.mount die Unit, die der Generator aus der fstab gemacht hat
systemd-escape -p --suffix=mount /mnt/data zeigt den Unit-Namen zu einem Pfad: mnt-data.mount
findmnt alle Mounts als Baum
  • systemctl list-units --type=mount
  UNIT                          LOAD   ACTIVE SUB     DESCRIPTION
  -.mount                       loaded active mounted Root Mount
  boot-efi.mount                loaded active mounted /boot/efi
  home.mount                    loaded active mounted /home
...
  • -.mount ist die Root-Partition /.

fstab mit systemd-Optionen

# Gerät                                    Ziel        Typ   Optionen
UUID=1a2b3c4d-…                            /           ext4  errors=remount-ro  0 1
UUID=6f1c…                                 /mnt/usb    ext4  nofail,x-systemd.device-timeout=5s  0 2
fs1.lab.lan:/export/data                   /mnt/data   nfs   vers=4,nofail,x-systemd.automount,x-systemd.idle-timeout=10min  0 0
Option Wirkung
nofail fehlt das Gerät, startet das System trotzdem
x-systemd.device-timeout=5s so lange auf das Gerät warten, Standard sind 90 Sekunden
x-systemd.automount erst beim ersten Zugriff einhängen
x-systemd.idle-timeout=10min nach 10 Minuten ohne Zugriff wieder aushängen
_netdev braucht das Netz, z.B. bei iSCSI. NFS und CIFS erkennt systemd selbst
noauto nicht beim Start einhängen, nur von Hand
  • Danach:
systemctl daemon-reload
mount -a
  • Vergisst man daemon-reload, warnt mount: (hint) your fstab has been modified, but systemd still uses the old version

Eine eigene Mount-Unit

  • Sinnvoll, wenn der Mount von einem Dienst abhängen oder ein Dienst auf ihn warten soll.
  • Der Dateiname muss zum Ziel passen: Where=/mnt/data → mnt-data.mount
  • /etc/systemd/system/mnt-data.mount
[Unit]
Description=Daten vom Fileserver

[Mount]
What=fs1.lab.lan:/export/data
Where=/mnt/data
Type=nfs
Options=vers=4

[Install]
WantedBy=remote-fs.target
  • systemctl daemon-reload
  • systemctl enable --now mnt-data.mount
  • WantedBy=remote-fs.target für Netzlaufwerke, local-fs.target für lokale Platten.

Automount als Unit

  • /etc/systemd/system/mnt-data.automount
[Unit]
Description=Daten vom Fileserver bei Bedarf

[Automount]
Where=/mnt/data
TimeoutIdleSec=10min

[Install]
WantedBy=remote-fs.target
  • systemctl daemon-reload
  • systemctl enable --now mnt-data.automount
  • Aktiviert wird nur die .automount, die .mount startet systemd beim Zugriff selbst.

Ein Dienst wartet auf den Mount

  • systemctl edit dienst
[Unit]
RequiresMountsFor=/mnt/data
  • Damit startet der Dienst erst, wenn /mnt/data eingehängt ist, und zieht den Mount bei Bedarf mit.

Stolperfallen

  • Falscher Dateiname. Passt der Name nicht zu Where=, verweigert systemd die Unit: Where= setting doesn't match unit name. Refusing.
  • Leerzeichen im Pfad werden zu \x20. Den richtigen Namen liefert systemd-escape.
  • Tippfehler in der fstab führen beim Start in den Notfallmodus. Vor dem Neustart immer: mount -a und findmnt --verify
  • USB-Platte nicht da: Ohne nofail wartet der Start 90 Sekunden und geht dann in emergency.target.
  • Automount und enable: Bei Automount die .automount aktivieren, nicht die .mount.

Aufgaben

Grundaufgaben

  1. Lassen Sie sich alle Mount-Units anzeigen. Welche Unit gehört zu /?
  2. Zeigen Sie mit systemctl cat, was systemd aus Ihrer /home- oder /boot-Zeile der fstab gemacht hat.
  3. Ermitteln Sie mit systemd-escape den Unit-Namen für /srv/backup.
  4. Legen Sie eine zusätzliche Partition oder ein Image an und tragen Sie es mit nofail in die fstab ein. Prüfen Sie mit findmnt --verify.
  5. Hängen Sie eine NFS-Freigabe per x-systemd.automount ein. Wann wird sie wirklich eingehängt?

Für Schnelle

  1. Schreiben Sie eine eigene mnt-data.mount für die NFS-Freigabe und deaktivieren Sie den Eintrag in der fstab.
  2. Benennen Sie die Datei bewusst falsch und lesen Sie die Fehlermeldung im Journal.
  3. Lassen Sie einen Dienst mit RequiresMountsFor= auf den Mount warten und prüfen Sie die Reihenfolge mit systemctl list-dependencies.

Weiter