Linuxカーネルの実行中にハードドライブにエラーが発生した場合はどうなりますか?

Linuxカーネルの実行中にハードドライブにエラーが発生した場合はどうなりますか?

私はLinuxカーネルの実行中にハードドライブにエラーが発生した場合、どうなるのか疑問に思いました。カーネルイメージ自体がRAMにフルロードされているため、カーネル障害が発生しないと思います。明らかに、ディスクにアクセスしようとするすべてのソフトウェアは失敗します。

システムが無期限に動作し続けることは可能ですか?そうでなければ、何が恥ずかしくなりますか(または少なくともうまくいかないでしょうか)?

次の各シナリオを検討してください。

  • カーネルはスワップファイルをアクティブにすることも、アクティブにしないこともあります。
  • 失敗時にカーネルモジュールをロードしようとしません。
  • ファイルシステムの一部が別のディスクにある場合、違いはありますか?

答え1

ハードウェア障害によってカーネルがクラッシュする危険性は常に存在します。これらのコードパスは通常ははるかにテストされていませんが、通常、ハードドライブの障害によってカーネルがクラッシュしてはいけません。正確に何が起こるかは、失敗の性質によって異なります。現時点では、一部のセクタしか読み取れないため、/home パーティションの一部を読み取ることができなくなり、システム管理者が問題を分析できます。ルートファイルシステムが利用できなくなると、カーネルパニックに関係なくシステムがほとんどフリーズします。シンプルなシェルも使えないからです。スワップパーティションが使用できなくなると、スワップを使用するプログラムからスワップアウトされたデータを読み取ると、パーティションエラーが発生します。破損したハードドライブが追加のストレージである場合、一部のファイルシステムを読み取ることができなくなる以外はほとんど影響を受けない可能性があります。

また、ハードドライブで発生したエラーの種類によって異なります。ドライブが実際に消え、ファイルシステムが消えたことを除いて、すべてがうまく動作しているのを見ました。また、ハードドライブが継続的にシステムを停止し、長いタイムアウト後にエラーが発生し、システム全体のパフォーマンスが低下することがわかりました。 RAID 1/4/5を実行しているMDなどの層を使用している場合、重大なエラーのため、通常、カーネルはディスクを障害としてマークし、それを無視し、残りのドライブに依存してシステムを実行し続けます。

答え2

PowerEdge 2500を初めて購入したとき、ハードウェアRAID(PERC)コントローラ用のファームウェアは最新バージョンではありませんでした。その結果、ルートディスクが突然消え、アクセスできなくなります(リムーバブルドライブの接続が突然切断されるのと似ています)。

新しいプログラムを読み込めませんでした。すでにロードされているプログラムは引き続き実行されますが、ディスクに書き込もうとするとエラーが発生します。bashログインを求めるメッセージが表示され続け、ネットワークは引き続き実行されます。驚いたことに、状況は思ったより深刻ではなかった。

PERCの読み取り/書き込みを担当するドライバは、エラーとともにすべてをすぐに拒否するように見えるので、これは「完全な」失敗だと思います(正確なエラーは忘れてしまいましたが、これはSCSI認識エラーです)。ドライブが応答しなくなったり、応答が遅くなったり、書き込みが正常に動作しているように見えますが、実際にはそうでない場合はさらにそうです。

答え3

実際に実行していましたが、Xがないシステムでドライブエラーが発生しました。 gettyが利用できないため、ログインできません。実行中のアプリケーションのシェルを解放してみましたが、使用可能なシェルがないため、アプリケーションは機能しません。まさにその時、Aiieeee Newsが私の注目を集め、その話を伝えました。

関連情報