引导加载程序控制虚拟化软件的引导和运行方式。您可以通过 YaST 或直接编辑引导加载程序配置文件来修改引导加载程序属性。
YaST 引导加载程序位于 › › 。单击 选项卡,并将包含 Xen 内核的行选为 。
使用 确认。下次启动主机时,它可以提供 Xen 虚拟化环境。
您可以使用引导加载程序指定功能,例如
传递内核命令行参数。
指定内核镜像和初始 RAM 磁盘。
选择特定的超visor。
将其他参数传递给超visor。有关其完整列表,请参阅 http://xenbits.xen.org/docs/unstable/misc/xen-command-line.html。
您可以通过编辑 /etc/default/grub 文件来自定义您的虚拟化环境。将以下行添加到此文件:GRUB_CMDLINE_XEN="<boot_parameters>"。编辑文件后,请不要忘记运行 grub2-mkconfig -o /boot/grub2/grub.cfg。
如果主机的物理磁盘达到没有可用空间的状态,则使用基于稀疏镜像文件的虚拟磁盘的虚拟机无法写入其磁盘。因此,它会报告 I/O 错误。
如果发生这种情况,您应该释放物理磁盘上的可用空间,重新挂载虚拟机的文件系统,并将文件系统设置回读写。
要检查稀疏镜像文件的实际磁盘需求,请使用命令 du -h <image file>。
要增加稀疏镜像文件的可用空间,首先增加文件大小,然后增加文件系统。
调整分区或稀疏文件的大小始终存在数据失败的风险。不要在没有备份的情况下工作。
可以在 VM Guest 运行时在线调整镜像文件的大小,使用以下命令增加稀疏镜像文件的大小:
>sudodd if=/dev/zero of=<image file> count=0 bs=1M seek=<new size in MB>
例如,要将文件 /var/lib/xen/images/sles/disk0 增加到 16GB 大小,请使用命令
>sudodd if=/dev/zero of=/var/lib/xen/images/sles/disk0 count=0 bs=1M seek=16000
也可以增加不是稀疏文件的设备的镜像文件。但是,您必须确切知道之前的镜像结束的位置。使用 seek 参数指向镜像文件的末尾,并使用类似以下命令的命令
>sudodd if=/dev/zero of=/var/lib/xen/images/sles/disk0 seek=8000 bs=1M count=2000
请确保使用正确的 seek,否则可能会丢失数据。
如果 VM Guest 在调整大小操作期间正在运行,则还需要调整向 VM Guest 提供镜像文件的循环设备。首先使用命令检测正确的循环设备
>sudolosetup -j /var/lib/xen/images/sles/disk0
然后调整循环设备,例如 /dev/loop0,使用以下命令
>sudolosetup -c /dev/loop0
最后,使用命令 fdisk -l /dev/xvdb 检查 guest 系统内的块设备的大小。将设备名称替换为您增加的磁盘。
稀疏文件内的文件系统调整大小涉及取决于实际文件系统的工具。
使用 Xen,可以将 VM Guest 系统从一个 VM Host Server 迁移到另一个 VM Host Server,几乎没有服务中断。这可以用于将繁忙的 VM Guest 移动到硬件更强大或尚未加载的 VM Host Server。或者,如果需要 VM Host Server 的服务,可以迁移在此机器上运行的所有 VM Guest 系统,以避免服务中断。这些只是两个例子——许多其他原因可能适用于您的个人情况。
在开始之前,应考虑 VM Host Server 的某些初步考虑事项
所有 VM Host Server 系统应使用类似的 CPU。频率不是很重要,但它们应使用相同的 CPU 系列。要获取有关所用 CPU 的更多信息,请使用 cat /proc/cpuinfo。有关比较主机 CPU 功能的更多详细信息,请参阅 第 27.3.1 节,“检测 CPU 功能”。
所有由特定 guest 系统使用的资源都必须在所有涉及的 VM Host Server 系统上可用——例如,所有使用的块设备都必须存在于两个 VM Host Server 系统上。
如果迁移过程中涉及的主机在不同的子网中运行,请确保为 guest 提供 DHCP 中继,或者对于具有静态网络配置的 guest,手动设置网络。
使用特殊功能,如 PCI Pass-Through 可能会有问题。不要在部署用于在不同的 VM Host Server 系统之间迁移 VM Guest 系统的环境中实施这些功能。
为了快速迁移,必须使用快速网络。如果可能,请使用 GB 以太网和快速交换机。部署 VLAN 也可以帮助避免冲突。
通过使用 cpuid 和 xen_maskcalc.py 工具,您可以比较从要迁移的源 VM Guest 的主机上 CPU 的功能与目标主机上 CPU 的功能。这样可以更好地预测 guest 迁移是否会成功。
在将要运行或接收迁移的 VM Guest 的每个 Dom0 上运行 cpuid -1r 命令,并将输出捕获到文本文件中,例如
tux@vm_host1 >sudo cpuid -1r > vm_host1.txttux@vm_host2 >sudo cpuid -1r > vm_host2.txttux@vm_host3 >sudo cpuid -1r > vm_host3.txt
将所有输出文本文件复制到安装了 xen_maskcalc.py 脚本的主机上。
在所有输出文本文件上运行 xen_maskcalc.py 脚本
>sudoxen_maskcalc.py vm_host1.txt vm_host2.txt vm_host3.txt cpuid = [ "0x00000001:ecx=x00xxxxxx0xxxxxxxxx00xxxxxxxxxxx", "0x00000007,0x00:ebx=xxxxxxxxxxxxxxxxxx00x0000x0x0x00" ]
将 cpuid=[...] 配置片段复制到迁移的 guest domU.cfg 的 xl 配置中,或者替代地复制到其 libvirt 的 XML 配置中。
使用 修剪过的 CPU 配置启动源 guest。现在 guest 只能使用每个主机上都存在的 CPU 功能。
您可以在 http://etallen.com/cpuid.html 找到有关 cpuid 的更多详细信息。
您可以从 https://github.com/twizted/xen_maskcalc 下载 CPU 掩码计算器的最新版本。
VM Guest 系统所需的块设备必须在所有涉及的 VM Host Server 系统上可用。这是通过实施充当迁移的 VM Guest 系统的根文件系统的容器的特定类型的共享存储来实现的。常见的可能性包括
iSCSI 可以设置为允许从不同的系统同时访问相同的块设备。
NFS 是一种广泛使用的根文件系统,可以轻松地从不同位置访问。有关更多信息,请参阅 “参考”手册,第 22 章“使用 NFS 共享文件系统”。
DRBD 只能在涉及两个 VM Host Server 系统时使用。这增加了某些额外的数据安全性,因为使用的数据通过网络镜像。
SCSI 也可以使用,如果可用的硬件允许共享访问相同的磁盘。
NPIV 是使用光纤通道磁盘的一种特殊模式。但是,在这种情况下,所有迁移主机必须连接到相同的光纤通道交换机。有关 NPIV 的更多信息,请参阅 第 25.1 节,“将物理存储映射到虚拟磁盘”。通常,如果光纤通道环境支持 4 Gbps 或更快的连接,则此方法有效。
对于许多虚拟 guest 的常规操作,拥有检查所有不同 VM Guest 系统是否正常运行的可能性至关重要。Xen 提供了多种工具,除了系统工具之外,还可以收集有关系统的信息。
通过 Virtual Machine Manager 可以获得 VM Host Server 的基本监控(I/O 和 CPU)。有关详细信息,请参阅 第 10.8.1 节,“使用 Virtual Machine Manager 监控”。
用于收集有关 Xen 虚拟环境信息的首选终端应用程序是 xentop。请注意,此工具需要一个相当宽的终端,否则它会将换行符插入到显示中。
xentop 有几个命令键可以为您提供有关被监控系统的更多信息。例如
更改屏幕刷新之间的延迟。
也显示网络统计信息。请注意,仅显示标准配置。如果您使用特殊配置,例如路由网络,则不会显示任何网络。
显示相应的块设备及其累积使用计数。
有关 xentop 的更多信息,请参阅手册页 man 1 xentop。
virt-toplibvirt 提供了与超visor 无关的工具 virt-top,建议用于监控 VM Guests。有关详细信息,请参阅 第 10.8.2 节,“使用 virt-top 监控”。
有许多系统工具也可以帮助监控或调试正在运行的 openSUSE 系统。其中许多工具在 “系统分析和调优指南”手册,第 2 章“系统监控实用程序” 中介绍。对于监控虚拟化环境,以下工具特别有用
命令行实用程序 ip 可用于监控任意网络接口。如果设置了路由网络或应用了防火墙设置,这非常有用。要监控名为 alice.0 的网络接口,请运行以下命令
> watch ip -s link show alice.0在标准设置中,所有 Xen VM Guest 系统都连接到虚拟网络桥接。 bridge 允许您确定桥接与 VM Guest 系统中的虚拟网络适配器之间的连接。例如,bridge link 的输出可能如下所示
2: eth0 state DOWN : <NO-CARRIER, ...,UP> mtu 1500 master br0 8: vnet0 state UNKNOWN : <BROADCAST, ...,LOWER_UP> mtu 1500 master virbr0 \ state forwarding priority 32 cost 100
这表明系统上定义了两个虚拟桥接。一个连接到物理以太网设备 eth0,另一个连接到 VLAN 接口 vnet0。
尤其是在使用 masquerade 网络或设置了多个以太网接口以及防火墙设置的情况下,检查当前的防火墙规则可能会有所帮助。
可以使用命令 iptables 检查所有不同的防火墙设置。要列出链中的所有规则,甚至整个设置中的所有规则,可以使用命令 iptables-save 或 iptables -S。
在标准的 Xen 环境中,VM Guest 系统只有关于其运行的 VM Host Server 系统的有限信息。如果 guest 应该了解更多关于其运行的 VM Host Server 的信息,vhostmd 可以为选定的 guest 提供更多信息。要设置系统以运行 vhostmd,请按以下步骤操作
在 VM Host Server 上安装 vhostmd 包。
要添加或删除配置中的 `metric` 部分,请编辑文件 `/etc/vhostmd/vhostmd.conf`。但是,默认配置效果很好。
使用以下命令检查 `vhostmd.conf` 配置文件是否有效:
>cd /etc/vhostmd>xmllint --postvalid --noout vhostmd.conf
使用命令 `sudo systemctl start vhostmd` 启动 vhostmd 守护进程。
如果希望 vhostmd 在系统启动时自动启动,请运行以下命令:
>sudosystemctl enable vhostmd
使用以下命令将镜像文件 `/dev/shm/vhostmd0` 附加到名为 alice 的 VM Guest 系统:
> xl block-attach opensuse /dev/shm/vhostmd0,,xvdb,ro登录 VM Guest 系统。
安装客户端软件包 `vm-dump-metrics`。
运行命令 `vm-dump-metrics`。要将结果保存到文件,请使用选项 `-d <filename>`。
`vm-dump-metrics` 的结果是 XML 输出。相应的指标条目遵循 DTD `/etc/vhostmd/metric.dtd`。
有关更多信息,请参阅 VM Host Server 系统上的手册页 `man 8 vhostmd` 和 `/usr/share/doc/vhostmd/README`。在 Guest 系统上,请参阅手册页 `man 1 vm-dump-metrics`。