除了使用推荐的 libvirt 库(第 II 部分,“使用 libvirt 管理虚拟机”)之外,您还可以使用命令行中的 xl 工具来管理 Xen 客户域。
xl 程序是一个用于管理 Xen 客户域的工具。它是 xen-tools 包的一部分。xl 基于 LibXenlight 库,可用于常规域管理,例如域创建、列出、暂停或关闭。您需要是 root 用户才能执行 xl 命令。
xl 只能管理由其配置文件指定的正在运行的客户域。如果客户域未运行,则无法使用 xl 管理它。
为了允许用户继续以过时的 xm 命令允许的方式管理客户域,我们现在建议使用 libvirt 的 virsh 和 virt-manager 工具。有关更多信息,请参阅 第 II 部分,“使用 libvirt 管理虚拟机”。
xl 操作依赖于 xenstored 和 xenconsoled 服务。请确保您启动
> systemctl start xencommons在启动时初始化 xl 所需的所有守护程序。
xenbr0 网络桥接在最常见的网络配置中,您需要在主机域中设置一个名为 xenbr0 的桥接,以便客户域具有可用的网络。
每个 xl 命令的基本结构是
xl <subcommand> [options] domain_id
其中 <subcommand> 是要运行的 xl 命令,domain_id 是分配给域的 ID 号或虚拟机的名称,而 OPTIONS 表示特定于子命令的选项。
要获取可用的 xl 子命令的完整列表,请运行 xl help。对于每个命令,可以使用额外的参数 --help 获取更详细的帮助信息。有关各个子命令的更多信息,请参阅 xl 的手册页。
例如,xl list --help 显示可用于 list 命令的所有选项。作为一个例子,xl list 命令显示所有虚拟机的状态。
>sudoxl list Name ID Mem VCPUs State Time(s) Domain-0 0 457 2 r----- 2712.9 sles12 7 512 1 -b---- 16.3 opensuse 512 1 12.9
信息指示机器是否正在运行以及其所处的状态。最常见的标志是 r(正在运行)和 b(已阻止),其中阻止表示它正在等待 I/O,或者由于没有要做的事情而处于睡眠状态。有关状态标志的更多详细信息,请参阅 man 1 xl。
其他有用的 xl 命令包括
xl create 从给定的配置文件创建虚拟机。
xl reboot 重新启动虚拟机。
xl destroy 立即终止虚拟机。
xl block-list 显示附加到虚拟机的所有虚拟块设备。
在操作域时,xl 需要每个域的域配置文件。存储这些配置文件的默认目录是 /etc/xen/。
域配置文件是一个纯文本文件。它由几个 KEY=VALUE 对组成。某些键是必需的。常规键适用于任何客户,而特定键仅适用于特定的客户类型(para 或完全虚拟化)。值可以是 "string"(用单引号或双引号括起来)、数字、布尔值或用方括号括起来的多个值列表 [ value1, value2, ... ]。
/etc/xen/sled12.cfg #name= "sled12" builder = "hvm" vncviewer = 1 memory = 512 disk = [ '/var/lib/xen/images/sled12.raw,,hda', '/dev/cdrom,,hdc,cdrom' ] vif = [ 'mac=00:16:3e:5f:48:e4,model=rtl8139,bridge=br0' ] boot = "n"
要启动此类域,请运行 xl create /etc/xen/sled12.cfg。
要使客户域在主机系统启动后自动启动,请执行以下步骤
如果不存在,请创建域配置文件并将其保存在 /etc/xen/ 目录中,例如 /etc/xen/domain_name.cfg。
在 auto/ 子目录中创建域配置文件的符号链接。
>sudoln -s /etc/xen/domain_name.cfg /etc/xen/auto/domain_name.cfg
在下次系统启动时,在 domain_name.cfg 中定义的客户域将启动。
在客户域配置文件中,您可以定义要在预定义的事件集上执行的操作。例如,要告诉域在关电后自行重新启动,请在配置文件中包含以下行
on_poweroff="restart"
客户域的预定义事件列表如下
指定如果域自行关闭应执行什么操作。
如果域使用请求重新启动的代码关闭,则要执行的操作。
如果域因 Xen 看门狗超时而关闭,则要执行的操作。
如果域崩溃,则要执行的操作。
对于这些事件,您可以定义以下操作之一
销毁域。
销毁域并立即使用相同的配置创建新的域。
重命名已终止的域,然后立即使用与原始域相同的配置创建新的域。
保留域。可以对其进行检查,稍后使用 xl destroy 销毁它。
将域的核心转储写入 /var/xen/dump/NAME,然后销毁域。
将域的核心转储写入 /var/xen/dump/NAME,然后重新启动域。
时间戳计数器 (TSC) 可以为每个域在客户域配置文件中指定(有关更多信息,请参阅 第 24.1.1 节,“客户域配置文件”)。
使用 tsc_mode 设置,您可以指定是否本机(快速,但对 TSC 敏感的应用程序有时可能运行不正确)或模拟(始终正确运行,但性能可能会下降)执行 rdtsc 指令。
tsc_mode=0(默认值)使用此设置以确保正确性,同时提供最佳性能—有关更多信息,请参阅 https://xenbits.xen.org/docs/4.3-testing/misc/tscmode.txt。
tsc_mode=1(始终模拟)当正在运行对 TSC 敏感的应用程序并且已知最坏情况的性能下降是可以接受时,请使用此设置。
tsc_mode=2(从不模拟)当正在运行的应用程序都是对 TSC 具有弹性的应用程序并且需要最高性能时,请使用此设置。
tsc_mode=3(PVRDTSCP)高 TSC 频率的应用程序可以被修改(paravirtualized)以同时获得正确性和最高性能—任何未修改的应用程序都必须对 TSC 具有弹性。
有关背景信息,请参阅 https://xenbits.xen.org/docs/4.3-testing/misc/tscmode.txt。
确保要保存的虚拟机正在运行。
在主机环境中,输入
>sudoxl save ID STATE-FILE
其中 ID 是要保存的虚拟机的 ID,STATE-FILE 是您为内存状态文件指定的名称。默认情况下,域在创建其快照后不再运行。使用 -c 即使在创建快照后也使其保持运行。
确保要恢复的虚拟机自您运行保存操作以来未启动。
在主机环境中,输入
>sudoxl restore STATE-FILE
其中 STATE-FILE 是之前保存的内存状态文件。默认情况下,域在恢复后正在运行。要暂停它在恢复之后,请使用 -p。