第 11 章 配置 NVDIMM Compute 节点来为实例提供持久内存
非易失性双内存模块(NVDIMM)是为 DRAM 提供持久内存(PMEM)的技术。在断电后,标准计算机内存将会丢失其数据。NVDIMM 即使断电后也会维护其数据。使用 PMEM 的实例可以提供应用程序在电源周期之间保留应用程序的大量内存数量。这对需要大量内存的高性能计算(DSL)非常有用。
作为云管理员,您可以通过在具有 NVDIMM 硬件的 Compute 节点上创建和配置 PMEM 命名空间,将 PMEM 命名空间作为虚拟 PMEM (vPMEM)使用。然后,当云用户需要保留实例内容时,可以创建请求 vPMEM 的实例。
要让您的云用户创建使用 PMEM 的实例,您必须完成以下步骤:
- 为 PMEM 指定 Compute 节点。
- 为具有 NVDIMM 硬件的 PMEM 配置 Compute 节点。
- 部署 overcloud。
- 创建 PMEM 类别以启动具有 vPMEM 的实例。
如果 NVDIMM 硬件有限,您还可以配置主机聚合来优化 PMEM Compute 节点上的调度。要仅在 PMEM Compute 节点上调度请求 vPMEM 的实例,请创建一个具有 NVDIMM 硬件的 Compute 节点的主机聚合,并将计算调度程序配置为仅将 PMEM 实例放在主机聚合中。如需更多信息,请参阅 Creating and managing host aggregates 和 Filtering 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 节点。
流程
-
以
stack
用户的身份登录 undercloud。 Source
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
并编辑或添加以下参数和部分: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
-
将 overcloud 的 NVDIMM Compute 节点添加到节点定义模板、
node.json
或node.yaml
中,以注册它们。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点。 检查节点硬件:
(undercloud)$ openstack overcloud node introspect --all-manageable --provide
如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单。
为 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 数量。注意这些属性不可用于调度实例。但是,计算调度程序使用磁盘大小来确定根分区大小。
-
将
检索节点列表来识别它们的 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 服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,请将所有 punctuation 替换为下划线,并使用
CUSTOM_
前缀。注意类别只能请求一个裸机资源类实例。
设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:
(undercloud)$ openstack flavor set \ --property resources:VCPU=0 --property resources:MEMORY_MB=0 \ --property resources:DISK_GB=0 compute-pmem
在
node-info.yaml
文件中添加以下参数,以指定 PMEM Compute 节点的数量,以及用于 PMEM 设计的 Compute 节点的类别:parameter_defaults: OvercloudComputePMEMFlavor: compute-pmem ComputePMEMCount: 3 #set to the no of NVDIMM devices you have
要验证角色是否已创建,请输入以下命令:
(undercloud)$ openstack overcloud profiles list