可能であれば、ビジーなプロセスを見つけて特定し、そのプロセスを強制終了してから unmount
しましょう ダメージを最小限に抑えるための samba 共有/ドライブ:
-
lsof | grep '<mountpoint of /dev/sda1>'
(またはマウントされたデバイスが何であれ) -
pkill target_process
(使用中の proc. を名前で kill |kill PID
| |killall target_process
) -
umount /dev/sda1
(またはマウントされたデバイスが何であれ)
umount -l
を避ける
執筆時点で、トップ投票の回答は umount -l
の使用を推奨しています .
umount -l
危険であるか、せいぜい安全ではない .要約:
- デバイスを実際にアンマウントするのではなく、名前空間からファイル システムを削除するだけです。開いているファイルへの書き込みは続行できます。
- btrfs ファイルシステムが破損する可能性があります
回避策 / 代替
umount -l
の便利な動作 absolute によるアクセスからファイルシステムを隠しています これにより、マウスポイントの使用を最小限に抑えます。
これと同じ動作は、権限 000
で空のディレクトリをマウントすることで実現できます
次に、マウントポイントの下にあるファイル名への新しいアクセスは、新しくオーバーレイされたディレクトリにアクセス許可なしでヒットします。これにより、アンマウントに対する新しいブロッカーが防止されます。
まず remount,ro
を試してください
ロックを解除する主要なアンマウント アチーブメントは、読み取り専用の再マウントです。 remount,ro
を獲得したとき バッジ、あなたはそれを知っています:
mount -o remount,ro /dev/device
書き込み用に開いているファイルがある場合は失敗することが保証されているので、まっすぐ試してみてください。あなたは幸運を感じているかもしれません、パンク!
運が悪ければ、ファイルを書き込み用に開いているプロセスだけに注目してください:
lsof +f -- /dev/<devicename> | awk 'NR==1 || $4~/[0-9]+[uw -]/'
その後、デバイスを読み取り専用で再マウントし、一貫した状態を確保できるはずです。
この時点で読み取り専用で再マウントできない場合は、ここにリストされている他の考えられる原因を調べてください。
読み取り専用の再マウント実績のロックが解除されました ð☑
おめでとうございます。マウントポイント上のデータは一貫性があり、将来の書き込みから保護されています。
なぜfuser
なのか lsof
よりも劣っています
use fuser
を使用しない理由 ついさっき?まあ、そうかもしれませんが、fuser
ディレクトリで動作します 、デバイスではありません 、したがって、ファイル名空間からマウントポイントを削除し、引き続き fuser
を使用する場合 、次のことを行う必要があります:
mount -o bind /media/hdd /mnt
でマウントポイントを一時的に複製します 別の場所へ方法は次のとおりです:
null_dir=$(sudo mktemp --directory --tmpdir empty.XXXXX")
sudo chmod 000 "$null_dir"
# A request to remount,ro will fail on a `-o bind,ro` duplicate if there are
# still files open for writing on the original as each mounted instance is
# checked. https://unix.stackexchange.com/a/386570/143394
# So, avoid remount, and bind mount instead:
sudo mount -o bind,ro "$original" "$original_duplicate"
# Don't propagate/mirror the empty directory just about hide the original
sudo mount --make-private "$original_duplicate"
# Hide the original mountpoint
sudo mount -o bind,ro "$null_dir" "$original"
<オール>
fuser
を実行する重複バインド マウント ディレクトリ (デバイスではなく) .これはより複雑ですが、以下を使用できます:
fuser -vmMkiw <mountpoint>
これは、書き込み用に開いているファイルでプロセスを強制終了するように対話的に要求します。もちろん、マウント ポイントをまったく非表示にせずにこれを行うこともできますが、上記は umount -l
を模倣しています。 、何の危険もありません。
-w
スイッチは書き込みプロセスに制限し、-i
インタラクティブなので、読み取り専用で再マウントした後、急いでいる場合は次を使用できます:
fuser -vmMk <mountpoint>
マウントポイントでファイルを開いている残りのすべてのプロセスを強制終了します。
この時点で、デバイスをアンマウントできることを願っています。 (umount
を実行する必要があります モード 000
をバインドマウントした場合は、マウントポイントで 2 回 ディレクトリが一番上にあります)
または使用:
fuser -vmMki <mountpoint>
アンマウントをブロックしている残りの読み取り専用プロセスをインタラクティブに強制終了します。
くそ、まだ target is busy
が出る !
アンマウント ブロッカーは、開いているファイルだけではありません。その他の原因とその解決策については、こちらとこちらを参照してください。
デバイスの完全なアンマウントを妨げるグレムリンが潜んでいる場合でも、少なくともファイルシステムは一貫した状態になっています。
その後、 lsof +f -- /dev/device
を使用できます ファイルシステムを含むデバイス上で開いているファイルを持つすべてのプロセスを一覧表示し、それらを強制終了します。
はい !!ビジー状態で強制的にアンマウントできない場合でも、ビジー状態のデバイスをすぐに切り離す方法があります。後ですべてクリーンアップできます:
umount -l /PATH/OF/BUSY-DEVICE
umount -f /PATH/OF/BUSY-NFS (NETWORK-FILE-SYSTEM)
注意/注意
<オール>umount
以上で実行 マウントされたパス (フォルダー/ドライブ/デバイス) 自体の内部にあるコマンド。まず、 pwd
を使用できます コマンドを実行して現在のディレクトリ パス (マウントされたパスであってはなりません) を検証し、cd
を使用します。 マウントされたパスから抜け出すためのコマンド - 後で上記のコマンドを使用してマウントを解除します。アンマウントしようとしているときは、まだマウントされたデバイスにいないことを確認してください。