Как избежать зависания sshfs?

Как избежать зависания sshfs?

Я установил sshfs на Ubuntu 12.04 и пытаюсь подключиться к нескольким удаленным серверам.

Сначала монтирование кажется успешным. Иногда Gnome даже подхватывает его и отображает окно «Найдено новое устройство» в нижней части экрана. Но с этого момента мало что работает. Или, по крайней мере, больше не работает. Первые пару раз, когда я подключался, все работало нормально, и мне удалось передать некоторые файлы. Затем я отключился с помощью, fusermount -u <folder>и после повторного подключения немного позже начались проблемы.

Теперь после выполнения sshfs -o ServerAliveInterval=15 -o reconnect -C -o workaround=all -o idmap=user root@<host>:/ <folder>, когда я меняю каталог на точку монтирования, оболочка просто зависает. Странно, ls -al <folder>работает, когда выводит только корень удаленной системы, но ничего больше. Также все файловые проводники, которые я пробовал, зависают так же, как cd <folder>.

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

sshfs -Vдает это:

SSHFS version 2.3
FUSE library version: 2.8.6
fusermount version: 2.8.6
using FUSE kernel interface version 7.12

решение1

Если вы запустили sshfs с помощью -o reconnect, завершение зависшего процесса SSH заставит его переподключиться.

Сначала найдите соответствующий SSH, например:

ps -ef
...
user 9644 1 0 11:15 ? 00:00:00 ssh -x -a -oClearAllForwardings=yes -2 <host> -s sftp
...

Вы можете отличить его по отличительному набору опций и хосту, к которому вы подключались по sshfs. Затем убейте его, обычного SIGTERM должно быть достаточно:

kill 9644

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

решение2

Используйте sshfs -o reconnect,ServerAliveInterval=1 your-remote-ssh: your-local-folderдля sshотправки сообщения на сервер каждую секунду. Это позволит sshfsбыстро обнаружить отключение и автоматически переподключиться, чтобы избежать возможных зависаний и заморозок.

решение3

Это старый пост, и я не предлагаю окончательного решения, но, думаю, у меня была та же проблема (на Ubuntu 14.04), и в моем случае ленивое размонтирование и повторное монтирование сработало (хотя это немного раздражает):

fusermount -u -z /local/folder
sshfs -C user@server:/remote/folder /local/folder

Подозреваю, вы просто просматривали кэшированные результаты с помощью ls -al <folder>.

решение4

У меня была та же проблема — cdпроцесс занял время, почти приближающееся к событию Большого взрыва.

Проблема была очень простой - я использовал расширения Git для оболочки, и она работала git statusпод капотом. Это означает, что Git должен был сначала загрузить много данных.

Переход на оболочку «без расширений» решил проблемы с cd.

Связанный контент