Остановить сломанные монтирования NFS от блокировки каталога?

17

У меня есть несколько интересная настройка: сервер с несколькими удаленными NFS-серверами, смонтированными в папке, и эта папка затем реэкспортируется через Samba. Думайте об этом как о прокси-сервере общего доступа, хранящем все общие папки в одном месте.

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

Есть ли способ смонтировать общий ресурс NFS с условием, что если соединение по какой-либо причине не удастся (желательно с периодом повтора), то монтирование демонтируется само или, по крайней мере, не блокируется?

TheLQ
источник
Вы можете опубликовать /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, retry = 5 делает его красивым и быстрым. Благодарность!
Грег Шеремета
4
«Опция монтирования intr / nointr устарела после ядра 2.6.25. Только SIGKILL может прервать ожидающую операцию NFS на этих ядрах, и если указано, эта опция монтирования игнорируется для обеспечения обратной совместимости со старыми ядрами». «Эта опция предназначена для обратной совместимости. Она игнорируется после ядра 2.6.25».
Дэвид С. Бишоп
1
@ DavidC.Bishop, откуда эта цитата? Можете дать ссылку? Благодарю.
Becko
2
@becko: Цитата SIGKILL взята с man-страницы nfs (просто найдите «nointr»). Более новые версии, такие как в моей системе, теперь просто читают: «Эта опция предназначена для обратной совместимости. Она игнорируется после ядра 2.6.25». линки .
Дэвид С. Бишоп