web-dev-qa-db-ja.com

ビット腐敗から保護するためにbtrfs / ZFSにRAID1または同様のものが必要ですか?

LinuxソフトウェアRAIDを使用して、raid6として設定されたファイルサーバーを実行しています。ファイルシステムとして、btrfsを選択しました。ただし、btrfs独自のraid6実装はまだ安定していないため、使用していません。だから基本的に、私は物事のブロックレベルでレイドを使用しています。さらに、私は本当に重要なデータの別の場所にバックアップを作成しています。最後に、電力損失とサージから保護するために、UPSをサーバーに接続しました。

私の質問:

  1. Raid6がハードドライブの障害に対して非常に優れた保護を提供することは知っていますが、その上にあるbtrfsは実際にビットの腐敗を検出し、修正しますか?もしそうなら、ファイルシステムraid1なしでそれはどのように可能ですか?

  2. Mdは破損を見つけて修正するためにraid6ブロックを時々通過しますか?スケジュールする必要がありますか?

  3. 私が間違ったことをした場合、データ障害やビット腐敗に対する適切な保護が必要な場合は、代わりに何をすることをお勧めしますか?

5
user333556

1:構成では、btrfsはデータの破損を検出する必要がありますが、btrfsに関する限りデータの冗長性がないため、データの破損は修正されません。

2:RAID6は、ビットの破損を検出せず、確実に保護しません。ディスク障害から保護するだけで、場合によっては未使用の不良ブロックを検出することがあります。

3:btrfs RAID6の準備ができていない場合は、btrfsミラーリングまたはZFSRAIDZ2のいずれかを検討してください。

4
jlliagre

BTRFS RAID-6は(まだ実験的ですが)実際にはかなり安定しています。現在のバージョンでは、故障したドライブや紛失したドライブの交換など、多くの一般的なエラーを修正することもできます。

ZFSと同様に、BTRFSはチェックサムを実行します。つまり、いつでも(定期的に)スクラブを実行してデータを検証できます。ドライブ上のデータ(データまたはメタデータ)が破損している場合、BTRFSはエラーを検出でき、冗長性がある場合(BTRFS RAID-6を使用)、影響を受けたファイルを修正できます。この後、チェックサムがあるため、修復されたファイルが正しいかどうかがわかります。

MD(ソフトウェア)RAIDを含む従来の(ハードウェア)RAIDシステムには、チェックサムがありませんありません。これらのシステムはパリティのみに依存しているため、いくつかのドライブでのエラーの不幸な組み合わせは、破損につながる可能性があります。チェックサムがないため、RAIDシステム(mdなど)は、スクラブ後にすべてのエラーがなくなったこと(つまり、ファイルが正しいこと)を確認できません。従来のRAIDシステムでのデータ破損を示す例(一部のビデオも)があります。
最初のパリティエラーが検出されたらすぐに通知を受け取り、できるだけ早く問題を修正することが重要です(スクラブ)。また、パリティはRAIDシステムがデータに問題がないかどうかを知る唯一の(信頼性が低い)方法であるため、停電時にこの貴重なパリティデータがすべて書き込み穴に失われるのを防ぐために、バッテリバックアップを使用する必要があります。 。

ダムRAID-6システム上で単一のファイルシステム(冗長性なし)としてチェックサムを実行するBTRFSのような高度なファイルシステムを使用する場合、エラーが多すぎると破損するため、エラーを検出して修正するのはこのRAIDシステム次第です。 RAIDシステム、BTRFSはそれらを修正できません。エラーを検出し、どのファイル(パス)が破損しているかを通知することで、バックアップから何を復元するかを決定するのに役立ちます。しかしそうでなければ、それまでには手遅れになるでしょう。結局、この設定はそれほど良い考えではないかもしれないのはこのためです。

想定どおりにBTRFSを使用する場合、ドライブに直接アクセスできるBTRFS RAID-6ファイルシステム(MD RAIDなし)を作成することで、エラーを確実に修正でき、エラーが実際になくなったかどうかがわかります。チェックサムがあるからです。これらのエラーが発生したドライブがわかるので、どのドライブが不良であるかがわかります(btrfsコマンドを使用して置き換えることができます)。重要なのは、ドライブが故障/欠落していて交換する必要がある場合でも、ドライブが部分的に破損している場合(ドライブが死にかけているため)でも、BTRFSはエラーを確実に検出するということです。もちろん、サイレント破損を検出するには、他のRAIDシステムと同様に定期的なスクラブが重要です(ヒント: cronjob )。

繰り返しになりますが、BTRFS RAID-6はまだいくつかの点で実験的であると考えられていますが、チェックサムを持つことで、エラーを検出(そして修正)するための信頼できる方法をすでに提供しています。これは実験的なものであるため、場合によってはクラッシュする可能性があります。その後、新しいカーネルバージョンを試す必要があります。これは、多くのBTRFS問題の修正です。カーネルを最新の状態に保つようにしてください(執筆時点では4.3、RAID-6より古いものは使用しないでください)。ただし、一般的なRAIDのユースケース(大量のデータを保存し、ある時点でドライブを交換するだけで、マルチドライブの障害は異なる場合があります)はすでにBTRFSで機能します。


質問に zfs のタグを付けました。 ZFSはLinuxカーネルに含まれていないため、手動でインストールする必要があります- ZFSonLinuxポート は非常にうまく機能します。新しいカーネルバージョンがインストールされた後、それを再インストールするか、他の修正を行う必要があるかもしれませんが、それは今は重要ではありません。もちろん、ZFSでは動作が異なるものがいくつかあります。また、BTRFSファイルシステムとは異なり、ZFS RAIDZ2(RAID-6など)のzpoolはサイズ変更できません(「トリック」はありますが、ドライブを追加してもraidz2 vdevを実際に拡張できないということです)。したがって、既存のシステムではサイズを変更できません。より多くのドライブで簡単に拡張できます。ただし、安定性に関する限り、ZFSはおそらくすべての中で最良の選択です。チェックサムを使用すると、説明したように信頼性の高いデータ保護を提供し、ほとんどすべてを処理するのに十分成熟しています(複数のドライブ障害、不安定なコントローラー、ZFSはほとんどすべてを生き残り、十分な数の優れたドライブがある限り、データを保護/修正できます)。 (BTRFSのように)ZFSは(エラーを修正できるように)ドライブに個別にアクセスする必要があることを考えると、正当な理由がない限り、MDRAIDボリュームの上でZFSを使用しないでください。

4
basic6

あなたのセットアップではそうではありません。

私がお勧めするのは、ZFS組み込みのRAID-z2を使用することです。これにより、ビット腐敗回復を実行できます。 lz4圧縮を有効にすると、パフォーマンスが向上し、スペースが節約されます。

2
kim0