btrfsスクラブは正確に何をしますか?完全に不明なマニュアルページによると、それはいくつかのエラーチェックを行います。どのようなエラーチェックですか?信頼性はどのくらいですか?いくつかのエラーを回復できますか?どのように機能しますか?すべてのbtrfsディスクで動作しますか?
btrfsスクラブは正確に何をしますか?完全に不明なマニュアルページによると、それはいくつかのエラーチェックを行います。どのようなエラーチェックですか?信頼性はどのくらいですか?いくつかのエラーを回復できますか?どのように機能しますか?すべてのbtrfsディスクで動作しますか?
回答:
それが他に何かをするかどうかはわかりませんが、少なくともbtrfs scrub
フルディスクのデータスクラブを行うことは知っています。基本的に、ディスク上のすべてのデータ*を読み取り、チェックサムを再計算し、再計算されたチェックサムと保存されているチェックサムを比較します。保存され、再計算されたチェックサムが一致しない場合、システムは破損があることを認識します。
破損が検出されると、動作はディスクのセットアップに依存します。たとえば、RAID 1(ミラーリング)がある場合、btrfs scrub
破損していないバージョンを別のディスクからコピーすることで破損したデータを修正できます。一部のデータのすべてのコピーが破損している場合(たとえば、マルチディスクの損傷または最初に冗長なコピーがない場合)、btrfs scrub
警告以外にできることはあまりありません。
これが重要な理由は、ハードドライブのビットの読み取りと書き込みの信頼性は約99.999999999999%に過ぎないことです。そのため、数テラバイトのデータI / Oごとにエラーが発生する可能性があります。通常のディスクアクセス中にエラーが検出される可能性がありますが(冗長コピーがまだ有効であると仮定して修正されます)、ルーチンのフルディスクスクラビングは、同じデータのすべてのコピーが破損するほど蓄積する前にエラーを見つけて修正できます。
*「ファイル」ではなく「データ」を使用してメタデータも含めています。Btrfsは、ファイルと対応するメタデータ(チェックサムを含む)をデータブロックに保存します。これらはすべて、チェックサムされ、チェックされbtrfs scrub
ます。
こちらもご覧ください:
100-1/10^14
ナインは16個あり、ポストのナインは14個しかありません(10 ^ 12に対応)。
1-10^n
であり、人間は先行小数を好まないため、パーセントに変換されます。また、以前のコメントで、ドライブがRAID 1にあること(各270-300 GiBデータが同じである)について言及することを怠ったため、別の明らかな計算エラーが修正されました。
Mark Haferkampの優れた答えを拡張して、すべてのファイルの代わりにすべてのデータをbtrfs scrub
読み取ることは重要な特性であり、実際にそれが非常に役立つことです。btrfsにはRAIDサポートが組み込まれていることを忘れないでください。RAID1を使用するように設定した2つのドライブにまたがるbtrfsファイルシステムがあるとします。この場合、ファイルに書き込むと、その書き込みは両方のディスクに複製されます。(より複雑な例ではより複雑になりますが、この単純なケースでは、常にこれが起こります。)ただし、そのファイルから読み取る場合、読み取りは1つのディスクのみにヒットします(ファイルを2回読み取るのは無駄なので)最初のコピーが何らかの理由で使用できない場合を除きます)。
ここで、2番目のbtrfsドライブが劣化し、ファイルシステムのデータが破損し始めているとします。このディスクからブロックを読み取ると、btrfsはチェックサムが一致しないことに気付き、既知の正常なコピー(最初のドライブのコピー)からインバンドでブロックを復元します。read()
何も起こらなかったかのように(または何でも)呼び出しているアプリケーションにデータを返します。
しかし、btrfsが2番目のディスクからの読み取りを決定しない場合はどうなりますか?2つのコピーがあるため、最初のディスクまたは 2番目のディスクのいずれかから読み取ることができます。最初のディスクから読み取る場合、何も問題はありません。何か問題があることに気付くのは、最初のディスクも劣化したときだけです。データを回復するのが遅すぎるため、実際にホースが詰まっています-2番目のディスクのコピーがしばらく破損しており、最初のコピー(2番目のディスクを復元するために使用したもの)も破損しています!
これがbtrfs scrub
出番です。すべてのファイルではなく、すべてのデータを読み取ります。これにはメタデータが含まれますが、通常は読み取りパスにはないファイルのセカンダリコピーも含まれます。これらのセカンダリコピーを読み取ると、btrfsの帯域内エラー修正が開始され、冗長コピーからデータが復元されます。