it-swarm-eu.dev

Jaký je lepší způsob, jak se vypořádat s odpojením serverů sshfs?

Mám několik adresářů připojených přes sshfs. Někdy dostanu odpojení od serveru (nelze nakonfigurovat já). Takové adresáře obvykle připojím

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

Když se server odpojí, subsystém sshfs ne mount/free adresář, ale místo toho jej zamkne jako nepřístupný. Při psaní mount je připojení stále viditelné. Když píšu

ls /mnt/example

proces se uzamkne (také Ctrl+c nepomůže). Proto ano

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

Existuje lepší způsob, jak se s tím vypořádat? Zjevně sshfs by měl udělat mount a vyčistit ... V ideálním případě by se automaticky znovu připojil.

60
Sebastian

Sshfs můžete spouštět pomocí možnosti „znovu připojit“. Sshfs s PAM/automount používáme ke sdílení serverových souborů pro každou pracovní stanici v naší síti. Jako parametr pro sshfs používáme -o reconnect, hlavně proto, že naši uživatelé pozastavili své počítače a po probuzení sshfs by se znovu nepřipojili (nebo neodpověděli ani nic).

Například:

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

Jen poznámka: pokud je vzdálený počítač opravdu nefunkční, sshfs může na dlouhou dobu přestat reagovat.

45
MV.

To lze vyřešit zkrácením časového limitu. Přidejte následující k $HOME/.ssh/config nebo /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

Výsledkem je časový limit 45 sekund.

11
Thor

Mám server, který používám pro ukládání a pro nedostatek místa, kde bydlím, uchovávám jej na jiném místě. Abych přenesl soubory do mé sítě, používám Raspberry Pi, který připojuje soubory ze serveru pomocí sshfs.

Nedávno jsem musel upgradovat na raspbian jessie kvůli výpadku napájení a uvědomil jsem si, že sshfs se stávají vážně nestabilními. Složky by byly řádně připojeny, ale po nějaké době bych se k nim nemohl připojit a Raspberry Pi by zamrzl, kdybych chtěl vyjmenovat obsah přípojek.

Zkoušel jsem to:

  1. použité znovu v fstab
  2. použili ServerAliveInterval a ServerAliveCountMax v souboru .ssh/config, ale bez úspěchu.
  3. další řešení, která jsem četl na většině fór.

ale žádné kostky! Dokud jsem neupravil soubor fstab takto:

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

A funguje to! Žádné další odpojení! Vypadá to, že sshfs z nějakého důvodu nečte konfigurační soubor ssh a udržovací signály nebyly nikdy odeslány.

6
lucian

To zní jako práce pro autofy. Je to spíše zběhlé při manipulaci se síťovými přípojkami různých druhů (nfs, samba, sshfs, pojmenujete) a všimnete si, kdy je třeba tyto věci znovu namontovat. Může se také postarat o jejich odpojení po období nepoužívání a jejich připojení, když je podán požadavek na souborový systém.

3
Caleb

Pokud se s tímto problémem stále setkávají lidé, nemohl jsem ho vyřešit. Našel jsem pracovní řešení.

Následující skript Ruby udělal trik. Vytváří složku zvanou "keepalive" znovu a znovu. Jen to nechte běžet až do nekonečna).

$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

Nevím, proč to funguje. Zdá se však, že řeší můj problém, když jsem na minutu neaktivní a všechno mrzne. Pokouší se pouze vytvořit složku v místě připojení a zdá se, že ji nějakým způsobem neodpojí a nezmrazí.

1
Vudew