5.5. 配置 Compute 节点,为实例使用文件支持的内存
您可以使用文件支持的内存来扩展 Compute 节点内存容量。在这种情况下,您可以在 libvirt 内存后备目录中分配文件为实例内存。您可以配置可用于实例内存的主机磁盘数量,以及实例内存文件磁盘上的位置。
Compute (nova)服务将为文件支持内存配置的容量报告为放置服务,作为总系统内存容量。这允许 Compute 节点托管更多实例,而不是通常适合系统内存。
要将文件支持的内存用于实例,您必须在 Compute 节点上启用文件支持的内存。
对实例使用文件支持内存有限制:
- 您无法在启用了文件支持内存的 Compute 节点间实时迁移实例,以及没有启用文件支持内存的 Compute 节点。
- 文件支持的内存与巨页不兼容。使用巨页的实例无法在启用了文件支持内存的 Compute 节点上启动。使用主机聚合来确保使用巨页的实例不会放置到启用了文件支持内存的 Compute 节点上。
- 文件支持的内存与内存过量使用不兼容。
-
您不能使用
reserved_host_memory_mb为主机进程保留内存。当文件支持的内存被使用时,保留内存对应于不为文件支持的内存设置磁盘空间。文件支持的内存将报告给放置服务作为总系统内存,RAM 用作缓存内存。
先决条件
-
ram_allocation_ratio必须设置为节点上的 "1.0",并且节点的任何主机聚合都添加到其中。 -
reserved_host_memory_mb必须设为 "0"。 -
oc命令行工具已安装在您的工作站上。 -
以具有
cluster-admin权限的用户身份登录 Red Hat OpenStack Services on OpenShift (RHOSO)。 -
您已选择
OpenStackDataPlaneNodeSetCR,用于定义哪些节点对实例使用文件支持内存。有关创建OpenStackDataPlaneNodeSetCR 的更多信息,请参阅 Deploying Red Hat OpenStack Services on OpenShift 指南中的使用预置备节点创建 OpenStackDataPlaneNodeSet CR。
流程
创建或更新名为
nova-extra-config.yaml的ConfigMapCR,并在 [libvirt] 下设置参数的值:apiVersion: v1 kind: ConfigMap metadata: name: nova-extra-config namespace: openstack data: 30-nova-file-backed-memory.conf: | [libvirt] file_backed_memory = 1048576有关创建
ConfigMap对象的更多信息,请参阅 创建和使用配置映射。可选: 要将目录配置为存储内存后备文件,请设置
memory_backing_dir参数。默认内存后备目录为/var/lib/libvirt/qemu/ram/:[libvirt] file_backed_memory = 1048576 memory_backing_dir = <new_directory_location>将
<new_directory_location> 替换为内存后备目录的位置。注意您必须在位于 或默认目录位置
/var/lib/libvirt/qemu/ram/的某一目录中找到您的后备存储。您还可以更改后备存储的主机磁盘。如需更多信息,请参阅 更改内存后备目录主机磁盘。
创建新的
OpenStackDataPlaneDeploymentCR,以在 data plane 节点上配置服务并部署数据平面,并将它保存到工作站上名为compute_file_backed_memory_deploy.yaml的文件中:apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: compute-file-backed-memory在
compute_file_backed_memory_deploy.yaml中,指定nodeSets以包含您要部署的所有OpenStackDataPlaneNodeSetCR。确保包含您选择的OpenStackDataPlaneNodeSetCR。该OpenStackDataPlaneNodeSetCR 定义您要为文件支持内存指定的节点。警告您只能配置整个节点集。不支持在节点集合中重新配置节点的子集。如果您需要在节点集合中重新配置节点子集,您必须缩减节点设置,并从之前删除的节点创建新节点集。
警告如果您的部署有多个节点集,对
nova-extra-config.yamlConfigMap的更改可能会直接影响多个节点集,具体取决于节点集和DataPlaneServices的配置方式。要检查节点集是否使用nova-extra-configConfigMap,因此会受到重新配置的影响,请完成以下步骤:-
检查节点集的服务列表,并查找指向 nova 的
DataPlaneService的名称。 确保
DataPlaneService的edpmServiceType字段的值设置为nova。如果
DataPlaneService的dataSources列表包含名为nova-extra-config的configMapRef,则此节点会使用此ConfigMap,因此会受到此ConfigMap中的配置更改的影响。如果某些受影响的节点集合不应重新配置,您必须创建一个指向这些节点集的单独ConfigMap的新DataPlaneService。
apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: compute-file-backed-memory spec: nodeSets: - openstack-edpm - compute-file-backed-memory - ... - <nodeSet_name>-
将
<nodeSet_name> 替换为您要包含在 data plane 部署中的 OpenStackDataPlaneNodeSet CR 的名称。
-
检查节点集的服务列表,并查找指向 nova 的
-
保存
compute_file_backed_memory_deploy.yaml部署文件。 部署数据平面:
$ oc create -f compute_file_backed_memory_deploy.yaml验证 data plane 是否已部署:
$ oc get openstackdataplanenodeset NAME STATUS MESSAGE compute-file-backed-memory True Deployed访问
openstackclient的远程 shell,并验证部署的 Compute 节点是否在 control plane 上可见:$ oc rsh -n openstack openstackclient $ openstack hypervisor list
5.5.1. 更改内存后备目录主机磁盘 复制链接链接已复制到粘贴板!
您可以将内存后备目录从默认主磁盘位置移到替代磁盘。
流程
在替代的后备设备上创建文件系统。例如,输入以下命令在
/dev/sdb上创建ext4文件系统:# mkfs.ext4 /dev/sdb挂载后备设备。例如,输入以下命令在默认的 libvirt 内存后备目录中挂载
/dev/sdb:# mount /dev/sdb /var/lib/libvirt/qemu/ram注意挂载点必须与
memory_backing_dir参数的值匹配。