28 管理任务 #
28.1 引导加载器 #
引导加载程序控制虚拟化软件的引导和运行方式。您可以使用 YaST 或者通过直接编辑引导加载程序配置文件来修改引导加载程序属性。
您可以单击
› › 访问 YaST 引导加载程序。单击 选项卡,然后选择包含 Xen 内核的行作为 。单击
进行确认。您下次引导主机时,引导加载程序可以提供 Xen 虚拟化环境。您可以使用引导加载程序来指定功能,例如:
传递内核命令行参数。
指定内核映像和初始 RAM 磁盘。
选择特定的超级管理程序。
向超级管理程序传递其他参数。有关完整的参数列表,请参见 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
。
28.2 稀疏映像文件和磁盘空间 #
如果主机的物理磁盘已没有可用空间,使用基于稀疏映像文件的虚拟磁盘的虚拟机将无法向其磁盘写入数据。因此,它会报告 I/O 错误。
如果发生这种情况,您应该释放物理磁盘上的可用空间,重新挂载虚拟机的文件系统,然后将文件系统重新设置为读写模式。
要检查稀疏映像文件的实际磁盘要求,请使用 du -h <image file>
命令。
要增加稀疏映像文件的可用空间,请先增加文件大小,然后增加文件系统的大小。
改动分区或稀疏文件的大小始终要承担数据失败的风险。在未备份的情况下,请不要执行此操作。
可以在 VM Guest 运行时联机调整映像文件的大小。使用以下命令增加稀疏映像文件的大小:
>
sudo
dd if=/dev/zero of=<image file> count=0 bs=1M seek=<new size in MB>
例如,要将 /var/lib/xen/images/sles/disk0
文件的大小增至 16GB,请使用以下命令:
>
sudo
dd if=/dev/zero of=/var/lib/xen/images/sles/disk0 count=0 bs=1M seek=16000
还可以增加设备的非稀疏映像文件的大小,但您必须知道上一个映像的具体结束位置。使用 seek 参数指向映像文件的末尾,然后使用如下所示的命令:
>
sudo
dd if=/dev/zero of=/var/lib/xen/images/sles/disk0 seek=8000 bs=1M count=2000
请务必正确使用 seek,否则可能发生数据丢失情况。
如果在 VM Guest 运行时执行大小调整操作,另外还需调整向 VM Guest 提供映像文件的循环设备的大小。首先使用以下命令检测正确的循环设备:
>
sudo
losetup -j /var/lib/xen/images/sles/disk0
然后使用以下命令调整循环设备(例如 /dev/loop0
)的大小:
>
sudo
losetup -c /dev/loop0
最后使用 fdisk -l /dev/xvdb
命令检查 Guest 系统中块设备的大小。请将设备名称替换为已增大的磁盘的名称。
调整稀疏文件中的文件系统大小所涉及到的工具取决于实际文件系统。储存管理指南中对此做了详细说明。
28.3 迁移 Xen VM Guest 系统 #
在 Xen 中,可将 VM Guest 系统从一台 VM 主机服务器迁移到另一台 VM 主机服务器,而且几乎不会造成服务中断。例如,可以使用此功能将一个繁忙的 VM Guest 转移到一台硬件更强大或者尚无负载的 VM 主机服务器。或者,如果 VM 主机服务器的某项服务不能中断,可将此计算机上运行的所有 VM Guest 系统迁移到其他计算机,以避免该服务中断。这只是其中的两个例子 — 在您的个人使用情形中,可能还有许多其他迁移原因。
在开始之前,需要了解有关 VM 主机服务器的某些应预先注意的事项:
所有 VM 主机服务器系统应使用类似的 CPU。CPU 的频率并不是很重要,但它们应该使用同一 CPU 系列。要获取有关所用 CPU 的详细信息,请使用
cat /proc/cpuinfo
。第 28.3.1 节 “检测 CPU 功能”中提供了有关比较主机 CPU 功能的更多细节。特定 Guest 系统使用的所有资源必须已在所有相关 VM 主机服务器系统上提供 — 例如,使用的所有块设备必须在两个 VM 主机服务器系统上均存在。
如果迁移过程涉及的主机在不同的子网中运行,请确保 Guest 可以使用 DHCP 中继,或者针对采用静态网络配置的 Guest 手动设置网络。
使用
PCI Pass-Through
等特殊功能可能会造成问题。为可能会在不同 VM 主机服务器系统之间迁移 VM Guest 系统的环境部署虚拟机时,请不要实施这些功能。为了快速迁移,必须设置一个快速网络。如果可能,请使用 GB 以太网和快速交换机。部署 VLAN 也可能有助于避免冲突。
28.3.1 检测 CPU 功能 #
可以使用 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
脚本:>
sudo
xen_maskcalc.py vm_host1.txt vm_host2.txt vm_host3.txt cpuid = [ "0x00000001:ecx=x00xxxxxx0xxxxxxxxx00xxxxxxxxxxx", "0x00000007,0x00:ebx=xxxxxxxxxxxxxxxxxx00x0000x0x0x00" ]将输出的
cpuid=[...]
配置片段复制到迁移的 GuestdomU.cfg
的xl
配置中,或复制到其libvirt
的 XML 配置中。使用经过删减的 CPU 配置启动源 Guest。现在,Guest 只能使用每台主机上提供的 CPU 功能。
libvirt
还支持计算用于迁移的基线 CPU。有关详细信息,请参考 https://documentation.suse.com/sles-15/html/SLES-all/article-virtualization-best-practices.html。
28.3.1.1 更多信息 #
http://etallen.com/cpuid.html 上提供了有关 cpuid
的更多细节。
您可以从 https://github.com/twizted/xen_maskcalc 下载最新版本的 CPU 掩码计算器。
28.3.2 准备要迁移的块设备 #
VM Guest 系统所需的块设备必须已在所有相关 VM 主机服务器系统上提供。要做到这一点,可以实施特定类型的共享存储,用于充当所迁移 VM Guest 系统的根文件系统的容器。常见的做法包括:
可以设置
iSCSI
,以便可从不同的系统同时访问相同的块设备。有关 iSCSI 的详细信息,请参见第 15 章 “经由 IP 网络的大容量存储:iSCSI”。NFS
是广泛使用的根文件系统,用户可从不同的位置轻松访问该文件系统。有关详细信息,请参见第 19 章 “通过 NFS 共享文件系统”。如果只涉及到两个 VM 主机服务器系统,则可以使用
DRBD
。这会在一定程度上提高数据安全性,因为此方法会通过网络镜像使用的数据。有关详细信息,请参见 https://documentation.suse.com/sle-ha-15/ 上的 SUSE Linux Enterprise High Availability Extension 15 SP5 文档。如果提供的硬件允许对相同磁盘进行共享访问,则还可以使用
SCSI
。NPIV
是使用光纤通道磁盘的特殊模式。但在这种情况下,所有迁移主机都必须挂接到同一个光纤通道交换机。有关 NPIV 的详细信息,请参见第 26.1 节 “将物理存储设备映射到虚拟磁盘”。一般而言,如果光纤通道环境支持 4 Gbps 或更快的连接,便可使用此方式。
28.3.3 迁移 VM Guest 系统 #
VM Guest 系统的实际迁移是使用以下命令完成的:
>
sudo
xl migrate <domain_name> <host>
迁移速度取决于将占用内存的内容保存到磁盘、发送到 VM 主机服务器并在该处装载的速度。也就是说,迁移小型 VM Guest 系统可能比迁移包含大量内存的大型系统的速度更快。
28.4 监视 Xen #
在对众多虚拟 Guest 进行常规运维时,检查所有不同 VM Guest 系统的健全性是必不可少的功能。除了系统工具以外,Xen 还提供了数个工具用于收集有关系统的信息。
可以通过虚拟机管理器监视 VM 主机服务器的基本情况(I/O 和 CPU)。有关详细信息,请参考 第 11.8.1 节 “使用虚拟机管理器进行监视”。
28.4.1 使用 xentop
监视 Xen #
用于收集有关 Xen 虚拟环境的信息的首选终端应用程序是 xentop
。请注意,此工具需要一个相当宽的终端,否则它会在显示内容中插入换行符。
xentop
提供多个命令键,可供您查看有关所监视系统的详细信息。例如:
- D
更改屏幕两次刷新相隔的延迟时间。
- N
同时显示网络统计信息。请注意,只会显示标准配置。如果您使用路由网络等特殊配置,将不会显示网络。
- B
显示相应的块设备及其累计使用次数。
有关 xentop
的详细信息,请参见手册页 man 1 xentop
。
virt-top
libvirt 提供不限定超级管理程序的工具 virt-top
,建议使用此工具来监视 VM Guest。有关详细信息,请参见第 11.8.2 节 “使用 virt-top
进行监视”。
28.4.2 其他工具 #
我们还提供了许多系统工具来帮助您监视或调试运行中的 SUSE Linux Enterprise 系统。第 2 章 “系统监视实用程序”中介绍了其中一些工具。以下工具特别适合用于监视虚拟化环境:
- ip
命令行实用程序
ip
可用于监视任意网络接口。如果您设置了路由网络或者应用了掩蔽网络,此实用程序特别有用。要监视名为alice.0
的网络接口,请运行以下命令:>
watch ip -s link show alice.0- bridge
在标准设置中,所有 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
。- iptables-save
使用掩蔽网络时,或者设置了多个以太网接口并与防火墙设置结合使用时,此工具特别有用,它可以帮助检查当前的防火墙规则。
iptables
命令可用于检查所有不同的防火墙设置。要列出某个链甚至整个设置的所有规则,可以使用iptables-save
或iptables -S
命令。
28.5 提供 VM Guest 系统的主机信息 #
在标准 Xen 环境中,VM Guest 系统只能获得有关运行它的 VM 主机服务器系统的有限信息。如果某个 Guest 应该了解有关运行它的 VM 主机服务器的更多信息,vhostmd
可为选定 Guest 提供详细信息。要设置系统以运行 vhostmd
,请执行以下操作:
在 VM 主机服务器上安装 vhostmd 软件包。
要在配置中添加或去除
metric
部分,请编辑文件/etc/vhostmd/vhostmd.conf
。不过,默认设置也可正常工作。使用以下命令检查
vhostmd.conf
配置文件的有效性:>
cd /etc/vhostmd>
xmllint --postvalid --noout vhostmd.conf使用
sudo systemctl start vhostmd
命令启动 vhostmd 守护程序。如果系统启动期间应自动启动 vhostmd,请运行以下命令:
>
sudo
systemctl 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 主机服务器系统上的手册页 man 8
vhostmd
和 /usr/share/doc/vhostmd/README
。在 Guest 上,请参见手册页 man 1
vm-dump-metrics
。