第6章 director を使用した Ceph Storage クラスターのさまざまなワークロード用のパフォーマンス層の定義
Red Hat OpenStack Platform (RHOSP) director を使用して、異なる Red Hat Ceph Storage パフォーマンス層をデプロイすることができます。Ceph CRUSH ルールと CephPools
director パラメーターを組み合わせ、デバイスクラス機能を使用して異なる層を構築して、異なるパフォーマンス要件のあるワークロードに対応することができます。たとえば、通常のワークロード用に HDD クラスと、高パフォーマンスのロードのために SSD 上でのみデータを分散する SSD クラスを定義できます。このシナリオでは、新規の Block Storage ボリュームを作成する場合には、HDD または SSD のいずれかのパフォーマンス層を選択することができます。
- 警告
-
既存の環境でパフォーマンス層を定義すると、Ceph クラスター内で大量のデータが移動する場合があります。スタックの更新時に director がトリガーする
ceph-ansible
には、プールがクラスターにすでに定義されているかどうかや、データが含まれるかどうかを確認するロジックはありません。つまり、プールに関連付けられたデフォルトの CRUSH ルールを変更すると、データの移動が行われるため、既存の環境でパフォーマンス層を定義することは危険となる可能性があります。ノードの追加または削除に関する支援または推奨事項が必要な場合は、Red Hat サポートにお問い合わせください。
Ceph はディスク種別を自動検出し、Linux カーネルが公開するハードウェアプロパティーに基づいて、これを対応するデバイスクラス (HDD、SSD、または NVMe のいずれか) に割り当てます。ただし、必要に応じてカテゴリーをカスタマイズすることもできます。
前提条件
- 新規デプロイメントでは、Red Hat Ceph Storage (RHCS) バージョン 4.1 以降
- 既存のデプロイメントの場合は、Red Hat Ceph Storage (RHCS) バージョン 4.2 以降
異なる Red Hat Ceph Storage パフォーマンス層をデプロイするには、CRUSH マップの詳細が含まれる新規の環境ファイルを作成し、これをデプロイメントコマンドに追加します。
以下の手順では、各 Ceph Storage ノードには OSD が 3 つ含まれます。sdb
および sdc
は動作中のディスクで、sdd
は SSD です。Ceph は正しいディスク種別を自動的に検出します。次に、HDD および SSD の 2 つの CRUSH ルールを設定し、2 つのデバイスクラスにそれぞれマッピングします。HDD ルールはデフォルトで、別のルールでプールを設定しない限り、すべてのプールに適用されます。
最後に、fastpool
と呼ばれる追加のプールを作成し、SSD ルールにマッピングします。このプールは、最終的に Block Storage (cinder) バックエンドを通じて公開されます。この Block Storage バックエンドを使用するすべてのワークロードは、パフォーマンスを高速にする場合にのみ SSD によってサポートされます。これは、データまたはボリュームから起動 (boot from volume) のいずれかに活用できます。
6.1. パフォーマンス層の設定
- 警告
-
既存の環境でパフォーマンス層を定義すると、Ceph クラスター内で大量のデータが移動する場合があります。スタックの更新時に director がトリガーする
ceph-ansible
には、プールがクラスターにすでに定義されているかどうかや、データが含まれるかどうかを確認するロジックはありません。つまり、プールに関連付けられたデフォルトの CRUSH ルールを変更すると、データの移動が行われるため、既存の環境でパフォーマンス層を定義することは危険となる可能性があります。ノードの追加または削除に関する支援または推奨事項が必要な場合は、Red Hat サポートにお問い合わせください。
director はこの機能に対応するための特定のパラメーターを公開しませんが、以下の手順に従って ceph-ansible
の想定される変数を生成することができます。
手順
-
アンダークラウドノードに
stack
ユーザーとしてログインします。 -
Ceph config パラメーターおよびデバイスクラス変数を含む環境ファイル (
/home/stack/templates/ceph-config.yaml
等) を作成します。あるいは、既存の環境ファイルに以下の設定を追加することができます。 環境ファイルで
CephAnsibleDisksConfig
パラメーターを使用して、Ceph OSD として使用するブロックデバイスをリスト表示します。CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd osd_scenario: lvm osd_objectstore: bluestore
オプション: Ceph はディスクの種別を自動的に検出して、対応するデバイスクラスに割り当てます。ただし、
crush_device_class
プロパティーを使用して、特定のデバイスを特定のクラスに属するように強制したり、独自のカスタムクラスを作成したりすることもできます。以下の例は、指定したクラスを持つ OSD のリストと同じです。CephAnsibleDisksConfig: lvm_volumes: - data: ‘/dev/sdb’ crush_device_class: ‘hdd’ - data: ‘/dev/sdc’ crush_device_class: ‘hdd’ - data: ‘/dev/sdd’ crush_device_class: ‘ssd’ osd_scenario: lvm osd_objectstore: bluestore
CephAnsibleExtraVars
パラメーターを追加します。crush_rules
パラメーターには、定義した各クラスまたは Ceph が自動検出する各クラスにルールが含まれている必要があります。新しいプールを作成する際にルールが指定されていない場合は、Ceph が使用するルールがデフォルトとして選択されます。CephAnsibleExtraConfig: crush_rule_config: true create_crush_tree: true crush_rules: - name: HDD root: default type: host class: hdd default: true - name: SSD root: default type: host class: ssd default: false
CephPools
パラメーターを追加します。-
rule_name
パラメーターを使用して、デフォルトのルールを使用しない各プールの層を指定します。以下の例では、fastpool
プールは、fast tier として設定された SSD デバイスクラスを使用して Block Storage ボリュームを管理します。 <appropriate_PG_num>
を配置グループ (PG) の適切な数に置き換えます。あるいは、配置グループの自動スケーラーを使用して、Ceph プールの PG の数を計算します。詳細は、異なる Ceph プールへのカスタム属性の割り当て を参照してください。
CinderRbdExtraPools
パラメーターを使用して、fastpool
を Block Storage バックエンドとして設定します。CephPools: - name: fastpool pg_num: <appropraiate_PG_num> rule_name: SSD application: rbd CinderRbdExtraPools: fastpool
-
以下の例を使用して、環境ファイルに正しい値が含まれることを確認します。
parameter_defaults: CephAnsibleDisksConfig: devices: - '/dev/sdb' - '/dev/sdc' - '/dev/sdd' osd_scenario: lvm osd_objectstore: bluestore CephAnsibleExtraConfig: crush_rule_config: true create_crush_tree: true crush_rules: - name: HDD root: default type: host class: hdd default: true - name: SSD root: default type: host class: ssd default: false CinderRbdExtraPools: fastpool CephPools: - name: fastpool pg_num: <appropriate_PG_num> rule_name: SSD application: rbd
openstack overcloud deploy
コマンドで新規の環境ファイルを指定します。$ openstack overcloud deploy \ --templates \ … -e <other_overcloud_environment_files> \ -e /home/stack/templates/ceph-config.yaml \ …
<other_overcloud_environment_files>
をデプロイメントに追加する他の環境ファイルのリストに置き換えます。
既存の Ceph クラスターに環境ファイルを適用すると、既存の Ceph プールは新しいルールで更新されません。このため、デプロイメントの完了後に以下のコマンドを入力して、指定したプールにルールを設定する必要があります。
$ ceph osd pool set <pool> crush_rule <rule>
- <pool> を新しいルールを適用するプールの名前に置き換えます。
-
<rule> を
crush_rules
パラメーターで指定したルール名の 1 つに置き換えます。 -
<appropriate_PG_num> を配置グループの適切な数または
target_size_ratio
に置き換え、pg_autoscale_mode
をtrue
に設定します。
このコマンドを使用してルールを変更するたびに、既存のエントリーを更新するか、既存のテンプレートの CephPools
パラメーターに新しいエントリーを追加します。
CephPools: - name: <pool> pg_num: <appropriate_PG_num> rule_name: <rule> application: rbd