第11章 インスタンスに永続メモリーを提供する NVDIMM コンピュートノードの設定

不揮発性デュアルインラインメモリーモジュール (NVDIMM) は、メモリーが永続的 (PMEM) な DRAM を提供するテクノロジーです。標準的なコンピューターのメモリーは、電源が切れるとそのデータを喪失します。NVDIMM は、電源が切れてもそのデータを維持します。PMEM を使用するインスタンスでは、アプリケーションは大量の連続したメモリーセグメントを読み込むことができ、このセグメントは電源の切断後もアプリケーションデータを維持します。この機能は、大量のメモリーを要求する高パフォーマンスコンピューティング (HPC) に役立ちます。

NVDIMM ハードウェアを持つコンピュートノードで PMEM 名前空間を作成および設定することで、クラウド管理者はインスタンスが仮想 PMEM (vPMEM) として PMEM を利用できるようにすることが可能です。これにより、インスタンスのシャットダウン後にコンテンツを維持する必要がある場合、クラウドユーザーは vPMEM を要求するインスタンスを作成することができます。

クラウドユーザーが PMEM を使用するインスタンスを作成できるようにするには、以下の手順を完了する必要があります。

  1. PMEM 用のコンピュートノードを指定する。
  2. NVDIMM ハードウェアを持つ PMEM 用のコンピュートノードを設定する。
  3. オーバークラウドをデプロイする。
  4. 仮想 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 用新規オーバークラウドフレーバーおよびリソースクラスを設定する必要があります。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. stackrc ファイルを取得します。

    [stack@director ~]$ source ~/stackrc
  3. roles_data_pmem.yaml という名前で、ControllerCompute、および ComputePMEM ロールが含まれる新しいロールデータファイルを生成します。

    (undercloud)$ openstack overcloud roles \
     generate -o /home/stack/templates/roles_data_pmem.yaml \
     Compute:ComputePMEM Compute Controller
  4. 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

  5. オーバークラウド用の NVDIMM コンピュートノードをノード定義のテンプレート node.json または node.yaml に追加して、そのノードを登録します。詳細は、director のインストールと使用方法オーバークラウドノードの登録 を参照してください。
  6. ノードのハードウェアを検査します。

    (undercloud)$ openstack overcloud node introspect --all-manageable --provide

    詳細は、Director Installation and Usage ガイドの Creating an inventory of the bare-metal node hardware を参照してください。

  7. 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 スケジューラーは、ディスク容量を使用してルートパーティションのサイズを決定します。

  8. ノードリストを取得して UUID を把握します。

    (undercloud)$ openstack baremetal node list
  9. PMEM 負荷用に指定する各ベアメタルノードに、カスタムの PMEM リソースクラスをタグ付けします。

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.PMEM <node>

    <node> をベアメタルノードの ID に置き換えてください。

  10. compute-pmem フレーバーをカスタムの PMEM リソースクラスに関連付けます。

    (undercloud)$ openstack flavor set \
     --property resources:CUSTOM_BAREMETAL_PMEM=1 \
      compute-pmem

    Bare Metal サービスノードのリソースクラスに対応するカスタムリソースクラスの名前を指定するには、リソースクラスを大文字に変換し、すべての句読点をアンダースコアに置き換え、CUSTOM_ の接頭辞を追加します。

    注記

    フレーバーが要求できるのは、ベアメタルリソースクラスの 1 つのインスタンスだけです。

  11. 以下のフレーバー属性を設定して、Compute スケジューラーがインスタンスのスケジューリングにベアメタルフレーバー属性を使用するのを防ぎます。

    (undercloud)$ openstack flavor set \
     --property resources:VCPU=0 --property resources:MEMORY_MB=0 \
     --property resources:DISK_GB=0 compute-pmem
  12. 以下のパラメーターを node-info.yaml ファイルに追加して、PMEM コンピュートノードの数および PMEM 対応コンピュートノード用に使用するフレーバーを指定します。

    parameter_defaults:
      OvercloudComputePMEMFlavor: compute-pmem
      ComputePMEMCount: 3 #set to the no of NVDIMM devices you have
  13. ロールが作成されたことを確認するには、以下のコマンドを入力します。

    (undercloud)$ openstack overcloud profiles list