虚拟机高级注释

本文提供了有关虚拟机的一些高级注释。

VM 引导行为

对于 VM 引导时虚拟机 VDI 的行为,有两个选项:

注意

必须先关闭 VM,才能对其引导行为设置做任何更改。

持久性(XenDesktop - 专用桌面模式)

这是 VM 引导时的默认行为。VDI 处于上一次关机时的状态。

如果您打算允许用户对其桌面进行永久性更改,请选择此选项。要执行此操作,请关闭 VM,然后输入以下命令:

xe vdi-param-set uuid=vdi_uuid on-boot=persist

重置(XenDesktop - 共享桌面模式)

在 VM 引导时,VDI 还原为上一次引导时的状态。VM 下次引导时,在 VM 运行时所做的所有更改都将丢失。

如果您打算交付用户无法进行永久性更改的标准化桌面,请选择此选项。要执行此操作,请关闭 VM,然后输入以下命令:

xe vdi-param-set uuid=vdi_uuid on-boot=reset

警告

更改 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

要实现高级用途,可以传递装载命令的其他参数。

要使 Windows SMB/CIFS 共享可供 XenServer 主机使用,请使用 XenCenter 进行设置,或连接到主机控制台并运行以下命令:

xe-mount-iso-sr unc_path -t cifs -o username=myname/myworkgroup

unc_path 参数中应使用正斜杠,而不是反斜杠。例如:

xe-mount-iso-sr //server1/myisos -t cifs -o username=johndoe/mydomain

如果您对 CIFS ISO SR 使用 NLTMv2 身份验证,请确保您还指定了 cache=none 参数。例如:

xe-mount-iso-sr //server1/myisos -t cifs -o username=johndoe/mydomain,sec=ntlmv2,cache=none

装载共享后,所有可用的 ISO 都将列在 XenCenter 的从 ISO 库或 DVD 驱动器安装下拉列表中,或作为 CD 映像在 CLI 命令中使用。

ISO 应附加到合适的 Windows 模板。

Windows 卷影复制服务 (VSS) 提供程序

Windows 工具还包含一个 XenServer VSS 提供程序,用于在为 VM 快照做准备的过程中使来宾文件系统静止。该 VSS 提供程序会作为 PV 驱动程序安装的一部分进行安装,但默认情况下不启用。

  1. 安装 Windows PV 驱动程序。

  2. 导航至安装驱动程序的目录(默认情况下为 c:\Program Files\Citrix\XenTools 或 Windows 注册表中的 HKEY_LOCAL_MACHINE\Software\Citrix\XenTools\Install_dir 的值)。

  3. 双击 install-XenProvider.cmd 命令以激活 VSS 提供程序。

注意

卸载半虚拟化的驱动程序时将自动卸载 VSS 提供程序,重新安装时需要再次激活该提供程序。可以在同一目录中使用 uninstall-XenProvider.cmd 命令与 PV 驱动程序分开单独卸载 VSS 提供程序。

使用远程桌面连接 Windows VM

可以通过以下两种方法查看 Windows VM 控制台,这两种方法均支持完全的键盘和鼠标交互。

  1. 使用 XenCenter。此方法提供标准的图形控制台,并使用 XenServer 的内置 VNC 技术提供对虚拟机控制台的远程访问。

  2. 使用 Windows 远程桌面进行连接。此方法使用远程桌面协议技术。

在 XenCenter 中的控制台选项卡上,有一个切换到远程桌面按钮。此按钮可禁用 XenCenter 中的标准图形控制台,并切换为使用远程桌面。

如果在 VM 中未启用远程桌面,该按钮将处于禁用状态。要启用该按钮,则需要安装 XenServer PV Tools,并按照下列步骤在要使用远程桌面连接的每个 VM 中启用该按钮:

  1. 打开“系统”,方法是单击“开始”按钮,在“计算机”上单击鼠标右键,然后选择“属性”。

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

  3. 在“远程桌面”区域中,单击标记为“允许运行任意版本远程桌面的计算机连接”的复选框 (Windows 7)。

  4. 如果希望选择可连接到此 Windows VM 的任何非管理员用户,请单击“选择远程用户”按钮,然后提供用户名。默认情况下,对 Windows 域拥有管理员权限的用户可以进行连接。

现在,您将能够使用远程桌面连接此 VM。有关详细信息,请参阅 Microsoft 知识库文章使用“远程桌面连接”连接到另一台计算机

注意

无法连接到处于睡眠或休眠状态的 VM,因此,请确保远程计算机上的睡眠和休眠状态设置设为“从不”。

Windows VM 中的时间处理

