Как (чисто) отключить sshfs при монтировании в точке монтирования NFS?


15

У моего коллеги есть настольный компьютер с /homeобщим доступом на нашем файловом сервере. Я разработал Perl-скрипт для sshfsмонтирования определенного каталога на другом хосте SSH, который отлично работает на моем ноутбуке.

На его компьютере сценарий не может отключиться sshfsв конце и оставляет точку монтирования нечистой. Я не нашел никакого способа восстановить точку монтирования, кроме перезагрузки. После некоторого тестирования я обнаружил, что разница между нашими настройками заключается в том, что он /homeустановлен на NFS. По своему /tmpэто работает без нареканий.

После монтирования во время работы скрипта все нормально. Но когда убивают sshfsпроцесс он включен в список <defunc>по psдо родительского процесса (Perl скрипт) завершает свою работу. При запуске необработанной sshfsкоманды в оболочке проблема по-прежнему возникает.

ls -dlВыход для MOUNTPOINT выглядит следующим образом (как это вспомнил - у меня нет никакой реальной копии выхода оболочки под рукой):

? 1 ? ? 4096 Feb  9 15:37 file_archive/

(только вопросительные знаки для большей информации, по крайней мере, все детали разрешения)

Монтирование sshfs по-прежнему отображается в списке, mountно операция размонтирования завершается неудачно с разрешением на ошибку, запрещенным даже при выполнении операции as root.

Я искал в Google, но нашел только много сравнений между sshfs и NFS для запуска сетевых файловых систем. Как безопасно выполнить монтирование / размонтирование sshfs в каталоге NFS?

Ответы:


38

Вы должны иметь возможность размонтировать общий ресурс sshfs, выполнив:

 fusermount -u /path/to/sshfs/share

Я попробовал это, но получил разрешение отказано . Конечно, обычный пользователь umountдолжен потерпеть неудачу при запуске от имени пользователя без полномочий root.
Даниэль Бёмер

Скорее всего, причина, по которой вы не можете размонтировать (любым способом), заключается в том, что его домашний каталог монтируется из NFS, куда он экспортируется с root_squashопцией. Таким образом, root не имеет полномочий в своем домашнем каталоге. Вы можете выключить, root_squashно, вероятно, безопаснее просто смонтировать в другом месте.
JFlo

2
Я забываю каждый раз, что umountили fusermount -uне работает, когда каталог где-то используется. Так cdчто из каталога перед использованием fusermount -uили использованиемlsof /my/local/mountpoint
eli

16

Просто завершите процесс с помощью pkill и затем смонтируйте путь к смонтированной папке.

 pkill -kill -f "sshfs" && umount /path/to/sshfs/share

Иногда мне нужно сделать «sudo umount -f» или «sudo umount -l» вместо «umount».
августа

0
sudo diskutil umount force ~/mount/

Похоже, эта команда работает в OS X.


6
Можете ли вы расширить свой ответ, чтобы объяснить, что делает этот код и как он решает проблему? Необъяснимый код не рекомендуется , потому что он не учит решению. Спасибо. из очереди на просмотр
fixer1234

Это для OS X. Вопрос задан для Linux.
Дункан Х Симпсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.