Wie funktioniert die Option _netdev mount in / etc / fstab?

24

Ich möchte wissen, was genau der Mechanismus (Implementierung) ist, der verwendet wird, um das Mounten aufzuschieben, bis die Netzwerkschnittstelle aktiv ist, wenn die _netdevOption in verwendet wird /etc/fstab.
Ändert sich systemddieses Verhalten?
Was bietet die delay_connectOption zu sshfs, was _netdevnicht?

Aus der mount Manpage :

_netdev
Das Dateisystem befindet sich auf einem Gerät, das Netzwerkzugriff erfordert (um zu verhindern, dass das System versucht, diese Dateisysteme bereitzustellen, bis das Netzwerk auf dem System aktiviert wurde).

Aus der sshfs Manpage :

-o delay_connect
Verbindung zum Server verzögern

Piotr Dobrogost
quelle

Antworten:

25

SysV Init

Das /etc/init.d/mountall.shInit-Skript stellt nur lokale Dateisysteme bereit:

mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2,ceph -O no_netdev

Andere Dateisysteme werden von separaten Init-Skripten wie zum Beispiel gemountet /etc/init.d/mountnfs.sh, die (über LSB-Header) ihre Abhängigkeit von deklarieren $network. Somit werden diese später geplant, nachdem das Netzwerk gestartet wurde, und mountall.shkönnen viel früher ausgeführt werden.

systemd

Lokale Mount-Einheiten werden von gezogen local-fs.target, entfernte von remote-fs.target. systemd-fstab-generatorscannt /etc/fstab, generiert Mount-Einheiten und ordnet diese den oben genannten Zielen zu, basierend auf Bedingungen, die den oben genannten ähnlich sind.

delay_connect

Diese Option bedeutet, dass sshfs die SSH-Verbindung zum Remote-Server nicht zur Mount-Zeit initiiert, sondern nur bei der ersten Dateisystemoperation, die sie tatsächlich erfordert. Dies verzögert die Fehlerberichterstattung, kann jedoch in einigen Fällen eine nützliche Problemumgehung sein, z. B. wenn Ihr Init-System nicht über genügend Informationen verfügt, um den Ladevorgang korrekt anzuordnen. "Das Netzwerk ist" in Betrieb "ist ein ziemlich loser Begriff , und obwohl man willkürliche zusätzliche Abhängigkeiten hinzufügen kann , um Einheiten zu mounten, hilft das nicht, wenn das Auslöseereignis nicht Teil der Boot-Transaktion ist (in der Systemsprache).

Ferenc Wágner
quelle
Sie sagen also, dass _netdevdies kein Argument sein soll, das an den Prozess übergeben wird, der das Laden durchführt (und der spezifisch für den Typ des Ladevorgangs ist ext4/btrfs/cifs/fuse), sondern von anderen Prozessen / Skripten gelesen werden soll, die basierend auf diesem Flag entscheiden, wann Während des Bootvorgangs sollten diese Mounts ausgeführt werden. Ja? Wenn ja, dann vermute ich, dass dies der Grund ist, warum dieses Argument mit einem Unterstrich beginnt, um es von anderen formalen Argumenten zu unterscheiden.
Piotr Dobrogost
Ja. Wenn Sie die _netdevOption an den mountBefehl übergeben, wird sie in angezeigt /proc/mounts, hat jedoch keine weiteren Auswirkungen.
Ferenc Wágner
Bonus-Frage; Ist das irgendwo dokumentiert?
Piotr Dobrogost
1
Das Mount- Handbuch enthält: "FILESYSTEM-UNABHÄNGIGE MOUNT-OPTIONEN - Einige dieser Optionen sind nur nützlich, wenn sie in der /etc/fstabDatei enthalten sind." Nun, _netdev(etwas später dokumentiert) ist ein gutes Beispiel dafür.
Ferenc Wágner
2
Die Option _netdev wird in mount (8) standardmäßig ignoriert. Die Optionen werden nur von Initskripten verwendet. - bugzilla.redhat.com/show_bug.cgi?id=607309#c4
Piotr Dobrogost
18

Ab man systemd.mountVersion 231 von systemd:

Mount-Einheiten, die sich auf lokale Dateisysteme und Netzwerkdateisysteme beziehen, unterscheiden sich durch ihre Dateisystemtypspezifikation. In einigen Fällen ist dies nicht ausreichend (z. B. auf Netzwerkblockgeräten basierende Bereitstellungen, wie z. B. iSCSI). In diesem Fall kann _netdev zur Bereitstellungsoptionszeichenfolge der Einheit hinzugefügt werden, wodurch systemd gezwungen wird , die Bereitstellungseinheit als Netzwerkbereitstellung zu betrachten.

Piotr Dobrogost
quelle
Ehrfürchtig! Keine Ahnung, warum diese Antwort noch nicht bewertet wurde.
Valentin Bajrami
1

Upstart/Udev

Bei upstartund / oder udevbasierten Systemen ist dies etwas anders.

Es scheint udevimmer noch zu versuchen, die NFS-Dateisysteme zu mounten, und es netfsist ein Sicherheitsnetz, wenn dies fehlschlägt.

Bitte korrigieren Sie mich, falls ich falsch liege. In beiden Fällen ist diese Antwort nur für einige neuere Legacy-Systeme relevant (Ubuntu 14.04 LTS, RHEL6).

Quattro
quelle