对于 Windows 来宾,时间最初是由控制域时钟所驱动的,并在 VM 生命周期中各类操作执行过程中进行更新,包括挂起、重启等。Citrix 建议在控制域和所有 Windows VM 中运行可靠的 NTP 服务。

如果手动将 VM 设置为早于控制域 2 个小时(例如,在 VM 内使用时区偏差),则此设置将保持。如果随后更改了控制域时间(手动或由 NTP 自动更正),VM 将相应做出调整,但会保持 2 个小时的偏差。控制域时区变动不会影响 VM 时区或偏差。XenServer 使用 VM 的硬件时钟设置来同步 VM。XenServer 不使用 VM 的系统时钟设置。

当执行挂起/恢复操作或使用 XenMotion 进行实时重定位时,请务必先安装最新的 XenServer PV Tools,因为这些工具会在恢复(可能在其他物理主机上)后通知 Windows 内核需要进行时间同步。

注意

如果客户希望在 XenDesktop 环境中运行 Windows VM,必须确保主机时钟与其 Active Directory (AD) 域的来源相同。同步时钟失败会导致 VM 显示错误的时间,并导致 Windows PV 驱动程序崩溃。

Linux VM 中的时间处理

VM 中的 Linux VM 时间处理中的时间处理,XenServer 中的 Linux VM 的时间处理行为取决于 VM 是 PV 来宾系统还是 HVM 来宾系统。

除 XenServer 定义的行为外,操作系统设置和行为可以影响您的 Linux VM 的时间处理行为。例如,某些 Linux 操作系统可能会定期同步其系统时钟和硬件时钟,或者操作系统可能会默认使用自己的 NTP 服务。有关详细信息,请参阅您的 Linux VM 的操作系统文档。

注意

安装新 Linux VM 后,请确保将时区从默认 UTC 更改为本地值(有关特定的发行版说明,请参阅 Linux VM)。

PV Linux VM 中的时间处理

对于半虚拟化的 Linux 发行版,有两种时钟行为 - 非独立独立

  • 非独立时钟:PV Linux VM 中的系统时钟会与控制域中运行的时钟同步,并且无法独立更改。这是一种简便的模式,因为只有控制域需要运行网络时间协议 (Network Time Protocol, NTP) 服务,来确保所有 VM 之间的时间准确。

  • 独立时钟:PV Linux VM 中的系统时钟与控制域中运行的时钟同步,并且可以更改。VM 启动时,控制域时间用于设置系统时钟的初始时间。

某些 PV Linux VM 可以使用 independent_wallclock 设置来更改 VM 的时钟行为。

下表列出了 PV Linux VM 的时钟行为:

来宾操作系统 默认时钟行为 independent_wallclock 设置是否可用?
CentOS 5.x(32/64 位) 非独立
CentOS 6.x(32/64 位) 独立  
Red Hat Enterprise Linux 5.x(32/64 位) 非独立
Red Hat Enterprise Linux 6.x(32/64 位) 独立  
Oracle Linux 5.x(32/64 位) 非独立
Oracle Linux 6.x(32/64 位) 独立  
Scientific Linux 5.x(32/64 位) 非独立
Scientific Linux 6.x(32/64 位) 独立  
SLES 11 SP3、11 SP4(32/64 位) 非独立
SLES 12 SP1、12 SP2(64 位) 非独立
SLED 11 SP3、11 SP4(64 位) 非独立
SLED 12 SP1、12 SP2(64 位) 非独立
Debian 6(32/64 位) 独立  
Debian 7(32/64 位) 独立  
Ubuntu 12.04(32/64 位) 独立  
NeoKylin Linux Advanced Server 6.5(64 位) 独立  
Asianux Server 4.2(64 位) 非独立
Asianux Server 4.4(64 位) 非独立
Asianux Server 4.5(64 位) 非独立
GreatTurbo Enterprise Server 12.2(64 位) 非独立
NeoKylin Linux Security OS V5.0(64 位) 非独立

对于 independent_wallclock 设置可用的 PV Linux VM,可以使用此设置来定义 VM 具有非独立的时钟行为还是独立的时钟行为。

重要

Citrix 建议使用 independent_wallclock 设置来启用独立时钟行为,并在 Linux VM 和 XenServer 主机上运行可靠的 NTP 服务。

设置具有独立时钟行为的单独的 Linux VM

  1. 在 VM 上的根提示符下,运行以下命令:echo 1 > /proc/sys/xen/independent_wallclock

  2. 通过更改 /etc/sysctl.conf 配置文件并添加以下内容,可以使其在每次重新启动后保持不变:

    # Set independent wall clock time
    xen.independent_wallclock=1
    
  3. 第三种备用方法是,也可以将 independent_wallclock=1 作为启动参数传递到 VM。

