搜索

11.3. 升级到 RHOSP 17 后为主机更新默认机器类型

download PDF

实例的机器类型是一个虚拟芯片组,提供某些默认设备,如 PCIe 图形卡或以太网控制器。云用户可以使用带有 hw_machine_type 元数据属性的镜像为其实例指定机器类型。

云管理员可以使用 Compute 参数 NovaHWMachineType 配置每个 Compute 节点架构,使其具有默认的机器类型,以应用到托管在该架构上的实例。如果在启动实例时不提供 hw_machine_type 镜像属性,则主机架构的默认机器类型将应用到实例。Red Hat OpenStack Platform (RHOSP) 17 基于 RHEL 9。RHEL 9 中弃用了 pc-i440fx QEMU 机器类型,因此在 RHEL 9 上运行的 x86_64 实例的默认机器类型已从 pc 改为 q35。根据 RHEL 9 中的这个变化,机器类型 x86_64 的默认值也从 RHOSP 16 中的 pc 改为 q35 (在 RHOSP 17 中)。

在 RHOSP 16.2 及之后的版本中,Compute 服务会在实例启动时记录实例元数据中的实例类型。这意味着,现在可以在 RHOSP 部署生命周期内更改 NovaHWMachineType,而不影响现有实例的机器类型。

Compute 服务记录了不在 SHELVED_OFFLOADED 状态的实例类型。因此,在升级到 RHOSP 17 后,您必须手动记录处于 SHELVED_OFFLOADED 状态的机器类型,并验证环境或特定单元中的所有实例是否已记录机器类型。使用机器类型更新每个实例的系统元数据后,您可以将 NovaHWMachineType 参数更新为 RHOSP 17 默认 q35,而不影响现有实例的机器类型。

先决条件

流程

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

    $ source ~/stackrc
  3. heat-admin 用户身份登录 Controller 节点:

    (undercloud)$ metalsmith list
    $ ssh heat-admin@<controller_ip>

    <controller_ip > 替换为 Controller 节点的 IP 地址。

  4. 检索没有设置机器类型的实例列表:

    [heat-admin@<controller_ip> ~]$ sudo podman exec -i -u root nova_api \
      nova-manage libvirt list_unset_machine_type
  5. 检查 nova-hw-machine-type-upgrade.yaml 文件中的 NovaHWMachineType 参数,以获取实例主机的默认机器类型。RHOSP 16.2 中 NovaHWMachineType 参数的默认值如下:

    x86_64=pc-i440fx-rhel7.6.0,aarch64=virt-rhel7.6.0,ppc64=pseries-rhel7.6.0,ppc64le=pseries-rhel7.6.0

  6. 使用默认实例类型更新每个实例的系统元数据:

    [heat-admin@<controller_ip> ~]$ sudo podman exec -i -u root nova_api \
      nova-manage libvirt update_machine_type <instance_uuid> <machine_type>
    • <instance_uuid > 替换为实例的 UUID。
    • <machine_type> 替换为要记录的实例类型。
  7. 确认为所有实例记录了机器类型:

    [heat-admin@<controller_ip> ~]$ sudo podman exec -i -u root nova_api \
      nova-status upgrade check

    如果实例在没有机器类型的情况下找到,这个命令会返回一个警告。如果收到这个警告,请从第 4 步重复这个过程。

  8. 将 Compute 环境文件中的 NovaHWMachineType 默认值更改为 x86_64=q35 并部署 overcloud。

验证

  1. 创建具有默认机器类型的实例:

    (overcloud)$ openstack server create --flavor <flavor> \
      --image <image> --network <network> \
      --wait defaultMachineTypeInstance
    • <flavor > 替换为实例的类别名称或 ID。
    • <image > 替换为没有设置 hw_machine_type 的镜像的名称或 ID。
    • 将 & lt;network > 替换为要连接实例的网络的名称或 ID。
  2. 验证实例机器类型是否已设置为默认值:

    [heat-admin@<controller_ip> ~]$ sudo podman exec -i -u root nova_api \
      nova-manage libvirt get_machine_type <instance_uuid>

    <instance_uuid > 替换为实例的 UUID。

  3. 硬重启一个类型为 x86_64=pc-i440fx 的实例:

    (overcloud)$ openstack server reboot --hard <instance_uuid>

    <instance_uuid > 替换为实例的 UUID。

  4. 验证实例机器类型尚未更改:

    [heat-admin@<controller_ip> ~]$ sudo podman exec -i -u root nova_api \
      nova-manage libvirt get_machine_type <instance_uuid>

    <instance_uuid > 替换为实例的 UUID。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.