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


58

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

sshfs user@server.example.com:/home/user /mnt/example

サーバーが切断されると、sshfsサブシステムはディレクトリをアンマウント/解放せず、代わりにアクセス不能にロックします。と入力すると、マウントが表示されたままになります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>

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



4
メンテナンスされたソフトウェアを使用したソリューション
セバスチャン

回答:


45

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

例えば:

sshfs mvaldez@192.168.128.1:/home/mvaldez/REMOTE /home/mvaldez/RemoteDocs -o reconnect,idmap=user,password_stdin,dev,suid

ただし、リモートコンピューターが本当にダウンしていると、sshfsが長時間応答しなくなることがあります。


11

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

ServerAliveInterval 15
ServerAliveCountMax 3

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


3
これは、問題がSSHの障害である場合にのみ役立ちます。sshfs根本的なsshプロセスの死を適切に処理しない大きな問題があります。
バハマ

実際、これは単なる回避策であり、sshfs内で修正する必要があります。
トール

ただし、多くの問題のうち1つの原因に対処する回避策のみです。彼の問題は、キープアライブとは無関係かもしれません。質問の性質は、原因に関するものではなく、一貫した状態へのクリーンアップに関するものです。
バハマ

5

ストレージに使用するサーバーがあり、自分の住んでいるスペースが不足しているため、別の場所に保管しています。ファイルをネットワークに取り込むために、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構成ファイルを読み取らず、キープアライブ信号が送信されなかったようです。


3

これはautofsの仕事のように聞こえます。さまざまな種類のネットワークマウント(nfs、samba、sshfs、名前を付けます)の処理と、それらの再マウントが必要な場合の通知にかなり長けています。また、不使用期間後にそれらをアンマウントし、ファイルシステム要求が行われたときにそれらをマウントすることもできます。


11
autofsはオンデマンドで接続を行い、アイドル時にアンマウントできます(これにより問題のある時間枠が減ります)が、サーバーが切断されたためにsshfsがハングした場合は役に立ちません。
ジル 'SO-悪であるのをやめる'

1

それでもこの問題に直面している人がいる場合、私はまだそれを修正できませんでした。回避策を見つけました。

次のルビースクリプトがトリックを行いました。「キープアライブ」というフォルダを何度も作成します。これを無限まで実行し続けるだけです。

$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分間非アクティブであり、すべてがフリーズするという私の問題を解決するようです。マウントポイントにフォルダーを作成しようとするだけで、それが何らかの形ですべてを切断してフリーズさせないようにしているようです。


6
まあ、それがあなたのために働くなら、あなたはスクリプトとルビーインタプリタを必要としません。単一の行でも同様に実行できますwhile true; do mkdir -p /x/y; sleep 2; done
。– mivk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.