设置具有非独立时钟行为的单独的 Linux VM

  1. 在 VM 上的根提示符下,运行以下命令:echo 0 > /proc/sys/xen/independent_wallclock

  2. 通过更改 /etc/sysctl.conf 配置文件并添加以下内容,可以使其在每次重新启动后保持不变:

    # Set independent wall clock time
    xen.independent_wallclock=0
    
  3. 第三种备用方法是,也可以将 independent_wallclock=0 作为启动参数传递到 VM。

HVM Linux VM

HVM Linux VM 中的硬件时钟与控制域中运行的时钟同步,并且可以独立更改。VM 启动时,控制域时间用于设置硬件时钟和系统时钟的初始时间。

如果您更改了硬件时钟上的时间,此更改在 VM 重新启动时将持续存在。

系统时钟行为取决于 VM 的操作系统。有关详细信息,请参阅您的 VM 的文档。

不能更改 HVM Linux VM 的 XenServer 时间处理行为。

从经销商可选套件(锁定了 BIOS)介质安装 HVM VM

HVM VM 可以:

  • 具有通用 BIOS:VM 具有通用 XenServer BIOS 字符串;

  • 具有定制 BIOS:VM 具有池中特定服务器的 BIOS 字符串的副本;

  • 不具有 BIOS 字符串:创建后立即启动。如果 VM 在启动时未设置 BIOS 字符串,则会向该 VM 中插入标准的 XenServer BIOS 字符串,该 VM 将具有通用 BIOS。

要允许将 Windows 的分销商可选套件(BIOS 锁定)OEM 版安装到 XenServer 主机上运行的 VM,需要从随附 ROK 介质的主机中复制该 VM 的 BIOS 字符串。

为安装主机附带的 BIOS 锁定介质,需要执行以下步骤:

使用 XenCenter

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

使用 xe 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
    

    上述命令将返回新创建的 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
    
  2. 如果成功地将相关 BIOS 字符串从主机复制到 VM 中,则 vm-is-bios-customized 命令会对此进行确认:

    xe vm-is-bios-customized uuid=VM uuid
    

    例如:

    xe vm-is-bios-customized \
    uuid=7cd98710-bf56-2045-48b7-e4ae219799db
    This VM is BIOS-customized.
    

    启动时,会从复制 BIOS 字符串的物理主机上启动该 VM。

警告

任何 EULA 都规定了如何使用安装的锁定了 BIOS 的所有操作系统,您必须遵守其中的规定。

使用 Sysprep 准备克隆 Windows VM

sysprep,用于准备 Windows VM 以克隆 sysprep。系统仅支持一种克隆 Windows VM 的方法,即使用 Windows 实用程序 sysprep 准备 VM。

sysprep 实用程序将修改本地计算机 SID 以确保各个计算机 SID 的唯一性。sysprep 二进制文件位于 C:\Windows\System32\Sysprep 文件夹中。

注意

对于较旧版本的 Windows,sysprep 二进制文件位于 Windows 产品 CD 上的 \support\tools\deploy.cab 文件中。在使用之前,必须将这些二进制文件复制到您的 Windows VM 中。

下面提供了克隆 Windows VM 需要执行的步骤:

  1. 根据需要创建、安装和配置 Windows VM。

  2. 应用所有相关的 Service Pack 和更新。

  3. 安装 XenServer PV Tools。

  4. 安装任何应用程序和执行任何其他配置。

  5. 运行 sysprep。此步骤完成后将关闭 VM。

  6. 在 XenCenter 中,将 VM 转换为模板。

  7. 根据需要将新创建的模板克隆到新 VM 中。

  8. 克隆的 VM 在启动时将获得新的 SID 和名称,然后运行最小化安装以提示提供必需的配置值,最后重新启动,即可投入使用。

    注意

    使用 sysprep 处理的原始 VM(“源”VM)应在 sysprep 阶段后再次重新启动,而应在此阶段后立即转化为模板以防重新启动。如果重新启动了源 VM,则必须再次对其运行 sysprep,才可以将其安全地用于执行其他克隆。

有关使用 sysprep 的详细信息,请访问下面的 Microsoft Web 站点:

Windows 自动安装工具包 (AIK)

为 Windows VM 分配 GPU(与 XenDesktop 结合使用)

XenServer 允许您将 XenServer 主机中的物理 GPU 分配给同一台主机上运行的 Windows VM。这种 GPU 直通功能面向需要高性能图形能力的图形高级用户(如 CAD 设计师)。只有在与 XenDesktop 结合使用时才支持此传递功能

