it-swarm.it

Qual è il modo migliore per gestire le disconnessioni dei montaggi sshfs da parte del server?

Ho diverse directory montate su sshfs. A volte ricevo disconnessioni dal server (non configurabile da me). Di solito monto le directory in questo modo

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

Quando un server si disconnette, il sottosistema sshfs non mount/free la directory ma la blocca inaccessibile. Il mount è ancora visibile quando si digita mount. Quando scrivo

ls /mnt/example

il processo viene bloccato (anche Ctrl+c non aiuta). Lo faccio quindi

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

C'è un modo migliore per affrontarlo? Ovviamente sshfs dovrebbe fare mount e ripulire ... Idealmente si riconnetterebbe automaticamente.

60
Sebastian

Puoi eseguire sshfs con l'opzione "riconnetti". Usiamo sshfs con PAM/automount per condividere i file del server per ogni workstation nella nostra rete. Usiamo -o riconnetti come parametro per sshfs, principalmente perché i nostri utenti hanno sospeso i loro computer e al risveglio sshfs non si riconnetterebbe (o rispondeva, o altro).

Per esempio:

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

Solo una nota, se il computer remoto è davvero spento, sshfs potrebbe non rispondere per molto tempo.

45
MV.

Questo può essere risolto diminuendo il timeout. Aggiungi quanto segue a $HOME/.ssh/config o /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

Ciò comporta un timeout di 45 secondi.

11
Thor

Ho un server che utilizzo per l'archiviazione e per mancanza di spazio in cui vivo, lo conservo in un'altra posizione. Per portare i file nella mia rete uso un Raspberry Pi che monta i file dal server usando sshfs.

Di recente ho dovuto passare a raspbian jessie a causa di un'interruzione di corrente e mi sono reso conto che sshfs è diventato gravemente instabile. Le cartelle sarebbero state montate correttamente ma dopo un po 'non sarei stato in grado di connettermi ad esse e il Raspberry Pi si sarebbe bloccato se volessi elencare il contenuto dei supporti.

Quello che ho provato è stato:

  1. usato riconnettere in fstab
  2. usato ServerAliveInterval e ServerAliveCountMax nel file .ssh/config ma senza risultati.
  3. altre soluzioni che ho letto sulla maggior parte dei forum.

ma niente dadi! Fino a quando non ho modificato il file fstab come segue:

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

E funziona! Niente più disconnessioni! Sembra che sshfs non legga il file di configurazione ssh per qualche motivo e i segnali keep alive non siano mai stati inviati.

6
lucian

Sembra un lavoro per autofs. È piuttosto abile nel gestire supporti di rete di vario tipo (nfs, samba, sshfs, lo chiami) e notando quando quelle cose hanno bisogno di essere rimontate. Può anche occuparsi di smontarli dopo periodi di inutilizzo e montarli quando viene effettuata una richiesta del file system.

3
Caleb

Se ci sono ancora persone che riscontrano questo problema, non potrei ancora risolverlo. Ho trovato una soluzione alternativa.

Il seguente Ruby ha fatto il trucco. Crea una cartella chiamata "keepalive" più e più volte. Continua a farlo funzionare fino all'infinito.

$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

Non so perché funzioni. Ma sembra risolvere il mio problema quando sono inattivo per un minuto e tutto si blocca. Cerca solo di creare una cartella nel punto di montaggio e questo sembra impedirgli di disconnettersi e congelare tutto in qualche modo.

1
Vudew