web-dev-qa-db-ja.com

MDRAIDセクターの修復

この記事 は、RAIDコントローラーは回復不能な読み取りエラーについて賢明であり、コンポーネントドライブの冗長性を使用してそのようなセクターを書き換えようとしていると述べています。セクターが不良の場合、ディスクのファームウェアはセクターを透過的に再割り当てします。

Linux MD RAIDは同様のことをしますか?たぶん私のGoogle-Fuは悪いですが、私はそれについて何も見つけることができません。

5
Halfgaar

SHORT ANSWER:ミラーリングとパリティベースのRAIDレイアウトは、通常の読み取り中とスクラブ中の両方で、不良セクタをおそらく良好なデータで修復することをサポートします。ただし、従来のRAID(ハードウェアベースとソフトウェアベースの両方)は、サイレントデータ破損に対して何もできません。これには、データチェックサム(BTRFSやZFSなどによって提供される)の形でより強力な保護が必要です。

長い回答:質問と提供された回答は、ディスク、MDRAID、およびチェックサムファイルシステムがどのように機能するかについてのさまざまな概念を混同しています。それらを1つずつ説明しましょう。とにかく、正確な動作はファームウェアと実装に多少依存することを考慮してください。

  • 防御の第一線は、ディスク自体の内部ECCです。ビットが悪くなると、組み込みECCリカバリが開始され、影響を受けたエラーがリアルタイムで修正されます。通常、ECC読み取りレートが低いと、セクターの自動修復/再割り当ては発生しません。ただし、ECCエラーが蓄積されて大きくなると、ディスクのファームウェアは最終的に影響を受けるセクターを再割り当てしますbefore読み取り不能になります(これはSMART属性によって「再割り当てされた偶数カウント」としてカウントされます)。一部のエンタープライズディスクは、定期的にすべてのセクターを読み取り、問題のあるセクターをタイムリーに検出します(SAS/SATA表面スキャンを参照)。

  • セクターがほとんど読み取られず、ディスクが段階的なセクターデータの破損を「認識」しない場合、読み取りが突然失敗し(「保留中のセクター」SMART属性)、影響を受けるデータが失われます。ディスクはSATAREAD ERRORをオペレーティングシステムに報告し、次に進みます。 RAID 1/5/6スキームを使用している場合、システムには十分な冗長性があり、欠落データを再構築、障害のあるセクターを上書きし、ディスクファームウェアによっては、セクターの再割り当てを強制します。従来、ハードウェアRAIDカードとMDRAID(LinuxソフトウェアRAID)の両方がこのように機能し、HDD独自の再マッピング機能に依存していました。新しいHWRAIDカードとMDADMリリースは、HDDが影響を受けるセクターの再マッピングに失敗した場合(つまり、スペアセクターが利用できないため)に起動する内部再マッピングリストをさらに提供します。詳細については、 md man page 、特に「RECOVERY」セクションを参照してください。これは明らかに、ディスクをすぐに交換する必要があることを意味します。読み取り不能なセクターの検出が遅すぎるのを防ぐために、すべてのRAID実装は、「スクラブ」または「パトロール読み取り」操作をサポートしています。この操作では、アレイ全体が定期的に読み取られ、基盤となるディスクがテストされます。

  • 上記の保護スキームは、読み取り/書き込みエラーがRAIDカードやオペレーティングシステムに明確に報告されている場合にのみ機能します。サイレントデータ破損の場合(つまり、ディスクが明確なエラーではなく不正なデータを返す)、このようなアプローチは役に立ちません。サイレントデータの破損(定義上、SMART属性によって報告されない)から身を守るには、返されたデータの正確さを検証するための追加のチェックサムが必要です。この追加の保護は、ハードウェアベース(例:SAS T10拡張)、ブロックデバイスソフトウェアベース(例:dm-integrity)、または完全に統合されたチェックサムファイルシステム(BTRFSおよびZFS)です。 ZFSとBTRFSについて言えば、それらはRAIDコンポーネントと同様ですが、同一ではない(つまり、実際に割り当てられたスペース/データのみをスキャンする)「スクラブ」操作をサポートします。

注:RAID6または3ウェイRAID1レイアウトは、理論的に何らかの形式の「多数決」を使用することにより、RAID5および2ウェイRAID1と比較してビット腐敗に対する保護を追加できます。ただし、massiveのパフォーマンスヒットが発生するため、一般的な実装ではそのような動作は見られませんでした。詳細については、 ここ を参照してください。

2
shodanshok

厳密な意味でのlinuxmd raidはそれを実行できませんが、dmraid(デバイスマッパー、lvmのカーネル側)には不正なブロックリマッパーモジュールがあります。

もちろん、dmとmdは並行して使用できます。最も一般的な構成では、RAIDアレイにはlvmボリュームグループがあります。これは、badblockマッパーでも拡張できます。

注意しなければならないのは、現在のハードディスクコントローラーのファームウェアにはそのようなbadblockマッパー機能があるということです。

ほとんどの専門のシステム管理者は不良ブロックのあるディスクを扱いませんが、最初の問題の後でそれを捨てます。彼らはそれをコストリスク計算で説明していますが、それは真実ではありません。真実は、彼らは単に怠惰であるということです。ほとんどのオペレーティングシステム(特にLinux)では非常に優れたbadblock処理が行われているため、このようなハードディスクを恐れることなく使用できます。