跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 虚拟化指南 / 使用 Xen 管理虚拟机 / Xen:将半虚拟 (PV) Guest 转换为全虚拟 (FV/HVM) Guest
适用范围 SUSE Linux Enterprise Server 15 SP6

31 Xen:将半虚拟 (PV) Guest 转换为全虚拟 (FV/HVM) Guest

本章介绍如何将 Xen 半虚拟机转换为 Xen 全虚拟机。

过程 31.1︰ Guest 端

要在 FV 模式下启动 Guest,需要在 Guest 中执行以下步骤。

  1. 在转换 Guest 之前,安装所有待应用的补丁并重引导 Guest。

  2. FV 计算机使用 -default 内核。如果尚未安装此内核,请安装 kernel-default 软件包(在 PV 模式下运行时)。

  3. PV 计算机通常使用 vda* 这样的磁盘名称。这些名称必须更改为 FV hd* 语法。此更改必须在以下文件中进行:

    • /etc/fstab

    • /boot/grub/menu.lst(仅适用于 SLES 11)

    • /boot/grub*/device.map

    • /etc/sysconfig/bootloader

    • /etc/default/grub(SLES 12、15、openSUSE)

    注意
    注意:建议使用 UUID

    应在 /etc/fstab 中使用 UUID 或逻辑卷。通过 UUID 可以方便地使用挂接的网络存储设备、多路径和虚拟化。要确定磁盘的 UUID,请使用 blkid 命令。

  4. 为了避免在使用所需模块重新生成 initrd 时出现任何错误,可以使用 ln 创建一个从 /dev/hda2/dev/xvda2 等的符号链接:

    ln -sf /dev/xvda2 /dev/hda2
    ln -sf /dev/xvda1 /dev/hda1
    .....
  5. PV 和 FV 计算机使用不同的磁盘和网络驱动程序模块。必须手动将这些 PV 模块添加到 initrd。需要的模块为 xen-vbd(用于磁盘)和 xen-vnif(用于网络)。这些是全虚拟化 VM Guest 仅有的 PV 驱动程序。所有其他模块(例如 ata_piixata_genericlibata)应该会自动添加。

    提示
    提示:将模块添加到 initrd
    • 在 SLES 11 上,可以将模块添加到 /etc/sysconfig/kernel 文件中的 INITRD_MODULES 行。例如:

      INITRD_MODULES="xen-vbd xen-vnif"

      运行 dracut 以构建包含这些模块的新 initrd。

    • 在 SLES 12、15 和 openSUSE 上,打开或创建 /etc/dracut.conf.d/10-virt.conf,并按以下示例所示添加一行来使用 force_drivers 添加这些模块(注意前导空格)。

      force_drivers+=" xen-vbd xen-vnif"

      运行 dracut -f --kver KERNEL_VERSION-default 以构建包含所需模块的新 initrd(用于内核的默认版本)。

      确定您的内核版本: 使用 uname -r 命令可获取系统上当前使用的版本。

  6. 在关闭 Guest 之前,使用 yast bootloader 将默认引导参数设置为 -default 内核。

  7. 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 服务器能够正常运行所需的驱动程序。

  8. 关闭 Guest。

过程 31.2︰ 主机端

以下步骤说明了需要在主机上执行的操作。

  1. 要以 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 的功能添加 acpiapic

      <features>
                <acpi/>
                <apic/>
      </features>
  2. 启动 Guest(使用 virshvirt-manager)。如果 Guest 运行的是 kernel-default(通过 uname -a 校验),计算机将以全虚拟模式运行。

注意
注意:guestfs-tools

要编写此过程的脚本,或直接在磁盘映像上工作,可以使用 guestfs-tools 套件(有关详细信息,请参见第 19.3 节 “Guestfs 工具”)。有多种工具可以帮助修改磁盘映像。