配置虚拟机

虚拟机配置包括基础信息、硬件资源、加密、访问选项、时间同步、User Data、CPU 特性、QoS 和资源争抢等内容。部分配置依赖虚拟机状态、操作系统能力或 VMTools。

修改虚拟机配置前,请确认业务窗口、虚拟机状态和配置生效条件。涉及存储、网络、资源调度或安全机制的配置项,可以结合对应手册了解完整机制。

修改虚拟机加密配置

根据数据保护要求,为已有虚拟机开启或关闭虚拟机加密,也可以单独调整各硬盘的加密状态。

前提条件

  • 虚拟机处于关机状态。
  • 平台已配置可用的默认密钥提供程序。若使用内置密钥提供程序,请先完成备份。有关更多信息,请参阅 加密密钥与工作原理
  • 共享硬盘和 RDM 硬盘不支持硬盘加密。修改加密配置前,请确认目标硬盘不是共享硬盘或 RDM 硬盘。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 选择目标虚拟机,然后点击修改配置
  3. 修改配置弹窗的基本信息区域,按需开启或关闭虚拟机加密
    • 开启虚拟机加密后,虚拟机运行过程中内存、GPU 等产生的落盘数据将通过默认密钥提供程序提供的密钥进行加密,现有硬盘的硬盘加密也会自动开启。
    • 关闭虚拟机加密不会自动关闭各硬盘的硬盘加密,您可以继续保留加密硬盘,也可以在下一步中单独关闭硬盘加密。
  4. 硬件信息区域选择目标硬盘,然后按需开启或关闭硬盘加密
    硬盘加密用于保护该硬盘中存储的全部数据。未开启虚拟机加密时,也可以单独为硬盘开启加密。
  5. 确认配置无误后,点击确定
    Note: 为已有虚拟机或硬盘转换加密状态需要处理已有数据,所需时间通常长于创建时直接启用加密。转换期间保留的源数据可在数据存储的数据清理页签中查看;确认转换后的虚拟机运行正常后,请按需清理源数据。

虚拟机时间同步

在平台中,确保虚拟机时间与主机时间同步一致对于业务具有极其重要的意义。ZSphere提供两种时间同步机制:BIOS 时钟同步、虚拟机时间同步。

BIOS 时钟同步

BIOS 时钟同步功能针对 Windows 虚拟机设计。对于 Windows 虚拟机而言,硬件的时钟时间来源于主机,而系统时间等同于硬件时钟时间。因此,可通过设置 BIOS 时钟同步使得 Windows 虚拟机硬件时间与系统时间与主机硬件时间保持一致。

新建虚拟机时,可在高级设置 > 常规设置中启用BIOS时钟同步。启用后,虚拟机会定期自动同步主机 BIOS 时钟。

时间同步

时间同步功能针对 Windows 与 Linux 虚拟机系统时间与主机系统时间同步设计。对于 Linux 虚拟机而言,硬件时间来源于主机,系统时间单独计算,仅在部分时间点(比如系统刚启动时)和硬件时钟同步,其余时间都是和硬件时钟独立的。

虚拟机时间同步机制:
  • 网络:区别于 NTP 时间同步,当前时间同步机制不依赖特定外部网络,仅涉及主机与虚拟机的通信。
  • 时区:虚拟机定期自动同步所在主机时区,保持一致。
  • 同步间隔:默认每 60 秒进行一次同步,同步间隔支持通过 CLI 方式修改,可选取值:60 秒(1 分钟)、600 秒(10 分钟)、1800 秒(30 分钟)、3600 秒(1 小时)、7200 秒(2 小时)、21600 秒(6 小时)、43200 秒(12 小时)、86400 秒(1 天)。
    # 通过 CLI 方式修改同步间隔
    [root@localhost ~]# UpdateResourceConfig vm=<vm_uuid> category=vm \
    name=vm.clock.sync.interval.in.seconds value=<intervalInSeconds>
    
    # vm_uuid 表示虚拟机 uuid
    # intervalInSeconds 表示希望设置的同步间隔,单位:秒
  • 同步策略:当前同步策略为立即一致,无论虚拟机自身时间超前或是滞后,当同步机制触发,虚拟机时间会立即与所在主机保持一致。
