31 Xen:将半虚拟 (PV) Guest 转换为全虚拟 (FV/HVM) Guest #
本章介绍如何将 Xen 半虚拟机转换为 Xen 全虚拟机。
要在 FV 模式下启动 Guest,需要在 Guest 中执行以下步骤。
在转换 Guest 之前,安装所有待应用的补丁并重引导 Guest。
FV 计算机使用
-default内核。如果尚未安装此内核,请安装kernel-default软件包(在 PV 模式下运行时)。PV 计算机通常使用
vda*这样的磁盘名称。这些名称必须更改为 FVhd*语法。此更改必须在以下文件中进行:/etc/fstab/boot/grub/menu.lst(仅 SLES 11)/boot/grub*/device.map/etc/sysconfig/bootloader/etc/default/grub(仅 SLES 12 和 15)
注意:建议使用 UUID应当在
/etc/fstab中使用 UUID 或逻辑卷。通过 UUID 可以方便地使用挂接的网络储存设备、多路径和虚拟化。要确定磁盘的 UUID,请使用blkid命令。为了避免在使用所需模块重新生成
initrd时出现任何错误,您可以创建一个从/dev/hda2到/dev/xvda2等的符号链接,具体做法是使用ln:ln -sf /dev/xvda2 /dev/hda2 ln -sf /dev/xvda1 /dev/hda1 .....
PV 和 FV 计算机使用不同的磁盘和网络驱动程序模块。必须手动将这些 PV 模块添加到 initrd。预期的模块是
xen-vbd(用于磁盘)和xen-vnif(用于网络)。这些是全虚拟化 VM Guest 仅有的 PV 驱动程序。所有其他模块(例如ata_piix、ata_generic和libata)应该会自动添加。提示:将模块添加到 initrd在 SLES 11 上,可以将模块添加到
/etc/sysconfig/kernel文件中的INITRD_MODULES行。例如:INITRD_MODULES="xen-vbd xen-vnif"
运行
mkinitrd以构建包含这些模块的新 initrd。在 SLES 12 和 15 上,打开或创建
/etc/dracut.conf.d/10-virt.conf,并通过添加下例所示的行使用force_drivers来添加这些模块(注意前导空格)。force_drivers+=" xen-vbd xen-vnif"
运行
dracut -f --kver KERNEL_VERSION-default以构建包含所需模块的新 initrd(用于内核的默认版本)。注意:确定您的内核版本使用
uname -r命令可获取系统上当前使用的版本。
在关闭 Guest 之前,使用
yast bootloader将默认引导参数设置为-default内核。在 SUSE Linux Enterprise Server 11 下,如果 Guest 上在运行 X 服务器,您需要调整
/etc/X11/xorg.conf文件来调整 X 驱动程序。搜索fbdev并将其更改为cirrus。Section "Device" Driver "cirrus" ...... EndSection注意:SUSE Linux Enterprise Server 12/15 和 Xorg在 SUSE Linux Enterprise Server 12/15 下,Xorg 将自动调整 X 服务器能够正常运行所需的驱动程序。
关闭 Guest。
以下步骤说明了需要在主机上执行的操作。
要以 FV 模式启动 Guest,必须修改 VM 的配置以匹配 FV 配置。使用
virsh edit [DOMAIN]可轻松编辑 VM 的配置。建议进行以下更改:确保将 OS 部分中的 machine、type 和
loader项从xenpv更改为xenfv。更新后的 OS 部分应如下所示:<os> <type arch='x86_64' machine='xenfv'>hvm</type> <loader>/usr/lib/xen/boot/hvmloader</loader> <boot dev='hd'/> </os>在 OS 部分,去除所有特定于 PV Guest 的内容:
<bootloader>pygrub</bootloader>
<kernel>/usr/lib/grub2/x86_64-xen/grub.xen</kernel>
<cmdline>xen-fbfront.video=4,1024,768</cmdline>
在 devices 部分,采用以下形式添加 qemu 模拟器:
<emulator>/usr/lib/xen/bin/qemu-system-i386</emulator>
更新磁盘配置,使目标设备和总线使用 FV 语法。这需要将
xen磁盘总线替换为ide,并将vda目标设备替换为hda。更改应如下所示:<target dev='hda' bus='ide'/>
将鼠标和键盘的总线从
xen更改为ps2。另外添加一个新的 USB 绘图板设备:<input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <input type='tablet' bus='usb'/>将控制台目标类型从
xen更改为serial:<console type='pty'> <target type='serial' port='0'/> </console>将视频配置从
xen更改为cirrus,其中 VRAM 大小为 8 MB:<video> <model type='cirrus' vram='8192' heads='1' primary='yes'/> </video>如果需要,向 VM 的功能添加
acpi和apic:<features> <acpi/> <apic/> </features>
启动 Guest(使用
virsh或virt-manager)。如果 Guest 运行的是 kernel-default(通过uname -a校验),计算机将以全虚拟模式运行。
要编写此过程的脚本,或直接在磁盘映像上工作,可以使用 guestfs-tools 套件(有关详细信息,请参见第 20.3 节 “Guestfs 工具”)。有许多工具可以帮助修改磁盘映像。