2013-07-16 14 views
6

I mount filesystem remoto con sshfs. Se la connessione ssh scade, può causare il blocco di altre applicazioni (ad esempio, sessione vim con solo file locale aperto). Occorrono circa 10 minuti per il ripristino del sistema. Questo succede anche se monto il filesystem remoto in sola lettura. Perché? C'è un modo per montare sshfs in modo che non causi il blocco di altre applicazioni quando si utilizza una connessione non affidabile (ad es., Wifi)? Non ho bisogno di qualcosa di robusto, ho solo bisogno di essere in grado di visualizzare i file sul computer remoto, può essere di sola lettura.Montaggio sshfs su connessione non affidabile

Io uso lubuntu 12.10.

$sshfs -V 
SSHFS version 2.4 
FUSE library version: 2.9.0 
fusermount version: 2.9.0 
using FUSE kernel interface version 7.18 

risposta

1

Puoi giocare un po 'con le opzioni di sshfs, ad esempio, consente la compressione, la riconnessione automatica e la bandiera nodelay per TCP:

-C  equivalent to '-o compression=yes' 
-o reconnect 
-o workaround=LIST 
    [no]nodelaysrv 
       set nodelay tcp flag in ssh (default: off) 

sshfs server:/srv/homes /mnt/mountpoint -C -o reconnect -o workaround=nodelaysrv 

Ma ciò che deve darmi risultati migliori è usando NFS, non ho i ritardi che ho avuto con sshfs ed è piuttosto standard nell'ambiente * nix, puoi esportare la tua directory con l'opzione di sola lettura dandoti una velocità extra. Sebbene si noti che NFS non è un protocollo crittografato.

Server:

# File: /etc/exports 
/srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) 

Cliente:

mount server:/srv/homes /mnt/mountpoint 
+4

-1 ... per raccomandare la connessione non criptata su una criptata senza alcun avviso – kubanczyk

7

Usa -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

Queste ServerAlive opzioni causano gli errori di I/O a saltar fuori dopo un minuto di interruzione di rete. Senza queste opzioni, i processi che presentano I/O hang sembrano dormire indefinitamente, anche dopo che sshfs diventa reconnect 'ed.

1

Monitorare l'host remoto e terminare il processo sshfs locale se si pensa che il lato remoto sia andato. Puoi farlo in molti modi diversi. Per esempio avviare il ping in quel modo in un modo bash:

mountpoint=~/mnt/google 

sshfs -o reconnect,ServerAliveInterval=5,ServerAliveCountMax=3 [email protected]:/ "$mountpoint" 

while : 
do 
    if ping -c 3 google.com 
    then 
    echo "google.com is still up" 
    else 
    # find sshfs pid 
    sshfsPids=$(ps -C sshfs -f | grep "$mountpoint" | grep -v grep | awk '{print $2}' | tr '\n' ' ') 
    kill -SIGTERM "$sshfsPids" 
    fi 
done 

Se siete ok per utilizzare approccio watchdog esterno per il collegamento in considerazione questo progetto: https://github.com/RuralYak/sshfs-watchdog che fa più o meno lo stesso, ma in un modo più sofisticato

Problemi correlati