虚拟机高级注意事项
本节提供了一些关于虚拟机的进阶注意事项。
虚拟机启动行为
虚拟机启动时,其 VDI 的行为有两种选项:
注意:
必须先关闭虚拟机,然后才能更改其启动行为设置。
持久化
提示:
如果您托管的是静态或专用计算机的 Citrix Virtual Desktops™,请使用此启动行为。
此行为是虚拟机启动时的默认行为。VDI 将保留在上次关机时的状态。
如果您计划允许用户对其桌面进行永久性更改,请选择此选项。要选择持久化,请关闭虚拟机,然后输入以下命令:
xe vdi-param-set uuid=vdi_uuid on-boot=persist
<!--NeedCopy-->
重置
提示:
如果您托管的是共享或随机分配计算机的 Citrix Virtual Desktops,请使用此启动行为。
虚拟机启动时,VDI 将恢复到上次启动时的状态。虚拟机运行期间所做的任何更改将在下次启动虚拟机时丢失。
如果您计划交付用户无法永久更改的标准化桌面,请选择此选项。要选择重置,请关闭虚拟机,然后输入以下命令:
警告:
更改
on-boot=reset后,下次关机/启动或重新启动后,保存到 VDI 的所有数据都将被丢弃。
使 ISO 库可用于 XenServer® 主机
要使 ISO 库可用于 XenServer 主机,请创建外部 NFS 或 SMB/CIFS 共享目录。NFS 或 SMB/CIFS 服务器必须允许根用户访问该共享。对于 NFS 共享,在 NFS 服务器上的 /etc/exports 中创建共享条目时,通过设置 no_root_squash 标志来允许访问。
然后,使用 XenCenter® 附加 ISO 库,或者连接到主机控制台并运行以下命令:
xe-mount-iso-sr host:/volume
<!--NeedCopy-->
对于高级用法,您可以向 mount 命令传递额外参数。
要使 Windows SMB/CIFS 共享可用于主机,请使用 XenCenter,或者连接到主机控制台并运行以下命令:
xe-mount-iso-sr unc_path -t cifs -o username=myname/myworkgroup
<!--NeedCopy-->
将 unc_path 参数中的反斜杠替换为正斜杠。例如:
xe-mount-iso-sr //server1/myisos -t cifs -o username=johndoe/mydomain
<!--NeedCopy-->
挂载共享后,任何可用的 ISO 都将显示在 XenCenter 的“从 ISO 库或 DVD 驱动器安装”列表中。这些 ISO 也可作为 CD 映像从 CLI 命令中获取。
将 ISO 附加到相应的 Windows 模板。
使用远程桌面连接到 Windows 虚拟机
您可以使用以下任一方式查看 Windows 虚拟机控制台,这两种方式都支持完全使用键盘和鼠标。
-
使用 XenCenter。此方法提供标准图形控制台,并使用 XenServer 内置的 VNC 技术提供对虚拟机控制台的远程访问。
-
使用 Windows 远程桌面连接。此方法使用远程桌面协议技术
在 XenCenter 的“控制台”选项卡上,有一个“切换到远程桌面”按钮。此按钮会禁用 XenCenter 中的标准图形控制台,并切换为使用远程桌面。
如果您未在 VM 中启用远程桌面,则此按钮处于禁用状态。要启用它,请安装适用于 Windows 的 XenServer VM Tools。请按照以下步骤在要使用远程桌面连接的每个 VM 中启用它。
在 Windows VM 上启用远程桌面:
-
单击“开始”按钮,打开“系统”,右键单击“计算机”,然后选择“属性”。
-
单击“远程设置”。如果系统提示您输入管理员密码,请键入在 VM 设置期间创建的密码。
-
在“远程桌面”区域中,选中标记为“允许运行任何版本远程桌面的计算机连接”的复选框。
-
要选择可以连接到此 Windows VM 的任何非管理员用户,请单击“选择远程用户”按钮并提供用户名。默认情况下,在 Windows 域上具有管理员权限的用户可以连接。
您现在可以使用远程桌面连接到此 VM。有关详细信息,请参阅 Microsoft 知识库文章 使用远程桌面连接到另一台计算机。
注意:
您无法连接到处于睡眠或休眠状态的 VM。将远程计算机上的睡眠和休眠设置设为“从不”。
Windows VM 中的时间处理
对于 Windows 客户机,最初由控制域时钟驱动时间。在 VM 生命周期操作(例如挂起和重新启动)期间,时间会更新。我们建议为控制域和所有 Windows VM 配置可靠的 NTP 服务。有关详细信息,请参阅 更改服务器的 NTP 配置。
如果您手动将 VM 设置为比控制域快两小时,则此设置将保持不变。您可以通过在 VM 中使用时区偏移来提前设置 VM。如果您稍后更改控制域时间(手动或通过 NTP),VM 将相应地移动,但会保持两小时的偏移量。更改控制域时区不会影响 VM 时区或偏移量。XenServer 使用 VM 的硬件时钟设置来同步 VM。XenServer 不使用 VM 的系统时钟设置。
执行挂起和恢复操作或使用实时迁移时,请确保已安装最新的适用于 Windows 的 XenServer VM Tools。适用于 Windows 的 XenServer VM Tools 会通知 Windows 内核,在恢复后(可能在不同的物理主机上)需要进行时间同步。
注意:
如果您在 Citrix Virtual Desktops 环境中运行 Windows 虚拟机,则必须确保主机时钟与 Active Directory (AD) 域具有相同的时间源。未能同步时钟可能导致虚拟机显示不正确的时间,并导致 Windows PV 驱动程序崩溃。
Linux 虚拟机中的时间处理
除了 XenServer 定义的行为之外,操作系统设置和行为也会影响 Linux 虚拟机的时间处理行为。某些 Linux 操作系统可能会定期同步其系统时钟和硬件时钟,或者操作系统可能会默认使用其自己的 NTP 服务。有关详细信息,请参阅 Linux 虚拟机操作系统的文档。
注意:
安装新的 Linux 虚拟机时,请确保将时区从默认的 UTC 更改为本地值。有关具体分发说明,请参阅 Linux 发行说明。
Linux 虚拟机中的硬件时钟不与控制域上运行的时钟同步,并且可以更改。虚拟机首次启动时,控制域时间用于设置硬件时钟和系统时钟的初始时间。
如果您更改硬件时钟上的时间,此更改将在虚拟机重新启动时保留。
系统时钟行为取决于虚拟机的操作系统。有关详细信息,请参阅虚拟机操作系统的文档。
您无法更改此 XenServer 时间处理行为。
从经销商选件套件 (BIOS 锁定) 介质安装虚拟机
虚拟机有两种类型:BIOS 通用型和 BIOS 自定义型。要允许将经销商选件套件 (BIOS 锁定) 版本的 Windows OEM 安装到虚拟机上,请从提供介质的主机复制虚拟机的 BIOS 字符串。或者,高级用户可以为 BIOS 字符串设置用户定义的值。
BIOS 通用型
虚拟机具有通用 XenServer BIOS 字符串。
注意:
如果虚拟机启动时未设置 BIOS 字符串,则标准 XenServer BIOS 字符串将插入其中,虚拟机将变为 BIOS 通用型。
BIOS 定制
您可以通过两种方式自定义 BIOS:复制主机 BIOS 字符串和用户定义 BIOS 字符串。
注意:
首次启动虚拟机后,您无法更改其 BIOS 字符串。请确保在首次启动虚拟机之前,BIOS 字符串是正确的。
复制主机 BIOS 字符串
虚拟机拥有池中特定主机的 BIOS 字符串副本。要安装随主机提供的 BIOS 锁定介质,请按照以下步骤操作。
使用 XenCenter:
- 在新虚拟机向导中,单击将主机 BIOS 字符串复制到虚拟机复选框。
使用 CLI:
-
运行
vm-install copy-bios-strings-from命令。将host-uuid指定为复制字符串的主机(即随介质提供的主机):xe vm-install copy-bios-strings-from=host uuid \ template=template name sr-name-label=name of sr \ new-name-label=name for new VM <!--NeedCopy-->此命令返回新创建虚拟机的 UUID。
例如:
xe vm-install copy-bios-strings-from=46dd2d13-5aee-40b8-ae2c-95786ef4 \ template="win7sp1" sr-name-label=Local\ storage \ new-name-label=newcentos 7cd98710-bf56-2045-48b7-e4ae219799db <!--NeedCopy--> -
如果已成功将主机中相关的 BIOS 字符串复制到虚拟机中,则命令
vm-is-bios-customized会确认此成功:xe vm-is-bios-customized uuid=VM uuid <!--NeedCopy-->例如:
xe vm-is-bios-customized uuid=7cd98710-bf56-2045-48b7-e4ae219799db This VM is BIOS-customized. <!--NeedCopy-->注意:
当您启动虚拟机时,它会在您复制 BIOS 字符串的物理主机上启动。
警告:
您有责任遵守您安装的任何 BIOS 锁定操作系统的使用许可协议 (EULA)。
用户定义的 BIOS 字符串
用户可以选择使用 CLI/API 在选定的 BIOS 字符串中设置自定义值。要在具有自定义 BIOS 的虚拟机中安装介质,请按照以下步骤操作。
使用 CLI:
-
运行
vm-install命令(不带copy-bios-strings-from):xe vm-install template=template name sr-name-label=name of sr \ new-name-label=name for new VM <!--NeedCopy-->此命令返回新创建虚拟机的 UUID。
例如:
xe vm-install template="win7sp1" sr-name-label=Local\ storage \ new-name-label=newcentos 7cd98710-bf56-2045-48b7-e4ae219799db <!--NeedCopy--> -
要设置用户定义的 BIOS 字符串,请在首次启动虚拟机之前运行以下命令:
xe vm-param-set uuid=VM_UUID bios-strings:bios-vendor=VALUE \ bios-strings:bios-version=VALUE bios-strings:system-manufacturer=VALUE \ bios-strings:system-product-name=VALUE bios-strings:system-version=VALUE \ bios-strings:system-serial-number=VALUE bios-strings:enclosure-asset-tag=VALUE <!--NeedCopy-->例如:
xe vm-param-set uuid=7cd98710-bf56-2045-48b7-e4ae219799db \ bios-strings:bios-vendor="vendor name" \ bios-strings:bios-version=2.4 \ bios-strings:system-manufacturer="manufacturer name" \ bios-strings:system-product-name=guest1 \ bios-strings:system-version=1.0 \ bios-strings:system-serial-number="serial number" \ bios-strings:enclosure-asset-tag=abk58hr <!--NeedCopy-->注意:
- 一旦在单个 CLI/API 调用中设置了用户定义的 BIOS 字符串,它们就无法修改。
- 您可以决定要提供多少参数来设置用户定义的 BIOS 字符串。
警告:
您有责任:
- 遵守为 VM BIOS 中设置的值制定的任何 EULA 和标准。
- 确保您为参数提供的值是有效的参数。提供不正确的参数可能导致启动/介质安装失败。
将 GPU 分配给 Windows VM(用于 Citrix Virtual Desktops)
XenServer 允许您将 XenServer 主机中的物理 GPU 分配给在同一主机上运行的 Windows VM。此 GPU 直通功能使图形高级用户(例如需要高性能图形功能的 CAD 设计人员)受益。它仅支持与 Citrix Virtual Desktops 结合使用。
虽然 XenServer 仅支持每个 VM 一个 GPU,但它会自动检测并分组同一池中所有主机上的相同物理 GPU。一旦分配给一组 GPU,VM 就可以在池中具有该组中可用 GPU 的任何主机上启动。当连接到 GPU 时,VM 的某些功能将不再可用,包括实时迁移、带内存的 VM 快照以及挂起/恢复。
将 GPU 分配给池中的 VM 不会干扰池中其他 VM 的操作。但是,连接了 GPU 的 VM 被视为非敏捷。如果连接了 GPU 的 VM 是启用了高可用性功能的池的成员,则这两个功能都会忽略这些 VM。这些 VM 无法自动迁移。
可以使用 XenCenter 或 xe CLI 启用 GPU 直通。
要求
GPU 直通支持特定机器和 GPU。在所有情况下,XenServer 主机上都必须提供并启用 IOMMU 芯片组功能(对于 Intel 型号,称为 VT-d)。在启用 GPU 直通功能之前,请访问硬件兼容性列表。
在将 GPU 分配给 VM 之前
在将 GPU 分配给 VM 之前,请将相应的物理 GPU 放入 XenServer 主机,然后重新启动计算机。重新启动后,XenServer 会自动检测任何物理 GPU。要查看池中所有主机上的所有物理 GPU,请使用 xe pgpu-list 命令。
确保主机上已启用 IOMMU 芯片组功能。为此,请输入以下内容:
xe host-param-get uuid=uuid_of_host param-name=chipset-info param-key=iommu
<!--NeedCopy-->
如果打印的值为 false,则表示未启用 IOMMU,并且无法使用指定的 XenServer 主机进行 GPU 直通。
使用 XenCenter 将 GPU 分配给 Windows VM:
-
关闭要分配 GPU 的 VM。
-
打开 VM 属性:右键单击 VM 并选择 属性。
-
将 GPU 分配给 VM:从 VM 属性列表中选择 GPU,然后选择 GPU 类型。单击 确定。
-
启动 VM。
使用 xe CLI 将 GPU 分配给 Windows VM:
-
使用
xe vm-shutdown命令关闭要分配 GPU 组的 VM。 -
输入以下内容查找 GPU 组的 UUID:
xe gpu-group-list <!--NeedCopy-->此命令将打印池中的所有 GPU 组。记下相应 GPU 组的 UUID。
-
输入以下内容将 VM 附加到 GPU 组:
xe vpgu-create gpu-group-uuid=uuid_of_gpu_group vm-uuid=uuid_of_vm <!--NeedCopy-->为确保已附加 GPU 组,请运行
xe vgpu-list命令。 -
使用
xe vm-start命令启动 VM。 -
VM 启动后,在 VM 上安装显卡驱动程序。
安装驱动程序至关重要,因为 VM 可以直接访问主机上的硬件。驱动程序由您的硬件供应商提供。
注意:
如果您尝试在主机上启动一个启用了 GPU 直通的 VM,但在相应的 GPU 组中没有可用的 GPU,XenServer 将打印错误。
使用 XenCenter 从 GPU 分离 Windows VM:
-
关闭 VM。
-
打开 VM 属性:右键单击 VM 并选择 属性。
-
从 VM 分离 GPU:从 VM 属性列表中选择 GPU,然后选择 无 作为 GPU 类型。单击 确定。
-
启动 VM。
使用 xe CLI 从 GPU 分离 Windows VM:
-
使用
xe vm-shutdown命令关闭 VM。 -
通过输入以下内容查找连接到 VM 的 vGPU 的 UUID:
xe vgpu-list vm-uuid=uuid_of_vm <!--NeedCopy--> -
通过输入以下内容从 VM 分离 GPU:
xe vgpu-destroy uuid=uuid_of_vgpu <!--NeedCopy--> -
使用
xe vm-start命令启动 VM。
创建 ISO 映像
XenServer 可以使用 ISO 映像作为 Windows 或 Linux VM 的安装介质和数据源。本节介绍如何从 CD/DVD 介质创建 ISO 映像。
在 Linux 系统上创建 ISO:
-
将 CD-ROM 或 DVD-ROM 磁盘放入驱动器。确保磁盘未挂载。要检查,请运行以下命令:
mount <!--NeedCopy-->如果磁盘已挂载,请卸载磁盘。如有必要,请参阅您的操作系统文档以获取帮助。
-
以 root 身份运行命令
dd if=/dev/cdrom of=/path/cdimg_filename.iso <!--NeedCopy-->此命令会花费一些时间。当操作成功完成时,您会看到类似以下内容:
1187972+0 records in 1187972+0 records out <!--NeedCopy-->您的 ISO 文件已准备就绪。
在 Windows 系统上创建 ISO:
Windows 计算机没有等效的操作系统命令来创建 ISO。大多数 CD 刻录工具都有一种将 CD 保存为 ISO 文件的方法。