5.4. 管理虚拟机

每个虚拟机 (VM) 都是一个独立系统,每个都具有一组独立虚拟硬件。其主要功能包括:

  • 虚拟机类似于常规计算机,其工作方式也类似于常规计算机。它具有自己的虚拟硬件。软件应用程序可以在虚拟机中运行,而无需进行任何修改或调整。

  • 虚拟机配置可以轻松更改,例如,通过添加新的虚拟磁盘或内存。

  • 尽管虚拟机共享物理硬件资源,但它们彼此(文件系统、进程,sysctl 变量)完全隔离,也与计算节点完全隔离。

  • 虚拟机可以运行任何受支持的来宾操作系统。

下表列出了当前虚拟机配置限制:

表 5.4.1 虚拟机硬件

资源

限制

RAM

1 TB

CPU

48 个虚拟 CPU

存储器

15 个卷,每个 512 TB

网络

15 个 NIC

5.4.1. 支持的来宾操作系统

以下来宾操作系统已经过测试,在虚拟机中受支持:

表 5.4.1.1 Windows 来宾操作系统

操作系统

Edition

体系结构

Windows Server 2019

Essentials、Standard、Datacenter

x64

Windows Server 2016

Essentials、Standard、Datacenter

x64

Windows Server 2012 R2

Essentials、Standard、Datacenter

x64

Windows Server 2012

Standard、Datacenter

x64

Windows Server 2008 R2

Standard、Datacenter

x64

Windows Server 2008

Standard、Datacenter

x64

Windows 10

Home、Professional、Enterprise、Enterprise 2016 LTSB

x64

Windows 8.1

Home、Professional、Enterprise

x64

Windows 7

Home、Professional、Enterprise

x64

表 5.4.1.2 Linux 来宾操作系统

操作系统

体系结构

CentOS 8.x

x64

CentOS 7.x

x64

CentOS 6.x

x64

RHEL 8.x

x64

RHEL 7.x

x64

Debian 10.x

x64

Debian 9.x

x64

Ubuntu 20.04.x

x64

Ubuntu 18.04.x

x64

Ubuntu 16.04.x

x64

5.4.2. 创建虚拟机

