虚拟机高级说明

本节介绍有关虚拟机的一些高级说明。

VM 引导行为

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

注意:

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

永久(Citrix Virtual Desktops - 专用桌面模式)

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

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

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

重置(Citrix Virtual Desktops - 共享桌面模式)

在 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

要实现高级用途,可以向 mount 命令传递额外的参数。

要使 Windows SMB/CIFS 共享可供主机使用,请使用 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

装载共享后,任何可用的 ISO 都将列在 XenCenter 的从 ISO 库或 DVD 驱动器安装列表中。这些 ISO 还作为 CD 映像在 CLI 命令中使用。

将 ISO 连接到合适的 Windows 模板。

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

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

要启用 Windows XenServer VSS 提供程序,请执行以下操作:

  1. 安装 Windows PV 驱动程序。

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

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

注意:

  • 卸载 PV 驱动程序时将自动卸载 VSS 提供程序。重新安装 VSS 驱动程序后,应再次将其启用。可以在同一目录中使用 uninstall-XenProvider.cmd 命令与 PV 驱动程序分开单独卸载 VSS 提供程序。
  • 不支持在 GFS2 SR 上使用 VSS 快照。

使用远程桌面连接到 Windows VM

您可以使用以下方法之一查看 Windows VM 控制台,这两种方法均支持充分利用键盘和鼠标。

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

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

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

如果在 VM 中未启用远程桌面,此按钮将处于禁用状态。要启用此按钮,请安装 XenServer Tools。按照下列过程在要使用远程桌面连接的每个 VM 中启用此按钮:

要在 Windows VM 上启用远程桌面,请执行以下操作:

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

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

  3. 远程桌面区域中,选中 Allow connections from computers running any version of Remote Desktop(允许运行任意版本远程桌面的计算机连接)复选框 (Windows 7) 。

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

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

注意:

不能连接到处于睡眠或休眠状态的 VM。在远程计算机上将睡眠和休眠设置设为从不

Windows VM 中的时间处理

对于 Windows 来宾系统,最初是由控制域时钟驱动时间。在 VM 生命周期操作(例如挂起和重新启动)期间,时间会更新。Citrix 建议在控制域和所有 Windows VM 中运行可靠的 NTP 服务。

如果手动将 VM 设置为比控制域早 2 小时,则其将永久保留。在 VM 中使用时区偏差可能会将 VM 的时间提前。如果以后更改了控制域时间(手动或由 NTP 更改),VM 将相应做出调整,但会保持 2 小时的偏差。更改控制域时区不会影响 VM 时区或时差。XenServer 使用 VM 的硬件时钟设置来同步 VM。XenServer 不使用 VM 的系统时钟设置。

执行挂起和恢复操作或使用 XenMotion 时,请务必安装最新的 XenServer Tools。XenServer Tools 会在恢复(可能在其他物理主机上)后向 Windows 内核通知需要进行时间同步。

注意: 如果您在 Citrix Virtual Desktops 环境中运行 Windows VM,必须确保主机时钟与 Active Directory (AD) 域具有相同来源。同步时钟失败会导致 VM 显示错误的时间,并导致 Windows PV 驱动程序崩溃。

Linux VM 中的时间处理

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

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

注意:

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

PV Linux VM 中的时间处理

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

非独立时钟: PV Linux VM 中的系统时钟会与控制域中运行的时钟同步,并且无法独立更改。此模式很方便,因为只有控制域需要运行网络时间协议 (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 6.x(32/64 位) 独立  
SLES 11 SP3、SP4(32/64 位) 独立 是(无)
SLES 12 SP1、SP2(64 位) 独立 是(无)
SLED 11 SP3、SP4(64 位) 独立 是(无)
SLED 12 SP1、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 通用和 BIOS 自定义。要能够将 Windows 的经销商可选套件(锁定了 BIOS)OEM 版安装到 VM,应从随附了介质的主机中复制该 VM 的 BIOS 字符串。此外,高级用户可以将用户定义的值设置为 BIOS 字符串。

BIOS 通用

VM 具有通用 XenServer BIOS 字符串。

注意:

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

BIOS 自定义

对于 HVM VM,可以采用两种方式自定义 BIOS:复制主机 BIOS 字符串和用户定义的 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
    

    此命令将返回新创建的 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
    此 VM 具有自定义 BIOS 。
    

    注意:

    启动 VM 时,是在从其复制了 BIOS 字符串的物理主机上启动此 VM。

警告:

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

用户定义的 BIOS 字符串

用户可以选择使用 CLI/API 在选定的 BIOS 字符串中设置自定义值。要在具有自定义的 BIOS 的 HVM VM 中安装介质,请按照下面的过程进行操作。

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

    此命令将返回新创建的 VM 的 UUID。

    例如:

    xe vm-install template="win7sp1" sr-name-label=Local\ storage  \
    new-name-label=newcentos
    7cd98710-bf56-2045-48b7-e4ae219799db
    
  2. 要设置用户定义的 BIOS 字符串,请在首次启动 VM 之前运行以下命令:

    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
    

    例如:

    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
    

    注意:

    -  在单个 CLI/API 调用中设置用户定义的 BIOS 字符串后,将不能进行修改。
    
    -  您可以决定要为设置用户定义的 BIOS 字符串提供的参数数量。
    

警告:

您需要:

  • 遵从适用于要在 VM 的 BIOS 中设置的值的所有 EULA 和标准。

  • 确保为参数提供的值属于有效参数。提供不正确的参数会导致引导/介质安装失败。

为 Windows VM 分配 GPU(与 Citrix Virtual Desktops 结合使用)

您可以通过 XenServer 将 XenServer 主机中的物理 GPU 分配给同一主机上运行的 Windows VM。需要高性能图形能力的图形高级用户(例如 CAD 设计师)可从此 GPU 直通功能受益。此功能只能与 Citrix Virtual Desktops 结合使用。

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

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

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

要求

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

为 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 的主机上启动具有 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 可使用 ISO 映像作为 Windows 或 Linux VM 的安装介质和数据来源。本节说明如何通过 CD/DVD 介质创建 ISO 映像。

要在 Linux 系统上创建 ISO,请执行以下操作:

  1. 将 CD-ROM 光盘或 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,请执行以下操作:

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