web-dev-qa-db-ja.com

btrfsデバイスをraid1アレイに追加し、合計サイズを増やします

RAID 1に2つの2TBディスクで構成されるbtrfsアレイがあります。スペースが不足しているので、横になっている2つの3TBディスクを追加したいと思います。最終的なセットアップは、2x2TB + 2x3TBドライブになります。ドライブ障害の冗長性は1つで十分です(データは別の場所にもバックアップされます)。

続行する方法がわかりません。 btrfs wiki は、新しいデバイスを追加する方法を明確に示していますが、使用可能なディスク容量の観点からこれがどのように表示されるかはわかりません。私は最終的に:

  1. 4倍の冗長性を備えた2TBのスペースまたは
  2. 2倍の冗長性を備えた4TBのスペースまたは
  3. 他に何か?

いくつかの調査に基づいて(例: this answer)、結果は2になるはずだと思います。これは、私が望むものです。これは正しいです?

別の可能性は、異なるサイズのディスクで可能であれば、RAID10セットアップに切り替えることです。これが推奨される場合、外部ストレージでデータを一時的にホストせずにどのように行う必要がありますか?

3
AF7

4倍の冗長性を備えた2TBのスペースまたは

公式ウィキからの引用はそれを詳細に説明しています:

「…btrfsは、最初にすべてのデバイスをストレージプールに結合し、次にファイルデータが作成されるときにチャンクを複製します。

RAID-1は現在、「異なるデバイス上のすべてのデータの2つのコピー」として定義されています。

これは、MD-RAIDやdmraidとは異なります…」

—2部のみ。

別の可能性は、異なるサイズのディスクで可能であれば、RAID10セットアップに切り替えることです。

再び同じ情報源を読む:「…

RAID-10はこれらの定義の上に構築されています。

すべてのストライプは正確に2つのRAID-1セットに分割され、それらのRAID-1セットは正確に2つのデバイスに書き込まれます(したがって、最小4つのデバイス)。 6×1のbtrfsRAID-10ボリュームTBデバイスは3 TBすべてのデータの2つのコピーで使用可能なスペースを生成します。…」

外部ストレージでデータを一時的にホストせずにこれを行うにはどうすればよいですか?

これはすべて、「変換」の段落でも説明されています—データとメタデータに必要なプロファイルの仕様を使用してマウントポイント上でbtrfs balanceを開始します。彼らの例を簡単に調整すると、次のようになります。

btrfs balance start -dconvert=raid10 -mconvert=raid10 /…mntPoint…

そのプールに2つの新しいディスクを追加した後は、中間のbalanceに必要はないと思います。追加自体はリバランスを行わず、新しく書き込まれたデータのみが追加のデバイスを使用します。したがって、それは非常に簡単です。好みのレイアウトにバランスを追加して開始します。


結論

理論的には、「btrfsは最初にすべてのデバイスをストレージプールに結合します "

練習

たとえば、はるかに小さいサイズのループバックデバイスでセットアップを使用して、これらすべてをテストするのは非常に簡単です。

注意の言葉

Btrfsがかなり成熟したにもかかわらず、複数のデバイスのサポートは、非RAIDのようなモードと比較してまだ十分に堅牢ではないと聞きました。最初にループバックデバイスで上記の変換を試すことをお勧めしますそしてそれが成功したとしても、少なくとも最も重要なデータをどこかにバックアップします

また、私自身の意見を表明すると、このようなセットアップをLSR(LinuxソフトウェアRAID、別名MD)よりも従来のLVM-2に変換して、後でBtrfsで使用する論理サブボリュームを作成できるようにしたいと思います。またはその他の必要なFS。

4
poige