web-dev-qa-db-ja.com

ビジー状態のディスクを読み取り専用モードに再マウントする

ディスクパーティションを強制的に読み取り専用モードにして、30分以上読み取り専用にしたい。

私が試したこと:

  1. mount -o remount,ro (partition-identifier) (mount-point) -t (filesystem)

    Issue:一部のプロセスがパーティションを使用していたため、デバイスビジーエラーが発生しました。ディスクを使用しているプロセスを強制終了したくありません。プロセスがまだディスクを使用しているときに、ディスクが突然読み取り専用になるのをシミュレートしたいと思います。

  2. 以下のように、マジックsysrqキーを使用

    echo u > /proc/sysrq-trigger
    

    Issue:これにより、すべてのディスクパーティションが読み取り専用になります(デバイスはビジーです)。しかし、20〜30分後にマシンが再起動します。一部のマシンは、このコマンドが実行されるとすぐに再起動します。この再起動の原因はまだわかりません。マシンが再起動したくないので、ディスクを読み取り専用モードで30分以上保持する必要があります。

質問:単一のディスクパーティションを強制的に読み取り専用にして、その状態を30分間維持し、再起動せずに読み書きモードに戻すことができるより良い方法はありますか?処理する?

20
AdithyaCS

プロセスが書き込み用に開いているファイルを持っている場合、または削除されたがまだ開いているファイルがプロセスに含まれている場合、通常、ファイルシステムを読み取り専用として再マウントすることはできません。同様に、ファイルが開いているファイルシステム(または、現在のディレクトリがそこにあるプロセス、実行中の実行可能ファイルなどのファイルの同様の使用法)をマウント解除することはできません。

umount -lを使用してマウントポイントを解放し、それ以上ファイルを開けないようにすることができますが、ファイルシステムはマウントしたままにして、すでにファイルを開いているプロセスを通常どおり実行します。

ファイルシステムを強制的に読み取り専用に再マウントしないようにする一般的な方法は考えられません。ただし、ファイルシステムがブロックデバイスによってサポートされている場合は、ブロックデバイスを読み取り専用にするを使用できます。

echo 1 >/sys/block/dm-4/ro
echo 1 >/sys/block/sda/sda2/ro

echo u > /proc/sysrq-triggerは、すべてのファイルシステムに影響を与えるため、読み取り専用として再マウントを強制するかなり極端な方法です。これは、再起動する直前にファイルシステムをクリーンな状態に保つための最後の手段です。

ファイルシステムを読み取り専用として再マウントしても、再起動は行われません。再起動の原因は、パーティションを読み取り専用として再マウントすることに直接関係しません。多分それは完全に無関係であるかもしれません、または多分これはそれがそれをスピンさせてプロセッサーを過熱させ、そしてあなたのプロセッサーが欠陥があるかオーバークロックして最終的に再起動するアプリケーションのバグを引き起こします。再起動の原因を追跡する必要があります。

mountのforceオプションを使用します(マウントに1つあると仮定します; GNU mountにはありませんが、BSDやmacOSなどにはあります):

mount -f -o remount,ro /mount/point

もちろん、実際のファイルシステム、カーネルのバージョン、状況に応じて走行距離は異なる可能性がありますなので、これは他の低レベルのトリックを試す、より高レベルのオプションです。 @Gillesによって言及されました。

3
Piotr Findeisen