单台虚拟机时间同步设置方法:
  1. 确保虚拟机已安装 QEMU Guest Agent (QGA),且 QGA 处于运行状态。有关更多信息,请参阅 安装和使用 VMTools
  2. 关闭虚拟机其他时间源同步策略(建议关闭)。
  3. 在虚拟机页面,点击更多操作 > 高级设置 > 修改VMTools中启用时间同步。启用后,每 60 秒自动同步主机系统时间。

Linux 虚拟机导入 User Data

User Data 是用户自定义数据,可通过自定义参数或脚本,在新建 Linux 虚拟机时完成定制化配置或执行特定任务。

前提条件

  • 导入 User Data 前,确保虚拟机镜像已安装 cloud-init,推荐版本:0.7.9、17.1、19.4 以及 19.4 以后版本。
  • 若通过 User Data 方式设置主机名和 SSH 登录密码,请勿在平台上重复设置主机名和密码,以避免冲突。
  • 若使用已安装 cloud-init 的虚拟机镜像新建 Linux 虚拟机,必须导入 User Data,否则 cloud-init 任务会等待直到超时。

操作步骤

  1. 准备所需实现功能的 User Data 脚本。
    脚本示例:
    #cloud-config
    users:
     - name: test
       shell: /bin/bash
       groups: users
       sudo: ['ALL=(ALL) NOPASSWD:ALL']
       ssh-authorized-keys:
           - ssh-rsa AAAAB3NzaC1LXCJfjroD1lT root@10-0-0-18
    bootcmd:
     - mkdir /tmp/temp
    write_files:
     - path: /tmp/Cloud_config
       content: |
           Hello,world!
       permissions: '0755'
    fqdn: Perf-test
    disable_root: false
    ssh_pwauth: yes
    chpasswd:
      list: |
          root:word
      expire: False
    runcmd:
     - echo ls -l / >/root/list.sh
    上述示例实现以下功能:
    1. 新建虚拟机时,创建用户 test,使用 ssh-key。
    2. 开机写入文件/etc/hosts,创建/tmp/temp目录,并创建文件写入内容。
    3. 设置 hostname,开启 root 用户,允许 ssh 密码登录,修改 root 密码。
    4. 执行echo ls -l /命令。
  2. 在导航栏中,选择资源清单
  3. 在资源清单中,右键单击集群、主机或镜像,然后点击新建虚拟机
  4. 新建虚拟机弹窗中,选择高级设置 > 常规选项
  5. User Data输入框中粘贴脚本。
  6. 完成虚拟机新建流程,即可导入 User Data。

Windows 虚拟机导入 User Data

User Data 是用户自定义数据,可通过自定义参数或脚本,在新建 Windows 虚拟机时完成定制化配置或执行特定任务。

前提条件

  • 导入 User Data 前,确保虚拟机镜像已安装 Cloudbase-init,推荐版本:0.9.11。有关 Cloudbase-init 的更多信息,请参阅 Cloudbase 官方文档
  • 若通过 User Data 方式设置主机名和 SSH 登录密码,请勿在平台上重复设置主机名和密码,以避免冲突。
  • 若使用已安装 Cloudbase-init 的虚拟机镜像新建 Windows 虚拟机,必须导入 User Data,否则 Cloudbase-init 任务会等待直到超时。

操作步骤

  1. 准备所需实现功能的 User Data 脚本。
    脚本示例:
    #cloud-config
    write_files:
       -   encoding: b64
           content: NDI=
           path: C:\b64
           permissions: '0644'
       -   encoding: base64
           content: NDI=
           path: C:\b64_1
           permissions: '0644'
       -   encoding: gzip
           content: !!binary |
               H4sIAGUfoFQC/zMxAgCIsCQyAgAAAA==
           path: C:\gzip
           permissions: '0644'

    上述示例实现以下功能:在虚拟机启动过程中,在 C 盘下创建b64b64_1gzip三个文件。

  2. 在导航栏中,选择资源清单
  3. 在资源清单中,右键单击集群、主机或镜像,然后点击新建虚拟机
  4. 新建虚拟机弹窗中,选择高级设置 > 常规选项
  5. User Data输入框中粘贴脚本。
  6. 完成虚拟机新建流程,即可导入 User Data。

虚拟机资源争抢配置

