2013-07-16 21 views
6

私はsshfsでリモートファイルシステムをマウントします。 ssh接続がタイムアウトすると、他のアプリケーションがハングアップする可能性があります(例えば、ローカルファイルのみを開いた状態のvimセッション)。システムが復旧するまでに約10分かかります。これは、リモートファイルシステムを読み取り専用でマウントしても発生します。どうして?信頼できない接続(例:wifi)を使用しているときに他のアプリケーションがハングしないようにsshfsマウントを行う方法はありますか?私は堅牢な何かを必要としない、私はちょうどリモートコンピュータ上のファイルを表示することができる必要があります、読み取り専用にすることができます。信頼できない接続でのsshfsのマウント

私は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 

答えて

1

あなたは、圧縮を有効にする、例えば、sshfsののオプションを使用して、TCPの自動再接続およびNODELAYフラグ少しを再生することができます:

-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 

をしかし、何が私に、より良い結果が得られていていますNFSを使用して、私はsshfsで持っていた遅れがなく、* nix環境ではかなり標準です。読み取り専用オプションでディレクトリをエクスポートすると、余分な速度が得られます。 NFSは暗号化されたプロトコルではありません。

サーバー:

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

クライアント:

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

-1 ...暗号化されていない暗号化されていない接続を警告なしで推薦する – kubanczyk

7

使用-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

これらServerAliveオプションは、I/Oエラーがネットワーク障害の1分後に飛び出しさせます。これらのオプションがなければ、I/Oハングを経験するプロセスは、sshfsがreconnectを取得した後でも、無期限にスリープ状態になるようです。

1

リモート側が監視されている場合は、リモートホストを監視し、ローカルsshfsプロセスを終了します。あなたはさまざまな方法でそれを行うことができます。たとえば、bashの方法でそのようにpingを開始します。

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 

あなたはこのプロジェクトを検討し、あなたの接続するための外部ウォッチドッグアプローチを使用しても大丈夫です場合:ほとんど同じですが、より洗練された方法で行いhttps://github.com/RuralYak/sshfs-watchdog

関連する問題