Systemd Baustein Mounts
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
- Lassen Sie sich alle Mount-Units anzeigen. Welche Unit gehört zu /?
- Zeigen Sie mit systemctl cat, was systemd aus Ihrer /home- oder /boot-Zeile der fstab gemacht hat.
- Ermitteln Sie mit systemd-escape den Unit-Namen für /srv/backup.
- 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.
- Hängen Sie eine NFS-Freigabe per x-systemd.automount ein. Wann wird sie wirklich eingehängt?
Für Schnelle
- Schreiben Sie eine eigene mnt-data.mount für die NFS-Freigabe und deaktivieren Sie den Eintrag in der fstab.
- Benennen Sie die Datei bewusst falsch und lesen Sie die Fehlermeldung im Journal.
- Lassen Sie einen Dienst mit RequiresMountsFor= auf den Mount warten und prüfen Sie die Reihenfolge mit systemctl list-dependencies.
Weiter
- Übersicht: Lernpfad systemd
- Alte Seite: Systemd mounts