sshfsデバイスはビジーです


30

sshfs(バージョン2.8.4)を使用してリモートファイルシステムをマウントしました

sshfs -o allow_root joeuser@example.com: ./example

しかし、アンマウントは失敗します

> fusermount -u example
umount: /home/joeuser/example: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

このエラーの原因は何か、どのように修正できるかについてのアイデアはありますか?

回答:


14

一部のプログラムは、アンマウントしようとしているファイルシステム内のファイルを使用しています。読み取りまたは書き込み用に開かれたファイル、現在のディレクトリ、またはさらにいくつかのあいまいなケースが考えられます。ファイルシステム上のディレクトリがマウントポイントになっている可能性もあります。

調査するには、を実行しlsof +f -- exampleます。プロセスがファイルシステムを使用しているものがわかります。ファイルを閉じるか、強制終了するか、アンマウント操作を延期するかどうかについては、独自に判断してください。


奇妙なことに、lsofはgvfsd-archiveプロセスを表示しませんでした。このプロセスは、ファイルマネージャーGUIからアーカイブファイルを開いた(閉じた?)ために残されました。そのため、も確認してくださいps aux | grep gvfsd-archive
アレクセイ

lstatを実行できず、情報が不完全である可能性があり、犯人をリストしなかったことを警告しました。私の場合、マウントされたディレクトリ内の作業ディレクトリでターミナルを開きました。
ジャニスエルメリス

36

怠zyなアンマウントが必要だと思います:

sudo umount -l example

1
あなたの提案は間違っていると思います。マニュアルページlazy umountによるとDetach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem *as soon as it is not busy* anymore。したがって、元の問題は解決されません。@Gillesに同意し、lsofここで役立つはずです。

2
実際、これは私のために働いた。lsofは開いているファイルを見つけることができませんでしたが、機能していumount -lました。
ヘリット・

1
このソリューションも私にとってはうまくいきました!
ダン14

1
sshfsで同じ問題を経験しましたが、これも私にとってはうまくいきました。
オルン

4

この問題が発生したばかりでkill -9、マウントされたファイルシステムからプロセスを読み取ることができませんでした。または(動作した)kill -9後でも動作しませんでした。唯一機能したのはでした。fusermount -zu /mount/pointumount -l /mount/pointpkill -9 sshfs


1
fusermount -zu /mount/point私のために働いた。ありがとう!
オストロカッハ

3

Ubuntuを実行すると、「遅延アンマウント」として文書化されman fusermountている-zオプションについて説明します。関連しているように見えますが、確認が必要です。この確認は、他のmanページ:fusermount(man.he.net)で行われます。一つは、それを使用しなければならない-u-z単独のオプションは、エラーが発生します。私はこの-zオプションを試してみましたが、トリックを行うことを確認できますが、これはあまりにもトリックのように見えます。正確に何をするのでしょうか?ディレクトリがもうビジーではなくなったらすぐに、自動的にアンマウントしますか?わからない、文書化されていないので、安全ではない。

そのため、より冗長ではあるがより安全な別のオプションがあります。ループ内で必要な回数だけ成功するまでアンマウントしようとします。

echo -n "Unmounting...";
fusermount -u -q "$MOUNT_POINT";
OK="$?";

while [ "$OK" != "0" ]
do
   sleep 1;
   echo -n ".";
   fusermount -u -q "$MOUNT_POINT";
   OK="$?";
done

echo;

進行中のフィードバックは最小限であるため、何が起こっているのかがわかり、ハングしているとは思われません。

このオプションはシェルスクリプトから使用できます。コマンドラインインタラクションの場合、この-zオプションの使用はより便利ですが、マニュアルページにはドキュメントが記載されておらず、正確に何を行うかについて疑問があるかもしれません。


2

ターミナルウィンドウをsshfs共有上のディレクトリに開いていると、sshfsで「デバイスがビジー」と表示されることがよくあります。端末を終了するか、ディレクトリをローカル共有に変更してからfusermount -uを実行すると、問題が解決します。



1

「通常の」アンマウントを試みる前に、ファイルシステムをまだ使用しているプロセスがないことを確認した場合:

  • fuser -vm /mount/point および/または
  • lsof /mount/point それらを見つけるために、
  • quit / kill / do_something_with_themを使用し/mount/pointて、使用しないようにします。

試してください:

  • pkill -KILL sshfs その後
  • fusermount -u /mount/point

ネットワーク接続が失われ、応答しないsshfsマウントポイントをアンマウントできなかったときに役立ちました。

また、ネットワーク接続が失われたときに sshfsを自動的にアンマウントし、 sshfsを使用しているアプリケーションにI / Oエラーを通知する場合(無限にスタックしないように)、次のようにマウントします。

  • sshfs -o ServerAliveInterval=15 remote-srv:/remote/dir /local/mountpoint

データが交換されない場合、sshクライアントはサーバーから応答を取得できるかどうかを15秒ごとに確認します。3つのチェックが失敗した場合、切断してアンマウントします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.