XenServer

虚拟机高级注意事项

本节提供有关虚拟机的部分高级注意事项。

虚拟机启动行为

虚拟机启动时,其 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 上启用远程桌面:

  1. 单击开始按钮,右键单击计算机,然后选择属性以打开系统

  2. 单击远程设置。如果系统提示输入管理员密码,请键入在 VM 设置期间创建的密码。

  3. 远程桌面区域中,单击标有允许运行任何版本远程桌面的计算机进行连接的复选框。

  4. 要选择可以连接到此 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 字符串。

注意:

首次启动 VM 后,您无法更改其 BIOS 字符串。请确保在首次启动 VM 之前 BIOS 字符串正确无误。

复制主机 BIOS 字符串

VM 具有池中特定主机的 BIOS 字符串副本。要安装随主机提供的 BIOS 锁定介质,请按照以下步骤操作。

使用 XenCenter:

  1. 在新建 VM 向导中,选中“将主机 BIOS 字符串复制到 VM”复选框。

使用 CLI:

  1. 运行 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-->
    

    此命令返回新创建 VM 的 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-->
    
  2. 如果已成功将主机中相关的 BIOS 字符串复制到 VM 中,则命令 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:

  1. 运行 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-->
    
  2. 要设置用户定义的 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:

  1. 关闭要分配 GPU 的虚拟机。

  2. 打开虚拟机属性:右键单击虚拟机并选择 属性

  3. 将 GPU 分配给虚拟机:从虚拟机属性列表中选择 GPU,然后选择 GPU 类型。单击 确定

  4. 启动虚拟机。

使用 xe CLI 将 GPU 分配给 Windows 虚拟机:

  1. 使用 xe vm-shutdown 命令关闭要分配 GPU 组的虚拟机。

  2. 通过输入以下内容查找 GPU 组的 UUID:

    xe gpu-group-list
    <!--NeedCopy-->
    

    此命令将打印池中的所有 GPU 组。记下相应 GPU 组的 UUID。

  3. 通过输入以下内容将虚拟机附加到 GPU 组:

    xe vpgu-create gpu-group-uuid=uuid_of_gpu_group vm-uuid=uuid_of_vm
    <!--NeedCopy-->
    

    为确保已附加 GPU 组,请运行 xe vgpu-list 命令。

  4. 使用 xe vm-start 命令启动虚拟机。

  5. 虚拟机启动后,在虚拟机上安装显卡驱动程序。

    安装驱动程序至关重要,因为虚拟机可以直接访问主机上的硬件。驱动程序由您的硬件供应商提供。

注意:

如果您尝试在主机上启动一个启用了 GPU 直通的虚拟机,但相应的 GPU 组中没有可用的 GPU,XenServer 将打印错误。

使用 XenCenter 从 GPU 分离 Windows VM:

  1. 关闭 VM。

  2. 打开 VM 属性:右键单击 VM 并选择“属性”。

  3. 从 VM 分离 GPU:从 VM 属性列表中选择“GPU”,然后选择“”作为 GPU 类型。单击“确定”。

  4. 启动 VM。

使用 xe CLI 从 GPU 分离 Windows VM:

  1. 使用 xe vm-shutdown 命令关闭 VM。

  2. 通过输入以下内容查找附加到 VM 的 vGPU 的 UUID:

    xe vgpu-list vm-uuid=uuid_of_vm
    <!--NeedCopy-->
    
  3. 通过输入以下内容从 VM 分离 GPU:

    xe vgpu-destroy uuid=uuid_of_vgpu
    <!--NeedCopy-->
    
  4. 使用 xe vm-start 命令启动 VM。

创建 ISO 映像

XenServer 可以使用 ISO 映像作为 Windows 或 Linux VM 的安装介质和数据源。本节介绍如何从 CD/DVD 介质制作 ISO 映像。

在 Linux 系统上创建 ISO:

  1. 将 CD 或 DVD-ROM 磁盘放入驱动器。确保磁盘未挂载。要检查,请运行以下命令:

    mount
    <!--NeedCopy-->
    

    如果磁盘已挂载,请卸载磁盘。如有必要,请参阅您的操作系统文档以获取帮助。

  2. 以 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 文件的方法。