異なるディスクサイズの btrfs RAID1

異なるディスクサイズの btrfs RAID1

2TB ディスク上に既存の btrfs ファイルシステムがあり、冗長性としてさらに 5TB ディスクを追加したいと考えています。

新しいディスクをbtrfsでフォーマットし、デバイスを追加するだけです。

btrfs device add /dev/sdX /mymountpoint
btrfs filesystem balance start -dconvert=raid1 -mconvert=raid1 /mymountpoint

最終的に、2TB の使用可能なディスク領域と、両方のディスクにすべてのデータが格納されます。ただし、5TB ディスクの予備の 3TB を使用して、すべての書き込みを大きい方のディスクに 2 回行う (2TB ディスクにすべてを 1 回格納し、5TB にすべてを 2 回格納する) ことができれば、冗長性を高めることができます。これは可能ですか?

レイテンシの増加、速度の低下などのデメリットがあることは承知しています。

答え1

技術的には、大きい方のディスクにそれぞれ2TBのパーティションを2つ作成すれば、小さい方のディスク(またはそのパーティション) を、同じ (またはほぼ等しい) サイズの 3 つのデバイスとして表示します。

たとえデメリットがあっても構わないとしても、それをしないでください。理由は次のとおりです。

btrfs は、まずすべてのデバイスをストレージ プールに結合し、ファイル データの作成時にチャンクを複製します。RAID-1 は現在、「すべてのデータの 2 つのコピーを異なるデバイスに作成する」と定義されています。これは、n 個のデバイスに対して n 個のコピーを作成するという点で、MD-RAID や dmraid とは異なります。3 つの 1 TB デバイス上の btrfs RAID-1 では、1.5 TB の使用可能なデータが得られます。各ブロックは 2 つのデバイスにのみコピーされるため、特定のブロックを書き込むには、2 つのデバイスに書き込むだけで済みます。読み取りは 1 つのデバイスからのみ行うことができます。

ソース

そのため、一部のデータは大きい方のディスクの 2 つのパーティションに保存され、小さい方のパーティションには保存されない可能性があります (実際に起こります)。このような「貧乏人の冗長性」は、大きい方のディスクが部分的にまたはローカルに故障した場合には役立つことがあると思います。ディスク全体が故障した場合、そこに 2 回保存されているデータは失われます。

あなたが望むことは、「n個のデバイスにn個のコピー」アプローチで実現できます(繰り返しますが、この場合、大きなディスク上の2つのパーティションがデバイスです)。LVM と MDRAID を使用した RAID の長所と短所

ただし、私ならそうしません。この設定では、各書き込み操作は同じ物理デバイス上の 2 つのパーティションに作用します。両方のパーティションに順番に書き込む場合でも、これらは同時書き込みであり、ヘッドを前後に移動させる必要があります。ただし、対応する書き込みが共通アームの同じ位置にある 2 つの異なるヘッドによって実行されるようにパーティションを特別に設定した場合は除きます。ファームウェアは 2 つのヘッドを使用して同時に書き込みを行うことができますか? そもそも、両方のパーティションのデータは常にほぼ同時に到着しますか? 2 つのパーティションへの対応する書き込みの間に読み取り操作がスケジュールされることはありませんか? これらはすべて疑わしいです。

したがって、非 RAID 構成の場合よりもヘッドの移動量が多くなると想定するのは妥当です。これにより、アームの寿命が短くなる可能性があります。アームが機械的に故障すると、ディスク全体が故障します。その場合、そこにコピーがいくつあったかは関係なく、残るのは小さい方のディスクだけです。

結論: あなたのアイデアは、(発生した場合)追加の冗長性がまったく無関係になるような障害のリスクを増大させる可能性があります。

答え2

btrfs でこれを実装する簡単な方法はありません。しかし、さらに重要なのは、これは使用すべきではない危険な構成だということです。

RAID1 の目的は冗長性です。単一のディスクにデータを 2 回保存しても冗長性は得られません。そのディスクに障害が発生すると、データは失われます。

関連情報