第4章 Pools

Ceph クライアントは、データをプールに保存します。プールの作成時に、クライアントがデータを保存するための I/O インターフェイスを作成します。Ceph クライアントの視点 (例: ブロックデバイス、ゲートウェイなど) からは、Ceph ストレージクラスターと対話することが非常にシンプルです。たとえば、クラスターを処理し、クラスターに接続して、オブジェクトを読み取りおよび書き込みするための I/O コンテキストを作成します。

クラスターハンドルの作成およびクラスターへの接続

Ceph Storage クラスターに接続するには、Ceph クライアントにはクラスター名 (通常は ceph) と初期モニターアドレスが必要です。通常、Ceph クライアントは Ceph 設定ファイルのデフォルトパスを使用してパラメーターを取得し、ファイルからファイルを読み取りますが、コマンドラインでパラメーターを指定することもできます。Ceph クライアントは、ユーザー名および秘密鍵も提供します (デフォルトでは認証は on です)。次に、クライアントは Ceph monitor クラスターに接続し、モニター、OSD、およびプールを含むクラスターマップの最新コピーを取得します。

Create Handle

プール I/O コンテキストの作成

データの読み取りと書き込みには、Ceph クライアントは Ceph ストレージクラスター内の特定のプールに i/o コンテキストを作成します。指定したユーザーにプールのパーミッションがある場合は、Ceph クライアントは指定されたプールから読み取り/書き込みを行うことができます。

I/O Context

Ceph のアーキテクチャーを使用することで、ストレージクラスターは、プール名を指定して簡単に定義し、I/O コンテキストの作成で簡単に定義するストレージストラテジーのいずれかをクライアントが選択できるように、ストレージクラスターを Ceph クライアントに提供することができます。ストレージストラテジーはすべて、容量およびパフォーマンスにおいて Ceph クライアントを認識しません。同様に、Ceph クライアントの複雑性 (ブロックデバイス表現へのオブジェクトのマッピング、S3/Swift RESTful サービスの提供) は Ceph ストレージクラスターに見えません。

以下のようにプールを提供します。

  • 耐障害性: データを損失せずに失敗した OSD の数を設定できます。複製されたプールの場合、これはオブジェクトのコピー/レプリカの数です。通常の設定では、オブジェクトと 1 つの追加コピー (例: size = 2) が保存されますが、コピー/レプリカの数は決定できます。イレイジャーコードプールの場合は、コーディングしたチャンクの数です (例: イレイジャーコードプロファイルm=2)。
  • 配置グループ: プールの配置グループの数を設定できます。典型的な設定では、OSD ごとに約 50-100 の配置グループを使用して、最高のコンピューティングリソースを使用せずに最適なバランスを提供します。複数のプールを設定する場合は、全体としてプールとクラスターの両方に妥当な配置グループ数を設定するように注意してください。
  • CRUSH ルール: プールにデータをプールに保存すると、CRUSH ルールがプールにマッピングされた CRUSH ルールにより、CRUSH が各オブジェクトとそのレプリカ (またはイレイジャーコード化されたプールのチャンク) の配置のルールを特定できます。プールにカスタム CRUSH ルールを作成できます。
  • Snapshots: ceph osd pool mksnap を使用してスナップショットを作成すると、特定のプールのスナップショットが効果的に作成されます。
  • Quotas:ceph osd pool set-quota を使用してプールにクォータを設定する場合は、オブジェクトの最大数または指定されたプールに格納される最大バイト数を制限できます。

4.1. プールとストレージストラテジー

プールを管理するために、プールの一覧を表示、作成、および削除できます。各プールの使用状況の統計を表示することもできます。