Принудительно размонтировать NFS-установленный каталог [закрыто]

163

У меня есть NFS-установленный каталог на Linux-машине, которая зависла. Я попытался размонтировать, но это не сработало:

$ umount -f /mnt/data
$ umount2: Device or resource busy
$ umount: /mnt/data: device is busy

Если я набираю « mount», похоже, что каталог больше не монтируется, но он зависает, если я делаю « ls /mnt/data», и если я пытаюсь удалить точку монтирования, я получаю:

$ rmdir /mnt/data
rmdir: /mnt/data: Device or resource busy

Могу ли я что-нибудь сделать, кроме перезагрузки машины?

Лорин Хохштайн
источник
3
Я согласен, кто бы ни голосовал, чтобы закрыть это серьезно запутался. Эта проблема мучила меня годами, и ответ ниже, umount -l, для Linux - первое найденное мной решение, которое сработало.
Lizardx
1
хорошо, но вы можете найти его в Super User. хотя я не понимаю, почему вопрос не был перемещен, а не закрыт.
Deeenes
Ибо umount --forceпостарается размонтировать и / -vили -vvvдаже больше покажет, в чем проблема с mount. Так что попробуйте:umount -vvv --force /badmount
Gaoithe
5
@deeenes Потому что этот вопрос был задан в сентябре 2008 года, а Super User не был запущен до июля 2009 года ;-)
Martin Tournoij
@Carpetsmoker, но он был помечен как не по теме в 2013 году
намеки

Ответы:

254

Вы можете попробовать ленивый демонтировать:

umount -l
tessein
источник
3
Это не везде реализовано. У меня нет этого во FreeBSD, например.
Даниэль Папасян
28
@Daniel: Конечно, но это вопрос Linux (помеченный как таковой даже), и Linux имеет его.
Юрген А. Эрхард
5
Я попробовал эту команду в Ubuntu, и она не сработала.
Киран Эндрюс
1
Это сработало для меня (Slackware 14.0). У меня было крепление CIFS, а не NFS, которое висело все (в том числе lsof). Я вызвал проблему, сломав сценарий резервного копирования, который я пишу. Скрипт монтирует и размонтирует каталог, но что-то не так из- rsyncза моей путаницы. Я не знал о ленивой разборки. Это могло быть устройство NAS, вызывающее все проблемы. После успешного размонтирования оказалось, что мне пришлось перезагрузить устройство, прежде чем я смог смонтировать его снова.
Пэдди
10
@KieranAndrews и все остальные в Ubuntu, попробуйте fusermount -uz /path/to/file. Сработал шарм для меня! :)
Мэтт Флетчер
78

Если сервер NFS исчез, и вы не можете вернуть его в оперативный режим, я использую одну хитрость - добавление псевдонима к интерфейсу с IP-адресом сервера NFS (в данном примере - 192.0.2.55).

Linux

Команда для этого примерно такая:

ifconfig eth0:fakenfs 192.0.2.55 netmask 255.255.255.255

Где 192.0.2.55 - это IP-адрес удаленного NFS-сервера. После этого вы сможете проверить связь с адресом, а также размонтировать файловую систему (используйте unmount -f). Затем вы должны уничтожить интерфейс с псевдонимами, чтобы больше не перенаправлять трафик на старый сервер NFS:

ifconfig eth0:fakenfs down

FreeBSD и подобные операционные системы

Команда будет что-то вроде:

ifconfig em0 alias 192.0.2.55 netmask 255.255.255.255

А потом убрать это:

ifconfig em0 delete 192.0.2.55

man ifconfig (8) для большего!

Даниэль Папасян
источник
5
Комбинация ifconfig eth0:fakenfs ...' and umount -f -l / my / mount / dir 'решила проблему для меня.
Очков
1
Я тоже, проблема с монтированием мешает мне приостановить работу моего ноутбука, так что это решение действительно полезно. Я сделал свой собственный скрипт для автоматизации тоже.
Альбфан
Так что для удаления псевдонима из Linux это будет ifconfig eth0:fakenfs delete? Или я ищу что-то еще? Как ifconfig eth0 delete 192.0.2.55?
Эхтеш Чоудхури
2
@Shurane В Linux удаление псевдонима с помощью ifconfig eth0:fakenfs downдолжно сделать свое дело.
Свен
1
спасибо, блестящая работа вокруг! в моем случае сервер nfs вернулся в сеть и все еще не мог размонтировать его, это
помогло
20

Попробуйте запустить

lsof | grep /mnt/data

В этом списке должны быть перечислены все процессы, которые обращаются к / mnt / data и которые могут помешать его размонтированию.

Райан Ахерн
источник
1
Определенно полезно, хотя и не спасло меня полностью. Но полезно.
Джеймс Т Снелл
2
Когда lsof зависает навсегда, попробуйте "lsof -b" (в NFS обнаружена ошибка lsof, см., Например, bugzilla.redhat.com/show_bug.cgi?id=962755 ).
dr0i
11

У меня была такая же проблема, и ни umount /path -f, ни umount.nfs /path -f, ни fuser -km /path, не работает

наконец я нашел простое решение>. <

sudo /etc/init.d/nfs-common restart, тогда давайте сделаем простое umount;-)

Даниэль Н.
источник
5
Работал для меня сumount -f -l ...
mivk
На сервере Ubuntu 14.04 мне пришлось sudo service nfs-kernel-server restart, но ваш ответ определенно привел меня на правильный путь, спасибо!
Мурмель
4

Ваш NFS сервер исчез.

В идеале лучше всего, если сервер NFS вернется.

Если нет, то «umount -f» должен был сработать. Это не всегда работает, но часто будет.

Если вы знаете, какие процессы используют файловую систему NFS, вы можете попытаться убить эти процессы, и тогда, возможно, сработает демонтирование.

Наконец, я думаю, вам нужно перезагрузить компьютер.

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


источник
Мягкий и жесткий монтаж, кажется, является вопросом использования. Да, мягкое монтирование приведет к повреждению записываемых файлов, если сервер NFS по какой-то причине выйдет из строя, и, следовательно, может не подходить для критически важных системных каталогов, но для накопителя с некритичными файлами, такими как музыка и фильмы, будет работать просто хорошо.
Зрайм
4

Не могу найти рабочий ответ здесь; но в Linux вы можете запустить «umount.nfs4 / volume -f», и он определенно размонтирует его.

Дейв
источник
4
Разве umount.nfs4 не является подкомандой umount? Другими словами, так umount -f /some/mountpointже, как umount.nfs4 /some/mountpoint -f.
Вилле
1
Интересный. На моей стороне (после того, как NFS-сервер исчез): umountзвонки umount.nfs, зависания навсегда (независимо от варианта). umount.nfs4 /mnt -fзанимает довольно много времени, но завершается. umount.nfs4 /mnt -lзавершается немедленно (возможно, потому что он не ждет процессов).
Тино