网站搜索

如何在 XenServer 中创建和安装来宾虚拟机 - 第 5 部分


继续推进 XenServer 系列,本文将讨论实际来宾本身(通常称为虚拟机)的创建。

更新: 2016年5月,Citrix发布了新版本的XenServer 7平台。安装请遵循: XenServer 7 的全新安装。

本文假设之前所有涉及网络、修补和存储的文章都已完成。值得庆幸的是,实际上不再需要讨论新术语,并且可以开始创建客人了!

系统审查

至此,这台XenServer主机上已经配置了很多东西。这将作为对已配置内容以及讨论该主题的文章的快速回顾。

  1. 服务器已安装 XenServer 6.5
    1. https://www.howtoing.com/citrix-xenserver-installation-and-network-configuration-in-linux/
  2. 所有 XenServer 6.5 补丁均已应用
    1. https://www.howtoing.com/install-xenserver-patches-in-linux/
  3. 创建了网络接口分组和 VLAN
    1. https://www.howtoing.com/xenserver-network-lacp-bond-vlan-and-bonding-configuration/
  4. 创建 iSCSI 和 ISO 存储库来保存操作系统安装文件和来宾使用的虚拟硬盘
    1. https://www.howtoing.com/xenserver-create-and-add-storage-repository/

在XenServer中创建虚拟来宾

本指南的这一部分将依靠 ISO 安装程序来实际引导新创建的来宾计算机并安装操作系统。请务必查看第四篇文章,了解有关创建 ISO 存储库的信息。

XenServer 附带了一系列可用于快速配置虚拟访客的模板。这些模板为所选操作系统提供通用选项。选项包括硬盘空间、CPU 架构和可用内存量等选项。

这些选项可以稍后手动修改,但现在将使用一个简单的模板来说明它们的用法。要获取可用模板的列表,可以向传统的'xe'命令传递不同的参数来提示系统返回可用的模板。


xe template-list

该命令可能会返回大量输出。为了使输出更易于阅读,建议将输出通过管道传输到‘less’,如下所示:


xe template-list | less

这将允许更轻松地解析可用模板以查找必要的 UUID 信息。本文将使用 Debian 8 Jessie,但需要使用较旧的 Debian 7 Wheezy 模板,直到 Citrix 发布新模板。

选择Debian 7不会影响实际操作系统的运行。 (下面的屏幕截图使用命令中的 UUID 来修剪一些正常输出)。


xe sr-list name-label=”Tecmint iSCSI Storage”

通过此 UUID,已获得设置此来宾的所有初始信息。与 XenServer 中的几乎所有内容一样,将使用另一个‘xe’命令来配置新来宾。


xe vm-install template=”Debian Wheezy 7.0 (64-bit)” new-name-label="TecmintVM" sr-uuid=bea6caa4-ecab-8509-33a4-2cda2599fb75

突出显示的 UUID 是新配置的来宾的 UUID。有一些内务管理步骤可能会让将来的事情变得更容易。第一个是为新创建的 VDI 提供名称标签,第二个是修改模板配置的任何默认硬件规格。

要了解为什么命名 VDI 很重要,请查看使用以下‘xe’命令进行配置时系统将自动分配给 VDI 的内容:


xe vbd-list vm-name-label=TecmintVM – Used to get the VDI UUID
xe vdi-list vbd-uuids=2eac0d98-485a-7c22-216c-caa920b10ea9    [Used to show naming issue]

另一个可用的选项是通过以下命令收集这两条信息:


xe vm-disk-list vm=TecmintVM

黄色部分是关注点。对于许多人来说,这个问题并不重要,但出于内部管理的目的,需要一个更具描述性的名称来跟踪此特定 VDI 的用途。要重命名此特定 VDI,需要上述输出中的 UUID,并且需要创建另一个 ‘xe’ 命令。


xe vdi-param-set uuid=90611915-fb7e-485b-a0a8-31c84a59b9d8 name-label="TecmintVM Disk 0 VDI"
xe vm-disk-list vm=TecmintVM

设置起来似乎微不足道,但从经验来看,这可以防止在从一台 XenServer 分离存储库并尝试将其附加到另一台 XenServer 时出现严重问题。在这种特殊情况下,所有来宾信息的元数据备份都无法在新的 XenServer 上恢复,值得庆幸的是,通过在每个来宾上命名 VDI,只需通过以下命令即可将来宾正确映射到其 VDI:名称标签。

本文的下一步是为这位特定的客人提供更多资源。根据配置,该来宾只有大约256 MiB(兆比字节)的内存。对于大多数客人来说,这还不够,因此了解如何增加客人的可用内存是有益的。与 XenServer 中的任何操作一样,这可以通过 ‘xe’ 命令来完成。


xe vm-param-list uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e | grep -i memory

上面的绿色框表示该特定来宾可能拥有的最大内存约为256 MiB。出于测试目的,这还可以,但对于任何类型的大量使用系统,这将被证明是不够的。

要修改此值以使来宾能够访问更多 RAM,可以在来宾关闭时发出简单的‘xe'命令。在此示例中,分配给该计算机的 RAM 量将以字节为单位表示,但等于 2 Gibibytes 的 ram。


xe vm-memory-limits-set dynamic-max=2147483648 dynamic-min=2147483648 static-max=2147483648 static-min=2147483648 name-label=TecmintVM

注意,这将始终为该客人保留 2 GiB 的内存。

现在这个特定的来宾已准备好安装操作系统。在上一篇有关存储库的文章中,在此 XenServer 中添加了一个 Samba 共享来存储 ISO 安装程序文件。可以使用以下‘xe’命令确认这一点:


xe sr-list name-label=Remote\ ISO\ Library\ on:\ //<servername>/ISO

