automount nfs: налаштування тайм-ауту автофайлів для ненадійних серверів - як уникнути зависання?


18

Я запускаю невеликий сервер для нашої плоскої частки. Це здебільшого файловий сервер з деякими додатковими послугами. Клієнтами є машини Linux (в основному Ubuntu, але деякі інші Distros) і деякі Mac (-Book) між ними (але вони не важливі для питання). На сервері працює Ubuntu 11.10 (Oneiric Ocelot) 'Server Edition', система, з якої я роблю налаштування та тестування, виконує 11.10 'Desktop Edition'. Ми працюємо з акціями Samba (з яким ми більше знайомі) протягом досить тривалого часу, але потім переходимо до NFS (оскільки у нас немає користувачів Windows в локальній мережі та хочемо спробувати це), і поки що все працює добре .

Тепер я хочу налаштувати автоматичне монтування з автофайлами, щоб згладити речі (до цих пір всі монтують спільний доступ вручну за потреби). Автомонтаж, здається, теж працює. Проблема полягає в тому, що наш "сервер" не працює 24/7, щоб заощадити енергію (якщо комусь потрібні речі з сервера, він / він вмикає його і згодом відключає, тому він працює лише пару годин щодня). Але оскільки налаштування автозаписів клієнти зависають, виходять часто, коли сервер не працює.

  • Я можу запустити всіх клієнтів просто добре, навіть коли сервер не працює.

  • Але коли я хочу відобразити каталог (у терміналі або nautilus), який містить символічні посилання на спільний доступ, /nfsпоки сервер не працює, він зависає щонайменше дві хвилини (оскільки автофайли не можуть підключитися до сервера, але зберігають намагаюся, я припускаю).

    • Чи є спосіб уникнути цього? Так що монтаж затягується до зміни в каталозі або до доступу до вмісту цього каталогу? Не під час "перегляду" посилання на акцію під /nfs? Я думаю, що ні, але, можливо, можна так довго не намагатися отримати доступ до нього? І просто дайте мені порожній каталог або "не можу знайти / підключитися до цього dir" або щось подібне.
  • Коли сервер працює, все працює добре.

  • Але коли сервер вимикається, перш ніж вимкнути папку, інструменти (як-от dfабо ll) зависають (якщо вважати, оскільки вони думають, що частка все ще входить, але сервер більше не реагуватиме).

    • Чи є спосіб вимкнути спільний доступ автоматично, коли з'єднання втрачається?
  • Також клієнти не зупинятимуться або перезавантажуватимуться, коли сервер не працює, і вони все ще змонтовані. Вони зависають (нескінченно, як здається) " вбиваючи процеси, що залишилися ", і, здається, нічого не відбувається.

Я думаю, що все зводиться до акуратних значень тайм-ауту для монтажу та демонтажу. І, можливо, видалити всі спільні папки, коли зникне з’єднання з сервером.

Отже, моє запитання: як впоратися з цим? І як бонус: чи є хороший спосіб встановити зв'язок всередині /nfsбез необхідності монтажу реальних ділянок (опція автофіксації чи, можливо, використання псевдо FS, на /nfsяку заміняється, коли відбувається монтаж чи щось подібне)?

Моя настройка

Налаштування NFS є досить базовим, але нам добре служило досі (використовуючи NFSv4 ):

/ etc / default / nfs-common

NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=

/etc/idmapd.conf

