Зупинити пошкоджені кріплення NFS від блокування каталогу?


17

У мене є дещо цікаве налаштування: Сервер з декількома віддаленими серверами NFS, встановленими у папці, причому ця папка потім реекспортується через Samba. Подумайте про це як проксі-сервер, зберігаючи всі спільні папки в одному місці.

Моя проблема, однак, полягає в тому, що щоразу, коли одна з версій знижується (перезапуск сервера, перезапуск сервісу, зовнішній жорсткий диск, який сервер експортував, видалено тощо), будь-яка спроба прочитати блоки кріплення назавжди. Це також означає, що запуск lsу цьому каталозі замерзає, а користувачі, які з'єднуються через Samba, також замерзають. Це також кілька разів спричинило блокування однієї з моїх задач із встановлення записів, що мало не зламало сервер, оскільки було сотні заблокованих процесів. Це стає дуже дратівливим, оскільки мені зазвичай доводиться виводити термінал, який не чекає lsзакінчення (не можу його скасувати), бігати for i in *; do sudo umount -l -f $i; done;, сподіватися, що він працює, виправити проблему, а потім перевстановити все.

Чи є спосіб встановити спільну частину NFS з умовою, що якщо з'єднання не вдасться з будь-якої причини (бажано з періодом повторної спроби), то кріплення відключиться, або принаймні не блокується?


Чи можете ви дописувати /etc/fstab?
Карлсон

Відповіді:


19

Зазвичай під час монтажу NFS рекомендується встановити прапори, подібні до цього:

bg,intr,soft
   bg      If  the  first  NFS  mount  attempt times out, retry the mount in the 
           background.  After a mount operation is backgrounded, all subsequent mounts
           on the same NFS  server  will  be  backgrounded immediately, without first
           attempting the mount.  A missing mount point is treated as a timeout, to
           allow for nested NFS mounts.
   soft    If  an  NFS  file operation has a major timeout then report an I/O error
           to the calling program.  The default is to continue retrying NFS file
           operations indefinitely.
   intr    If  an  NFS  file  operation  has  a major timeout and it is hard mounted,
           then allow signals to interupt the file operation and cause it to return
           EINTR to the calling program.  The default is to not allow file operations
           to be interrupted.

Ви також можете встановити:

timeo=5,retrans=5,actimeo=10,retry=5

що повинно дозволити встановлення NFS до таймауту та зробити каталог недоступним, якщо сервер NFS перестане з'єднання, а не чекає на повторення.

Перегляньте це посилання для отримання додаткової інформації про параметри кріплення NFS


Використання лише bg, intr, soft все ще залишає завис 120 секунд у Fedora 20. Але додавання timeo = 5, retrans = 5, actimeo = 10, повтор = 5 робить це приємним і швидким. Спасибі!
Грег Шеремета

4
"Параметр кріплення intr / nointr застарілий після ядра 2.6.25. Тільки SIGKILL може перервати очікувані операції NFS на цих ядрах, і якщо зазначено, ця опція монтажу ігнорується, щоб забезпечити зворотну сумісність зі старими ядрами." "Ця опція передбачена для зворотної сумісності. Вона ігнорується після ядра 2.6.25."
Девід К. Єпископ

1
@ DavidC.Bishop звідки ця цитата? Чи можете ви надати посилання? Спасибі.
бекко

2
@becko: Цитата SIGKILL походить зі сторінки nfs man (просто шукайте "nointr"). Новіші версії, наприклад, в моїй системі тепер просто читають "Цей параметр передбачений для зворотної сумісності. Він ігнорується після ядра 2.6.25." зв'язаний .
Девід С. Бішоп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.