web-dev-qa-db-ja.com

不良ブロックhddを使用してミラーソフトウェアRAIDを作成します。データの整合性を確認する方法は?

システムイベントログに次のようなエラーがあります:「デバイス\ Device\Harddisk1\DR1のブロックが不良です。」

上記の理由により、このディスクと他のディスクにRAID1を作成しました。 Windows Server 2008R2ソフトウェアのRAIDボリュームを使用しています。

Disk Managerのボリュームは、「FailedRedundancy」および「AtRisk」としてマークされています。 「ディスクを再アクティブ化」するようにコマンドを実行すると、再同期が開始されますが、しばらくすると停止して前の状態に戻ります。古いディスクの不良ブロックでの再同期を停止し、システムイベントログに同じエラーを作成します。

古いディスクのステータスはエラー、新しいディスクのステータスはオンラインです。

新しいディスクに古いディスクの正確なコピーがあることを確認するにはどうすればよいですか?サーバーマシンなので、このチェックの間は実行し続けたいと思います。

この障害のあるディスクを取り除き、新しいディスクにそのまま残しておきたいだけです。データのバックアップがあるので、不良セクタは気にしません。全部を再インストールしたくないだけです。

Disk management screen

2
rumburak

まず第一に:

  1. 事後にRAID1ボリュームを作成することは、ディスクエラーに対処するための便利な方法ではありません。

  2. 不良ブロックに到達した時点でRAID1ミラーの作成が失敗するため、不良ブロックを含む元のディスクの完全なコピーがあると安全に想定できますnot。この仮定を検証する必要はありません。

  3. ディスク1をアンマウントした後、ドライブC:およびGでchkdsk /rを実行します。should不良セクタをマークし、読み取り可能なデータをドライブの他の領域に移動して、関連する今後の読み取りエラーを防止します。同じ不良セクタ。不良セクタのある(障害が発生する可能性のある)ディスクのさらなる劣化を防ぐことはできません。

chkdsk /rで問題が解決しない場合は、不良ブロックによる障害を回避して、回復可能なすべてのデータを新しいディスクに移動する1つの方法を次に示します。

  1. まだ行っていない場合は、最新の完全バックアップがあることを確認してください。
  2. Windowsのディスクの管理で、ディスク1をアンマウントして再フォーマットします。
  3. コンピュータを適切にシャットダウンします。
  4. ライブCDまたはライブUSBスティックを使用してLinuxを起動します。 PartedMagic。 Ubuntuのインストールディスクでも動作します。
  5. 両方のディスクをマウントします。どの物理ボリュームが新しいディスクで、どの物理ボリュームが古いディスクであるかを把握します。 (mountコマンドの出力を見て、パラメーターなしで実行すると役立つ場合があります。)
  6. ddコマンドを使用して、古いハードドライブから新しいハードドライブにコピーします。不良ブロックが無視されるように、必ずnoerrorおよびsyncオプションを指定してください。それらの内容(すでに失われている)は新しいドライブでゼロに置き換えられるため、不良ブロックにまたがるファイルはすべて破損します。ただし、これらのファイルはすでに読み取り不能であるため、追加の害はありません。

    dd if=/dev/<Disk0> of=/dev/<Disk1> bs=512 conv=noerror,sync

上記のsd0およびsd1の代わりに、実際のデバイス識別子(<Disk0><Disk1>など)を使用してください。壊滅的であるため、誤って新しいディスクから古いディスクにコピーしないでください。さらに、ブロックサイズが小さいため、この操作はゆっくり(つまり、ディスクの順次読み取り/書き込み速度よりもはるかに遅い)で実行されることに注意してください。ただし、noerrorsyncを一緒に使用することは機能しないと思います(不良セクタを無視するためにおよび新しいドライブでゼロを埋めるddのブロックサイズがディスクセクターの実際のサイズに設定されていない限り、回復可能なデータは失われます。

5
Skyhawk

概念的には、ミラーの作成を成功させるには、ソースボリュームからのすべてのデータが読み取り可能であり、宛先ディスクにソースの正確なコピーが含まれている必要があります。

最新のSATAドライブにはすべて、不良ブロックを別の場所に自動的に再マップするための内部機械があります。ドライブは、特定の場所への書き込みエラーなど、特定の条件下でこの再マッピングを自動的に実行できます。ただし、ディスクの内容を読み取ってデータを再マップすることはできないため、その後の読み取りエラー時にドライブを再マップすることはできません。したがって、エラーをそのままにしておくことは、ディスクドライブで可能な限り最も破壊的な動作ではありません。

今日の大規模なマルチTBドライブでは、これは他の点では完全に正常なディスクでも発生します。いくつかのブロックが読み取れないという理由だけで、ディスクが自動的に追従しないか、ディスクを交換する必要があります。

windowsや他のほとんどのオペレーティングシステムでミラーを設定する場合、不良ブロックを検出して修復するchkdskコマンドは無意味です。 Chkdskはこれらの問題を修正しません。その理由は、chkdskがファイルシステムレベルで機能し、ファイルシステム構造に不良ブロックを格納するためです。 RAIDは、ファイルシステムの下のディスクレベルで動作するため、NTFSの存在とNTFSの不良ブロックリストの両方を完全に認識しません。

内部再マッピングを使用してディスクの読み取りエラーを修正する方法は、単に読み取りできないブロックに書き込むことです。エリアに欠陥がある場合、ディスクはエリアを透過的に再マップし、その後の読み取りは成功します。これは、読み取りエラーを修正するための最も迅速で労力の少ないパスであるため、ディスクを同期できますが、書き込みを行うと、読み取り不可能なデータを回復するすべての希望が封印されるため、おそらく最も安全ではありません。また、該当する場合、ディスクへの書き込みに問題があると思われる場合は、優先ポリシーではありません。

残念ながら、妥当な回数の読み取り試行が行われた後、不良ブロックを読み取れない場合に、不良ブロックを読み取って上書きするユーティリティの存在を知りません。以前は、「dd」を使用して、読み取り不可能な場所をスキャンして上書きすることにより、これを手動で行う必要がありました。

より安全な方法は、ddrescue(sourceforgeから入手可能なg4l(Ghost4Linux)isoイメージで起動)などのツールを使用してディスクのコピーを作成することです。ddrescuseは、できるだけ多くのデータをコピーすることから始め、最後に読み取りエラーでそれらのブロックを再試行します。すべての再試行が完了するまで。ドライブに障害が発生している可能性があると思われる場合は、これがはるかに安全な方法です。

2
disk eater

更新:これはnot正解です Microsoftによると

不良ブロックのファイルシステムチェックを実行すると、ディスクに読み取り不可能なデータがあるかどうかがわかります。各ディスク(C:およびG :)を右クリックし、[ツール]、[エラーチェック]の順に選択します。また、「不良セクタをスキャンして回復を試みる」を選択していることを確認してください。

ディスク0に読み取り不可能なデータがある場合、Windowsもディスク0を不良としてマークすることになるため、そのことを知っているはずです。

コマンドラインユーザーの場合:

chkdsk /R G:
chkdsk /R C:

100MBのブートパーティションについてどうしたらよいかわかりませんが、それも確認できると思います(NTFSだと言っています)。

0
chutz