3.5. データストライピング


ストレージデバイスにはスループットの制限があり、パフォーマンスとスケーラビリティーに影響を及ぼします。したがって、ストレージシステムは多くの場合、複数のストレージデバイス間で連続した情報の連続した情報プライピングに対応し、スループットとパフォーマンスを向上させることができます。データストライピングの最も一般的な形式は RAID から来ています。Ceph のストライピングに最も類似する RAID タイプは、RAID 0、つまり「ストライプ化ボリューム」です。 Ceph のストライピングでは、RAID 0 ストライピングのスループット、n-way RAID ミラーリングの信頼性、および迅速なリカバリーを提供します。

Ceph には、Ceph Block Device、Ceph Filesystem、および Ceph Object Storage の 3 種類のクライアントがあります。Ceph クライアントは、提供される表現形式からユーザー(ブロックデバイスイメージ、RESTful オブジェクト、CephFS ファイルシステムディレクトリー)から Ceph Storage クラスターのストレージのオブジェクトに変換します。

ヒント

Ceph Storage Cluster に Ceph が格納するオブジェクトはストライプ化されていません。Ceph Object Storage、Ceph Block Device、および Ceph Filesystem は、複数の Ceph Storage Cluster オブジェクトにデータのストライプ化を行います。librados 経由で Ceph Storage クラスターに直接書き込む Ceph クライアントは、これらの利点を得るためにストライピング(および並列 I/O)を実行する必要があります。

最も単純な Ceph のストライプ化形式には、1 つのオブジェクトのストライプ数が含まれます。Ceph クライアントは、オブジェクトが最大容量になるまで Ceph Storage Cluster オブジェクトにストライプユニットを書き込みます。その後、データの追加のストライプ用に別のオブジェクトを作成します。ストライプ化の最も単純な形式は、小さなブロックデバイスイメージ、S3 または Swift オブジェクトにとって十分と言えます。ただし、この単純な形式では、配置グループ全体にデータを分散する Ceph の機能をを最大限に活用しないため、パフォーマンスはそれほど向上しません。以下の図は、ストライプ化の最も単純な形式を示しています。

Ceph Architecture Guide 378927 1017 10

大規模なイメージサイズ、大規模な S3 または Swift オブジェクト(ビデオなど)を予測できる場合には、オブジェクトセット内の複数のオブジェクトにクライアントデータを取り除くことで、パフォーマンスを大幅に改善できる可能性があります。クライアントが対応するオブジェクトに並列にストライプユニットを書き込むと、書き込みパフォーマンスが大幅に向上します。オブジェクトは異なる配置グループにマッピングされ、さらに異なる OSD にマッピングされるため、それぞれの書き込みは最大書き込み速度で並行して行われます。1 つのディスクへの書き込みは、ヘッドの移動(シークあたり 6 ミリ秒など)と 1 つのデバイスの帯域幅(例: 100MB/s)によって制限されます。Ceph は、(異なる配置グループおよび OSD にマップする)複数のオブジェクトへの書き込みを分散することで、ドライブごとのシーク数を減らし、複数のドライブのスループットを組み合わせて書き込み(または読み取り)の速度を大幅に向上させることができます。

注記

ストライプ化は、オブジェクトレプリカとは独立しています。CRUSH は OSD 間でオブジェクトを複製するため、ストライプは自動的に複製されます。

以下の図では、クライアントデータは、4 つのオブジェクトで構成されるオブジェクトセット (以下の図の object set 1) でストライプ化されます。最初のストライプユニットは、object 0stripe unit 0 です。4 番目のストライプユニットは、object 3stripe unit 3 です。4 番目のストライプを作成したら、クライアントはオブジェクトセットがいっぱいかどうかを判断します。オブジェクトセットが満杯でない場合は、クライアントは最初のオブジェクトにストライプを書き始めます(以下の図のオブジェクト 0 )。オブジェクトセットが満杯になると、クライアントは新しいオブジェクトセット(以下の図のobject set 2 )を作成し、新しいオブジェクトセット(以下の図のオブジェクト4 )の最初のオブジェクトで最初のストライプ(ストライプユニット 16)への書き込みを開始します。

Ceph Architecture Guide 378927 1017 11

3 つの重要な変数が、Ceph によるデータのストライプ化方法を決定します。

  • オブジェクトサイズ: Ceph Storage クラスターのオブジェクトには、設定可能な最大サイズ(2MB、4MB など)があります。オブジェクトのサイズは、多くのストライプユニットを収容するのに十分な大きさであり、ストライプユニットの倍数である必要があります。Red Hat は、安全な最大値 16 MB を推奨します。
  • ストライプの幅: Stripes には設定可能なユニットサイズ(64kb など)があります。Ceph クライアントは、オブジェクトに書き込むデータを、最後のストライプユニットを除いて、同じサイズのストライプユニットに分割します。ストライプ幅は、オブジェクトに多くのストライプユニットが含まれるように、オブジェクトサイズのごく一部にする必要があります。
  • ストライプ数: Ceph クライアントは、ストライプ数で決定される一連のオブジェクトに一連のストライプユニットを書き込みます。一連のオブジェクトは、オブジェクトセットと呼ばれます。Ceph クライアントがオブジェクトセットの最後のオブジェクトに書き込みした後に、オブジェクトセットの最初のオブジェクトに戻ります。
重要

クラスターを実稼働環境に移行する前に、ストライプ化設定のパフォーマンスをテストします。データをストライプ化してオブジェクトに書き込んだ後は、これらのストライプ化パラメーターを変更することはできません。

Ceph クライアントがデータをストライプユニットにストライプ化し、ストライプユニットをオブジェクトにマッピングすると、Ceph の CRUSH アルゴリズムは、オブジェクトをストレージディスクにファイルとして保存する前に、オブジェクトを配置グループにマッピングし、配置グループを CephOSD デーモンにマッピングします。

注記

クライアントは単一のプールに書き込むため、オブジェクトにストライプ化されたすべてのデータは、同じプールの配置グループにマッピングされます。したがって、同じ CRUSH マップと同じアクセス制御を使用します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.