请务必将 <servername> 替换为进行此配置的环境的正确 Samba 服务器的名称。一旦确认 XenServer 可以看到 ISO 存储库,就需要将虚拟 CD-ROM 添加到 guest 虚拟机中以引导 ISO 文件。本指南假设 ISO 存储库中存在Debian Net Installer ISO


xe cd-list | grep debian


xe vm-cd-add vm=TecmintVM cd-name=debian-8-netinst.iso device=3
xe vbd-list vm-name-label=TecmintVM userdevice=3

上面的命令首先列出 Debian ISO 的名称。下一个命令将向 TecmintVM 来宾添加虚拟 CD-ROM 设备,并为其分配设备 ID 3

第三条命令用于确定新添加的CD-ROM的UUID,以继续设置设备以引导Debian ISO。

下一步是使 CD-ROM 可引导并指示来宾从 CD-ROM 安装操作系统。


xe vbd-param-set uuid=3836851f-928e-599f-dc3b-3d8d8879dd18 bootable=true
xe vm-param-set uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e other-config:install-repository=cdrom

上面的第一个命令使用上面屏幕截图中绿色突出显示的 UUID 将 CD-ROM 设置为可引导。第二个命令指示客户机使用 CD-ROM 作为安装操作系统的方法。 Tecmint 来宾的 UUID 在上面的屏幕截图中以黄色突出显示。

设置来宾的最后一步是附加虚拟网络接口 (VIF)。这对于此安装方法尤其重要,因为正在使用 Debian Network 安装程序,并且需要从 Debian 存储库中提取软件包。

回顾一下 XenServer 网络文章,已经为该来宾创建了一个特殊的 VLAN,它是 VLAN 10。使用‘xe’可以创建必要的网络接口并将其分配给该来宾。


xe network-list name-description="Tecmint test VLAN 10"
xe vif-create vm-uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e network-uuid=cfe987f0-b37c-dbd7-39be-36e7bfd94cef device=0

第一个命令用于获取为此来宾创建的网络的UUID。下一个命令用于为来宾创建网络适配器并将网络适配器连接到正确的网络。

恭喜!此时,虚拟机已准备好启动和安装!要启动来宾,请发出以下‘xe’命令。


xe vm-start name-label=TecmintVM

如果终端没有产生任何错误,则来宾启动成功。可以使用以下‘xe’命令确认来宾是否正确启动:


xe vm-list name-label=TecmintVM

现在是大问题。如何访问安装程序?这是一个有效的问题。 Citrix 批准的方法是使用XenCenter。这里的问题是 XenCenter 不能在 Linux 上运行!因此,存在一种解决方法,以便用户不必创建特殊的 Windows 工作站来访问正在运行的来宾的控制台。

此过程涉及创建从 Linux 计算机到 XenServer 主机的 SSH 隧道,然后通过该隧道端口转发 VNC 连接。它非常聪明并且工作得很好,但是这种方法确实假设用户可以通过 SSH 访问 XenServer。

第一步是确定 XenServer 上来宾的域号。这是通过使用几个不同的命令来完成的。


xe vm-list params=dom-id name-label=TecmintVM
xenstore-read /local/domain/1/console/vnc-port

这些命令的顺序很重要!第一个命令将返回第二个命令所需的数字。

这两个命令的输出都很重要。第一个输出指出来宾运行的域 ID;在本例中为 1。下一个命令需要该数字才能确定访客控制台会话的 VNC 端口。此命令的输出提供了可用于连接到该特定来宾的视频的 VNC 端口。

获得上述信息后,是时候切换到 Linux 站并连接到 XenServer 以查看该来宾的控制台会话了。为此,将创建 SSH 隧道并设置端口转发以通过 SSH 隧道引导本地 VNC 连接。此连接将从 Linux Mint 17.2 工作站完成,但对于其他发行版应该类似。

第一步是确保 Linux 主机上安装了 OpenSSH 客户端xtightnvcviewer。在 Linux Mint 中,这可以通过以下命令来完成:


sudo apt-get install openssh-client xtightvncviewer

该命令将安装必要的实用程序。下一步是创建到 XenServer 主机的 SSH 隧道,并设置端口转发到之前在 XenServer 主机上确定的 VNC 端口(5902)


ssh -L <any_port>:localhost:<VM_Port_Above> root@<server> -N
ssh -L 5902:localhost:5902 root@<servername> -N

'-L' 选项告诉 ssh 进行端口转发。第一个端口可以是 Linux Mint 机器上未使用的任何高于 1024 的端口。 'localhost:5902' 表示流量应转发到远程本地主机端口 5902,在本例中是 TecmintVM 的 XenServer VNC 端口强>。

‘root@ 是通过 SSH 登录 XenServer 主机的登录凭据。最后,'-N' 告诉 SSH 只需打开端口转发连接。使用“lsof”命令可以在输出中查看隧道。


sudo lsof -i | grep 5902

这里隧道已设置并侦听连接。现在是时候打开与 XenServer 上的来宾的 VNC 连接了。安装的实用程序是“xvncviewer”,并且将流量转发到 XenServer 的 ssh 连接正在侦听“localhost:5902”,因此可以构建适当的命令。


xvncviewer localhost:5902

瞧!有一个正在运行 Debian Network InstallerTecmintVM 控制台会话正在等待安装过程开始。此时,安装过程就像任何其他 Debian 安装一样。

到目前为止,XenServer 的所有操作都是通过命令行界面 (CLI) 完成的。虽然许多 Linux 用户喜欢 CLI,但仍有一些实用程序可以简化管理 XenServer 主机和池的过程。本系列的下一篇文章将介绍如何为希望使用图形系统而不是 CLI 的用户安装这些工具。