Размонтируйте монтирование nfs там, где исчез сервер nfs

32

Сервер A раньше был сервером NFS. Сервер B монтировал экспорт этого. Все было отлично. Затем А умер. Просто выключил. Ушел. Пропал.

Однако эта папка все еще монтируется на B. Я, очевидно, не могу cdв нее или что-то еще. Однако umount /mnt/myfolderпросто виснет и не будет размонтироваться. Есть ли способ его размонтировать, не перезапуская B?

И клиент, и сервер являются машинами Linux.

Рори
источник

Ответы:

45

Предполагая Linux:

umount -f -l /mnt/myfolder

Будет вроде решить проблему:

-f Принудительное отключение (в случае недоступности системы NFS). (Требуется ядро ​​2.1.116 или новее.)

-l Ленивый демонтировать. Отключите файловую систему от иерархии файловой системы и очистите все ссылки на файловую систему, как только она больше не будет занята. (Требуется ядро ​​2.4.11 или новее.)

-f также существует в Solaris и AIX.

Дуглас Лидер
источник
1
У меня была такая же проблема, гуглил и пришел сюда. Да - ленивый флаг действительно помог мне здесь ... - если сам по себе не делал этого ...
wawawawa
да, должна быть опция -l "-f" ЖЕ ВРЕМЯ.
liuyang1
2
Кроме того, иногда я добивался большего успеха, указав удаленный адрес, а не локальный путь для umount, например. umount -f -l nfsserver:/export/thefolder,
оливер
18

Развивая подсказку, данную Дэвидом Пашли ,

если «umount -l» не решит вашу проблему, вы можете настроить поддельный сервер с тем же адресом, что и ушедший, но на самом деле вам не нужно устанавливать новый сервер или что-то еще. Самый простой выход из ситуации блокировки / зависания - это настроить локальный IP-интерфейс псевдонимов следующим образом:

ifconfig eth0:nfstmp 11.22.33.44 netmask 255.255.255.255
umount -l /mnt/deadnfsmount    # -l or -f or whichever that gets the job done
ifconfig eth0:nfstmp down

(очевидно, что 11.22.33.44 является (прежним) IP-адресом (теперь мертвого) NFS-сервера)

Конни
источник
Это работало для меня, за исключением того, что мне нужно было запустить локальный сервер NFS.
Гак
6

Возможно, было бы целесообразно добавить эту intrопцию для любых /etc/fstabзаписей, которые могут привести к зависанию или сбою. Если вы не используете опции softили intr, то когда сервер, на котором размещены файлы NFS, выходит из строя, сервер, на котором монтируются файлы (клиент), может зависнуть при загрузке.

По словам man 5 nfs:

soft / hard
Определяет поведение восстановления клиента NFS после истечения времени ожидания запроса NFS. Если ни одна из этих опций не указана (или если указана сложная опция), запросы NFS повторяются бесконечно. Если указана программная опция, то клиент NFS не выполнит запрос NFS после отправки ретрансляций retrans, в результате чего клиент NFS вернет ошибку вызывающему приложению.

... и затем он говорит, что intrэто предпочтительнее soft, но он имеет аналогичный эффект предотвращения зависания.

SG
источник
3
Обратите внимание, что в более новых версиях nfs intr устарела или не имеет операций - в этом случае следует использовать soft.
Пол
3

umount -f /mnt/myfolderдолжен решить это. Смотрите страницу руководства umount.

pauska
источник
2
Это не совсем так с NFS и мертвым сервером. Вам также нужен ленивый флаг (или хитрость с добавлением IfAlias). lsof и fuser все зависают и размонтируют -f говорит "устройство занято".
Вававава
1

Кроме того, использование automount будет выполнять размонтирование общих ресурсов NFS, когда они станут недоступными, что позволит избежать застрять в этой ситуации в будущем.

Coops
источник
2
Не обязательно. Автомонтирование также может зависнуть в этом состоянии, если вы попытаетесь каким-либо образом получить доступ к каталогу, процесс зависнет.
Камил Кисиэль
Да, автомонтировщик вызывает столько проблем, сколько решает.
pjc50
1

Мне никогда не удавалось добраться umount -fдо работы. Полезный прием - настроить другой сервер, монтирующий тот же экспорт, присвоив ему тот же IP-адрес, что и у старого сервера. Ваш клиент NFS должен думать, что все вернулось как обычно, и процессы будут разблокированы. Затем вы можете размонтировать точку монтирования и удалить IP-адрес с временного сервера NFS.

Дэвид Пашли
источник
2
-l (ленивый) - это ключ, как упомянуто выше
Мэтт Симмонс
1

Для Solaris перезапуск клиента NFS разрешит «жесткую спираль смерти». Команда для Solaris 10: «svcadm restart network / nfs / client». В последнее время я не пробовал это делать на Linux-боксе (поскольку все они монтируются с флагом «intr», поэтому у них редко возникает эта проблема), но, вероятно, это тоже исправит проблема.

Джон Грант
источник
0

Я только что заметил, что принудительное отключение в ядре 3.2.0 зависает при подключении NFSv4. Размонтирование NFSv3 работает нормально.

$ mount [...] -o nfsvers=3
Куу Тирронен
источник
0

просто специфическое для OS X продолжение, так как команды монтирования в основном не зависят от nix: флаг -l (lazy) не существует в OS X, однако флаг -f (force) существует и оказался достаточным , Кроме того, сгенерированные системой точки монтирования находятся в / Volumes (/ Volumes / myserversexport)

Нильс
источник
0

Я встречал эту же проблему. Поскольку сервер NFS был удален, я не могу размонтировать nfs из клиента. Я попробовал следующий трюк, посмотрите, может ли он быть полезным. Поскольку исходный сервер NFS пропал, я создаю новый сервер с тем же IP-адресом и экспортом. Затем я пытаюсь umount -f / mnt / nfs_part. Теперь я наконец смог размонтировать NFS.

ЛВС
источник