2.7. 池

2.7.1. 虚拟机池简介

虚拟机池是一组虚拟机,这些虚拟机都是同一模板的克隆,可由给定组中的任何用户按需使用。借助虚拟机池,管理员可以为用户快速配置一组常规虚拟机。

用户可以通过从池中获取虚拟机来访问虚拟机。当用户从池中获取虚拟机时,会为它们提供池中的任何一个虚拟机(如果有的话)。该虚拟机的操作系统和配置与池所基于的模板相同,但用户每次获取虚拟机时都可能无法收到与池相同的成员。用户还可以从同一虚拟机池中获取多个虚拟机,具体取决于该池的配置。

默认情况下,虚拟机池是无状态的,这意味着虚拟机数据和配置更改在重新引导后不会保留。但是,可以将池配置为有状态,从而允许上一个用户所做的更改保留。但是,如果用户为从虚拟机池中获取的虚拟机配置了控制台选项,则这些选项将设置为该虚拟机池针对该用户的默认设置。

注意

从管理门户访问时,从池中获取的虚拟机不无状态。这是因为管理员需要能够在必要时将更改写入到磁盘。

在原则上,池中的虚拟机会在用户获取时启动,并在用户完成时关闭。但是,虚拟机池也可以包含预先启动的虚拟机。预先启动的虚拟机会一直处于 up 状态,并保持闲置状态,直到被用户获取为止。这样,用户可以立即开始使用此类虚拟机,但由于闲置,这些虚拟机也会消耗系统资源,而这些虚拟机也会消耗系统资源。

2.7.2. 创建虚拟机池

您可以根据通用模板创建包含多个虚拟机的虚拟机池。有关密封虚拟机并创建模板的信息,请参阅虚拟机管理指南中的模板

sysprep 文件配置选项用于 Windows 虚拟机

根据您的要求,可以使用几个 sysprep 文件配置选项。

如果您的池不需要加入一个域,您可以使用默认的 sysprep 文件,位于 /usr/share/ovirt-engine/conf/sysprep/

如果您的池需要加入域,您可以为每个 Windows 操作系统创建一个自定义 sysprep

  1. 将每个操作系统的相关部分从 /usr/share/ovirt-engine/conf/osinfo-defaults.properties 复制到新文件,并将它保存为 99-defaults.properties
  2. 99-defaults.properties 中,指定 Windows 产品激活码以及新自定义 sysprep 文件的路径:

    os.operating_system.productKey.value=Windows_product_activation_key …​ os.operating_system.sysprepPath.value = ${ENGINE_USR}/conf/sysprep/sysprep.operating_system

  3. 创建一个新的 sysprep 文件,指定域、域密码和域管理员:

    <Credentials>
        <Domain>__AD_Domain__</Domain>
        <Password>__Domain_Password__</Password>
        <Username>__Domain_Administrator__</Username>
    </Credentials>

如果您需要为 Windows 虚拟机的不同池配置不同的 sysprep 设置,您可以在管理门户中创建自定义 sysprep 文件(请参阅以下 创建虚拟机池 )。如需更多信息,请参阅虚拟机指南中的使用 Sysprep 自动配置虚拟机

