it-swarm-ru.tech

Как лучше справиться с отключениями от сервера монтируемых sshfs?

У меня есть несколько каталогов, смонтированных через sshfs. Иногда я получаю отключение от сервера (не настраивается мной). Я обычно монтирую каталоги вот так

sshfs [email protected]:/home/user /mnt/example

Когда сервер отключается, подсистема sshfs не mount/free каталог, а вместо этого блокирует его недоступность. Монтирование все еще видно при наборе mount. Когда я печатаю

ls /mnt/example

процесс заблокирован (также Ctrl+c не помогает). Поэтому я делаю

Sudo umount -l /mnt/example
# find pid of corresponding process:
ps aux | grep example.com
kill -9 <pid of locked sshfs process>

Есть ли лучший способ справиться с этим? Очевидно, что sshfs должен выполнить mount и очистить ... В идеале, он будет автоматически переподключен.

60
Sebastian

Вы можете запустить sshfs с параметром "восстановить соединение". Мы используем sshfs с PAM/automount для совместного использования файлов сервера для каждой рабочей станции в нашей сети. Мы используем -oconconnect в качестве параметра для sshfs, главным образом потому, что наши пользователи приостановили работу своих компьютеров, а при пробуждении sshfs не будет повторно подключаться (или отвечать, или что-то еще).

Например:

sshfs [email protected]:/home/mvaldez/REMOTE /home/mvaldez/RemoteDocs -o reconnect,idmap=user,password_stdin,dev,suid

Просто обратите внимание, что если удаленный компьютер действительно не работает, sshfs может перестать отвечать на запросы в течение длительного времени.

45
MV.

Это можно обойти, уменьшив время ожидания. Добавьте следующее к $HOME/.ssh/config или /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

Это приводит к задержке в 45 секунд.

11
Thor

У меня есть сервер, который я использую для хранения, и из-за нехватки места, где я живу, я храню его в другом месте. Чтобы перенести файлы в мою сеть, я использую Raspberry Pi, который монтирует файлы с сервера с помощью sshfs.

Недавно мне пришлось перейти на raspbian jessie из-за сбоя питания, и я понял, что sshfs стал серьезно нестабильным. Папки будут правильно смонтированы, но через некоторое время я не смогу к ним подключиться, и Raspberry Pi зависнет, если я захочу перечислить содержимое креплений.

То, что я попробовал, было:

  1. использовал переподключение в fstab
  2. использовал ServerAliveInterval и ServerAliveCountMax в файле .ssh/config, но безрезультатно.
  3. другие решения я читаю на большинстве форумов.

но не игра в кости! Пока я не изменил файл fstab следующим образом:

sshfs#[email protected]:/remote/folder /local/mount/dir Fuse IdentityFile=sshkeyfile,Port=XXX,uid=1000,gid=1000,allow_other,_netdev,ServerAliveInterval=45,ServerAliveCountMax=2,reconnect,noatime,auto 0 0

И это работает! Нет больше отключений! Похоже, что sshfs по какой-то причине не читает конфигурационный файл ssh и сигналы поддержки активности никогда не отправлялись.

6
lucian

Это звучит как работа для авторов. Он довольно искусен в работе с сетевыми монтировками различного типа (nfs, samba, sshfs, вы называете это) и замечает, когда эти вещи нужно перемонтировать. Он также может позаботиться о размонтировании их после периодов неиспользования и монтировании при запросе файловой системы.

3
Caleb

Если есть еще люди, сталкивающиеся с этой проблемой, я все равно не смог бы ее исправить. Я нашел рабочий обходной путь.

Следующий скрипт Ruby добился цели. Он создает папку с именем keepalive снова и снова. Просто продолжайте работать до бесконечности.

$i =1 
$num =0
begin
    puts("Inside the loop i = #$i" )
    $i +=1
    puts 'creating obj'
    system 'mkdir  /{yourmountpoint}/keepalive'
    sleep 5
    puts 'we did it, it should be still alive'
end while $i > $num

Я не знаю, почему это работает. Но, похоже, это решает мою проблему: я неактивен на минуту и ​​все зависает. Он просто пытается создать папку в точке монтирования, и это, кажется, не дает ей отключиться и как-то заморозить все.

1
Vudew