5.4. 異なる構成の Ceph Storage ノードへのディスクレイアウトのマッピング
デフォルトでは、( roles_data.yaml
で OS::TripleO::Services::CephOSD サービスとして指定される)Ceph OSD をホストするロールのすべてのノード(例: CephStorage
または ComputeHCI
ノード)で、「Ceph Storage ノードのディスクレイアウトのマッピング」 で設定したグローバル デバイス
一覧を使用します。この場合、これらすべてのサーバーが同一のハードウェア構成であることを前提としています。これらのサーバーのサブセットが同一のハードウェア構成ではない場合には、director はこれらのサーバーごとに異なる デバイス
一覧があることに注意する必要があります。このような状況は、ノード固有のディスク構成 と呼ばれます。
ノード固有のディスク構成を director に渡すには、node-spec-overrides.yaml
等の heat 環境ファイルを openstack overcloud deploy
コマンドに渡す必要があります。そして、この環境ファイルの内容で、それぞれのサーバーをマシン固有の UUID およびグローバル変数を上書きするローカル変数の一覧で識別する必要があります。
マシン固有の UUID は、個々のサーバー向けに、または Ironic データベースから抽出することができます。
個々のサーバーの UUID を把握するには、そのサーバーにログインして以下のコマンドを実行します。
dmidecode -s system-uuid
Ironic データベースから UUID を抽出するには、アンダークラウドで以下のコマンドを実行します。
openstack baremetal introspection data save NODE-ID | jq .extra.system.product.uuid
アンダークラウドのインストールまたはアップグレードおよびイントロスペクションの前に undercloud.conf で inspection_extras = true
と設定しないと、マシン固有の UUID は Ironic データベースには含まれません。
マシン固有の UUID は、Ironic 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 .
を実行します。
node-spec-overrides.yaml
ファイルが大きくなるにつれ、jq
を使用して組み込まれた JSON が有効であることを確認することもできます。たとえば、以下のコマンドを使用して、デプロイメントを開始する前に JSON が デバイス
一覧の正しい長さを定義することを確認します。
(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]$
上記の例では、node-spec-c05-h17-h21-h25-6048r.yaml
にはラック c05 に 3 つのサーバーがあります。ラック c05 のスロット h17、h21、および h25 にはディスクがありません。より複雑な例が、本セクションの最後に記載されています。
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" ] } }