2013-07-16 9 views
6

Ich mounte remote Dateisystem mit sshfs. Wenn die ssh-Verbindung das Zeitlimit überschreitet, kann dies dazu führen, dass andere Anwendungen hängen bleiben (z. B. vim-Sitzung mit nur geöffneter lokaler Datei). Es dauert ca. 10 Minuten, bis das System wiederhergestellt ist. Dies geschieht auch, wenn ich das Remote-Dateisystem schreibgeschützt mounte. Warum? Gibt es eine Möglichkeit, sshfs mount auszuführen, sodass andere Anwendungen nicht hängen bleiben, wenn eine unzuverlässige Verbindung (z. B. WLAN) verwendet wird? Ich brauche nicht etwas Robustes, ich muss nur in der Lage sein, Dateien auf einem entfernten Computer anzuzeigen, kann schreibgeschützt sein.Montage sshfs auf unzuverlässige Verbindung

Ich benutze 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 

Antwort

1

Sie können ein wenig mit den Optionen von sshfs, zum Beispiel spielen, die Kompression ermöglicht, die automatische Wiederherstellung der Verbindung und nodelay Flagge für 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 

Aber was mir bessere Ergebnisse geben ist mit NFS habe ich nicht die Verzögerungen, die ich mit sshfs hatte und ist ziemlich Standard in der * nix-Umgebung, Sie können Ihr Verzeichnis mit der schreibgeschützten Option exportieren, die Ihnen eine zusätzliche Geschwindigkeit gibt. Beachten Sie, dass NFS kein verschlüsseltes Protokoll ist.

Server:

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

Auftraggeber:

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

-1 ... um eine unverschlüsselte Verbindung ohne Warnung über eine verschlüsselte Verbindung zu empfehlen – kubanczyk

7

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

Diese ServerAlive Optionen bewirken, dass die I/O-Fehler nach einer Minute der Netzwerkausfall auszuwerfen. Ohne diese Optionen scheinen Prozesse, bei denen der E/A-Fall auftritt, unbegrenzt zu schlafen, auch nachdem die sshfs reconnect 'ed.

1

Überwachen Sie den Remote-Host und beenden Sie den lokalen sshfs-Prozess, wenn Sie glauben, dass die Remote-Seite verschwunden ist. Sie können es auf viele verschiedene Arten tun. So starten Sie es wie in einer Bash Weise anzusprechen:

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 

Wenn Sie sind ok externen Watchdog Ansatz zu verwenden für Ihre Verbindung betrachten dieses Projekt: https://github.com/RuralYak/sshfs-watchdog die ziemlich viel tut das gleiche, aber in einer anspruchsvolleren Art und Weise