(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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
|
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
[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