流程

  1. ComputePools
  2. 单击 New
  3. 从下拉列表中选择 Cluster
  4. 从下拉菜单中选择一个 Template 和 version。模板提供了池中所有虚拟机的标准设置。
  5. 从下拉列表中选择 Operating System
  6. 使用 Optimized for 针对 DesktopServer 对虚拟机进行优化。

    注意

    不建议对池进行 高性能 优化,因为高性能虚拟机被固定到单个主机和拥塞资源。包含具有这种配置的虚拟机的池不佳。

  7. 输入 Name 和 (可选) 描述和 注释

    池的 Name 应用于池中每个虚拟机,带有数字后缀。您可以使用 ? 作为占位符自定义虚拟机的数量。

    例 2.1. 池名称和虚拟机编号示例

    • pool: MyPool

      虚拟机:MyPool-1, MyPool-2, …​ MyPool-10

    • Pool: MyPool-???

      虚拟机: MyPool-001,MyPool-002, …​ MyPool-010

  8. 为池输入虚拟机数量
  9. Prestarted 字段中输入要预先启动的虚拟机数量。
  10. 选择允许单个 用户在会话中运行的最大 VM 数量。最小值为 1
  11. 选择 Delete Protection 复选框来启用删除保护。
  12. 如果您要创建非 Windows 虚拟机池,或者如果您使用默认的 sysprep,请跳过这一步。如果您要为 Windows 虚拟机池创建自定义 sysprep 文件:

    1. Show Advanced Options 按钮。
    2. 单击 Initial Run 选项卡,再选中 Use Cloud-Init/Sysprep 复选框。
    3. Authentication 箭头,输入 User NamePassword,或选择 Use already configured password

      注意

      用户名是本地管理员的名称。您可以在 Authentication 部分或自定义 sysprep 文件中从此处更改其值(用户)。

    4. 单击 Custom Script 箭头,并将默认 sysprep 文件的内容(位于 /usr/share/ovirt-engine/conf/sysprep/ )粘贴到文本框中。
    5. 您可以修改 sysprep 文件的以下值:

      • 密钥.如果您不想使用预定义的 Windows 激活密钥,请将 < ![CDATA[$ProductKey$]> 替换为有效的产品键:

        <ProductKey>
            <Key><![CDATA[$ProductKey$]]></Key>
        </ProductKey>

        例 2.2. Windows 产品密钥示例

        <ProductKey>
            <Key>0000-000-000-000</Key>
        </ProductKey>
      • Windows 虚拟机要加入的 Domain,域的 Password,以及域管理员的 Username

        <Credentials>
            <Domain>__AD_Domain__</Domain>
            <Password>__Domain_Password__</Password>
            <Username>__Domain_Administrator__</Username>
        </Credentials>

        例 2.3. 域凭证示例

        <Credentials>
            <Domain>addomain.local</Domain>
            <Password>12345678</Password>
            <Username>Sarah_Smith</Username>
        </Credentials>
        注意

        需要 DomainPasswordUsername 来加入该域。Key 用于激活。您无需同时需要两者。

        Initial Run 选项卡中无法修改域和凭证。

      • 本地管理员 FullName:

        <UserData>
        ...
            <FullName>__Local_Administrator__</FullName>
        ...
        </UserData>
      • 本地管理员的 DisplayNameName

        <LocalAccounts>
            <LocalAccount wcm:action="add">
                <Password>
                    <Value><![CDATA[$AdminPassword$]]></Value>
                    <PlainText>true</PlainText>
                </Password>
                <DisplayName>__Local_Administrator__</DisplayName>
                <Group>administrators</Group>
                <Name>__Local_Administrator__</Name>
            </LocalAccount>
        </LocalAccounts>

        可在 Initial Run 选项卡中填写 sysprep 文件中的其余变量。

  13. 可选。设置 池类型

    1. Type 标签页并选择 Pool Type

      • 手动 - 管理员负责将虚拟机明确返回到池。
      • 自动 - 虚拟机自动返回到虚拟机池。
    2. 选中 Stateful Pool 复选框,以确保虚拟机以有状态模式启动。这样可确保上一个用户所做的更改将保留在虚拟机上。
    3. 点击 OK
  14. 可选。覆盖 SPICE 代理:

    1. 控制台选项卡中,选中覆盖 SPICE 代理复选框。
    2. Overridden SPICE 代理地址地址 字段中,指定 SPICE 代理的地址来覆盖全局 SPICE 代理。
    3. 点击 OK
  15. 对于 Windows 虚拟机池,点 ComputeVirtual Machines,然后点 RunRun Once

    注意

    如果虚拟机没有启动,并在 %WINDIR%\panther\UnattendGC\setupact.log 中存在 Info [windeploy.exe] Found no unattend file,将 UnattendFile 键添加到用于创建池模板的 Windows 虚拟机的 registry 中:

    1. 检查 Windows 虚拟机是否具有带有 unattend 文件附加的辅助 CD-ROM 设备,例如 A:\Unattend.xml
    2. 选择虚拟机,然后点 RunRun once
    3. 在 Boot Options 下,选中 Attach Windows guest 工具 CD
    4. Start,点 Run,在 Open 文本框中键入 regedit,然后点 OK
    5. 在左侧窗格中,前往 HKEY_LOCAL_MACHINESYSTEM设置
    6. 右键单击右侧窗格并选择 NewString Value
    7. 输入 UnattendFile 作为密钥名称。
    8. 双击新密钥并输入 unattend 文件名和路径,例如 A:\Unattend.xml 作为密钥值。
    9. 保存 registry,密封 Windows 虚拟机,并创建一个新模板。详情请参阅虚拟机管理指南中的模板

您已创建并配置了指定数量的相同虚拟机的虚拟机池。您可以在 ComputeVirtual Machines 中查看这些虚拟机,或者通过点击池的名称打开其详情视图;池中的虚拟机通过其图标与独立的虚拟机区分开。

2.7.3. 新池和编辑池 Windows 中的设置和控制的说明

2.7.3.1. 新池和编辑池常规设置说明

下表详述了新建池编辑池窗口的常规选项卡上特定于虚拟机池的必需信息。所有其他设置与 新建虚拟机窗口中的设置相同

表 2.30. 常规设置

字段名称Description

模板

虚拟机池所基于的模板和模板子版本。如果您基于模板的 latest 子版本创建池,则池中的所有虚拟机都将自动接收最新的模板版本。有关为虚拟机配置模板的更多信息,请参阅 Virtual Machine Management Guide 中的 Virtual Machine General Settings ExplainedExplanation of Settings in the New Template and Edit Template Windows

Description

虚拟机池有意义的描述。

注释

用于添加有关虚拟机池的纯文本可读注释的字段。

预启动的虚拟机

允许您指定虚拟机池中启动的虚拟机数量,在用户执行之前启动并保持该状态供用户获取。此字段的值必须介于 0 到虚拟机池中虚拟机总数之间。

Number of VMs/Increase number of VMs in pool by

允许您指定在虚拟机池中创建和提供的虚拟机数量。在编辑窗口中,您可以通过指定数量在虚拟机池中增加虚拟机数量。默认情况下,您可以在池中创建的虚拟机最大数量是 1000。可以使用 engine-config 命令的 MaxVmsInPool 键来配置此值。

每个用户的最大虚拟机数

允许您指定单个用户一次可以从虚拟机池中获取的最大虚拟机数量。此字段的值必须介于 132,767 之间。

删除保护

允许您阻止池中的虚拟机被删除。

Sealed

确保从模板中置备的虚拟机中不会复制特定于机器的设置。有关密封流程的更多信息,请参阅为作为模板部署封装 Windows 虚拟机

2.7.3.2. 新池和编辑池类型设置说明

下表详述了 新建池编辑窗口的"类型 "选项卡上需要的信息。

表 2.31. 类型设置

字段名称Description

池类型

此下拉菜单允许您指定虚拟机池的类型。可用的选项如下:

  • 自动 :在用户使用完从虚拟机池中获取的虚拟机后,该虚拟机会自动返回到虚拟机池。
  • 手动 :在用户使用完从虚拟机池中获取的虚拟机后,该虚拟机仅在管理员手动返回虚拟机时返回到虚拟机池。

有状态池

指定虚拟机传递到其他用户时是否保留池中的虚拟机状态。这意味着之前用户所做的更改将保留在虚拟机上。

2.7.3.3. 新池和编辑池控制台设置说明

下表详述了新建池编辑池窗口的控制台选项卡上特定于虚拟机池所需的信息。所有其他设置与 新建虚拟机编辑虚拟机窗口中的设置相同

表 2.32. 控制台设置

字段名称Description

覆盖 SPICE 代理

选中此复选框可覆盖全局配置中定义的 SPICE 代理。当用户(例如,通过虚拟机门户进行连接)位于主机所在的网络之外时,此功能很有用。

覆盖的 SPICE 代理地址

SPICE 客户端连接到虚拟机时使用的代理。此代理覆盖为 Red Hat Virtualization 环境定义的全局 SPICE 代理,以及为虚拟机池所属集群定义的 SPICE 代理(如果有)。地址必须采用以下格式:

protocol://host:port

2.7.3.4. 虚拟机池主机设置说明

下表详述了新建池编辑池窗口的主机选项卡上可用的选项。

表 2.33. 虚拟机池:主机设置

字段名称子元素Description

开始运行于

 

定义要在其上运行虚拟机的首选主机。选择:

  • 集群中的任何主机 - 虚拟机可以在集群中的任何可用主机上启动并运行。
  • 特定主机 - 虚拟机将在集群的特定主机上运行。但是,管理器或管理员可以根据虚拟机的迁移和高可用性设置,将虚拟机迁移到集群中的不同主机上。从可用的主机列表中选择特定的主机或主机组。

CPU 选项

透传主机 CPU

选择后,允许虚拟机使用主机的 CPU 标志。选择后,Migration Options 被设置为 只允许手动迁移

 

仅迁移到具有相同 TSC 频率的主机

选择后,此虚拟机只能迁移到具有相同 TSC 频率的主机。此选项仅对高性能虚拟机有效。

迁移选项

迁移模式

定义运行和迁移虚拟机的选项。如果不在此处使用选项,则虚拟机将根据集群的策略运行或迁移。

  • 允许手动和自动迁移 - 虚拟机可根据环境状态自动从一个主机迁移到另一个主机,或者由管理员手动迁移。
  • 仅允许手动迁移 - 虚拟机只能由管理员手动从一个主机迁移到另一个主机。
  • 不允许迁移 - 虚拟机无法自动或手动迁移。
 

迁移策略

定义迁移聚合策略。如果复选框未选中,主机将确定该策略。

  • 集群默认(最小停机时间) - vdsm.conf 中的覆盖仍会被应用。客户机代理 hook 机制已被禁用。
  • 最小停机时间 - 允许虚拟机在典型情况下迁移。虚拟机不应遇到任何显著的停机时间。如果虚拟机迁移长时间后(依赖于 QEMU 迭代,且最多为 500 毫秒),迁移将中止。客户机代理 hook 机制已启用。
  • 后复制迁移 - 使用后复制迁移时,将暂停源主机上的迁移虚拟机 vCPU,仅传输最小内存页面,激活目标主机上的虚拟机 vCPU,并在虚拟机运行目标时传输其余内存页面。

    后复制策略首先尝试预复制,以验证是否可能发生聚合。如果虚拟机迁移在很长时间后没有聚合,迁移会切换到后复制。

    这可显著减少迁移的虚拟机停机时间,还可以确保无论源虚拟机的内存页面变化速度如何快。对于迁移大量连续使用的虚拟机来说,这是最佳选择,无法使用标准预复制迁移进行迁移。

    此策略的缺点在于,在复制后阶段,虚拟机可能会显著下降,因为主机之间缺少内存部分传输。

    警告

    如果在完成后复制进程前网络连接中断,管理器将暂停,然后终止正在运行的虚拟机。如果虚拟机可用性至关重要,或者迁移网络不稳定,请不要使用复制后迁移。

  • 如果需要,暂停工作负载 - 允许虚拟机在大多数情况下迁移,包括在虚拟机运行繁重工作负载时。因此,虚拟机所经历的停机时间可能比使用其他设置造成的显著停机时间更多。迁移可能仍然针对极端工作负载中止。客户机代理 hook 机制已启用。
 

启用迁移加密

允许在迁移过程中对虚拟机进行加密。

  • 集群默认
  • 加密
  • 不加密
 

并行迁移

允许您指定是否使用多少并行迁移连接。

  • 集群默认 :并行迁移连接由集群默认决定。
  • 禁用 :虚拟机使用单一的非并行连接迁移。
  • auto :自动决定并行连接数量。此设置可能会自动禁用并行连接。
  • auto Parallel :自动确定并行连接数量。
  • Custom :允许您指定首选并行连接数,实际数量可能较低。
 

VM 迁移连接数

此设置仅在选择 Custom 时可用。自定义并行迁移的首选数量,2 到 255 之间。

配置 NUMA

NUMA 节点数

主机上可以分配给虚拟机的虚拟 NUMA 节点数。

 

NUMA 固定

打开 NUMA Topology 窗口。此窗口显示主机的总 CPU、内存和 NUMA 节点,以及虚拟机的虚拟 NUMA 节点。您可以通过单击每个 vNUMA 并将每个 vNUMA 拖到左侧的 NUMA 节点,手动固定虚拟 NUMA 节点以托管 NUMA 节点。

您还可以为内存分配设置 Tune 模式

严格 - 如果无法在目标节点上分配内存,则内存分配将失败。

首选 - 内存从单一首选节点分配。如果没有足够的内存可用,可以从其他节点分配内存。

interleave - 内存以轮循算法跨节点分配。

如果您定义 NUMA 固定,Migration Options 被设置为 只允许手动迁移

2.7.3.5. 新池和编辑池资源分配设置说明

下表详述了新建池编辑池窗口的资源分配选项卡所需的信息,它们特定于虚拟机池。所有其他设置与 新建虚拟机窗口中的设置相同。如需更多信息,请参阅虚拟机管理指南中的虚拟机资源分配设置说明

表 2.34. 资源分配设置

字段名称子元素Description

磁盘分配

自动选择目标

选中此复选框,自动选择具有最多可用空间的存储域。TargetDisk Profile 字段被禁用。

 

格式

此字段是只读的,始终显示 QCOW2

2.7.3.6. 编辑虚拟机池

创建虚拟机池后,可以编辑其属性。编辑虚拟机池时可用的属性与创建新虚拟机池时可用的属性相同,不同之处在于,Number of VMs 属性被 Increase number of VMs in pool by 替换。

注意

编辑虚拟机池时,引入的更改仅会影响到新虚拟机。在引入变化时已存在的虚拟机仍不受影响。

流程

  1. ComputePools 并选择虚拟机池。
  2. Edit
  3. 编辑虚拟机池的属性。
  4. 确定

2.7.3.7. 预启动池中的虚拟机

虚拟机池中的虚拟机默认是关机。当用户从池中请求虚拟机时,会开启虚拟机并分配给该用户。相反,预先启动的虚拟机已在运行并等待分配给用户,减少用户必须等待的时间,然后才能访问虚拟机。当预先启动的虚拟机关闭时,它会返回到池并恢复到其原始状态。预先启动的虚拟机的最大数量是池中虚拟机的数量。

预先启动的虚拟机适合那些用户需要立即访问虚拟机(不特别分配给他们的虚拟机)的环境。只有自动池可以预先启动的虚拟机。

流程

  1. ComputePools 并选择虚拟机池。
  2. Edit
  3. Prestarted VMs 字段中输入要预先启动的虚拟机数量。
  4. Type 标签页。确保 Pool Type 设置为 Automatic
  5. 点击 OK

2.7.3.8. 将虚拟机添加到虚拟机

如果您要求虚拟机数量超过最初在虚拟机池中调配的虚拟机,请将更多虚拟机添加到池中。

流程

  1. ComputePools 并选择虚拟机池。
  2. Edit
  3. 在池 by 字段中,在增加虚拟机数量后 输入附加虚拟机的数量。
  4. 点击 OK

2.7.3.9. 从虚拟机池中分离虚拟机

您可以从虚拟机池中分离虚拟机。分离虚拟机会将其从池中移除,从而成为独立的虚拟机。

流程

  1. ComputePools
  2. 点池的名称。这会打开详情视图。
  3. Virtual Machines 选项卡列出池中的虚拟机。
  4. 确保虚拟机的状态为 Down ;您无法分离正在运行的虚拟机。
  5. 选择一个或多个虚拟机并点击 Detach
  6. 点击 OK
注意

虚拟机仍存在于环境中,并可从 ComputeVirtual Machines 查看和访问。请注意,图标会更改以表示分离的虚拟机是独立的虚拟机。

2.7.3.10. 删除虚拟机池

您可以从数据中心中删除虚拟机池。您必须先删除或分离池中的所有虚拟机。从池中分离虚拟机会将它们保留为独立的虚拟机。

流程

  1. ComputePools 并选择虚拟机池。
  2. 单击 Remove
  3. 点击 OK