破損したハードドライブがシステム全体をフリーズするのはなぜですか?


128

不良ブロック(HDTuneおよびHDDScanで検証済み)があることがわかっているハードドライブがシステム全体をフリーズするのはなぜですか?

OSドライブではありません。別のSATAポートに接続されており、そこから別の正常なドライブにファイルをコピーしようとしています。

ほぼすべての破損したハードドライブとすべてのWindows PCでこの問題が発生しました。

ファイルのコピーに使用しているプログラム(Windowsエクスプローラーなど)のみがフリーズすることが予想されますが、代わりにPC全体がぎくしゃくし、破損したドライブからファイルをコピーしている間、Webを閲覧したり映画を観ることはできません。

長い話。

私は、電気に問題がある(ブラウンアウトなど)田舎に住んでいます。私自身はUPSを使用していますが、自分のハードドライブはまったく問題ありません。しかし、私の隣人はしばしばPCの問題について助けを求め、私はしばしば、おそらく電気の問題が原因でハードドライブが破損していることに気付きます。もちろん、損傷したドライブを交換した後、UPSを購入することを隣人に勧めます。

破損したドライブからデータを取得中にPCが完全にフリーズするのはなぜだろうといつも思っていました。ハードウェアの問題ですか?OSがデータを読み取る方法が原因ですか?それはWindows固有のものですか?* nixでは経験しませんか?

とにかく、今後はWindows Explorerの代わりに専用のソフトウェア(RoadkilのUnstoppable Copierなど)を使用しますが、PC全体をフリーズせずにこれが異なる動作をするかどうかはわかりません。

それは助けを求めるものではなく、教育を目的とするものなので、物事がそのように機能する理由を知っています。


11
外部USBエンクロージャを使用すると、障害のあるディスクをシステムSATAコントローラーに接続しなくなるため、役立つはずです(また、マザーボードと障害のあるディスクの間に犠牲的なハードウェアの層を追加することは常に良い考えです)。
マッテオイタリア

3
これはSATAに固有のものではなく、IDEドライブも同様です。また、ディスクが破損しているからといって、特に電気的障害によってディスクが破損している場合でも、コントローラーが破損するわけではありません。
クリスH

受け入れられた答えは素晴らしく、私が言いたいことなどが含まれています。基本的に、SATAコントローラは非常に重要なシステムデバイスであり、これがWindowsをパニックさせます。BIOSでAHCI / "hot-swap"を有効にすると状況が改善されるのではないかと思います。
アーサーケイ

回答:


170

これは、SATAが最適ではない分野の1つです。問題はストレージデバイスの相互接続プロトコルレベルにあるため、実行しているソフトウェアとは関係ありません。別のファイルコピー機または別のオペレーティングシステムを使用しても、問題の影響を軽減するために異なるタイムアウト値を設定しようとする場合があります(ハードウェアとファームウェアによっては可能または不可能な場合があります。以下を参照) )。

ここにはいくつかの重要なポイントがあります。

  1. SATAを使用すると、ドライブが応答しなくなると、問題のある1つのドライブだけなく、ストレージシステム全体が拘束される可能性があります。確かにコントローラー全体を拘束する可能性があり、ほとんどのコンシューマーシステムは単一のディスクコントローラー(マザーボードに統合されたもの)しか持たないため、これはすべてのストレージを意味します。ドライブが何らかの非標準的および/または予期しない方法で故障すると、さらに悪いことになります。ハードウェアSATA RAID-10アレイ内の単一のディスクがアレイ全体をきしむように停止させる方法に興味があるかもしれませんサーバー障害。
  2. ほとんどの民生用SATAドライブは、デフォルトのタイムアウト期間長く(数分)、多くの民生用SATAドライブには構成可能なエラー回復制御がありません。いわゆる「NAS」ドライブには多くの場合、構成可能なERCがあり、ハイエンドドライブには事実上常にあります。このようなドライブでは、デフォルトのタイムアウトが短くなる場合があります(7秒が一般的な値です)。長いタイムアウト期間は、ドライブがデータの唯一のコピーを保持している場合に有利です。これは残念ながらコンシューマシステムで一般的です。冗長構成の場合、またはドライブがさらに劣化する前にドライブからできるだけ多くの情報を取得したい場合、これらは不利です。
  3. ドライブは、タイムアウトしきい値に達するか、ホストから中止が通知されるまで、不良セクタの読み取りを試行し続けます。SATAバスは読み取りが完了するのを待つことで縛られる可能性があるため、OSがストレージレベルのコマンドアボートを通知できない場合があり、極端な場合、ドライブがSATAバスのリセットに適切に応答しないこともありますそのような状況で。

