Як працює опція монтажу _netdev в / etc / fstab?


24

Мені хотілося б знати, який саме механізм (реалізація) використовується для відстрочки монтажу до моменту, коли мережевий інтерфейс не працює, коли використовується _netdevпараметр в /etc/fstab?
Чи systemdзмінюється така поведінка?
Крім того, що delay_connectпараметр для sshfs надає те, _netdevщо ні?

З mount чоловічої сторінки :

_netdev
Файлова система знаходиться на пристрої, який вимагає доступу до мережі (використовується для запобігання спробі встановити ці файлові системи, поки мережа не буде включена в систему).

З sshfs чоловічої сторінки :

-o delay_connect
затримка підключення до сервера

Відповіді:


25

SysV Ініт

/etc/init.d/mountall.shСценарій ініціалізації монтує тільки локальні файлові системи:

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

Інші файлові системи монтуються окремими сценаріями init, як, наприклад /etc/init.d/mountnfs.sh, які оголошують (через заголовки LSB) свою залежність $network. Таким чином, вони плануються пізніше, після того, як мережа підведена, але вони mountall.shможуть працювати набагато раніше.

системний

Місцеві вузли кріплення підтягуються local-fs.target, віддалені - remote-fs.target. systemd-fstab-generatorсканує /etc/fstab, генерує блоки монтажу та призначає їх вищевказаним цілям на основі умов, подібних до вище.

delay_connect

Цей параметр означає, що sshfs не буде ініціювати з'єднання SSH з віддаленим сервером під час монтажу, а зробить це лише під час першої операції з файловою системою, яка фактично вимагає цього. Це затримує повідомлення про помилки, але може бути корисним рішенням у деяких випадках, наприклад, якщо у вашої системи init недостатньо інформації, щоб правильно замовити операцію монтування. "Мережа", що "перебуває вгору", є досить нещільним терміном , і хоча можна додати довільні додаткові залежності для монтажу одиниць, що не допоможе, якщо подія тригера не є частиною транзакції завантаження (на системному мові).


Таким чином, ви говорите, що _netdevце не має бути аргументом, переданим процесу, який виконує монтаж (і який специфічний для типу типу, як ext4/btrfs/cifs/fuse), але призначений для читання іншими процесами / скриптами, які ґрунтуються на цьому прапорі, вирішують, коли під час завантаження ці кріплення слід виконати. Так? Якщо так, то я підозрюю, що це причина, чому цей аргумент починається з підкреслення, щоб відрізняти його від інших формальних аргументів.
Пьотр Доброгост

Так. Якщо ви передасте _netdevпараметр mountкоманді, вона буде видима в, /proc/mountsале не матиме іншого ефекту.
Ференц Вагнер

Бонусне питання; це десь задокументовано?
Пьотр Доброгост

1
Посібник з монтажу містить: "FILESYSTEM-NEENDENDENDENT MOUNT OPTIONS - Деякі з цих параметрів корисні лише тоді, коли вони з'являються у /etc/fstabфайлі." Ну, _netdev(це задокументовано дещо пізніше) - прекрасний приклад цьому.
Ференц Вагнер

2
Параметр _netdev за замовчуванням ігнорується у mount (8). Параметри використовуються лише в Incripts. - bugzilla.redhat.com/show_bug.cgi?id=607309#c4
Piotr Dobrogost

18

З man systemd.mountверсії 231 для systemd:

Блоки монтажу, що відносяться до локальних та мережевих файлових систем, відрізняються специфікацією типу файлової системи. У деяких випадках цього недостатньо (наприклад, кріплення на основі блоку мережевих пристроїв, таких як iSCSI), і в цьому випадку _netdev може бути доданий до рядка параметрів монтування пристрою, що змушує системну систему вважати блок монтажу мережевим кріпленням.


Чудовий! Не маю ідеї, чому ця відповідь ще не була підтверджена.
Валентин Байрамі

1

Upstart/Udev

Для upstartта / або udevбазованих систем це дещо відрізняється.

Здається udev, все ж спробують змонтувати файлові системи NFS і netfsє мережею безпеки, коли це не вдасться.

Будь ласка, виправте мене, якщо я помиляюся. так чи інакше, ця відповідь стосується лише деяких останніх застарілих систем (Ubuntu 14.04 LTS, RHEL6).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.