Jak działa opcja montowania _netdev w / etc / fstab?


24

Chciałbym wiedzieć, jaki jest dokładny mechanizm (implementacja) zastosowany do odroczenia montowania do momentu, gdy interfejs sieciowy zostanie uruchomiony, gdy zostanie użyta _netdevopcja /etc/fstab?
Czy systemdzmienia to zachowanie?
Ponadto, co zapewnia delay_connectopcja sshfs, a czego _netdevnie?

Ze mount strony podręcznika :

_netdev
System plików znajduje się na urządzeniu, które wymaga dostępu do sieci (używane, aby uniemożliwić systemowi montowanie tych systemów plików, dopóki sieć nie zostanie włączona w systemie).

Ze sshfs strony podręcznika :

-o delay_connect
opóźnij połączenie z serwerem

Odpowiedzi:


25

SysV Init

/etc/init.d/mountall.shSkrypt startowy montuje tylko lokalne systemy plików:

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

Inne systemy plików są montowane przez osobne skrypty inicjujące, takie jak na przykład /etc/init.d/mountnfs.sh, które deklarują (za pomocą nagłówków LSB) swoją zależność $network. W ten sposób zostaną one zaplanowane później, po uruchomieniu sieci, ale mountall.shmogą działać znacznie wcześniej.

systemd

Lokalne jednostki montowania są wciągane przez local-fs.target, a zdalne przez remote-fs.target. systemd-fstab-generatorskanuje /etc/fstab, generuje jednostki montażu i przypisuje je do powyższych celów na podstawie warunków podobnych do powyższych.

delay_connect

Ta opcja oznacza, że ​​sshfs nie zainicjuje połączenia SSH ze zdalnym serwerem w czasie montowania, ale zrobi to tylko przy pierwszej operacji systemu plików, która tego wymaga. Opóźnia to raportowanie błędów, ale w niektórych przypadkach może być przydatnym obejściem, na przykład jeśli twój system init nie ma wystarczających informacji, aby poprawnie zamówić operację montowania. „Sieć” będąca „uruchomiona” jest dość luźnym terminem i nawet jeśli można dodać dowolne dodatkowe zależności do montowania jednostek, co nie pomaga, jeśli zdarzenie wyzwalające nie jest częścią transakcji rozruchowej (w języku systemowym).


Mówisz więc, że _netdevnie ma to być argumentem przekazywanym do procesu wykonującego mount (i który jest specyficzny dla typu mount jak ext4/btrfs/cifs/fuse), ale powinien być czytany przez inne procesy / skrypty, które na podstawie tej flagi decydują, kiedy podczas procesu rozruchu te podłączenia powinny zostać wykonane. Tak? Jeśli tak, to podejrzewam, że jest to powód, dla którego ten argument zaczyna się od podkreślenia, aby odróżnić go od innych argumentów formalnych .
Piotr Dobrogost

Tak. Jeśli przekażesz _netdevopcję do mountpolecenia, będzie ona widoczna, /proc/mountsale nie będzie miała innego efektu.
Ferenc Wágner,

Pytanie bonusowe; czy to gdzieś jest udokumentowane?
Piotr Dobrogost

1
Podręcznik instalacji zawiera: „OPCJE MONTAŻU NIEZALEŻNE OD PLIKU - Niektóre z tych opcji są przydatne tylko wtedy, gdy pojawiają się w /etc/fstabpliku.” Cóż, _netdev(udokumentowane nieco później) jest tego dobrym przykładem.
Ferenc Wágner,

2
Opcja _netdev jest domyślnie ignorowana w mount (8). Opcje są używane tylko przez skrypty startowe. - bugzilla.redhat.com/show_bug.cgi?id=607309#c4
Piotr Dobrogost

18

Od man systemd.mountdla wersji 231 systemud:

Jednostki montowania odnoszące się do lokalnych i sieciowych systemów plików wyróżniają się specyfikacją typu systemu plików. W niektórych przypadkach to nie wystarcza (dla wierzchowców opartych urządzenia blokowego przykład sieciowych, takich jak iSCSI), w którym to przypadku _netdev mogą być dodawane do zamontowania opcji ciąg jednostki, której siły Systemd rozważyć urządzenie zamontować zamontować sieć.


Awsome! Nie mam pojęcia, dlaczego ta odpowiedź nie została jeszcze przegłosowana.
Valentin Bajrami,

1

Upstart/Udev

W przypadku systemów upstarti / lub udevopartych jest to nieco inna.

Wygląda na udevto, że nadal będzie próbował zamontować systemy plików NFS i netfsjest siatką bezpieczeństwa na wypadek awarii.

Proszę popraw mnie jeżeli się mylę. tak czy inaczej, ta odpowiedź dotyczy tylko niektórych starszych systemów (Ubuntu 14.04 LTS, RHEL6).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.