web-dev-qa-db-ja.com

最新のディスクで「バッドブロック」を使用する

不良ブロックを使用してHDDをチェックしたいのですが、その動作を明確にしていただければ幸いです。

誰かが-b-cで使用する最適なオプションを説明できますか?私はそれらの定義をmanページから含めましたが、64MB RAMおよび4kセクターの最近のディスクに、より大きなサイズが有益であるかどうかはわかりません。

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

第二に、書き込みモードのテストが非破壊的な読み書きモードよりも完全であるかどうかを知りたいですか?

最後に、SMARTセクターの再割り当てはいくつ許容されますか/再割り当てカウントがゼロ以外のドライブをすぐに置き換える必要がありますか?

21
Yoren

質問1:

-bオプションに関して:これはディスクによって異なります。最近の大きなディスクには4KBのブロックがあり、その場合は-b 4096を設定する必要があります。ブロックサイズ オペレーティングシステムから を取得できます。また、通常、ラベルからディスクの情報を読み取るか、ディスクのモデル番号をグーグルすることによっても取得できます。 -bがブロックサイズよりも大きい値に設定されている場合、badblocksの結果の整合性が損なわれる可能性があります(つまり、偽陰性が発生する可能性があります。不良ブロックがまだ存在している場合は見つかりません)。 -bがドライブのブロックサイズよりも小さい値に設定されている場合、badblocksの実行速度が低下する可能性があります。よくわかりませんが、-bをブロックサイズよりも小さい値に設定すると、他の問題が発生する可能性があります。これは、ブロック全体の整合性を検証していないため、依然として偽陰性になる可能性があるためです。設定が小さすぎる場合。

-cオプションは、一度にチェックする必要があるブロックの数に対応します。基本的に、バッチ読み取り/書き込み。このオプションは結果の整合性には影響しませんが、badblocksの実行速度に影響します。 badblocksは、(オプションで)-cで指定されたNブロックごとに書き込み、次に読み取り、バッファリング、チェック、繰り返しを行います。 -cの設定が低すぎると、badblocksの実行に通常よりもかなり時間がかかります。別のIOリクエストをキューに入れて処理するとオーバーヘッドが発生し、ディスクはリクエストごとに追加のオーバーヘッドを課す可能性もあります。-cの設定が高すぎると、badblocksがメモリ不足になる可能性があります。これが発生した場合、badblocksは起動後にかなり早く失敗します。ここでの追加の考慮事項には、並列badblocks実行が含まれます。同じディスク上の複数のパーティションに対してbadblocksを実行している場合(悪い考え)、または同じ上の複数のディスクに対してIOチャネルの場合、badblocksに使用可能なメモリを考慮して、-cをかなり高く調整して、並列実行がIO帯域幅であり、まともな方法で並列化できます。

質問2:

-w書き込みモードテストは、非破壊読み取り/書き込みテストよりも信頼性は高くありませんが、他の回答が示すものとは対照的ですが、すべてのデータを破壊するコスト理由を説明します。

非破壊モードでは、badblocksは次のことを行います。

  1. 既存のデータを読み取り、チェックサム(必要に応じて再度読み取り)して、メモリに保存します。
  2. 所定のパターン(-pオプションでオーバーライド可能ですが、通常は必要ありません)をブロックに書き込みます。
  3. ブロックを読み戻し、読み取ったデータがパターンと同じであることを確認します。
  4. 元のデータをディスクに書き戻します。
    • これについてはよくわかりませんが、おそらく、元のデータが正常に書き込まれ、チェックサムが同じであることを再度読み取って確認します。

破壊的(-w)モードでは、badblocksは上記のステップ2と3のみを実行します。これは、データの整合性を検証するために必要な読み取り/書き込み操作の数が半分になることを意味します。ブロックが不良である場合、データはどちらのモードでもエラーになります。もちろん、ドライブに保存されているデータに関心がある場合は、非破壊モードを使用してください。-wはすべてのデータを消去し、代わりにbadblocks 'パターンをディスクに書き込みます。

