EC 構成

ストレージプールをデプロイする前に、RustFS のイレイジャーセットのサイズとパリティを計画し、設定します。

RustFS は Reed-Solomon イレイジャーコーディング(EC)を使い、各オブジェクトをイレイジャーセット内のドライブへ分散します。このページでは、使用可能な容量の見積もり、自動デフォルトの内容、デプロイに明示的なパリティ設定が必要かどうかの判断を説明します。

レイアウトを理解する

各ストレージプールは、1 つ以上のイレイジャーセットに分かれます。ドライブ数 N、パリティシャード数 M のセットでは、次のとおりです。

  • データシャード: N - M
  • パリティシャード: M
  • 再構成できる、利用不能なシャードの最大数: M
  • おおよその容量効率: (N - M) / N

たとえば、EC:4 の 16 ドライブセットは、データシャード 12 個とパリティシャード 4 個を保存します。ファイルシステム、メタデータ、運用上のオーバーヘッドを除くと、おおよその容量効率は 75% です。

障害ドメイン

パリティが示すのは、1 つのイレイジャーセット内で利用不能になったシャードです。ノード単位の耐障害性は、そのセットのドライブがノード間にどう配置されているかで決まります。EC:4 であれば、ノード 4 台の完全停止に常に耐えられるわけではありません。1 台のノードが、同じセットに属する複数のドライブを持つことがあります。

自動パリティ

検証済みの特定の耐久性要件または容量要件がない限り、RUSTFS_STORAGE_CLASS_STANDARD は未設定のままにすることを推奨します。RustFS は、イレイジャーセットあたりのドライブ数から、プールごとに STANDARD のパリティを独立して算出します。

イレイジャーセットあたりのドライブ数(N)自動の STANDARD パリティデータシャードおおよその効率
1EC:01100%
2–3EC:1N - 150%–67%
4–5EC:2N - 250%–60%
6–7EC:3N - 350%–57%
8–16EC:4N - 450%–75%

複数ドライブのイレイジャーセットに含まれるドライブ数は 2 から 16 です。シングルドライブのデプロイは、パリティがゼロの別のレイアウトです。

セット幅でパリティを検証する

パリティは、クラスター内のドライブ総数ではなく、各イレイジャーセットのドライブ数に対して検証します。クラスターには、幅の異なる複数のセットやプールを含められます。

使用可能な容量を見積もる

セットがすべて同じ幅とパリティを使うプールでは、次の式で EC の容量を見積もります。

usable capacity≈raw capacity×N−MN\text{usable capacity} \approx \text{raw capacity} \times \frac{N-M}{N}

たとえば、それぞれ 10 TiB のドライブ 16 台を、EC:4 の 16 ドライブセット 1 つとして配置した場合、おおよそ次の容量になります。

160 TiB×16−416=120 TiB160\ \text{TiB} \times \frac{16-4}{16} = 120\ \text{TiB}

XFS、オブジェクトのメタデータ、バージョニング、未完了のアップロード、データ修復、通常の運用上の余裕のために、追加の容量を確保します。この結果は計画用の見積もりであり、利用できる容量を保証するものではありません。

パリティを設定する

EC の変数は、RustFS サービスが使う環境ファイル(例: /etc/default/rustfs)に設定します。

推奨する自動の STANDARD パリティを使うには、RUSTFS_STORAGE_CLASS_STANDARD を省略するか、空のままにします。

/etc/default/rustfs
RUSTFS_STORAGE_CLASS_STANDARD=

パリティを明示的に固定するには、EC:<parity> 形式を使います。

/etc/default/rustfs
RUSTFS_STORAGE_CLASS_STANDARD=EC:4
RUSTFS_STORAGE_CLASS_RRS=EC:1

RUSTFS_STORAGE_CLASS_STANDARD は、STANDARD ストレージクラスを使う書き込みを制御します。RUSTFS_STORAGE_CLASS_RRS は REDUCED_REDUNDANCY の書き込みを制御し、複数ドライブのセットではデフォルトでパリティシャードが 1 個です。RustFS は、ローカル書き込みについて、これら 2 つのストレージクラスを受け付けます。

明示的な設定は、次の規則をすべて満たす必要があります。

  • パリティは、対象となるすべてのセットで、ドライブ数の半分以下である必要があります: M <= N / 2
  • 両方がゼロでない場合、STANDARD のパリティは REDUCED_REDUNDANCY のパリティ以上である必要があります
  • 設定したパリティは、最も狭いプールを含むすべてのプールで有効である必要があります

RustFS は起動時に、明示的なストレージクラスを各プールに対して検証します。値が無効な場合、パリティを暗黙に下げることはせず、起動が失敗します。プールごとの自動パリティに戻すには、明示的な STANDARD の値を削除します。すべてのプールが満たせる値を選ぶこともできます。

イレイジャーセットの幅を制御する

RustFS は通常、ボリュームトポロジーから有効なセット幅を自動的に選びます。複数ドライブのセット幅は 2 から 16 です。

特定の対称レイアウトが必要な場合は、RUSTFS_ERASURE_SET_DRIVE_COUNT で幅を固定できます。

/etc/default/rustfs
RUSTFS_ERASURE_SET_DRIVE_COUNT=16

この値は、プールトポロジーを対称に分割でき、すべてのボリューム拡張パターンで有効である必要があります。設定されたエンドポイントを均等に分割できない幅は、RustFS が拒否します。プールレイアウト全体を確認していない場合は、この変数を未設定のままにします。

設定を検証する

RustFS を起動または再起動する前に、次を確認します。

  1. すべてのプールについて、イレイジャーセットあたりのドライブ数を特定します。
  2. 明示的なパリティが、最も狭いセット幅の半分を超えないことを確認します。
  3. 使用可能な容量を見積もり、運用上の余裕を確保します。
  4. すべてのノードで、同じサービスの環境設定を維持します。

起動後は、Console の Status(ステータス)ページ、または rc admin info cluster で、バックエンドのレイアウト、イレイジャーコーディングのパリティ、ドライブの可用性、プールへの所属を確認します。手順の全体は ステータス確認 を参照してください。

次のステップ

On this page