[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/ тощо / експорт

/srv/   192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

Під коренем експорту /srvми отримали два каталоги bind:

/ etc / fstab (сервер)

...
/shared/shared/      /srv/shared/      none    bind  0 0
/home/Upload/        /srv/upload/      none    bind  0 0

Перший - здебільшого лише для читання (але я примушую це через атрибути файлу та права власності замість параметрів NFS), а другий - rw для всіх. Примітка: У них немає додаткових записів у / etc / export , проте їх монтаж окремо працює.

На стороні клієнта вони встановлюються /etc/fstabта встановлюються вручну в міру необхідності ( mortonце ім'я сервера, і воно вирішує нормально).

/ etc / fstab (клієнт)

morton:/shared  /nfs/shared nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0
morton:/upload  /nfs/upload nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0

Для налаштування автофайлів я видалив записи з /etc/fstabклієнтів, а решту налаштував так:

/etc/auto.master

/nfs    /etc/auto.nfs

Спочатку я зв'язав доданий виконуваний файл /etc/auto.net(ви можете подивитися тут ), але він автоматично нічого не зможе встановити. Тоді я пишу на /etc/auto.nfsоснові деяких HowTos, які я знайшов в Інтернеті:

/etc/auto.nfs

shared  -fstype=nfs4  morton:/shared
upload  -fstype=nfs4  morton:/upload

І це якось працює ... Або працювало б, якщо сервер працює 24/7. Таким чином, ми отримуємо зависання, коли клієнт завантажується без запуску сервера або коли сервер перебуває вниз, тоді як він ділиться там, де все ще підключений.

Відповіді:


2

Використовуючи будь-яку систему монтування, ви хочете уникнути ситуацій, коли Nautilus перераховує каталог, що містить кріплення, яке може бути встановлене або не встановлене. Отже, з автофайлами не створюйте кріплення, наприклад, / nfs. Якщо ви зробите це, коли ви використовуєте Nautilus для переліку «Файлової системи», він спробує створити всі версії, які повинні існувати в / nfs, і якщо ці спроби встановити не вдасться, потрібно відмовитися від хвилин.

Тому я змінив auto.master, щоб створити кріплення в / nfs / mnt.

Це вирішило для мене проблему. Я отримую велику затримку, лише коли спробую перерахувати вміст / nfs / mnt, якого мені легко уникнути.


20

Монтуйте NFS-спільну частину на клієнтах, використовуючи параметри mount "bg, intr, hard".

Найважливішим у вашому випадку є "bg" для фону - який говорить системі не блокувати, коли сервер недоступний.

"intr" для переривчастого - так ви можете вбивати висячі кріплення на клієнті за допомогою команди kill.

"твердий" - це протилежність "м'якому". Різниця полягає в тому, що "важко" буде намагатися нескінченно намагатися, тоді як "м'який" буде експоненціально відмовлятися від своїх спроб, коли сервер недоступний.


Дякуємо за відповідь. Я зараз не можу перевірити, тому що я не вдома, але, пов'язуючи сторінку (знову), у мене з’явилися ще кілька запитань: hardі bgспочатку звучить інтуїтивно зрозуміло для мене. Я хочу, щоб кріплення не повторювалося і повернулося негайно, якщо воно порушило? intrздається нормальним, але також, здається, більше не працює: " Параметр кріплення intr / nointr застарілий після ядра 2.6.25. Тільки SIGKILL може перервати очікувані операції NFS на цих ядрах, і якщо зазначено, цей параметр монтажу ігнорується для забезпечення зворотної сумісності зі старими ядрами. "?
Брут

2
Важко спробувати безкінечно - bg НЕ заблокує, якщо кріплення неможливо зараз. Результатом буде те, що він встановлений, коли він доступний, але всі інші операції будуть продовжуватися. Здається, INTR зараз за замовчуванням - що чудово. Спочатку вам довелося перезавантажувати висячого клієнта, якщо ваш NFS-сервер загинув ...
Nils

Я просто перевіряв, але додавання hard,bgдо , /etc/auto.masterздається, нічого змінити. A time ls -l ~(мій користувальницький dir містить символьне посилання на /nfs/upload) все ще займає більше двох хвилин, коли сервер не працює.
Брут

Ви перезапустили автофайли? Лише зміни субмапи розповсюджуватимуться без перезавантаження автофайлів.
Нілс

Я зробив:sudo reload autofs && sudo restart autofs
Брут

7

Я пограв ще трохи з деякими варіантами зі сторінки man. Все bg,hard, bg,soft, fg,hardі fg,softдати мені часи більш ніж два менуету повернутися.

Настройка retrans=1,retry=0(у поєднанні з будь-яким із перерахованих вище), однак, дає мені раз три секунди. Досить пристойний. Хоча я не впевнений, що означає кожна комбінація. Копатимуться далі.

Також я натрапив на варіанти autofs MOUNT_WAITі UMOUNT_WAIT. Я не зміг отримати з ними якісь різні результати, але буду намагатися. Здається, це хороший спосіб використовувати "більш захищений" (він також більше спроб і т.д.) NFS-варіант, але швидкий час повернення для автофайлів, чи ні?


1
Там також , як видається, і інші варіанти, наприклад , rsize=32768,wsize=32768,noatimeяк зазначено тут: techrepublic.com/blog/opensource / ...
Ehtesh Чоудхурі

-1

Щоб налаштувати файлову систему NFS для автоматичного монтажу кожного разу при запуску системи Red Hat Linux, потрібно додати запис для цієї файлової системи NFS у файл / etc / fstab. Файл / etc / fstab містить інформацію про всі різні види змонтованих (і доступних для монтажу) файлових систем для вашої системи Red Hat Linux. EX:: nfs Відповідає імені хоста, IP-адреси або повноцінного доменного імені сервера, який експортує файлову систему. Шлях до експортованого каталогу. Вказує, де в локальній файловій системі змонтувати експортований каталог. Ця точка монтування повинна існувати до того, як / etc / fstab буде прочитаний або монтер не вдасться. Область визначає параметри кріплення для файлової системи. Наприклад, якщо область параметрів констатує rw, suid, експортована файлова система буде змонтована для читання-запису, а користувач та groupid встановлені сервером. Зауважте, що тут не використовуються дужки

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