ZSphere提供以下三类配置,以提升虚拟机资源争抢能力:

CPU NUMA 绑定配置

CPU NUMA 绑定配置:将虚拟机的虚拟CPU(vCPU)与主机的物理CPU(pCPU)严格关联,可为虚拟机分配特定的pCPU,提高虚拟机性能。

图 1. 虚拟机 CPU 绑定配置原理


若您存在以下两种业务场景,可考虑使用 CPU 绑定功能,以提升虚拟机性能:
  • CPU 密集型小应用场景:

    CPU 密集型应用对 CPU 资源需求旺盛,若大量 CPU 密集型小应用跑在虚拟机上,可能会出现 CPU 资源争抢的情况。CPU 绑定将使各个应用运行在特定的物理 CPU 上,从而避免资源争抢,提高系统性能。

  • 多核 CPU 压力不均衡场景:

    针对多应用集中跑在一个或某几个 CPU 的情况,可通过 CPU 绑定手动按需调整各个 CPU 承压,实时生效。

您可参考以下步骤配置 CPU 绑定:
  1. 在目标虚拟机页面,点击关机将虚拟机关机。
  2. 点击修改配置操作,选择硬件信息 > CPU > 绑定CPU NUMA,按需选择一键智能绑定或手动绑定:
    • 一键智能绑定:按 pNUMA 节点 ID 从大到小的顺序,将该虚拟机 vCPU 与 pNUMA 节点中 pCPU 一对一绑定。当一个 pNUMA 节点中 pCPU 均已被该虚拟机 vCPU 绑定,将依序绑定下一个 pNUMA 节点中的 pCPU。若所有 pCPU 均已被绑定,但仍有 vCPU 未绑定 pCPU,将轮询至首个绑定的 pNUMA 节点继续一对一绑定。
    • 手动绑定:手动将 vCPU 按照主机 pNUMA 拓扑绑定 pCPU,所有 vCPU 均需绑定。
      • 一个 vCPU 支持绑定一个或多个 pCPU,同时一个 pCPU 支持被一个或多个 vCPU 绑定。单个 vCPU 所绑定的 pCPU 均需在一个 pNUMA 节点中。
      • 支持展示各个 pCPU 过去 15 分钟平均使用率,助力选择最佳 pCPU 进行绑定。
    Note:
    • 若您设置了 CPU 超配,vCPU 数量可能会大于 pCPU 数量。此时,建议 vCPU 数量不要大于绑定的 pCPU 数量,否则将大幅影响虚拟机性能。
    • 绑定 CPU NUMA 后,再修改虚拟机 CPU 核数时,将自动取消 CPU NUMA 绑定。
  3. 点击确定后,即可完成 CPU NUMA 绑定,可点击开机操作重新将虚拟机开机。

EmulatorPin 配置

EmulatorPin 配置:将虚拟机中除vCPU和IO线程外的其他线程与主机pCPU进行绑定,使虚拟机相关线程只运行在对应的pCPU上。

图 2. 虚拟机 EmulatorPin 配置原理


若您存在以下业务场景,可考虑使用 EmulatorPin:
  • 多业务并行场景:

    针对单台主机运行多台虚拟机业务场景,若每台虚拟机运行业务不同,会造成不同程度的资源占用。EmulatorPin 通过将虚拟机 QEMU 主线程与 pCPU 绑定可实现不同虚拟机主要服务进程隔离,保证系统性能相对稳定。

您可参考以下步骤配置 EmulatorPin 绑定:
  1. 在目标虚拟机页面,点击更多操作 > 高级设置 > 修改其他设置,选择EmulatorPin:按照主机 pNUMA 结构将虚拟机中除 vCPU 和 IO 线程外的其他线程与主机 pCPU 进行绑定。
  2. 点击确定后,即可完成 EmulatorPin 绑定。

CPU&内存资源优先级配置

若虚拟机 A 与其他虚拟机共享主机 A 的 CPU 和内存资源,虚拟机 A 的业务重要性与优先级均比其他虚拟机高。在资源紧张情况下,例如主机负载率过高,这些虚拟机会出现争抢主机资源的现象。此时,可将虚拟机 A 的 CPU 资源优先级以及内存资源优先级设置为,其他默认为正常,以提高虚拟机 A 的资源抢夺能力。

