5.5. 異なる Ceph Storage ノードのパラメーターのオーバーライド
CephStorage
や ComputeHCI
など、Ceph OSD をホスティングするロールを持つすべてのノードは、「Ceph Storage ノードのディスクレイアウトのマッピング」 で作成されたグローバルな devices
および dedicated_devices
リストを使用します。これらのリストは、これらすべてのサーバーが同じハードウェアを持っていることを前提としています。これが異なるハードウェアを備えたサーバーがある場合は、ノード固有のディスク設定を使用して、さまざまな devices
および dedicated_devices
リストの詳細で Director を更新する必要があります。
Ceph OSD をホスティングするロールには、roles_data.yaml
ファイルに OS::TripleO::Services::CephOSD サービスが含まれます。
他のノードと同じハードウェアを持たない Ceph Storage ノードは、パフォーマンスの問題を引き起こす可能性があります。Red Hat OpenStack Platform(RHOSP) 環境で、標準的なノードとノード固有のオーバーライドを使用して設定したノードとの間の差異が大きくなるほど、パフォーマンスが低下する可能性が高くなります。
5.5.1. ノード固有のディスク設定
Director は、同じハードウェアを持たないサービス用に設定する必要があります。これは、ノード固有のディスク設定と呼ばれます。
次のいずれかの方法を使用して、ノード固有のディスク設定を作成できます。
- 自動: JSON heat 環境ファイルを生成して、ノード固有のディスク設定を自動的に作成できます。
- 手動: ノードのディスクレイアウトを変更して、ノード固有のディスク設定を作成できます。
5.5.1.1. Ceph デバイス用の JSON heat 環境ファイルの生成
/usr/share/openstack-tripleo-heat-templates/tools/make_ceph_disk_list.py
スクリプトを使用すると、Bare Metal Provisioning サービス (ironic) のイントロスペクションデータから有効な JSON heat 環境ファイルを自動的に作成することができます。この JSON ファイルを使用して、ノード固有のディスク設定を director に渡します。
手順
デプロイする Ceph ノードの Bare Metal Provisioning サービスからイントロスペクションデータをエクスポートします。
openstack baremetal introspection data save oc0-ceph-0 > ceph0.json openstack baremetal introspection data save oc0-ceph-1 > ceph1.json ...
ユーティリティーをアンダークラウド上の
stack
ユーザーのホームディレクトリーにコピーし、それを使用してnode_data_lookup.json
ファイルを生成します。./make_ceph_disk_list.py -i ceph*.json -o node_data_lookup.json -k by_path
NodeDataLookup
はデプロイメント中に 1 回しか定義できないため、Ceph OSD をホストするすべてのノードのopenstack baremetal introspection data save
コマンドからイントロスペクションデータファイルをユーティリティーに渡します。-i
オプションには、入力として*.json
ような表現またはファイルのリストを指定することができます。-k
オプションを使用して、OSD ディスクの識別に使用する Bare Metal Provisioning ディスクデータ構造のキーを定義します。name
は使用しないでください。/dev/sdd
のようなデバイスのファイルを生成し、リブート時に同じデバイスをポイントするとは限らないためです。代わりにby_path
を使います。-k
を指定しない場合は、この設定がデフォルトとなります。Bare Metal Provisioning サービスは、システムで利用可能なディスクのいずれかをルートディスクとして確保します。ユーティリティーは、生成されたデバイスのリストからルートディスクを常に除外します。
-
(オプション):
./make_ceph_disk_list.py –help
を使用すると、他の利用可能なオプションを確認できます。 オーバークラウドをデプロイする際に、ご自分の環境に該当するその他の環境ファイルと共に
node_data_lookup.json
ファイルを追加します。$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e node_data_lookup.json \ …
5.5.1.2. Ceph Storage ノードのディスクレイアウトの変更
非同種の Ceph Storage ノードは、パフォーマンスの問題を引き起こす可能性があります。Red Hat OpenStack Platform(RHOSP) 環境で、標準的なノードとノード固有のオーバーライドを使用して設定したノードとの間の差異が大きくなるほど、パフォーマンスが低下する可能性が高くなります。
ノード固有のディスク設定を director に渡すには、node-spec-overrides.yaml
等の heat 環境ファイルを openstack overcloud deploy
コマンドに渡す必要があります。そして、この環境ファイルの内容で、それぞれのサーバーをマシン固有の UUID およびグローバル変数を上書きするローカル変数のリストで識別する必要があります。
マシン固有の UUID は、個々のサーバー向けに、または Bare Metal Provisioning サービス (ironic) データベースから抽出することができます。
- 注記
-
以下の手順では、埋め込まれた有効な JSO が含まれる有効な YAML 環境ファイルを作成します。
make_ceph_disk_list.py
で完全な JSON ファイルを生成し、それを YAML のようにデプロイメントコマンドに渡すこともできます。詳細については、Ceph デバイス用の JSON heat 環境ファイルの生成 を参照してください。
手順
個々のサーバーの UUID を把握するには、そのサーバーにログインして以下のコマンドを入力します。
$ dmidecode -s system-uuid
Bare Metal Provisioning サービスデータベースから UUID を抽出するには、アンダークラウドで以下のコマンドを入力します。
$ openstack baremetal introspection data save NODE-ID | jq .extra.system.product.uuid
警告アンダークラウドのインストールまたはアップグレードおよびイントロスペクションの前に、
undercloud.conf
でinspection_extras = true
がない場合には、マシン固有の UUID は Bare Metal Provisioning サービスデータベースには含まれません。重要マシン固有の UUID は、Bare Metal Provisioning サービスの UUID ではありません。
有効な
node-spec-overrides.yaml
ファイルは、以下のようになる可能性があります。parameter_defaults: NodeDataLookup: {"32E87B4C-C4A7-418E-865B-191684A6883B": {"devices": ["/dev/sdc"]}}
最初の 2 行以降は、すべて有効な JSON でなければなりません。
jq
コマンドを使用して、JSON が有効であることを確認します。-
最初の 2 行 (
parameter_defaults:
およびNodeDataLookup:
) を一時的にファイルから削除します。 -
cat node-spec-overrides.yaml | jq .
を実行します。
-
最初の 2 行 (
node-spec-overrides.yaml
ファイルが大きくなるにつれ、jq
コマンドを使用して組み込まれた JSON が有効であることを確認することもできます。たとえば、devices
およびdedicated_devices
のリストは同じ長さでなければならないので、以下のコマンドを使用して、デプロイメントを開始する前に両者が同じ長さであることを確認します。以下の例では、node-spec-c05-h17-h21-h25-6048r.yaml
にはラック c05 に 3 つのサーバーがあります。ラック c05 のスロット h17、h21、および h25 にはディスクがありません。(undercloud) [stack@b08-h02-r620 tht]$ cat node-spec-c05-h17-h21-h25-6048r.yaml | jq '.[] | .devices | length' 33 30 33 (undercloud) [stack@b08-h02-r620 tht]$ cat node-spec-c05-h17-h21-h25-6048r.yaml | jq '.[] | .dedicated_devices | length' 33 30 33 (undercloud) [stack@b08-h02-r620 tht]$
-
JSON を検証した後に、有効な環境 YAML ファイルとなるように 2 つの行 (
parameter_defaults:
およびNodeDataLookup:
) を戻し、-e
を使用してこの環境ファイルをデプロイメントに追加します。以下の例では、更新した Heat 環境ファイルは Ceph デプロイメントのNodeDataLookup
を使用しています。すべてのサーバーのデバイスリストは 35 のディスクで設定されていましたが、1 つのサーバーだけ 1 つのディスクがありませんでした。この環境ファイルは、その 1 つのノードについてのみデフォルトのデバイスリストを上書きし、グローバルリストの代わりに使用する必要のある 34 のディスクのリストを提供します。 JSON を検証した後に、有効な環境 YAML ファイルとなるように 2 つの行 (
parameter_defaults:
およびNodeDataLookup:
) を戻し、-e
を使用してこの環境ファイルをデプロイメントコマンドに追加します。以下の例では、更新した heat 環境ファイルは Ceph デプロイメントの
NodeDataLookup
を使用しています。すべてのサーバーのデバイスリストは 35 のディスクで設定されていましたが、1 つのサーバーだけ 1 つのディスクがありませんでした。この環境ファイルは、その 1 つのノードについてのみデフォルトのデバイスリストを上書きし、グローバルリストの代わりに使用する必要のある 34 のディスクのリストをノードに提供します。parameter_defaults: # c05-h01-6048r is missing scsi-0:2:35:0 (00000000-0000-0000-0000-0CC47A6EFD0C) NodeDataLookup: { "00000000-0000-0000-0000-0CC47A6EFD0C": { "devices": [ "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:1:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:32:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:2:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:3:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:4:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:5:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:6:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:33:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:7:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:8:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:34:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:9:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:10:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:11:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:12:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:13:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:14:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:15:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:16:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:17:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:18:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:19:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:20:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:21:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:22:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:23:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:24:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:25:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:26:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:27:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:28:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:29:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:30:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:31:0" ], "dedicated_devices": [ "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1" ] } }
5.5.2. BlueStore block.db サイズの変更
BlueStore block.db
はデータセグメントと BlueStore ログ先行書き込み (WAL) のデータベースです。データベースのサイズを変更するには、2 つの方法があります。これらの方法のいずれかを選択して、サイズを変更します。
5.5.2.1. ceph-volume
使用時の BlueStore block.db
サイズの変更
ceph-volume
を使用するときに block.db
のサイズをオーバーライドするには、次の手順を使用します。ceph-volume
は osd_scenario: lvm
のときに使用されます。ceph-volume
は block.db
のサイズを自動的に設定します。しかし、高度なシナリオでは block.db
のサイズをオーバーライドすることができます。
次の例では、使用される block_db_size
が ceph-volume
コールに渡されるように、Ceph 設定ファイルのオーバーライドではなく、ceph-ansible
ホスト変数を使用しています。
手順
以下のような内容の JSON 環境ファイルを作成しますが、必要に応じて値を置き換えてください。
{ "parameter_defaults": { "NodeDataLookup": { "32e87b4c-c4a7-41be-865b-191684a6883b": { "block_db_size": 3221225472 }, "ea6a84d6-cf89-4fe2-b7bd-869b3fe4dd6b": { "block_db_size": 3221225472 } } } }
オーバークラウドをデプロイする際に、ご自分の環境に該当するその他の環境ファイルと共に JSON ファイルを追加します。
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e <json_environment_file> \ …
5.5.2.2. ceph-disk
使用時の BlueStore block.db
サイズの変更
ceph-disk
を使用するときに block.db
のサイズをオーバーライドするには、次の手順を使用します。osd_scenario: non-collocated
または osd_scenario: collocated
の場合は、ceph-disk
が使用されます。
次の例では、特定のノードの Ceph 設定のオーバーライドを使用して、blustore_block_db_size
を設定しています。この Ceph 設定オプションは、ceph-volume
の使用時には無視されますが、ceph-disk
ではこの設定オプションが使用されます。
手順
以下のような内容の JSON 環境ファイルを作成しますが、必要に応じて値を置き換えてください。
{ "parameter_defaults": { "NodeDataLookup": { "32e87b4c-c4a7-41be-865b-191684a6883b": { "ceph_conf_overrides": { "osd": { "bluestore_block_db_size": 3221225472 } } }, "ea6a84d6-cf89-4fe2-b7bd-869b3fe4dd6b": { "ceph_conf_overrides": { "osd": { "bluestore_block_db_size": 3221225472 } } } } } }
オーバークラウドをデプロイする際に、ご自分の環境に該当するその他の環境ファイルと共に JSON ファイルを追加します。
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e <json_environment_file> \ …