ポイント#1は、サーバー上のSASの主要なセールスポイントの1つです。SASはSATAよりもエラー処理が大幅に優れています。ポイント#2はドライブファームウェアの制限であり、#3が本当に問題となるのは#2だけです。

そのため、OSがディスクに「セクターの読み取り」コマンドを発行し、特定のセクターが何らかの形で損傷します。したがって、ディスクは再試行モードになり、プラッタからデータを取得しようとし、ディスク自体のエラー修正(FEC)が残りのエラーを修正できる十分なデータを取得するまで何度も読み取りを試行します。運が悪い場合、これは決してないかもしれませんが、この読み取りが成功しないと判断するまで、ドライブはかなり長い期間試行を続けます。

オペレーティングシステムは読み取りを待機しているため、少なくともコピープロセスの速度が低下し、正確なOSアーキテクチャによっては、OSがぎくしゃくしたり、その間フリーズしたりすることがあります。この時点で、ディスクは元の読み取りでビジーであり、現在実行中のコマンドが終了(成功または失敗)するまで、それ以降の読み取りコマンドに応答しません。他のソフトウェアは、通常、オペレーティングシステムで実行されています。

したがって、他の場所(理想的には、破損したドライブのみ)で読み取りをトリガーするものはすべて、破損したドライブが問題のセクターを正常に読み取るか、読み取ることができないと判断するまで順番に待機する必要があります。応答しないドライブのSATAの処理が最適ではないため、コピー元のドライブだけでI / Oが遅延するわけではありません。これにより、オペレーティングシステムが対応できる場合でも、別のI / O要求が完了するのを待つため、他のソフトウェアが非常に簡単に遅くなったり、応答しなくなったりする可能性があります。

また、ディスク上のファイルに明示的にアクセスしていない場合でも、ディスクI / Oが発生する可能性があることに注意してください。これの主な2つの原因は、ロードオンデマンドの実行可能コードとスワップです。システムがメモリ不足になっていない場合でもスワップが使用されることがあり、ロードオンデマンドの実行可能コードは現代のシステムおよび現代の実行可能ファイル形式で一般的であるため、通常の使用中の意図しないディスク読み取りアクティビティは非常に現実的な可能性です。

Matteo Italiaによる質問へのコメントで指摘されているように、緩和策の1つは、異なるストレージインターコネクトを使用することです。これは、「ディスクをUSBエンクロージャーに入れる」という複雑な方法です。USB大容量ストレージプロトコルを介して抽象化することにより、問題のあるSATA部分をシステムの他の部分から分離します。つまり、理論上、特定のディスク上のI / Oのみがそのディスク上のI / O問題の影響を受けることになります。

ちょっとした話ですが、これが、SATA(特に、ドライブレベルのERCを持たないSATA)がRAID(特に冗長性のあるRAIDレベル、特に標準レベルはすべてRAID 0を除く)に推奨されない理由です。長いタイムアウト期間と貧弱なエラー処理により、単一の不良セクタのデバイス全体がアレイから簡単に破棄される可能性があります。冗長性が存在し、ストレージコントローラがこれが問題であることを認識している場合、RAIDコントローラは適切に処理できます。SASは大規模なストレージアレイ用に設計されたため、さまざまなドライブで問題が発生する可能性があるため、単一の問題のあるドライブまたはI / O要求のケースを適切に処理するように設計されました。ドライブがそうでなくても。問題のあるディスクは、多くのディスクがインストールされていない傾向があるため、コンシューマシステムではあまり一般的ではなく、インストールされたディスクには事実上冗長性がありません。SATAはSCSIではなくPATA / IDEを置き換えることを目的としていたため(後者は目的のニッチSASです)、エラー処理機能と要求(または保証)が意図したユースケースに十分であると考えられた可能性があります。


19
何が起こっているのかを説明する賢明な答えを実際に投稿してくれてありがとう。これは、「システムがドライブを待機しているため」または「そのように設計されているため」などのあいまいな答えを通常目にする種類の質問です。
Mehrdad

4
@kasperd:かなり。その一部はWindowsの「障害」でもありますが、これは複数のコントローラーで簡単に発生する可能性があるためです。IMOのこの答えは、企業SASコントローラーもこの問題の影響を受けないため、少し意図的に曖昧です。実際には、特定のブロッキングI / O要求に要約されます。一部のハードドライブ操作では、操作Xが操作Yの前に終了することを保証する必要があります。Xが終了しない場合、Yは開始できません。障害。
qasdfdsaq

2
@JustAMartin実際、ほとんどすべて非同期です-最近DMAをサポートする周辺機器は非同期でいっぱいです。カーネルはリクエストをスケジュールし、リクエストが完了したことを知らせる割り込みのみを処理します。問題は、操作が完了するまで待たなければならない場合があり、その過程で重要な何かをブロックする可能性があることです。user20574が指摘したように、仮想メモリはそれらの1つですが、いくつかの保証が必要なものがたくさんあります。カーネルの一部は非同期ではありません。もちろん、一部のドライバー/デバイスは単純です。
ルアーン

