ファイルシステムを実際に強制的にアンマウントする方法(手動調査なしでビジーな理由)


13

なぜビジーなのかを調査せずにLinuxでファイルシステムをアンマウントする方法は?

1つのコマンドでそれを行いたいです。そのファイルシステム、サブマウント、コンテナ(lxc-execute -n qqq <command>)などを使用するアプリケーションを処理する必要があります。

ただ「アンマウント。異議なし!」。特別なカーネルパッチまたは構成が許可されます。

ファイルシステムは実際にアンマウントする必要があるためumount -l、オプションではありません。たとえば、cryptsetup remove(強制的にどのように更新しcryptsetup removeますか?:更新し cryptsetup luksSuspendますが、cryptsetup luksResumeLUKSでない場合はできません)。

そのファイルシステム上のすべてのファイルハンドルを無効にする方法は?

私が知っている唯一の信頼できる方法は、FUSEを介してファイルシステムをマウントすることです(通常、プロセスを強制終了できるため、FUSEのマウントを解除しても問題はありません)。

PSは、すでに知っているマウントfuserlsof | grepcat /proc/*/mounts | grepおよび廃止された非作業「badfsパッチ」。

回答:


3

Magic SysRqキーコンボを使用しますAlt+ SysRq+u

おそらく最初に緊急同期を行う必要があることに注意してください:Alt+ SysRq+s

また、一部の(特に新しい)キーボードでは、使用するのPrtScではなく、SysRq


シフトキーは必要ありません。Alt+ SysRq +キーだけです。言及する価値のあるもう1つのこと(特にラップトップユーザーの場合)は、Altを押し、SysRqを押して放してから、文字/数字を押して放して、最後にAltを放すことができるということです。最も重要なことは、これはすべてのファイルシステムを読み取り専用として再マウントするため、ファイルシステムを読み取り専用で再マウントする一般的な方法ではなく、強制的に再起動する前の最後の手段です。
ジル「SO-悪であるのをやめる」

@Gilles:シフトキーについてのヒントをありがとう。指示を修正しました。
sml

1.読み取り専用に再マウントするだけです。それは望んでいません。たとえば、アンマウントし、FUSEを使用して再マウントします。2.悪いことは、通常の作業に戻るために、ルートファイルシステムなどを「-o remount、rw」する必要があることです。
Vi。

3

umount --forceまたはumount -f(同等)

それが失敗した場合は、次を使用します。

umount --lazyまたはumount --l(同等)

怠惰」オプション「すぐにそれはもうビジーでないとしてとしてファイルシステムへのすべての参照を、今のファイルシステム階層からファイルシステムを切り離し、そしてクリーンアップ。(カーネル2.4.11以降が必要です。)」になることがあります 不安定性を引き起こし、それマウント解除されます。ドライブを使用するプログラムがクラッシュする可能性があります。


もちろん--force機能しません。また--lazy、実際のアンマウントではありません-LVM、ループバック、またはcryptsetupを解放しません。
Vi。

1
umount -f

ファイルシステムがビジーのときに強制的にアンマウントするために使用できます。


1
私にとってはうまくumount2: Device or resource busyいきませんでした:唯一の部分的な成功は、badfsパッチを試したときだけでした。
Vi。

同じ「エラー」メッセージがありましたが、それでも動作していました。ファイルシステムは、umount -fの後にアンマウントされました
-IanH

3
「lazy umount」、umount -lを試してください。常にアンマウントされますが、不安定なファイルシステムを生成する可能性があります。
ジミーヘッドマン

この答えに対するジミーのコメントは、実際には最良の選択肢だと思います。「遅延」アンマウントが不安定になる可能性があるのは事実ですが、ファイルシステムを強制的にアンマウントする必要がある場合は、すでに不安定な状態にあると想定されています。このため、「-l」がオプションではないのはなぜですか?
-deesto

@ deesto、Lazy unmountは、基盤となるブロックデバイス(LVMボリューム、LUKSコンテナー、ループバック)を参照解除しません。
Vi。

1

1つのコマンドでこれを行う方法はないのではないかと心配しています。umount -f期待するほどスムーズに動作しません。他のマウントの下にサブマウントがある場合、それらのマウントをランダムな順序でアンマウントして、ダウンすることを期待することはできません。

しかし、心配する必要はありません。これをすべて1つのコマンドにする方法が1つあります。必要なプロセスを強制終了し、コンテナ、サブマウントをアンマウントし、最後に他のマウントをアンマウントするシェル/ Perlスクリプトを作成します。その後、オンデマンドでスクリプトを呼び出すことができます。最初はそれはあなたにとってより多くの仕事ですが、スクリプトを機能させた後は、すべてが子供の遊びです。:)


1
これらは、手動でもマウント解除できない場合です。1。再開できない割り込み不可能なスリーププロセス(ドライバーのクラッシュなど)この「ダーティアンマウント」でこれを処理する必要があります。
Vi。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.