第 11 章 配置 NVDIMM Compute 节点来为实例提供持久内存

非易失性双内存模块(NVDIMM)是为 DRAM 提供持久内存(PMEM)的技术。在断电后,标准计算机内存将会丢失其数据。NVDIMM 即使断电后也会维护其数据。使用 PMEM 的实例可以提供应用程序在电源周期之间保留应用程序的大量内存数量。这对需要大量内存的高性能计算(DSL)非常有用。

作为云管理员,您可以通过在具有 NVDIMM 硬件的 Compute 节点上创建和配置 PMEM 命名空间,将 PMEM 命名空间作为虚拟 PMEM (vPMEM)使用。然后,当云用户需要保留实例内容时,可以创建请求 vPMEM 的实例。

要让您的云用户创建使用 PMEM 的实例,您必须完成以下步骤:

  1. 为 PMEM 指定 Compute 节点。
  2. 为具有 NVDIMM 硬件的 PMEM 配置 Compute 节点。
  3. 部署 overcloud。
  4. 创建 PMEM 类别以启动具有 vPMEM 的实例。
提示

如果 NVDIMM 硬件有限,您还可以配置主机聚合来优化 PMEM Compute 节点上的调度。要仅在 PMEM Compute 节点上调度请求 vPMEM 的实例,请创建一个具有 NVDIMM 硬件的 Compute 节点的主机聚合,并将计算调度程序配置为仅将 PMEM 实例放在主机聚合中。如需更多信息,请参阅 Creating and managing host aggregatesFiltering by isolating host aggregates

先决条件

  • 您的 Compute 节点具有持久内存硬件,如 Intel® Optane™ DC Persistent Memory。
  • 您已在 PMEM 硬件设备中配置了后端 NVDIMM 区域来创建 PMEM 命名空间。您可以使用 Intel 提供的 ipmctl 工具来配置 PMEM 硬件。

使用 PMEM 设备时的限制

  • 您无法冷迁移、实时迁移、调整大小或暂停和恢复使用 vPMEM 的实例。
  • 只有运行 RHEL8 的实例可以使用 vPMEM。
  • 在重建 vPMEM 实例时,持久性内存命名空间会被删除来恢复实例的初始状态。
  • 使用新类别重新定义实例大小时,原始虚拟持久内存的内容不会复制到新的虚拟持久内存中。
  • 不支持虚拟持久内存热插。
  • 在为 vPMEM 实例创建快照时,不会包含虚拟持久镜像。

11.1. 为 PMEM 设计 Compute 节点

要为 PMEM 工作负载指定 Compute 节点,您必须创建一个新角色文件来配置 PMEM 角色,并为 PMEM 配置一个新的 overcloud 类别和资源类,以用于标记 NVDIMM Compute 节点。

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    [stack@director ~]$ source ~/stackrc
  3. 生成名为 roles_data_pmem.yaml 的新角色数据文件,其中包含 Controller, Compute, 和 ComputePMEM 角色:

    (undercloud)$ openstack overcloud roles \
     generate -o /home/stack/templates/roles_data_pmem.yaml \
     Compute:ComputePMEM Compute Controller
  4. 打开 roles_data_pmem.yaml 并编辑或添加以下参数和部分:

    section/Parameter当前值新值

    角色注释

    Role: Compute

    Role: ComputePMEM

    角色名称

    名称 :Compute

    名称 :ComputePMEM

    description

    基本 Compute 节点角色

    PMEM Compute 节点角色

    HostnameFormatDefault

    %stackname%-novacompute-%index%

    %stackname%-novacomputepmem-%index%

    deprecated_nic_config_name

    compute.yaml

    compute-pmem.yaml

  5. 将 overcloud 的 NVDIMM Compute 节点添加到节点定义模板、node.jsonnode.yaml 中,以注册它们。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点
  6. 检查节点硬件:

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

    如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单

  7. 为 PMEM Compute 节点创建 compute-pmem overcloud 类别:

    (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 数量。

      注意

      这些属性不可用于调度实例。但是,计算调度程序使用磁盘大小来确定根分区大小。

  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 服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,请将所有 punctuation 替换为下划线,并使用 CUSTOM_ 前缀。

    注意

    类别只能请求一个裸机资源类实例。

  11. 设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:

    (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 Compute 节点的数量,以及用于 PMEM 设计的 Compute 节点的类别:

    parameter_defaults:
      OvercloudComputePMEMFlavor: compute-pmem
      ComputePMEMCount: 3 #set to the no of NVDIMM devices you have
  13. 要验证角色是否已创建,请输入以下命令:

    (undercloud)$ openstack overcloud profiles list