在继续创建 VM 之前,请检查是否具有以下各项:

  • 来宾操作系统资源(请参阅 管理映像):

    • 要在 VM 中安装的来宾操作系统的分发 ISO 映像

    • 格式为 QCOW2 的启动卷的模板

    • 启动卷

      注解

      要获取启动卷,请按照 管理计算卷 中所述创建卷、将该卷附加至 VM、在该卷中安装操作系统,然后删除 VM。

  • 卷的存储策略(请参阅 管理存储策略

  • 规格(请参阅 管理规格

  • 一个或多个计算网络(请参阅 管理计算网络

  • SSH 密钥(请参阅 管理 SSH 密钥

    注解

    仅当从模板或启动卷创建 VM 时,才可以指定 SSH 密钥。

注解

默认情况下,使用主机 CPU 型号创建虚拟机。具有不同 CPU 的计算节点可能会导致发生实时迁移问题。为了避免出现上述问题,可以按照 Setting virtual machine CPU model 中所述为所有新的 VM 手动设置 CPU 型号。

要创建 VM,请执行以下操作:

  1. Compute > Virtual machines > Virtual machines tab 上,单击创建虚拟机。将打开一个窗口,需要在其中指定 VM 参数。

    ../_images/compute_vms1_ac.png
  2. 为新 VM 指定一个名称。

  3. 选择 VM 启动媒体:

    • 如果您具有 ISO 映像或模板,请执行以下操作:

      1. 选择从以下位置部署部分的映像,然后单击映像部分的指定

      2. 映像窗口中,选择 ISO 映像或模板,然后单击完成

        ../_images/compute_vms2_ac.png
    • 如果您拥有计算启动卷,请执行以下操作:

      1. 从以下位置部署部分中选择,然后在映像部分中单击指定

      2. 窗口,单击附加

      3. 附加卷窗口中,找到并选择该卷,然后单击附加

        ../_images/compute_vms3_ac.png

        如果附加多个卷,默认情况下,第一个连接的卷将成为启动卷。要将另一个卷选择为可启动卷,请通过单击该卷旁边的向上箭头按钮将它置于列表中的第一项。

    选择启动媒体后,该媒体启动所需的卷将自动添加到部分。

  4. 配置 VM 磁盘:

    1. 窗口中,确保默认启动卷的大小足以容纳来宾操作系统。否则,请单击它旁边的省略号图标,然后单击编辑。更改卷大小,然后单击保存

    2. (可选)通过创建或附加卷将更多磁盘添加到 VM。要执行此操作,请单击部分中的铅笔图标,然后在窗口中添加附加

    3. 选择将在 VM 删除过程中删除的卷。要执行此操作,请单击部分的铅笔图标,单击所需卷旁边的的省略号图标,然后单击编辑。启用终止时删除,并单击保存

    4. 完成 VM 磁盘配置后,单击完成

  5. (可选)如果有任何位置,则会显示位置下拉列表。位置由管理员创建,来对共享独特功能(例如特殊许可)的节点或 VM 进行分组。选择与 VM 特征相对应的位置。有关详细信息,请参阅 管理位置

  6. 规格部分中选择将分配给 VM 的 RAM 和 CPU 资源量。在规格窗口中,选择一个规格,然后单击完成

    ../_images/compute_vms5_ac.png
  7. 添加网络接口到网络部分的 VM:

    1. 网络接口窗口中,单击添加、选择计算网络,然后单击添加

      ../_images/compute_vms6_ac.png

      连接至选定网络的网络接口将显示在网络接口列表中。

    2. (可选)编辑新添加的网络接口 such as IP and MAC addresses and spoofing protection 的其他参数。要执行此操作,请单击省略号图标,单击编辑,然后设置参数。您以后将无法编辑这些参数。相反,您将能够删除旧的网络接口并将其替换为新的网络接口。

    3. 完成 VM 网络接口配置后,单击完成

  8. (可选)如果选择从安装了 cloud-init 或 OpenSSH 的模板或卷启动(请参阅 准备模板),请执行以下操作:

    重要

    由于云映像没有默认密码,因此只能通过使用 SSH 的密钥身份验证方法访问从其部署的 vm。

    • 向 VM 添加一个 SSH 密钥,以便能够通过 SSH 访问它,而无需密码。在选择 SSH 密钥窗口中选择一个 SSH 密钥,然后单击完成

      ../_images/compute_vms9_ac.png
    • 添加用户数据以在启动后自定义 VM,例如,更改用户密码。在自定义脚本字段中编写 cloud-config 或 shell 脚本,或在本地服务器上浏览并找到要从中加载脚本的文件。

      ../_images/compute_vms10_ac.png

      要在 Windows VM 中注入脚本,请参阅 Cloudbase-Init 文档。例如,可以使用以下脚本为帐户设置新密码:

      #ps1
      net user <username> <new_password>
      
  9. 配置完所有的 VM 参数后,单击部署以创建并启动 VM。

如果要从 ISO 映像部署 VM,请使用内置 VNC 中控台在 VM 内安装来宾操作系统(请参阅 连接到虚拟机)。从模板或启动卷创建的虚拟机已经预安装了来宾操作系统。

5.4.3. 连接到虚拟机

部署虚拟机后,可以通过 VNC 中控台或 SSH 连接到它:

  • 要通过内置的 VNC 中控台连接至 VM,请单击 VM 右侧窗格上的中控台。中控台将在单独的浏览器窗口中打开。在中控台,可以将组合键发送至 VM、对中控台窗口拍摄屏幕快照,以及下载中控台日志(请参阅 虚拟机故障排除)。

  • 为了能够通过 SSH 连接到 VM,请确保 VM 模板或启动卷中已安装 cloud-init 和 OpenSSH(请参阅 准备模板)。要通过 SSH 连接到 VM,请在 SSH 终端制定用户名和 VM IP 地址:

    # ssh <username>@<VM_IP_address>
    

    Linux云映像具有默认登录名,具体取决于操作系统,例如,centosubuntu。要连接至 Windows VM,请输入在 Cloudbase-Init 安装期间指定的用户名。

    如果在没有指定 SSH 密钥的情况下部署了 VM,则还需要输入密码才能登录到 VM。

5.4.4. 管理虚拟机电源状态

创建虚拟机后,可以使用可用操作管理其电源状态。要查看 VM 当前状态可用操作的完整列表,请单击 VM 或它旁边的省略号按钮。可以执行以下操作:

  • 要启动 VM,请单击运行

  • 要正常关闭正在运行的 VM,请单击关机。默认的关机超时时间是 10 分钟,在此之后虚拟机将关闭。可以使用 vinfra service compute server stop --wait-time 命令为每个虚拟机配置此超时(请参阅 vinfra service compute server stop)。

  • 要强制切断 VM 的电源,请单击关闭电源

  • 要软启动正在运行的 VM,请单击重新启动

  • 要在来宾操作系统正常关闭的情况下重新启动 VM,请单击硬重新启动

  • 要将当前 VM 状态保存至文件,请单击暂停。例如,如果需要重新启动主机但又不想退出 VM 中当前正在运行的应用程序,或者需要重新启动其来宾操作系统,这可能会很有用。

  • 要将 VM 从挂起状态中恢复,请单击恢复

5.4.5. 重新配置和监视虚拟机

要监控虚拟机的 CPU、存储和网络使用情况,请选择 VM,然后打开监控选项卡。

图表的默认时间间隔是 12 小时。要放大特定时间间隔,请用鼠标选择相应内部。要重置缩放,请双击任何图表。

以下性能图表可用:

CPU/RAM

VM 的 CPU 和 RAM 使用情况。

网络

传入和传出网络流量。

存储读取/写入

VM 读取和写入的数据量。

读取/写入延迟

读取和写入延迟。将鼠标光标悬停在图表上的某个点上,还可以查看该时刻的平均延迟和最大延迟以及 95 和 99 百分位数值。

注解

平均值每五分钟计算一次。

要重新配置 VM,请选择它,然后在概述选项卡上单击需要更改的参数旁边的铅笔图标。无法执行以下操作:

  • 更改、拆离或删除启动卷

  • 管理非启动卷(附加和拆离除外)

  • 修改以前添加的网络接口

  • 在搁置的 VM 中附加和拆离网络接口

  • 更改正在运行和已搁置的 VM 的 Flavor

5.4.6. 搁置虚拟机

将停止的 VM 从其托管的节点上解除绑定,并释放其保留的资源(例如 CPU 和 RAM)。搁置的 VM 仍可启动,并保留其配置,包括 IP 地址。要执行此操作,请单击 VM 右侧窗格上的搁置

通过单击关机关闭电源并在确认窗口中选中搁置虚拟机复选框,即可搁置处于其他状态下的虚拟机。

要在具有足够资源来托管它的节点上生成已搁置的 VM,请单击 VM 右侧窗格上的取消搁置

5.4.7. 迁移虚拟机

虚拟机迁移有助于促进群集升级和计算节点之间的工作负载均衡。Acronis Cyber Infrastructure 允许您执行两种类型的迁移:

  • 冷迁移 - 适用于已停止和已暂停的虚拟机

  • 热迁移 - 适用于正在运行的虚拟机(允许您避免 VM 停机)

对于这两种迁移类型,虚拟机都使用共享存储在计算节点之间迁移,因此不会发生块设备迁移。

热迁移包括以下步骤:

  1. 所有 VM 内存都将复制到目标节点,同时虚拟机继续在源节点上运行。如果 VM 内存页发生更改,则会再次复制它。

  2. 当仅剩几个内存页要复制时,将在源节点上停止 VM、传输其余页,然后在目标节点上重新启动 VM。

具有大量写密集型工作负载的大型虚拟机写入内存的速度快于将内存更改转移到目标节点的速度,从而防止迁移收敛。对于此类 VM,使用自动收敛机制。如果在实时迁移期间检测到缺乏收敛,则会降低 VM 的 vCPU 执行速度,这也会减慢写入 VM 内存的速度。最初,虚拟机的 vCPU 会降低 20%,然后在每次迭代期间再降低 10%。该过程将继续进行,直到写入 VM 内存的速度减慢到足以完成迁移或 VM vCPU 的速度降低了 99% 为止。

注解

默认情况下,使用主机 CPU 型号创建虚拟机。具有不同 CPU 的计算节点可能会导致发生实时迁移问题。为了避免出现上述问题,可以按照 Setting virtual machine CPU model 中所述为所有新的 VM 手动设置 CPU 型号。

要迁移 VM,请执行以下操作:

  1. 计算 > 虚拟机 > 虚拟机选项卡上,单击要迁移的 VM、单击省略号按钮,然后选择迁移

    ../_images/migrating_vms1_ac.png
  2. 在新窗口中,执行目标节点:

    • 自动。根据可用的 CPU 和 RAM 资源自动在群集节点中选择最佳目标。

    • 从下拉列表中手动选择目标节点。

    ../_images/migrating_vms2_ac.png
  3. 默认情况下,正在运行的 VM 将实时迁移。可以通过选中冷迁移复选框,将迁移模式更改为脱机。迁移后,VM 将在目标节点上停止并重新启动。

  4. 单击迁移以在目标节点上保留资源并开始迁移。

管理面板将显示迁移进度。

5.4.8. 配置虚拟机高可用性

如果虚拟机所在的节点由于内核故障、断电等原因而发生故障,或者无法通过网络进行访问,则高可用性可确保虚拟机继续运行。正常关机不视为故障事件。

重要

计算群集只能承受一个节点发生故障。

如果发生故障,系统将尝试自动撤离受影响的 VM,即按照以下顺序自动调度将它们脱机迁移至其他运行状况良好的计算节点:

  • 先将处于“活动”状态的 VM 撤离并自动启动。

  • 接下来将处于“关机”状态的 VM 撤离,并使其保持停止状态。

  • 所有其他 VM 都将被忽略,并留在发生故障的节点上。

如果某些原因阻止了撤离(例如,目标计算节点缺少资源来托管受影响的 VM),则这些 VM 将保留在发生故障的节点上并接收到“错误”状态。在解决问题(提供足够资源、将新节点加入群集中等)之后,可以手动撤离它们。要执行此操作,请单击 VM 右侧窗格上的撤离

../_images/vm_ha1_ac.png

当发生故障的节点再次可用时,系统会阻止在该节点上预定新的 VM,可以手动将该节点返回至操作。要执行此操作,请打开受防护节点的窗格,然后单击返回至操作

../_images/vm_ha2_ac.png

默认情况下,在创建计算群集后会自动为虚拟机启用高可用性。如果需要,可以手动将其禁用。请执行以下操作:

  1. 单击要禁用高可用性的 VM。

  2. 在 VM 右侧窗格上,单击高可用性参数旁边的铅笔图标。

  3. 高可用性窗口中,禁用该 VM 的高可用性,然后单击保存

../_images/vm_ha3_ac.png

如果发生故障转移,则不会将已禁用高可用性的虚拟机撤离至运行正常的节点中。

5.4.9. 救援虚拟机

注解

本功能仅支持通过 GUI 用于 Linux 虚拟机。它也可以通过 Windows VM 的命令行使用,如 Managing virtual machines 中所述。

如果 VM 遇到启动问题,可以将其发送到救援模式以访问其启动卷。当一个处于“活动”状态的 VM 被发送到救援模式时,它首先被软关机。一旦 VM 处于救援模式,就可以通过 SSH 或中控台连接到它。其先前的启动磁盘现在作为辅助磁盘附加。您可以安装磁盘并对其进行修复。

在将 VM 发送到救援模式之前,请考虑以下事项:

  • 救援模式只能使用 qcow2 映像(模板)启动 VM。有关制作模板的说明,请参阅 准备模板

  • 只有当 VM 的当前状态为“活动”或“关机”时,才能将其发送到救援模式。

  • 在救援模式下,VM 只有三个可用操作:中控台退出救援模式删除

  • 如果救援映像安装了 cloud-init,则可以使用用于其创建的相同 SSH 密钥访问从其启动的VM。

要将 VM 置于救援模式,请执行以下步骤:

  1. Compute > Virtual machines > Virtual machines tab 上,单击列表中所需的 VM。

  2. 在 VM 面板上,单击工具栏上的省略号按钮。然后单击进入救援模式

    ../_images/vm_rescue_1_ac.png
  3. 进入救援模式窗口中,选择用于救援 VM 的映像。默认情况下,将选择用于创建 VM 的初始映像。单击进入

    ../_images/vm_rescue_2_ac.png

计算机的状态更改为“救援”。要使 VM 从救援模式恢复为正常运行,请执行以下步骤:

  1. Compute > Virtual machines > Virtual machines tab 上,单击列表中所需的 VM。

  2. 在 VM 面板上,单击退出救援模式

  3. 退出救援模式窗口中,单击退出。VM 将自动重新启动。

    ../_images/vm_rescue_3_ac.png

VM 状态更改为“活动”,并从原始根磁盘启动。

注解

如果退出救援模式时 VM 状态更改为“错误”,则可以使用重置状态操作重置其状态。然后 VM 应再次返回到“救援”状态。

5.4.10. 管理来宾工具

本部分将介绍如何安装和卸载来宾工具。对于 Running commands in virtual machines without network connectivity 以及为正在运行的 VM 的磁盘创建一致快照时需要此功能(请参阅 管理卷快照)。

5.4.10.1. 安装来宾工具

在虚拟机中安装来宾工具包括由具有不同角色的用户执行的步骤:系统管理员和 VM 用户。

作为系统管理员,您需要执行以下操作:

  1. 将位于任何计算节点上的 /usr/share/vz-guest-tools/ 目录中的来宾工具 ISO 文件上传到网络共享或 FTP 服务器:

    • 对于 Windows 来宾,上传 vz-guest-tools-win.iso

    • 对于 Linux 来宾,上传 vz-guest-tools-lin.iso

  2. 将对已上传 ISO 文件的访问权限提供给 VM 用户。

作为 VM 用户,登录到虚拟机并执行以下操作:

  • 在 Windows VM 中:

    1. 下载系统管理员提供的 Windows 来宾工具 ISO 映像。

    2. 在 VM 中加载该映像。

      • 在 Windows 8、Windows Server 2012 或更高版本中,可以本地加载 ISO 映像。要执行此操作,请右键单击来宾工具 ISO 映像,然后选择加载

      • 在 Windows 7 和 Windows Server 2008 中,需要第三方应用程序才能加载 ISO 映像。

    3. 在资源管理器中,转到已加载的光盘驱动器,然后通过运行 setup.exe 来安装来宾工具。

    4. 在安装完成后,重新启动 VM。

  • 在 Linux VM 中:

    1. 下载系统管理员提供的 Linux 来宾工具 ISO 映像。

    2. 使用来宾工具映像为光盘驱动器创建一个加载点,然后运行安装程序:

      # mkdir /mnt/cdrom
      # mount <path_to_guest_tools_iso> /mnt/cdrom
      # bash /mnt/cdrom/install
      

注解

来宾工具依赖与该工具一起安装的 QEMU 来宾代理程序。代理程序服务必须正在运行,才能使该工具正常工作。

5.4.10.2. 卸载来宾工具

如果发现来宾工具与虚拟机中的某些软件不兼容,可以按以下方式卸载它们:

  • 在 Windows VM 中:

    1. 从设备管理器删除 QEMU 设备驱动程序。

      重要

      请勿删除 VirtIO/SCSI 硬盘驱动程序和 NetKVM 网络驱动程序。没有前者,虚拟机不会启动;没有后者,VM 会失去网络连接。

    2. 从已安装的应用程序列表卸载 QEMU 来宾代理程序和来宾工具。

    3. 停止并删除来宾工具监视器:

      > sc stop VzGuestToolsMonitor
      > sc delete VzGuestToolsMonitor
      
    4. 从事件日志注销来宾工具监视器:

      > reg delete HKLM\SYSTEM\CurrentControlSet\services\eventlog\Application\\
      VzGuestToolsMonitor
      
    5. 删除 RebootNotifier 的自动运行注册表项:

      > reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v \
      VzRebootNotifier
      
    6. 删除 C:\Program Files\Qemu-ga\ 目录。

      如果 VzGuestToolsMonitor.exe 已锁定,请关闭全部事件查看器窗口。如果它仍保持锁定,请重新启动 eventlog 服务:

      > sc stop eventlog
      > sc start eventlog
      

    在删除来宾工具后,请重新启动虚拟机。

  • 在 Linux VM 中:

    1. 删除程序包:

      1. 在基于 RPM 的系统(CentOS 及其他系统)上:

        # yum remove dkms-vzvirtio_balloon prl_nettool qemu-guest-agent-vz vz-guest-udev
        
      2. 在基于 DEB 的系统(Debian 和 Ubuntu)上:

        # apt-get remove vzvirtio-balloon-dkms prl-nettool qemu-guest-agent-vz vz-guest-udev
        

        如果您的系统上未安装以上列出的任何程序包,该命令将失败。在这种情况下,请从命令中排除这些程序包,然后再次运行。

    2. 删除文件:

      # rm -f /usr/bin/prl_backup /usr/share/qemu-ga/VERSION /usr/bin/install-tools \
      /etc/udev/rules.d/90-guest_iso.rules /usr/local/bin/fstrim-static /etc/cron.weekly/fstrim
      
    3. 重新加载 udev 规则:

      # udevadm control --reload
      

    在删除来宾工具后,请重新启动虚拟机。

5.4.11. 虚拟机故障排除

如果 VM 无法部署,则可以在其右侧窗格中查看错误消息。一个可能的根本原因是计算节点缺少可用的 RAM 或 CPU 资源来托管 VM。

如果 VM 陷入故障或过渡状态,则可以将该 VM 重置为其上一个稳定状态:活动、关机或已搁置。要执行此操作,请单击 VM 右侧窗格上的重置日期

如果 VM 一直处于“关闭电源”任务状态(在 VM 右侧窗格中显示为“活动(关闭电源)”状态),则可以通过运行 vinfra service compute server cancel stop 命令来取消此任务(请参阅 vinfra service compute server cancel-stop)。该命令将取消来宾操作系统关闭,并使 VM 返回到活动状态。

要对 VM 进行故障排除,还可以通过单击 VM 右侧窗格上的下载中控台日志来检查 VM 中控台日志。确保在 VM 内启用了日志记录,否则日志将为空。要启用日志记录,请执行以下操作:

  • 在 Linux VM 中,启用 TTY1 和 TTYS0 日志记录级别:

    1. 将行 GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0" 添加至文件 /etc/default/grub

    2. 根据启动加载程序,运行

      # grub-mkconfig -o /boot/grub/grub.cfg
      

      # grub2-mkconfig -o /boot/grub2/grub.cfg
      
    3. 重新启动 VM。

  • 在 Windows VM 中,可以为此目的启用紧急管理服务 (EMS) 中控台重定向。

    1. 使用管理员权限启动 Windows PowerShell

    2. 在 PowerShell 中控台中,为 EMS 中控台重定向设置 COM 端口和波特率。由于 Windows VM 仅具有传输率为 9600 bps 的 COM1 端口,因此请运行:

      bcdedit /emssettings EMSPORT:1
      
    3. 为当前启动项目启用 EMS:

      bcdedit /ems on
      

还可以启用驱动程序状态日志记录,以查看已加载驱动程序的列表。这对发生故障的驱动程序或长时间启动过程进行故障排除可能会很有用。请执行以下操作:

  1. 使用管理员权限启动系统配置

  2. 系统配置窗口中,打开启动选项卡、选中操作系统启动信息复选框,然后选中使所有启动设置永久化复选框。

  3. 确认更改并重新启动系统。

5.4.12. 删除虚拟机

要删除虚拟机,请单击其省略号按钮,然后单击删除。要一次删除多个 VM,请选择它们,然后单击删除

在部署 VM 的过程中,将删除 VM 及其启用了终止时删除选项的磁盘。