Що є кращим способом вирішити проблеми з відключенням серверних файлів sshfs?


58

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

sshfs user@server.example.com:/home/user /mnt/example

Коли сервер відключається, підсистема sshfs не змінює / звільняє каталог, а натомість блокує його недоступним. Кріплення все ще видно під час набору тексту 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 повинен виконувати облік та очищення ... В ідеалі він би підключився автоматично.



4
будь-яке рішення з використанням підтримуваного програмного забезпечення?
Себастьян

Відповіді:


45

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

Наприклад:

sshfs mvaldez@192.168.128.1:/home/mvaldez/REMOTE /home/mvaldez/RemoteDocs -o reconnect,idmap=user,password_stdin,dev,suid

Лише зауважте, якщо віддалений комп'ютер справді не працює, sshfs може довго не реагувати.


11

Це можна вирішити, зменшивши час очікування. Додайте до $HOME/.ssh/configабо /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

Це призводить до затримки часу в 45 секунд.


3
Це допоможе лише в тому, що в цьому проблема вини SSH. Існує більша проблема, sshfsяка не зачіпає смерть основного sshпроцесу витончено.
bahamat

Насправді це лише обхідне рішення і його слід фіксувати всередині sshfs.
Тор

Але лише багато шляхів вирішення однієї причини з багатьох. Його проблема, можливо, не має нічого спільного з кипаривами. Характер питання менший про причину і більше про прибирання до стійкого стану.
bahamat

5

У мене є сервер, який я використовую для зберігання, а за дефіциту місця, де я живу, зберігаю його в іншому місці. Для залучення файлів до моєї мережі я використовую малину pi, яка монтує файли з сервера за допомогою sshfs.

Нещодавно мені довелося перейти на raspbian jessie через відключення електроживлення і зрозумів, що sshfs стають серйозно нестабільними. Папки будуть належним чином встановлені, але через деякий час я не зможу підключитися до них, і малиновий пі замерз, якщо я захотів перерахувати вміст кріплень.

Що я спробував:

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

але без кісток! Поки я не змінив файл fstab наступним чином:

sshfs#user@server:/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, і сигнали збереження живих ніколи не надсилалися.


3

Це звучить як робота для авто. Він досить вмілий в обробці мережевих кріплень різного типу (nfs, samba, sshfs, ви його називаєте) та помічає, коли ці речі потребують перевстановлення. Він також може подбати про їх демонтажу після періодів використання та монтажу під час запиту файлової системи.


11
autofs виконають підключення на вимогу та можуть відключитись у режимі очікування (що зменшує проблемне часове вікно), але це не допоможе, якщо sshfs висить, оскільки сервер відключився.
Жил 'ТАК - перестань бути злим'

1

Якщо ще є люди, які стикаються з цією проблемою, я все одно не зміг її виправити. Я знайшов робоче рішення.

Наступний сценарій рубіну зробив свою справу. Він створює папку під назвою "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

Я не знаю, чому це працює. Але, здається, вирішується моя проблема там, де я хвилину неактивний і все замерзає. Він просто намагається створити папку в точці монтажу, і це, здається, не дозволяє їй якось відключатись і заморожувати все.


6
Ну, якщо це працює для вас, то вам не потрібен перекладач сценарію та рубін. Один рядок міг би так само добре:while true; do mkdir -p /x/y; sleep 2; done
mivk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.