Как вы заставляете соединение CIFS размонтировать

149

У меня есть общий ресурс CIFS, установленный на компьютере с Linux. Сервер CIFS не работает или интернет-соединение не работает, и все, что касается монтирования CIFS, теперь занимает несколько минут по таймауту и ​​не может быть отключено во время ожидания. Я даже не могу запустить ls в моем домашнем каталоге, потому что есть символическая ссылка, указывающая внутри монтирования CIFS, и ls пытается перейти по нему, чтобы решить, какой цвет должен быть. Если я попытаюсь размонтировать его (даже с -fl), процесс размонтирования зависнет так же, как и ls. Даже sudo kill -9 не может его убить. Как заставить ядро ​​отключиться?

smoofra
источник

Ответы:

186

Я использую lazy unmount: umount -l(это строчные буквы L)

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

Кемаль
источник
42
Сначала это не сработало для меня. После экспериментов некоторое время (в новом виртуальном терминале каждый раз) я пришел с этим: sudo umount -a -t cifs -l. Либо это сработало, либо первый размонтирование заняло некоторое время (120–300 с?). Я получил много предупреждений о том, что umount заблокирован более чем на 120 секунд.
Питер Джарич
2
А потом мне пришлось убить всех висящих верхов, прежде чем я смог снова сесть.
Питер Ярич
13
Мне нужно было также sudo umount -a -t cifs -l заставить его работать.
Джома
4
Это не сработало для меня на самом деле. Я попробовал все остальное выше, и монтирование cifs исчезло из моего списка / etc / mtab, но его нельзя перемонтировать, поэтому оно практически бесполезно. Монтирование cifs зависает, когда мой компьютер приостанавливается, пока монтируется общий ресурс cifs.
DH4
Я согласен, umount -a -t cifs -l - это то, что мне тоже нужно, чтобы пройти через страшную фразу "Host is Down".
Пес
70

umount -a -t cifs -l

работал на меня, как шарм на CentOS 6.3. Это спасло меня от перезагрузки сервера.

ivanlan
источник
8
Вы не возражаете бы остановиться на то , что -aи -lпереключатели, и как они помогают?
Исаак
10
-a и -t cifs размонтируют все файловые системы cifs. лучше указать тот, который вы хотите отключить
dwery
2
Это идеально, если вы монтируете через файловый браузер и не можете найти точку монтирования, которая нарушает работу - при условии, что вы не против размонтировать все!
мудрец
1
Спасибо, это сэкономило много времени сегодня!
Агам
13

На RHEL 6 это сработало:

umount -f -a -t cifs -l 
Энди Фрэйли
источник
Это сработало, пришлось ждать полных 30 минут (тайм-аут), прежде чем я смог перемонтировать. Вероятно, лучше всего сделать мягкое крепление, как указывает jnice.
XMAN
11

Это работает для меня (Ubuntu 13.10 Desktop на сервер Ubuntu 14.04): -

 sudo umount -f /mnt/my_share

Установлен с

 sudo mount -t cifs -o username=me,password=mine //192.168.0.111/serv_share /mnt/my_share

где serv_share - это то, что установлено и указано в файле smb.conf.

Фил Джонсон
источник
6

У меня была эта проблема в течение дня, пока я не нашел реальное решение. Вместо того, чтобы пытаться принудительно размонтировать общий ресурс smb, который зависает, смонтируйте общий ресурс с опцией «soft». Если процесс пытается подключиться к недоступному общему ресурсу, он прекращает попытки через определенное время.

сделать мягкое крепление Отказ файловых системных вызовов через несколько секунд.

mount -t smbfs -o soft //username@server/share /users/username/smb/share

stat /users/username/smb/share/file
stat: /users/username/smb/share/file: stat: Operation timed out

Может не быть реальным ответом на ваш вопрос, но это решение проблемы

jnice
источник
19
Если вы посмотрите, man mount.cifsвы заметите, что softна самом деле это по умолчанию.
Бендж
2

Попробуйте размонтировать -f / mnt / share. Работает нормально с NFS, никогда не пробовал с cifs.

Кроме того, взгляните на autofs, он будет монтировать общий ресурс только при обращении и размонтировать его в загробном мире.

На www.howtoforge.net есть хороший учебник

Солнечный Миленов
источник
5
к сожалению -f не работает с CIFS. Край все еще просто висит.
Smoofra
2

У меня была очень похожая проблема с davfs. На странице руководства umount.davfsя обнаружил, что -f -l -n -r -vпараметры игнорируются umount.davfs. Чтобы принудительно размонтировать мое крепление davfs, мне пришлось использовать umount -i -f -l /media/davmount.

Бенедикт Коппель
источник
1

Существует опция -f для размонтирования, которую вы можете попробовать:

umount -f /mnt/fileshare

Вы указываете опцию '-t cifs' для монтирования? Также убедитесь, что вы не указываете «жесткий» вариант для монтирования.

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

Крис Этли
источник
4
-f и -t не помогают, все еще висит.
Smoofra
Вы перезагрузились после добавления опции '-t cifs' для монтирования? Я не думаю, что вы можете что-то сделать, чтобы исправить застрявшую точку монтирования прямо сейчас, ваша единственная надежда - попытаться монтировать ее так, чтобы в будущем она была более устойчивой к сбоям.
Крис Атли
1
umount -f -t cifs -l /mnt &

Будьте осторожны &, пусть umountработает в фоновом режиме. umountсначала отключит файловую систему, так что вы ничего не найдете /mnt. Если вы бежитеdf команду, то она будет umount /mntпринудительно.

zhjb7
источник
-2

На RHEL 6 это сработало и у меня:

umount -f -a -t cifs -l FOLDER_NAME

chataros
источник
-8

Ленивый размонтированный сделает всю работу за вас.

umount -l <mount path>
JimmyPheonix
источник