第11章 インスタンスに永続メモリーを提供する NVDIMM コンピュートノードの設定
不揮発性デュアルインラインメモリーモジュール (NVDIMM) は、メモリーが永続的 (PMEM) な DRAM を提供するテクノロジーです。標準的なコンピューターのメモリーは、電源が切れるとそのデータを喪失します。NVDIMM は、電源が切れてもそのデータを維持します。PMEM を使用するインスタンスでは、アプリケーションは大量の連続したメモリーセグメントを読み込むことができ、このセグメントは電源の切断後もアプリケーションデータを維持します。この機能は、大量のメモリーを要求する高パフォーマンスコンピューティング (HPC) に役立ちます。
NVDIMM ハードウェアを持つコンピュートノードで PMEM 名前空間を作成および設定することで、クラウド管理者はインスタンスが仮想 PMEM (vPMEM) として PMEM を利用できるようにすることが可能です。これにより、インスタンスのシャットダウン後にコンテンツを維持する必要がある場合、クラウドユーザーは vPMEM を要求するインスタンスを作成することができます。
クラウドユーザーが PMEM を使用するインスタンスを作成できるようにするには、以下の手順を完了する必要があります。
- PMEM 用のコンピュートノードを指定する。
- NVDIMM ハードウェアを持つ PMEM 用のコンピュートノードを設定する。
- オーバークラウドをデプロイする。
- 仮想 PMEM が設定されたインスタンスを起動するための PMEM フレーバーを作成する。
NVDIMM ハードウェアが制限されている場合は、ホストアグリゲートを設定して PMEM コンピュートノードでのスケジューリングを最適化することもできます。vPMEM を要求するインスタンスのみを PMEM コンピュートノードにスケジュールするには、NVDIMM ハードウェアを持つコンピュートノードのホストアグリゲートを作成し、Compute スケジューラーが PMEM インスタンスのみをホストアグリゲートに配置するように設定します。詳細は、Creating and managing host aggregates および Filtering by isolating host aggregates を参照してください。
前提条件
- コンピュートノードに、Intel® Optane™ DC Persistent Memory 等の永続メモリーハードウェアが使用されている。
- PMEM ハードウェアデバイスにバックエンド NVDIMM リージョンを設定し、PMEM 名前空間を作成している。Intel が提供する ipmctl ツールを使用して、PMEM ハードウェアを設定することができます。
PMEM デバイスを使用する際の制限
- 仮想 PMEM を使用するインスタンスについて、コールドマイグレーション、ライブマイグレーション、サイズ変更、または休止および再開を行うことはできません。
- 仮想 PMEM を使用することができるのは、RHEL8 を実行しているインスタンスだけです。
- 仮想 PMEM インスタンスを再ビルドする場合、永続メモリー名前空間は削除され、インスタンスの初期状態に戻ります。
- 新しいフレーバーを使用してインスタンスのサイズを変更する場合、元の仮想永続メモリーの内容は新しい仮想永続メモリーにはコピーされません。
- 仮想永続メモリーのホットプラグはサポートされていません。
- 仮想 PMEM インスタンスのスナップショットを作成する場合、仮想永続イメージは含まれません。
11.1. PMEM 用コンピュートノードの指定
PMEM 負荷用のコンピュートノードを指定するには、PMEM ロールを設定するための新規ロールファイルを作成し、NVDIMM コンピュートノードをタグ付けするための PMEM 用新規オーバークラウドフレーバーおよびリソースクラスを設定する必要があります。
手順
-
アンダークラウドに
stack
ユーザーとしてログインします。 stackrc
ファイルを取得します。[stack@director ~]$ source ~/stackrc
roles_data_pmem.yaml
という名前で、Controller
、Compute
、およびComputePMEM
ロールが含まれる新しいロールデータファイルを生成します。(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_pmem.yaml \ Compute:ComputePMEM Compute Controller
roles_data_pmem.yaml
を開き、以下のパラメーターおよびセクションを編集または追加します。セクション/パラメーター 現在の値 新しい値 ロールのコメント
Role: Compute
Role: ComputePMEM
ロール名
Compute
name: ComputePMEM
description
Basic Compute Node role
PMEM Compute Node role
HostnameFormatDefault
%stackname%-novacompute-%index%
%stackname%-novacomputepmem-%index%
deprecated_nic_config_name
compute.yaml
compute-pmem.yaml
-
オーバークラウド用の NVDIMM コンピュートノードをノード定義のテンプレート
node.json
またはnode.yaml
に追加して、そのノードを登録します。詳細は、director のインストールと使用方法 の オーバークラウドノードの登録 を参照してください。 ノードのハードウェアを検査します。
(undercloud)$ openstack overcloud node introspect --all-manageable --provide
詳細は、Director Installation and Usage ガイドの Creating an inventory of the bare-metal node hardware を参照してください。
PMEM コンピュートノード用の
compute-pmem
オーバークラウドフレーバーを作成します。(undercloud)$ openstack flavor create --id auto \ --ram <ram_size_mb> --disk <disk_size_gb> \ --vcpus <no_vcpus> compute-pmem
-
<ram_size_mb>
をベアメタルノードの RAM (MB 単位) に置き換えます。 -
<disk_size_gb>
をベアメタルノード上のディスク容量 (GB 単位) に置き換えます。 <no_vcpus>
をベアメタルノードの CPU 数に置き換えます。注記これらの属性は、インスタンスのスケジューリングには使用されません。ただし Compute スケジューラーは、ディスク容量を使用してルートパーティションのサイズを決定します。
-
ノードリストを取得して UUID を把握します。
(undercloud)$ openstack baremetal node list
PMEM 負荷用に指定する各ベアメタルノードに、カスタムの PMEM リソースクラスをタグ付けします。
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.PMEM <node>
<node>
をベアメタルノードの ID に置き換えてください。compute-pmem
フレーバーをカスタムの PMEM リソースクラスに関連付けます。(undercloud)$ openstack flavor set \ --property resources:CUSTOM_BAREMETAL_PMEM=1 \ compute-pmem
Bare Metal サービスノードのリソースクラスに対応するカスタムリソースクラスの名前を指定するには、リソースクラスを大文字に変換し、すべての句読点をアンダースコアに置き換え、
CUSTOM_
の接頭辞を追加します。注記フレーバーが要求できるのは、ベアメタルリソースクラスの 1 つのインスタンスだけです。
以下のフレーバー属性を設定して、Compute スケジューラーがインスタンスのスケジューリングにベアメタルフレーバー属性を使用するのを防ぎます。
(undercloud)$ openstack flavor set \ --property resources:VCPU=0 --property resources:MEMORY_MB=0 \ --property resources:DISK_GB=0 compute-pmem
以下のパラメーターを
node-info.yaml
ファイルに追加して、PMEM コンピュートノードの数および PMEM 対応コンピュートノード用に使用するフレーバーを指定します。parameter_defaults: OvercloudComputePMEMFlavor: compute-pmem ComputePMEMCount: 3 #set to the no of NVDIMM devices you have
ロールが作成されたことを確認するには、以下のコマンドを入力します。
(undercloud)$ openstack overcloud profiles list