私は初めてBTRFSに触れ、HDDにすでにセクタレベルのデータ整合性ECCがあり、BTRFSがCRC32cを使用している理由を理解しようとしています。 BTRFSがデータの整合性保護を提供するためにメディアに依存しないためですか?ありがとうございます。
答え1
ディスクは静かにデータを破損する可能性があります。バラよりhttp://storagemojo.com/2007/09/19/cerns-data-corruption-research/これはこの研究の一例に過ぎません。
答え2
私は、しばしばディスクに報告されていないエラーがあり、それをFUDの原因と見なすという主張を受け入れません。はい、エラー検出コードに十分なランダムデータを投げると、実際にはそうではありませんが、データが正しいと報告することがあります。しかし、問題は、ドライブがランダムなデータを読み取ろうとしないことです。これは、正しく書き込まれ、再読み込まれたほとんどのデータを読み取ることです。その後、これは多くの誤ったビットを修正する可能性があるエラー修正コードを介して渡されます。報告されていないエラーを得るには、通常よりもはるかに多くの生のエラーを取得し、ECCを圧倒し、それを並べ替える必要があります。まさにECCの出力が自分で整列されるようにまさにそれはEDCがそれが良いと思うようにだまされた。確率は次のとおりです。たくさん高いほど、少なくともEDCはエラーを認識し、修正できないエラーとして報告します。どのくらいの頻度それ起こる?ドライブがすぐに故障したり、書き込み中に突然電源が切れる場合を除き、デフォルトでは絶対に使用しないでください。したがって、修正不可能なエラーがほとんど発生せず、報告されていないエラーが発生する可能性が百万倍低い場合は、どういう意味ですか?
一方、データの重複コピーを保存する場合は非常にまれですが、1つのコピーが自動的に破損した場合は、どのコピーが正しいかを知る方法があればよいでしょう。また、crcは同じデータの重複コピーを含むブロックを検出するのに役立ちます。これにより、btrfsの別の設計機能である重複排除が可能です。
答え3
はい、最初はデバイスがエラーを報告したり正しいデータを保存したりすることを信頼していません。これが本当に必要かどうかはまったく異なる質問です。一般的に、これは誰も心配せず、すべてがうまく機能します。
ディスクがエラーを報告しない場合、ファイルシステムはこれらのエラー報告に依存するだけでなく、他のコンポーネント(RAIDコントローラなど)もデータ全体を保存するため、大きな問題が発生します。危険にさらされた人は少数ではありません。
ファイルシステムがチェックサムを実行しているかどうかにかかわらず、常にストレージでSMARTセルフテストなどのセルフテストを実行する必要があり、RAIDの場合はパリティデータの不一致を確認する必要があります(/sys/block/mdX/md/mismatch_cnt
check sync_action = 0実行後)。
答え4
btrfs
次世代ファイルシステムです。これは、過去にそれらの間で処理された階層モデルと同じ目的を多数含んでいます。btrfs
また、非常に広範なスタック - よくある質問では、パーティション化されていないディスク*[s]*への書き込みと、すべてのパーティション化、クォータ、圧縮、イメージング、ストライピング、記録中のコピー、重複排除、および可能であれば10個をお勧めします。私は別に言及していない別の機能があります。ファイルシステムの品質によるものです。これらすべてのこととそれ以上のことができます。
btrfs
ディスクアレイは動的であるため、ライブシステムから問題なく追加および削除できます。これはbtrfs
、メモリブロックグループが必要な場合にのみチャンクされ、現在アレイ内の特定のデバイスに存在できるために機能します。 FAQにはこれについて言及されています。特に空き容量推定値の信頼性が低下した場合にはい
たとえば、1つのサブボリュームが単一で、もう1つがRAID-1の場合、最初のサブボリュームは記録されたすべてのデータバイトに対して1バイトの割合で生のストレージスペースを使用します。 2番目のサブボリュームは、書き込まれたすべてのデータバイトに対して2バイトの生データを占めます。したがって、使用可能なRAWスペースが30GiBの場合、最初のサブボリュームに30GiBのデータを保存したり、2番目のサブボリュームに15GiBのデータを保存したりできます。
したがって、通常、btrfsファイルシステムの空き容量を正確に推定することは不可能です。いいえ。ユーザーがどれだけのスペースが残っているかを簡単に知ることができる本当に良いアイデアがある場合は、教えてください。また、btrfs開発分野のトップエキスパートがこの問題について少なくとも数年間考えてきたことにも注意してください。まだ簡単な解決策は見つかりませんでした。
btrfs
関連セクションを読むとより具体的な例が得られますが、デバイスの数は可変であり、永続性は一時的であり、ブロックとストライピングは別々にまたは一緒に行うことができることが非常に明らかになりました。いいですね。続きます。 FAQの別の引用:
デバイス管理は複雑なトピックであり、最善のアプローチについてはさまざまな意見があります。内部的には、Btrfs コードはデバイス管理を処理するコンポーネントを分離し、そのコンポーネントの独自の階層を維持します。ファイルシステムメタデータの大部分は、複数のデバイスに関連することは知られていません。
RAIDについて次のように言います。
btrfs は RAID-0、RAID-1、RAID-10 をサポートします。 Linux 3.9以降、btrfsはRAID-5とRAID-6もサポートしていますが、コードはまだ実験的です。
btrfs は最初にすべてのデバイスをストレージプールに結合し、次にファイルデータを生成しながらブロックをコピーします。 RAID-1は、現在「他のデバイスにあるすべてのデータの2つのコピー」として定義されています。これは、nデバイスのnコピーを作成するMD-RAIDおよびdmraidとは異なります。 3つの1TBデバイスのbtrfs RAID-1は、1.5TBの利用可能なデータを取得します。各ブロックは2つのデバイスにのみコピーされるため、特定のブロックを書き込むには2つのデバイスにのみ書き込みが必要です。読み取りは1つだけ開始できます。
データ復旧:
btrfs-raid 5/6の利点は、MD-RAIDとは異なり、btrfsはどのブロックがデータ/メタデータによって実際に使用されているかを知っています。再構築できるということです。実際に使用されているデバイスブロックを交換し、最初から完全に未使用または空のブロックをスキップします。
MD-RAIDは、ファイルシステムに拘束されていないレイヤーになろうとし、その上のレイヤーのどのブロックが実際に使用されているか空であるかわからないか、気にしないため、これを行うことはできません。追跡しようとすると階層違反となり、コードを厳しく複雑にしたり、サポート/理解/正確に追跡できるファイルシステムや他の層にのみ使用を制限したりします。
もちろんbtrfs
最初から設計されています。超越フロア。これには、現在マージされているすべてのデバイスのチェックサムを含め、再構築が可能である程度重複するツリーを維持する必要があります。btrfs
多くの点で、これはファイルデータベースとファイルシステムです。ほとんどの場合、eccの存在を考慮しないため、eccの基本デバイスに依存しません。はい基本機器おそらくディスクチックだと思えばいいと思います。
btrfs
それにもかかわらず、基本的なハードウェアについて全く考えずに多くの興味深い作業を実行できるのは、継続的なチェックサムとメタデータ管理です。