尽管 XenServer 支持每个 VM 仅对应一个 GPU,但是它会自动检测同一个池中各主机上完全相同的物理 GPU,并将它们组合到一起。将某个 VM 分配给一组 GPU 之后,该 VM 可以在池中具有该组内可用 GPU 的任何主机上启动。连接到 GPU 之后,VM 的某些功能(包括 XenMotion 实时迁移、含内存数据的 VM 快照和挂起/恢复)将不再可用。

为池中的 VM 分配 GPU 不会干扰池中其他 VM 的运行。但是,连接 GPU 的 VM 将被视为不具有灵活性。如果连接 GPU 的 VM 属于启用了高可用性的池,则这两项功能将忽略这些 VM,而无法实现自动迁移。

GPU 直通功能仅适用于 Windows VM。可以使用 XenCenter 或 xe CLI 启用该功能。

要求

特定的计算机和 GPU 支持 GPU 直通功能。在所有情况下,XenServer 主机上都必须提供并启用 IOMMU 芯片组功能(对于 Intel 型号称为 VT-d)。在启用 GPU 直通功能之前,请访问 http://hcl.vmd.citrix.com 检查硬件兼容性。

为 VM 分配 GPU 之前的准备工作

在为 VM 分配 GPU 之前,需要将相应的物理 GPU 装到您的 XenServer 主机中,然后重新启动该计算机。在重新启动时,XenServer 会自动检测任何物理 GPU。要查看池中各个主机上的所有物理 GPU,请使用 xe pgpu-list 命令。

确保在主机上启用 IOMMU 芯片组功能。为此,请输入以下命令:

xe host-param-get uuid=uuid_of_host param-name=chipset-info param-key=iommu

如果输出的值为 false,表示未启用 IOMMU,因此无法通过指定的 XenServer 主机使用 GPU 直通功能。

使用 XenCenter 为 Windows VM 分配 GPU

  1. 关闭要为其分配 GPU 的 VM。

  2. 打开 VM 属性:右键单击 VM,然后选择属性。

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

  4. 启动 VM。

使用 xe CLI 为 Windows VM 分配 GPU

  1. 使用 xe vm-shutdown 命令关闭要为其分配 GPU 组的 VM。

  2. 通过输入以下命令显示该 GPU 组的 UUID:

    xe gpu-group-list
    

    此命令将输出池中的所有 GPU 组。请记录相应 GPU 组的 UUID。

  3. 通过输入以下命令将该 VM 连接到相应的 GPU 组:

    xe vpgu-create gpu-group-uuid=uuid_of_gpu_group vm-uuid=uuid_of_vm
    

    要确保已连接该 GPU 组,请运行 xe vgpu-list 命令。

  4. 使用 xe vm-start 命令启动该 VM。

  5. 启动后,在该 VM 上安装图形卡驱动程序。

    必须安装驱动程序,使 VM 能够直接访问主机上的硬件。驱动程序由硬件供应商提供。

    注意

    如果您尝试在相应 GPU 组中没有可用 GPU 的 XenServer 主机上启动具有 GPU 直通功能的 VM,XenServer 会输出一则错误消息。

使用 XenCenter 将 Windows VM 与 GPU 分离

  1. 关闭 VM。

  2. 打开 VM 属性:右键单击 VM,然后选择属性。

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

  4. 启动 VM。

使用 xe CLI 将 Windows VM 与 GPU 分离

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

  2. 通过输入以下命令显示与 VM 相连的 vGPU 的 UUID:

    xe vgpu-list vm-uuid=uuid_of_vm
    
  3. 通过输入以下命令将 GPU 与 VM 分离:

    xe vgpu-destroy uuid=uuid_of_vgpu
    
  4. 使用 xe vm-start 命令启动该 VM。

创建 ISO 映像

XenServer 可以使用 CD-ROM 或 DVD-ROM 光盘的 ISO 映像作为 Windows 或 Linux VM 的安装介质和数据来源。本节说明如何通过 CD/DVD 介质创建 ISO 映像。创建 ISO 映像

在 Linux 计算机上创建 ISO 映像

  1. 将 CD- 或 DVD-ROM 磁盘放入驱动器。不应装载光盘。要进行检查,请运行以下命令:

    mount
    

    如果光盘已装载,请将其卸载。如果需要帮助,请参考您的操作系统文档。

  2. 以 root 用户身份运行以下命令:

    dd if=/dev/cdrom of=/path/cdimg_filename.iso
    

    这需要花费一些时间。成功完成该操作后,您将看到以下内容:

    1187972+0 records in
    1187972+0 records out
    

    您的 ISO 文件已就绪。

在 Windows 计算机上创建 ISO 映像

  1. Windows 计算机没有创建 ISO 的等效操作系统命令。大多数 CD 刻录工具可将 CD 另存为 ISO 文件。