「デバイスまたはリソースがビジー」などの同様の問題が多数あります。しかし、私の問題は彼らとは異なると思います。
Mount --bindを使用してディレクトリをバインドします
mount --bind /tmp/Origin /tmp/mount
そして、正常にアンマウントできます
umount /tmp/mount
そして、一度にrmを呼び出すと
rm -rf /tmp/mount
エラーDevice or resource busy
が発生する可能性があります。 2〜3秒待ってからrmを呼び出すと、成功する可能性があります。
したがって、この動作は非常に奇妙です。使ってみます
lsof +D /tmp/mount
何も見えませんでした。
また、fuser -vm /tmp/mount
を使用していますが、このフォルダーを保持しているプロセスはありません。
/proc/mounts
の前とumount /tmp/mount
の後のumount /tmp/mount
を比較します。 /tmp/mount
は既に削除されています。
stat /proc/mounts
の前とumount /tmp/mount
の後のumount /tmp/mount
を比較します。 iノードも異なります。つまり、/tmp/mount
はすでに完全に削除されています。
sync && echo 2 > /proc/sys/vm/drop_caches
を呼び出してファイルキャッシュを削除しようとしても、まだ機能しません。
これをUbuntu 14.04とCentOS 6.6の両方で試します。同じ結果が得られます。
@ g-vの回答ありがとうございます。しかし、結果は別の問題であることがわかりました。プロセスを分岐するときにCLONE_NEWNSフラグを使用します。詳細は CLONE_NEWNSフラグ および MESOS-3349 Device busy bug にあります。
短いWordでは、親プロセスにマウントします。そして、CLONE_NEWNSのために、子プロセスでアンマウントしますが、親プロセスによって処理されるマウントポイントがまだ存在します。したがって、rmdirを呼び出すとEBUSYエラーコードが返されます。
上記の問題を回避するには、共有マウントまたはスレーブマウントを使用できます。詳細は LWN 159092 にあります。
共有フォルダをVMにマウントし、アンマウント後にディレクトリを削除し、ソリューションを共有したいだけなので、このような問題に直面しました。
アンマウントパス
Sudo umount /your_path
/ etc/fstabのmoutパスを削除します
Sudo nano /etc/fstab
リブート
Sudo reboot
ディレクトリを削除
Sudo rm -rf /your_path
私の経験では、次の操作はLinuxでは非同期です。
close()
が戻った直後に、umount()
は非同期リリースの実行中にEBUSY
を返す場合があります。こちらの説明をご覧ください: ページ1 、 ページ2 。_
sync && echo 2 > /proc/sys/vm/drop_caches
_を呼び出してファイルキャッシュを削除しようとしても、まだ機能しません。
sync(8)
を参照してください:
Linuxでは、
sync
は書き込み用のダーティブロックのスケジュールのみを保証します。実際には、すべてのブロックが最終的に書き込まれるまでに少し時間がかかる場合があります。reboot(8)
およびhalt(8)
コマンドは、sync(2)
を呼び出した後、数秒間スリープすることでこれを考慮します。
_/proc/sys/vm/drop_caches
_については、 here を参照してください:
これは非破壊的な操作であり、ダーティオブジェクトを解放しません。
したがって、コマンドの直後に、データはまだ書き込みのためにキューに入れられ、アンマウントはまだ完了していません。
更新
ただし、非同期のアンマウントが実行されている場合、カーネルはmounted deviceに対する操作に対してEBUSY
を返しますが、に対しては返しません。マウントポイント。
したがって、上記のケースできなかったが問題の原因になります:P
PS。
実際、manページにsync(8)
がLinuxで同期していないと書かれている理由がわかりません。 sync(2)
を呼び出します。
標準仕様(例:POSIX.1-2001)によれば、
sync()
は書き込みをスケジュールしますが、実際の書き込みが完了する前に戻る場合があります。ただし、バージョン1.3.20以降Linuxは実際に待機します。(これでもデータの整合性は保証されません。最新のディスクには大きなキャッシュがあります。)