警告:ブロックがgoing悪いがまだ完全に消えていない場合、一部の読み取り/書き込み検証ペアが機能する場合と機能しない場合があります。この場合、非破壊モードは、2組の読み取り/書き込み検証を行うため(おそらく、手順4の箇条書きを参照)、ブロックの「ムシネス」をより確実に示します。このように非破壊モードの方が信頼性が高いとしても、信頼性は高くなります偶然。完全に不良ではないが複数の読み取り/書き込み操作を維持できないブロックをチェックする正しい方法は、-pオプションを使用して、同じデータに対してbadblocksを複数回実行することです。

質問3:

SMARTがセクタを再割り当てしている場合は、ドライブをできるだけ早く交換することを検討する必要があります。いくつかのセクタを失ったドライブは、常にそれらを失い続けますが、通常は原因です使用頻度の高いドライブが磁気的にどろどろになったり、ヘッド/モーターが故障したりして、読み取り/書き込みが不正確または失敗したりします。最終的な決定はもちろん、ドライブ上のデータの値と必要な信頼性に基づいていますその上で実行しているシステム、それを維持することを決定するかもしれません。私はファイルサーバーで何年にもわたってSMART警告で回転している既知の不良ブロックを持つドライブをいくつか持っていますが、それらはバックアップされています全体の失敗をそれほど苦痛なしに処理できるように、スケジュールを立てました。

22
Zac B

1)最近のディスクが512b以外のセクターサイズを使用している場合は、_-b_オプションでそのサイズを設定する必要があります(つまり、_-b 4096_)。このオプションがないと、各実際のセクターが複数回試行されるため(4kセクターの場合は8回)、チェックの実行速度が大幅に低下します。また、質問へのコメントでオリビエ・デュラックが言及したように-block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

オプション_-c_は、一度にいくつのセクターをtryidにするかを示します。パフォーマンスに何らかの影響を与える可能性があり、そのパフォーマンスの価値は特定のディスクモデルに依存する可能性があります。

2)_write-mode test_-私の理解では、ハード不良エラーまたはソフト不良エラー(別名サイレントデータの劣化、ビットの腐敗、ストレージメディアの減衰、UNCセクター)があるかどうかのみをチェックします

3)私はSMARTレポートをある時点で信頼しません。値が時間とともにどのように変化するかがより重要です。また、これはGoogleによる調査です 大容量ディスクドライブの障害の傾向)人口 そして、ここにいくつかの ディスカッション があります。ここに研究からの引用があります:

この高い相関関係にもかかわらず、SMARTパラメータのみに基づくモデルは、個々のドライブの障害を予測するのに役立つ可能性は低いと結論付けています。

他のディスク交換に​​ついての言及について-ハード不良のディスクの問題ではなく、サイレントデータの劣化(ビットの腐敗、ストレージメディアの劣化、UNCセクター)がある可能性があります。その場合、ディスクを交換する意味はありませんが、代わりに同じデータの読み取り/書き込みをディスクに実行すると便利です。あなたはそれをどのように解決できるか here を見ることができます。

ハード不良エラーがある場合は、不良領域がどのパーティションからも外れるようにドライブを再分割してみてください。私にとってそのアプローチは役に立ち、そのような悪いドライブは何の問題もなく長期間使用されました。

4
Broomerr

この種類は、badblocksの読み取りモード(非破壊)と書き込みモード(破壊)の違いに行きます:

ドライブは、書き込みが失敗したときにのみ不良セクターを再割り当てします。ファイルの読み取りエラーは、ファイルを再書き込みしようとしたときにのみ「修正」されます。さもないと。何かを回復できる可能性があるという前提で、不良ブロックはファイルの一部のままです。パーティションテーブルの読み取りエラーは、書き込みモードで不良ブロックを実行してパーティションを再作成することによってのみ「修正」できます

