2.7. 池
2.7.1. 虚拟机池简介
虚拟机池是一组虚拟机,这些虚拟机都是同一模板的克隆,可由给定组中的任何用户按需使用。借助虚拟机池,管理员可以为用户快速配置一组常规虚拟机。
用户可以通过从池中获取虚拟机来访问虚拟机。当用户从池中获取虚拟机时,会为它们提供池中的任何一个虚拟机(如果有的话)。该虚拟机的操作系统和配置与池所基于的模板相同,但用户每次获取虚拟机时都可能无法收到与池相同的成员。用户还可以从同一虚拟机池中获取多个虚拟机,具体取决于该池的配置。
默认情况下,虚拟机池是无状态的,这意味着虚拟机数据和配置更改在重新引导后不会保留。但是,可以将池配置为有状态,从而允许上一个用户所做的更改保留。但是,如果用户为从虚拟机池中获取的虚拟机配置了控制台选项,则这些选项将设置为该虚拟机池针对该用户的默认设置。
从管理门户访问时,从池中获取的虚拟机不无状态。这是因为管理员需要能够在必要时将更改写入到磁盘。
在原则上,池中的虚拟机会在用户获取时启动,并在用户完成时关闭。但是,虚拟机池也可以包含预先启动的虚拟机。预先启动的虚拟机会一直处于 up 状态,并保持闲置状态,直到被用户获取为止。这样,用户可以立即开始使用此类虚拟机,但由于闲置,这些虚拟机也会消耗系统资源,而这些虚拟机也会消耗系统资源。
2.7.2. 创建虚拟机池
您可以根据通用模板创建包含多个虚拟机的虚拟机池。有关密封虚拟机并创建模板的信息,请参阅虚拟机管理指南中的模板。
sysprep
文件配置选项用于 Windows 虚拟机
根据您的要求,可以使用几个 sysprep
文件配置选项。
如果您的池不需要加入一个域,您可以使用默认的 sysprep
文件,位于 /usr/share/ovirt-engine/conf/sysprep/
。
如果您的池需要加入域,您可以为每个 Windows 操作系统创建一个自定义 sysprep
:
-
将每个操作系统的相关部分从
/usr/share/ovirt-engine/conf/osinfo-defaults.properties
复制到新文件,并将它保存为99-defaults.properties
。 在
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
创建一个新的
sysprep
文件,指定域、域密码和域管理员:<Credentials> <Domain>__AD_Domain__</Domain> <Password>__Domain_Password__</Password> <Username>__Domain_Administrator__</Username> </Credentials>
如果您需要为 Windows 虚拟机的不同池配置不同的 sysprep
设置,您可以在管理门户中创建自定义 sysprep
文件(请参阅以下 创建虚拟机池 )。如需更多信息,请参阅虚拟机指南中的使用 Sysprep 自动配置虚拟机。
流程
-
点
。 - 单击 New。
- 从下拉列表中选择 Cluster。
- 从下拉菜单中选择一个 Template 和 version。模板提供了池中所有虚拟机的标准设置。
- 从下拉列表中选择 Operating System。
使用 Optimized for 针对 Desktop 或 Server 对虚拟机进行优化。
注意不建议对池进行 高性能 优化,因为高性能虚拟机被固定到单个主机和拥塞资源。包含具有这种配置的虚拟机的池不佳。
输入 Name 和 (可选) 描述和 注释。
池的 Name 应用于池中每个虚拟机,带有数字后缀。您可以使用
?
作为占位符自定义虚拟机的数量。例 2.1. 池名称和虚拟机编号示例
pool:
MyPool
虚拟机:
MyPool-1
,MyPool-2
, …MyPool-10
Pool:
MyPool-???
虚拟机:
MyPool-001
,MyPool-002
, …MyPool-010
- 为池输入虚拟机数量。
- 在 Prestarted 字段中输入要预先启动的虚拟机数量。
- 选择允许单个 用户在会话中运行的最大 VM 数量。最小值为 1。
- 选择 Delete Protection 复选框来启用删除保护。
如果您要创建非 Windows 虚拟机池,或者如果您使用默认的
sysprep
,请跳过这一步。如果您要为 Windows 虚拟机池创建自定义sysprep
文件:- 点 Show Advanced Options 按钮。
- 单击 Initial Run 选项卡,再选中 Use Cloud-Init/Sysprep 复选框。
点 Authentication 箭头,输入 User Name 或 Password,或选择 Use already configured password。
注意此
用户名
是本地管理员的名称。您可以在 Authentication 部分或自定义sysprep
文件中从此处更改其值(用户
)。-
单击 Custom Script 箭头,并将默认
sysprep
文件的内容(位于/usr/share/ovirt-engine/conf/sysprep/
)粘贴到文本框中。 您可以修改
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>
注意需要
Domain
、Password
和Username
来加入该域。Key
用于激活。您无需同时需要两者。在 Initial Run 选项卡中无法修改域和凭证。
本地管理员
FullName
:<UserData> ... <FullName>__Local_Administrator__</FullName> ... </UserData>
本地管理员的
DisplayName
和Name
:<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
文件中的其余变量。
可选。设置 池类型 :
点 Type 标签页并选择 Pool Type :
- 手动 - 管理员负责将虚拟机明确返回到池。
- 自动 - 虚拟机自动返回到虚拟机池。
- 选中 Stateful Pool 复选框,以确保虚拟机以有状态模式启动。这样可确保上一个用户所做的更改将保留在虚拟机上。
- 点击 。
可选。覆盖 SPICE 代理:
- 在控制台选项卡中,选中覆盖 SPICE 代理复选框。
- 在 Overridden SPICE 代理地址地址 字段中,指定 SPICE 代理的地址来覆盖全局 SPICE 代理。
- 点击 。
对于 Windows 虚拟机池,点
,然后点 。 注意如果虚拟机没有启动,并在
%WINDIR%\panther\UnattendGC\setupact.log
中存在Info [windeploy.exe] Found no unattend file
,将 UnattendFile 键添加到用于创建池模板的 Windows 虚拟机的 registry 中:-
检查 Windows 虚拟机是否具有带有 unattend 文件附加的辅助 CD-ROM 设备,例如
A:\Unattend.xml
。 -
选择虚拟机,然后点
。 - 在 Boot Options 下,选中 Attach Windows guest 工具 CD。
-
点 Start,点 Run,在 Open 文本框中键入
regedit
,然后点 OK。 -
在左侧窗格中,前往
。 -
右键单击右侧窗格并选择
。 - 输入 UnattendFile 作为密钥名称。
-
双击新密钥并输入
unattend
文件名和路径,例如 A:\Unattend.xml 作为密钥值。 - 保存 registry,密封 Windows 虚拟机,并创建一个新模板。详情请参阅虚拟机管理指南中的模板。
-
检查 Windows 虚拟机是否具有带有 unattend 文件附加的辅助 CD-ROM 设备,例如
您已创建并配置了指定数量的相同虚拟机的虚拟机池。您可以在
2.7.3. 新池和编辑池 Windows 中的设置和控制的说明
2.7.3.1. 新池和编辑池常规设置说明
下表详述了新建池和编辑池窗口的常规选项卡上特定于虚拟机池的必需信息。所有其他设置与 新建虚拟机窗口中的设置相同。
字段名称 | Description |
---|---|
模板 |
虚拟机池所基于的模板和模板子版本。如果您基于模板的 |
Description | 虚拟机池有意义的描述。 |
注释 | 用于添加有关虚拟机池的纯文本可读注释的字段。 |
预启动的虚拟机 |
允许您指定虚拟机池中启动的虚拟机数量,在用户执行之前启动并保持该状态供用户获取。此字段的值必须介于 |
Number of VMs/Increase number of VMs in pool by |
允许您指定在虚拟机池中创建和提供的虚拟机数量。在编辑窗口中,您可以通过指定数量在虚拟机池中增加虚拟机数量。默认情况下,您可以在池中创建的虚拟机最大数量是 1000。可以使用 |
每个用户的最大虚拟机数 |
允许您指定单个用户一次可以从虚拟机池中获取的最大虚拟机数量。此字段的值必须介于 |
删除保护 | 允许您阻止池中的虚拟机被删除。 |
Sealed | 确保从模板中置备的虚拟机中不会复制特定于机器的设置。有关密封流程的更多信息,请参阅为作为模板部署封装 Windows 虚拟机 |
2.7.3.2. 新池和编辑池类型设置说明
下表详述了 新建池 和 编辑 池 窗口的"类型 "选项卡上需要的信息。
字段名称 | Description |
---|---|
池类型 | 此下拉菜单允许您指定虚拟机池的类型。可用的选项如下:
|
有状态池 | 指定虚拟机传递到其他用户时是否保留池中的虚拟机状态。这意味着之前用户所做的更改将保留在虚拟机上。 |
2.7.3.3. 新池和编辑池控制台设置说明
下表详述了新建池或编辑池窗口的控制台选项卡上特定于虚拟机池所需的信息。所有其他设置与 新建虚拟机 和 编辑虚拟机窗口中的设置相同。
字段名称 | Description |
---|---|
覆盖 SPICE 代理 | 选中此复选框可覆盖全局配置中定义的 SPICE 代理。当用户(例如,通过虚拟机门户进行连接)位于主机所在的网络之外时,此功能很有用。 |
覆盖的 SPICE 代理地址 | SPICE 客户端连接到虚拟机时使用的代理。此代理覆盖为 Red Hat Virtualization 环境定义的全局 SPICE 代理,以及为虚拟机池所属集群定义的 SPICE 代理(如果有)。地址必须采用以下格式: protocol://host:port |
2.7.3.4. 虚拟机池主机设置说明
下表详述了新建池和编辑池窗口的主机选项卡上可用的选项。
字段名称 | 子元素 | Description |
---|---|---|
开始运行于 | 定义要在其上运行虚拟机的首选主机。选择:
| |
CPU 选项 | 透传主机 CPU | 选择后,允许虚拟机使用主机的 CPU 标志。选择后,Migration Options 被设置为 只允许手动迁移。 |
仅迁移到具有相同 TSC 频率的主机 | 选择后,此虚拟机只能迁移到具有相同 TSC 频率的主机。此选项仅对高性能虚拟机有效。 | |
迁移选项 | 迁移模式 | 定义运行和迁移虚拟机的选项。如果不在此处使用选项,则虚拟机将根据集群的策略运行或迁移。
|
迁移策略 | 定义迁移聚合策略。如果复选框未选中,主机将确定该策略。
| |
启用迁移加密 | 允许在迁移过程中对虚拟机进行加密。
| |
并行迁移 | 允许您指定是否使用多少并行迁移连接。
| |
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. 新池和编辑池资源分配设置说明
下表详述了新建池和编辑池窗口的资源分配选项卡所需的信息,它们特定于虚拟机池。所有其他设置与 新建虚拟机窗口中的设置相同。如需更多信息,请参阅虚拟机管理指南中的虚拟机资源分配设置说明。
字段名称 | 子元素 | Description |
---|---|---|
磁盘分配 | 自动选择目标 | 选中此复选框,自动选择具有最多可用空间的存储域。Target 和 Disk Profile 字段被禁用。 |
格式 | 此字段是只读的,始终显示 QCOW2。 |
2.7.3.6. 编辑虚拟机池
创建虚拟机池后,可以编辑其属性。编辑虚拟机池时可用的属性与创建新虚拟机池时可用的属性相同,不同之处在于,Number of VMs 属性被 Increase number of VMs in pool by 替换。
编辑虚拟机池时,引入的更改仅会影响到新虚拟机。在引入变化时已存在的虚拟机仍不受影响。
流程
-
点
并选择虚拟机池。 - 点 Edit。
- 编辑虚拟机池的属性。
- 点 确定。
2.7.3.7. 预启动池中的虚拟机
虚拟机池中的虚拟机默认是关机。当用户从池中请求虚拟机时,会开启虚拟机并分配给该用户。相反,预先启动的虚拟机已在运行并等待分配给用户,减少用户必须等待的时间,然后才能访问虚拟机。当预先启动的虚拟机关闭时,它会返回到池并恢复到其原始状态。预先启动的虚拟机的最大数量是池中虚拟机的数量。
预先启动的虚拟机适合那些用户需要立即访问虚拟机(不特别分配给他们的虚拟机)的环境。只有自动池可以预先启动的虚拟机。
流程
-
点
并选择虚拟机池。 - 点 Edit。
- 在 Prestarted VMs 字段中输入要预先启动的虚拟机数量。
- 点 Type 标签页。确保 Pool Type 设置为 Automatic。
- 点击 。
2.7.3.8. 将虚拟机添加到虚拟机
如果您要求虚拟机数量超过最初在虚拟机池中调配的虚拟机,请将更多虚拟机添加到池中。
流程
-
点
并选择虚拟机池。 - 点 Edit。
- 在池 by 字段中,在增加虚拟机数量后 输入附加虚拟机的数量。
- 点击 。
2.7.3.9. 从虚拟机池中分离虚拟机
您可以从虚拟机池中分离虚拟机。分离虚拟机会将其从池中移除,从而成为独立的虚拟机。
流程
-
点
。 - 点池的名称。这会打开详情视图。
- 点 Virtual Machines 选项卡列出池中的虚拟机。
-
确保虚拟机的状态为
Down
;您无法分离正在运行的虚拟机。 - 选择一个或多个虚拟机并点击 Detach。
- 点击 。
虚拟机仍存在于环境中,并可从
2.7.3.10. 删除虚拟机池
您可以从数据中心中删除虚拟机池。您必须先删除或分离池中的所有虚拟机。从池中分离虚拟机会将它们保留为独立的虚拟机。
流程
-
点
并选择虚拟机池。 - 单击 Remove。
- 点击 。