Ceph クライアント・データ・ストライピング
ストレージ・デバイスにはスループットの制限があり、パフォーマンスとスケーラビリティーに影響します。 その結果、多くの場合、ストレージ・システムは、スループットとパフォーマンスを向上させるためにストライピングをサポートします。 ストライピングとは、複数のストレージ・デバイスにわたって順次情報を保管することです。 データ・ストライピングの最も一般的な形式は RAID です。 Ceph のストライピングに最も類似している RAID タイプは、RAID 0 または ストライプ・ボリュームです。 Ceph のストライピングは、RAID 0 ストライピングのスループット、n-way RAID ミラーリングの信頼性、およびリカバリーの高速化を提供します。
librados を使用して Ceph ストレージ・クラスターに直接書き込む Ceph クライアントは、これらの利点を得るために、ストライピングと並列入出力を実行する必要があります。最も単純な Ceph ストライピング・フォーマットには、1 オブジェクトのストライプ・カウントが含まれます。 Ceph クライアントは、オブジェクトが最大容量に達するまでストライプ単位を Ceph ストレージ・クラスター・オブジェクトに書き込み、追加のデータ・ストライプ用に別のオブジェクトを作成します。 最も単純な形式のストライピングは、スモール・ブロック・デバイス・イメージ、 S3 オブジェクト、または Swift オブジェクトの場合には十分である可能性があります。 ただし、この単純な形式では、Ceph が複数の配置グループにデータを分散させる能力を最大限に活用することはできないため、パフォーマンスはあまり向上しません。 以下の図は、最も単純な形式のストライピングを示しています。

以下の図では、クライアント・データは、4 つのオブジェクトで構成されるオブジェクト・セット (以下の図ではobject set
1 ) 全体にストライプされます。最初のストライプ単位は object 0では stripe unit 0 、4 番目のストライプ単位は object 3では stripe unit 3 です。 4 番目のストライプを書き込んだ後、クライアントはオブジェクト・セットがいっぱいかどうかを判別します。 オブジェクト・セットが満杯でない場合、クライアントは最初のオブジェクトへのストライプの書き込みを再び開始します。次の図の object 0 を参照してください。 オブジェクト・セットがフルの場合、クライアントは新規オブジェクト・セットを作成します。以下の図の object set 2 を参照し、新規オブジェクト・セットの最初のオブジェクトで、ストライプ単位が 16 の最初のストライプへの書き込みを開始します。図の object 4 を参照してください。

Ceph がデータをストライプする方法は、以下の 3 つの重要な変数によって決まります。
- オブジェクト・サイズ
Ceph ストレージ・クラスター内のオブジェクトには、2 MB や 4 MB などの最大構成可能サイズがあります。 オブジェクト・サイズは、多くのストライプ単位を収容するのに十分な大きさでなければならず、ストライプ単位の倍数でなければなりません。
重要: IBM では、安全な最大値として 16 MB を推奨しています。- ストライプ幅
ストライプには、構成可能な単位サイズ (例えば、64 KB) があります。 Ceph クライアントは、オブジェクトに書き込むデータを、最後のストライプ・ユニットを除き、等しいサイズのストライプ・ユニットに分割します。 ストライプ幅は、オブジェクトに多数のストライプ単位を含めることができるように、オブジェクト・サイズの一部にする必要があります。
- ストライプ・カウント
Ceph クライアントは、ストライプ・カウントによって決定される一連のオブジェクトにストライプ単位のシーケンスを書き込みます。 一連のオブジェクトは、オブジェクト・セットと呼ばれます。 Ceph クライアントは、オブジェクト・セット内の最後のオブジェクトに書き込んだ後、オブジェクト・セット内の最初のオブジェクトに戻ります。