您可参考以下步骤设置资源优先级:
  1. 在目标虚拟机页面,点击修改配置操作,选择硬件信息 > CPU > CPU资源优先级,按需选择优先级
  2. 点击确定后,即可完成资源优先级配置。

虚拟机 CPU 特性配置

ZSphere 提供 CPU 模式配置功能,可用于设置虚拟机 CPU 型号与主机 CPU 型号的一致性,从而继承主机部分或全部 CPU 特性,以满足特定业务需求。

虚拟机 CPU 模式简介

ZSphere 支持以下 CPU 模式设置:

  • 无(默认):虚拟机 CPU 型号由 QEMU 模拟而成,较小范围内继承所在主机 CPU 的特性,迁移场景时推荐设置该模式。
  • 兼容:虚拟机 CPU 型号与主机 CPU 型号接近或一致,例如:都显示为 Haswell Intel CPU。相比无模式,该模式下,虚拟机可继承所在主机 CPU 较多特性,可用于迁移场景。aarch 架构集群和虚拟机暂不支持该设置。
  • 直通:虚拟机 CPU 型号与所在主机 CPU 型号一致。同时,虚拟机 CPU 特性与主机 CPU 特性一致,例如:都支持扩展页表、大页内存以及虚拟化等。相比无、兼容和自定义模式,该模式继承的主机 CPU 特性最多,适用于对虚拟机功能有较高要求的业务场景。
  • 自定义(某一特定 CPU 型号):虚拟机将配置为该自定义 CPU 型号。自定义 CPU 型号后,虚拟机可能具备与之前自定义型号不同的 CPU 特性。

配置虚拟机 CPU 模式

ZSphere提供虚拟机粒度和集群粒度两级粒度设置。生效优先级为:虚拟机粒度>集群粒度。以虚拟机粒度设置为例,操作步骤如下:

  1. 在目标虚拟机页面,点击关机按钮将虚拟机关机。
  2. 点击修改配置操作,选择硬件信息 > CPU > CPU模式,按需选择所需的 CPU 模式。
  3. 点击确定后,即可完成 CPU 模式配置,可点击开机按钮重新将虚拟机开机。

虚拟机 QoS 配置

QoS 通过设定 IO 带宽阈值来解决网络延迟和阻塞等问题。当网络过载或拥塞时,QoS 能确保业务量不被延迟或丢弃,同时保证网络的高效运行。

您可通过设置 QoS 限制硬盘带宽、硬盘 IOPS 以及网卡上下行带宽。若不设置 QoS,系统不会限制对应 I/O 或网络带宽。

硬盘 QoS

您可参考以下步骤配置硬盘 QoS:
  1. 在目标虚拟机页面,点击修改配置操作,选择硬件信息 > 硬盘{$n} > QoS限速,打开 QoS 限速开关,即可为硬盘 n(例如硬盘 1)配置 QoS。
    硬盘 QoS 支持配置带宽限制与 IOPS 限制,打开开关后,至少需配置其中一种限制:
    • 带宽限制:设置硬盘每秒的读写速度上限,基本单位包括:MB/s、GB/s。建议该值不要设过小,避免导致虚拟机工作异常。
      • 总速度:设置硬盘的读写总速度上限。
      • 读写速度:单独设置读速度和写速度上限。
    • IOPS限制:设置硬盘每秒的读写次数上限。
      • 总IOPS:设置硬盘的读写总 IOPS 上限。
      • 读写IOPS:单独设置读速度和写 IOPS 上限。
  2. 点击确定后,即可完成硬盘 QoS 配置。

网络 QoS

您可参考以下步骤配置网络 QoS:
  1. 在目标虚拟机页面,点击修改配置操作,选择硬件信息 > 网卡{$n} > QoS限速,打开 QoS 限速开关,即可为网卡 n(例如网卡 1)配置 QoS。
    QoS 支持配置发送带宽和接收带宽,基本单位包括:Kbps、Mbps、Gbps。打开开关后,至少需配置其中一种带宽:
    • 发送带宽:从虚拟机上传的网络带宽上限
    • 接收带宽:从虚拟机下载的网络带宽上限
  2. 点击确定后,即可完成网络 QoS 配置。