web-dev-qa-db-ja.com

sshfsマウントのサーバー切断を処理するより良い方法は何ですか?

sshfsでマウントしたディレクトリがいくつかあります。サーバーから切断されることがあります(自分で構成することはできません)。私は通常このようにディレクトリをマウントします

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

サーバーが切断すると、sshfsサブシステムはmount/freeディレクトリを実行しませんが、代わりにアクセスできなくなります。 mountと入力しても、マウントは表示されます。入力すると

ls /mnt/example

プロセスがロックされます(また Ctrl+c 助けにはならない)。したがって私は

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

これに対処するより良い方法はありますか?明らかにsshfsmountを実行してクリーンアップする必要があります...理想的には自動的に再接続します。

60
Sebastian

「再接続」オプションを使用してsshfsを実行できます。 sshfsとPAM/automountを使用して、ネットワーク内の各ワークステーションのサーバーファイルを共有します。 sshfsのパラメーターとして-o reconnectを使用します。これは、ほとんどの場合、ユーザーがコンピューターを一時停止し、スリープ解除時にsshfsが再接続(または応答)しないためです。

例えば:

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

注:リモートコンピューターが本当にダウンしている場合、sshfsは長時間応答しなくなる可能性があります。

45
MV.

これは、タイムアウトを減らすことで回避できます。以下を$HOME/.ssh/configまたは/etc/ssh/ssh_configに追加します。

ServerAliveInterval 15
ServerAliveCountMax 3

これにより、45秒のタイムアウトが発生します。

11
Thor

ストレージに使用しているサーバーがあり、私が住んでいるスペースが不足しているため、別の場所に保管しています。ファイルをネットワークに取り込むために、sshfsを使用してサーバーからファイルをマウントするRaspberry Piを使用します。

最近、停電のためにraspbian jessieにアップグレードする必要があり、sshfsが非常に不安定になることに気付きました。フォルダーは適切にマウントされますが、しばらくするとそれらに接続できなくなり、マウントの内容を一覧表示したい場合、Raspberry Piがフリーズします。

私が試したのは:

  1. fstabで再接続を使用
  2. .ssh/configファイルでServerAliveIntervalおよびServerAliveCountMaxを使用しましたが、役に立ちませんでした。
  3. ほとんどのフォーラムで私が読んだ他のソリューション。

しかし、サイコロはありません! fstabファイルを次のように変更するまで:

sshfs#user@server:/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

そしてそれはうまくいきます!もう切断する必要はありません!何らかの理由でsshfsがssh構成ファイルを読み取らず、キープアライブ信号が送信されなかったようです。

6
lucian

これはautofsの仕事のように聞こえます。さまざまな種類のネットワークマウント(nfs、samba、sshfsなど)を処理し、それらを再マウントする必要があるときに気付くのが得意です。また、ファイルシステムが要求されたときに、使用されていない期間にマウントを解除してマウントすることもできます。

3
Caleb

それでもこの問題が発生する人がいる場合は、まだ解決できません。回避策は見つかりました。

次のRubyスクリプトはトリックを実行しました。「キープアライブ」と呼ばれるフォルダを繰り返し作成します。これを無限に実行し続けるだけです。

$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

これが機能する理由はわかりません。しかし、それは私が1分間非アクティブであり、すべてがフリーズする私の問題を解決するようです。マウントポイントにフォルダーを作成しようとするだけで、何とかしてすべてが切断されてフリーズするのを防ぎます。

1
Vudew