2
@MichaelKjörling 「オペレーティングシステムが読み取りを待機しているため、少なくともコピープロセスの速度が低下し、正確なOSアーキテクチャによっては、OSがぎくしゃくしたり、その間フリーズしたりすることがあります。」-なぜセカンダリ(非システム)ドライブから読み取る場合、OSが正確にぎくしゃくするのですか?この問題は、SATAコントローラーのエラー処理動作が原因ではありません。この答えは、Windowsがディスクサブシステムのエラーを処理する方法に関する情報から得られると思います。
ジョーダンリーガー

1
@MichaelKjörlingまあまあ。答えには多くの良い情報がありますが、OPの特定のシナリオを説明するものではないと思います。別の角度から見ると、ポイント1をバックアップするための参照を引用できますか?「SATAでは、ドライブが応答しなくなった場合、問題が発生している1つのドライブだけでなく、ストレージシステム全体を拘束する可能性があります。確かにコントローラー全体を拘束する可能性があります。」?これはひどいデザインのようです。OSディスクサブシステムが原因である可能性が高いのではないでしょうか。つまり、コントローラーは非同期ですが、OSドライバーが不必要にブロックすることがあります。
ジョーダンリーガー

3

前述のように、不良ハードドライブによるシステムのフリーズの問題は、主に不良セクタから読み取り不可能なデータを回復しようとするドライブによる長い試行によるものです。エンタープライズドライブのセールスポイントの1つは、失敗したセクターの読み取りタイムアウトが非常に短いことです。エンタープライズドライブを使用すると、問題をある程度軽減できますが、解決はできません。

前進する最善の答えは、適切なバックアップを維持して、リカバリが不要になるようにすることです。これはファームウェアタイムアウトの問題であるため、リカバリソフトウェアを変更しても違いはありません。


2

損傷したハードドライブがシステム全体をフリーズするのはなぜですか?

彼らは(一般的に)する必要はありません。ディスク障害の対処方法は、特定のファイルシステムによって異なります。

かなりのフォールトトレランスに対処するためにゼロから設計されたZFSを検討してください。以下は、実行中のドライブを金床に配置し、スレッジハンマーでスイングし、別のドライブをドリルするデモビデオ(および詳細な説明付き)です。ZFSの実行中。


2
実際には、ZFSがうまく処理できないディスク障害があります。たとえば、冗長または非冗長セットアップで、I / O要求がタイムアウトする前の非常に長い読み取り。(冗長性を持たないようにZFSを簡単に設定できます。)これにより、ZFSのアレイからドライブが簡単にスローされ、冗長性のしきい値を下回った場合、アレイ全体が利用できなくなります。failmode = waitで設定されている場合、これは同様の結果を示します。全面的なフルディスク障害は、ストレージサブシステムにとって簡単なケースです。問題を引き起こすのは限界ドライブです。
CVn

そして、あなたが別の考えをする前に、私は実際にZFSを(ほぼ独占的に)自分で実行しています。あなたが何をしているのかを注意深く知っていれば、それは素晴らしいファイルシステムであり、素晴らしいボリュームマネージャです。ただし、エンタープライズクラスのシステム(ハイエンドワークステーションおよびサーバー)用に設計されており、管理者は自分が何をしているのかを知るためにお金を払っています。RAMの問題や、I / O要求からの復帰に非常に長い時間がかかるドライブなど、一般的なハードウェアで見られるいくつかの障害モードにうまく対処するようには設計されていません。ホームユーザーのユースケース。
CVn

ビデオを除き、ZFSは実行を継続しません。ドライブを切断した後、再び実行を開始します。
クリストファーハン

-2

あなたが直面している問題は、OSの低レベルの部分が、あきらめる前に不良ブロックの読み取りを何度も試みることだと思います。このルーチンは、ブート中または他のスタンドアロン操作中に必要な場合に低レベルで実装されるため、再入可能にすることは困難です。オペレーティングシステムは通常の操作中に継続的にページングを行います。低レベルのシステムはページング要求を所有するプロセスの優先順位を知らないため、競合する要求に優先順位を与えることは困難です。


6
「低レベルシステム」、ページを要求しているプロセスの優先度を知っています。そのような情報はページテーブルに保持されますが、実装は優先度の処理方法に依存します。ただし、これは質問に対する正しい答えではありません-これはハードウェアの問題であり、OSの問題ではありません。
クリスクレフィス

1
質問に対する正しい答えは、故障したドライブの使用を拒否することだと思います。ただし、これは可能な限り多くのデータを回復したいユーザーを満足させるものではありません。
jrrk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.