Як працює опція монтажу _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.