GNU/Linux >> Linux の 問題 >  >> Linux

使用中のデバイスをアンマウントする方法

可能であれば、ビジーなプロセスを見つけて特定し、そのプロセスを強制終了してから 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)
    

    注意/注意

    <オール>
  • これらのコマンドは、実行中のプロセスを中断させ、データの損失や開いているファイルの破損を引き起こす可能性があります。ターゲットの DEVICE/NFS ファイルにアクセスするプログラムは、エラーをスローするか、強制アンマウント後に正しく動作しない可能性があります。
  • しない umount 以上で実行 マウントされたパス (フォルダー/ドライブ/デバイス) 自体の内部にあるコマンド。まず、 pwd を使用できます コマンドを実行して現在のディレクトリ パス (マウントされたパスであってはなりません) を検証し、cd を使用します。 マウントされたパスから抜け出すためのコマンド - 後で上記のコマンドを使用してマウントを解除します。

  • アンマウントしようとしているときは、まだマウントされたデバイスにいないことを確認してください。


    Linux
    1. Linuxでドライブをマウントおよびアンマウントする方法

    2. 特定のデバイスのカーネルモジュールを見つける方法は?

    3. 故障した Btrfs デバイスを交換する方法

    1. Linuxにデバイスドライバーをインストールする方法

    2. 使用されているシリアルポートを見つける方法は?

    3. sshfs デバイスがビジーです

    1. Linux –論理的に切断されたUSBデバイスを再接続する方法は?

    2. Linux で仮想ブロック デバイス (ループ デバイス/ファイルシステム) を作成する方法

    3. デバイスの強制アンマウント、方法は?