したがって、読み取りモードは不良ブロックの場所を通知しますが、それらについては何もできません。書き込みモードは、各セクターの状態をテストし、ディスクに不良ブロックを再割り当てさせますが、データを破壊します。好きなのを選びな。

1
David Miller

-bと-cは、変更する特別な理由がない限り、デフォルトのままにしておきます。ディスクのブロックサイズが4kの場合、おそらく-bを4096に設定できます。

まず、非破壊のrwテストでbadblocksを実行することをお勧めします。不良セクターが見つかった場合は、ディスクが壊れているため交換する必要があります。非破壊的に不良ブロックは検出されないが、それでも不良ブロックがあると思われる場合は、破壊的なrwテストを実行します。

最後に、SMARTセクターの再割り当てはいくつ許容されますか/再割り当てカウントがゼロ以外のドライブをすぐに置き換える必要がありますか?

セクターが交換されたらすぐにドライブを交換します。

1
Thomas

再マップされたセクターに関する2番目の質問に答えるかどうかは、状況によって異なります。私はこのようなものを(ときどき)監視しているホームユーザーのコンテキストから話しています。

  • ドライブに保存されているデータはどのくらい重要ですか?
  • ドライブが突然腹を上げた場合、何が失われますか?
  • データは他の場所にバックアップされていますか?
  • ドライブの損失による影響が最小限のRAIDのメンバーですか?
  • リマップされたセクターの数は増えていますか?

これが私が直面した2つの状況です。私は6つの200GBドライブのRAID5を持っていました。ライトがちらつく原因となる電源障害の後、1つのドライブは14の再マッピングされたセクターを示し、いくつかのエラーを記録しました。ドライブを監視したところ、エラーは記録されず、再マップされたセクターの数は安定したままでした。私は、ドライブが電力過渡現象のために苦しみ、他の方法では故障していないと結論付けました。何年も使い続けました。元のRAID5は廃止されましたが、私はそのうちの2台のドライブを稼働させ、約10年間の電源オン時間を実現しています。再マッピングされたセクターがいくつかあります。そのうちの2つをミラーリングして、プライマリバックアップからの増分バックアップダンプを保存しています。このようにして、メインバックアップは(主に)読み取り操作を確認し、書き込みは別のデバイスに送信されます。これらの古代のドライブの1つが失敗した場合、他のドライブは続行する必要があります。両方とも失敗した場合は、別のものに置き換えて、バックアップスクリプトを再実行します。これらのドライブの1つに障害が発生した場合の影響はゼロに近いので、再マップされたセクターについては心配しません。

ミラードライブのペアの1つである2TB HDDがあり、再マップされたセクターが増え始めました。最初は数十、次に数百、そして数千でした。これは何年にもわたる期間でした。ペアのもう一方のドライブは正常なままであり、実際には、徐々に失敗するドライブはアレイから削除されませんでした。結局、私は両方のドライブを6TBドライブに交換し、増加する再マップされたセクター数は問題ではなくなりました。私はまだドライブを持っていて、約4500の再マップされたセクターでも、それはまだ「機能します」。このようなドライブをテストシステムに(RAIDメンバーとして)入れて、実際に死ぬとどうなるかを確認しました。私はこれで作業する機会が2回ありましたが、すべての状況で、交換はドラマなしで行われました。

プライマリバックアップファイルサーバーでドライブに障害が発生しました。高度な警告は生成されず、SATAコマンドへの応答が停止しただけです。 ZFS RAIDZ2のメンバーだったのでドラマなしで交換しました。実際、テストサーバーでは、サーバーの電源を入れ直したり再起動したりせずに、故障したドライブを交換しました。

もう1つ注意すべき点として、私はすべての重要なデータのオンサイトおよびオフサイトのバックアップを持っています。 1つのシステムが失われた場合、別の場所にデータのコピーが2つあります。

0
HankB