エラージャコードのKとMの数をどのように選ぶか?
エラージャコードの動作:
Cephの消去コードパラメータKとMは、ハードウェア障害に対する使用可能な容量効率と冗長性に関係しています。 Kはデータチャンクの数で、Mはコーディングチャンクの数です。 クライアントがデータオブジェクトをCephストレージクラスターに書き込むと、データオブジェクトはK個の同サイズのデータチャンクに分割されます。 Cephはデータチャンクを使用して、ハードウェアが故障したときに失われたデータチャンクを計算するために使用されるMチャンクのコーディングチャンクをエンコードします。
データチャンクとコーディングチャンクは、K+Mで指定された障害ドメインに分配され、保存されます。失われる可能性のあるデータチャンクの最大数はMの障害ドメインです。利用可能な障害ドメインは、物理インフラ内でストレージサーバーがどのように割り当てられているかによって異なります。小規模なCephクラスターでは、障害はディスクまたはサーバーホストになる可能性があります。大規模なクラスターの障害ドメインは、サーバーラック、サーバールーム、またはデータセンターなどになる可能性があります。
クライアントがデータを読み取りたいとき、データオブジェクトはデータチャンクから再構築されます。
ストレージパフォーマンス
Cephデータ複製アルゴリズムと比較して、消失符号化は通常、より良い使用可能スペース効率を持っています。消失符号はデータI/Oを完了するためにより多くのディスクI/O操作を利用するため、IOPSを要求するワークロードにはあまり適していません。K+Mの数が大きくなるほど、I/O操作はより多くのディスクIOPSリソースを消費します。
大きなKと小さなMを使用すると、Cephクラスターネットワーク上で転送されるデータの総バイト数が少なくなります。これにより、大サイズのデータオブジェクトのI/Oスループット性能が向上する可能性があります。
スペース効率
消去コードプールの使用可能スペース効率はK/(K+M)に等しいです。例えば、K=4、M=2の消去コードプールのスペース効率は4/6 = 66.7%です。これは、同じレベルのハードウェア冗長性でより高いIOPSパフォーマンスを提供するレプリカ3プールの2倍の効率です。
合理的なKは、使用可能なスペース効率のためにMよりも大きいです。大きな(K-M)消失コードは、より良いスペース効率を得ます。
サーバーホストの数
K+Mの数は、クラスター内で必要なホストまたはより大きな障害ドメインの数も決定します。
- 典型的な消失コードプールは、すべてのECチャンクを完全に分散させるために、最低でもK+Mのサーバーホストを必要とします。
- 高度な消失コード構成では、障害ドメインごとに複数のECチャンクを保存できます。この構成により、ECチャンクを分散させるために必要なサーバーの数が減少します。
消失コードKとMの影響の要約:
- Mは冗長な障害ドメインの数を決定します。
- K + Mが大きいと、クライアントの小さなオブジェクトのIOPSパフォーマンスが低下しますが、大きなオブジェクトのスループットは向上します。
- ストレージスペース効率 = K/(K+M)
- 必要なサーバーの最小数。