跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.5

6 虚拟化组件安装 编辑源文件

6.1 简介 编辑源文件

要运行一个虚拟化服务器(VM 主机服务器),它可以托管一个或多个客户系统(VM 客户机),您需要在服务器上安装所需的虚拟化组件。这些组件因您想要使用的虚拟化技术而异。

6.2 安装虚拟化组件 编辑源文件

您可以以以下方式安装运行 VM 主机服务器所需的虚拟化工具

  • 在 VM 主机服务器上安装 openSUSE Leap 时选择特定的系统角色

  • 在已经安装并运行的 openSUSE Leap 上运行 YaST 虚拟化 模块。

  • 在已经安装并运行的 openSUSE Leap 上安装特定的安装模式。

6.2.1 指定系统角色 编辑源文件

您可以在 VM 主机服务器上安装 openSUSE Leap 时,安装所有必要的虚拟化工具。在安装过程中,您将看到 系统角色 屏幕。

System Role screen
图 6.1: 系统角色屏幕

在这里,您可以选择 KVM 虚拟化主机Xen 虚拟化主机 角色。在 openSUSE Leap 安装过程中,将自动执行适当的软件选择和设置。

Tip
提示

两种虚拟化系统角色都会创建一个专用的 /var/lib/libvirt 分区,并启用 firewalld 和 Kdump 服务。

6.2.2 运行 YaST 虚拟化 模块 编辑源文件

根据 VM 主机服务器上 openSUSE Leap 安装的范围,您的系统可能未安装任何虚拟化工具。当使用 YaST 虚拟化 模块配置超visor 时,它们会自动安装。

Tip
提示

YaST 虚拟化 模块包含在 yast2-vm 包中。在安装虚拟化组件之前,请验证它是否已安装在 VM 主机服务器上。

过程 6.1: 安装 KVM 环境

要安装 KVM 虚拟化环境和相关工具,请按以下步骤操作

  1. 启动 YaST 并选择 虚拟化 › 安装 Hypervisor 和工具

  2. 选择 KVM 服务器 以进行 QEMU 和 KVM 环境的最小安装。如果希望使用基于 libvirt 的管理堆栈,请选择 KVM 工具。使用 接受 确认。

  3. YaST 提供自动在 VM 主机服务器上配置网络桥接。它确保 VM 客户机的适当网络功能。通过选择 同意这样做,否则选择

  4. 设置完成后,您可以开始创建和配置 VM 客户机。无需重新启动 VM 主机服务器。

过程 6.2: 安装 Xen 环境

要安装 Xen 虚拟化环境,请按以下步骤操作

  1. 启动 YaST 并选择虚拟化 › 安装 Hypervisor 和工具

  2. 选择 Xen 服务器 以进行 Xen 环境的最小安装。选择 Xen 工具 以使用基于 libvirt 的管理堆栈。使用 接受 确认。

  3. YaST 提供自动在 VM 主机服务器上配置网络桥接。它确保 VM 客户机的适当网络功能。通过选择 同意这样做,否则选择

  4. 设置完成后,您需要使用 Xen 内核 重新启动机器。

    Tip
    提示:默认启动内核

    如果一切正常,请使用 YaST 将默认启动内核更改为启用 Xen 的内核。有关更改默认内核的更多信息,请参阅 参考”手册,第 12 章“启动加载程序 GRUB 2”,第 12.3 节“使用 YaST 配置启动加载程序”

6.2.3 安装特定的安装模式 编辑源文件

相关的软件包从 openSUSE Leap 软件仓库组织成 安装模式。您可以使用这些模式在已经运行的 openSUSE Leap 上安装特定的虚拟化组件。使用 zypper 安装它们

zypper install -t pattern PATTERN_NAME

要安装 KVM 环境,请考虑以下模式

kvm_server

安装带有 KVM 和 QEMU 环境的基本 VM 主机服务器。

kvm_tools

安装 libvirt 工具,用于管理和监控 KVM 环境中的 VM 客户机。

要安装 Xen 环境,请考虑以下模式

xen_server

安装基本的 Xen VM 主机服务器。

xen_tools

安装 libvirt 工具,用于管理和监控 Xen 环境中的 VM 客户机。

6.3 安装 UEFI 支持 编辑源文件

Note
注意

我们仅支持 AMD64/Intel 64 客户机上的 UEFI 安全启动。KVM 客户机通过使用 OVMF 固件支持 UEFI 安全启动。Xen HVM 客户机也支持从 OVMF 固件启动,但不支持 UEFI 安全启动。

UEFI 支持由 OVMF (开放虚拟化机器固件) 提供。要启用 UEFI 启动,首先安装 qemu-ovmf-x86_64qemu-uefi-aarch64 包,具体取决于客户机的架构。

虚拟机使用的固件是自动选择的。自动选择基于上述固件包中的 JSON 文件。 libvirt QEMU 驱动程序在加载期间解析这些文件,以了解多种固件类型的能力。然后,当用户选择固件类型和任何所需的功能(例如,对 UEFI 安全启动的支持)时,libvirt 可以找到满足用户要求的固件文件。

例如,要指定带有 UEFI 安全启动的 EFI,请使用以下配置

<os firmware='efi'>
 <loader secure='yes'/>
</os>

qemu-ovmf-x86_64 包包含以下重要的 UEFI 固件镜像。它们为 VM 客户机提供 UEFI 安全启动功能

# rpm -ql qemu-ovmf-x86_64
[...]
/usr/share/qemu/ovmf-x86_64-smm-ms-code.bin
/usr/share/qemu/ovmf-x86_64-smm-ms-vars.bin
/usr/share/qemu/ovmf-x86_64-smm-opensuse-code.bin
/usr/share/qemu/ovmf-x86_64-smm-opensuse-vars.bin
/usr/share/qemu/ovmf-x86_64-smm-suse-code.bin
/usr/share/qemu/ovmf-x86_64-smm-suse-vars.bin
[...]
  • 要为 SUSE Linux Enterprise 客户机使用 UEFI 安全启动,请使用 ovmf-x86_64-smm-suse-code.bin 固件。

  • 要为 openSUSE 客户机使用 UEFI 安全启动,请使用 ovmf-x86_64-smm-opensuse-code.bin 固件。

  • 要为 Microsoft Windows 客户机使用 UEFI 安全启动,请使用 ovmf-x86_64-smm-ms-code.bin 固件。

对于 AArch64 架构,该包名为 qemu-uefi-aarch32

# rpm -ql qemu-uefi-aarch32
[...]
/usr/share/qemu/aavmf-aarch32-code.bin
/usr/share/qemu/aavmf-aarch32-vars.bin
/usr/share/qemu/firmware
/usr/share/qemu/firmware/60-aavmf-aarch32.json
/usr/share/qemu/qemu-uefi-aarch32.bin

*-code.bin 文件是 UEFI 固件文件。*-vars.bin 文件是相应的变量存储镜像,可以用作 VM 的非易失性存储模板。 libvirt 在首次创建 VM 时将指定的 vars 模板复制到 /var/lib/libvirt/qemu/nvram/ 下的 VM 特定路径。不带 codevars 名称的文件可以用作单个 UEFI 镜像。它们不太有用,因为 UEFI 变量不会在 VM 的电源周期之间持续存在。

*-ms*.bin 文件包含在真实硬件上找到的 UEFI CA 密钥。因此,它们被配置为 libvirt 中的默认值。同样,*-suse*.bin 文件包含预安装的 SUSE 密钥。还有一组没有预安装密钥的文件。

有关详细信息,请参阅 使用 UEFI 安全启动http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt

6.4 在 KVM 中启用嵌套虚拟化 编辑源文件

Important
重要:技术预览

KVM 的嵌套虚拟化仍然是技术预览。它仅用于测试目的,不受支持。

嵌套客户机是在 KVM 客户机中运行的 KVM 客户机。在描述嵌套客户机时,我们使用以下虚拟化层

L0

运行 KVM 的裸机主机。

L1

在 L0 上运行的虚拟机。由于它可以运行另一个 KVM,因此称为 客户机超visor

L2

在 L1 上运行的虚拟机。它称为 嵌套客户机

嵌套虚拟化有很多优势。您可以在以下场景中受益于它

  • 在云环境中直接使用您选择的超visor 管理您自己的虚拟机。

  • 将超visor 及其客户虚拟机作为一个实体进行实时迁移。

    Note
    注意

    不支持嵌套 VM 客户机的实时迁移。

  • 将其用于软件开发和测试。

要临时启用嵌套,请删除模块并使用 nested KVM 模块参数重新加载它

  • 对于 Intel CPU,请运行

    > sudo modprobe -r kvm_intel && modprobe kvm_intel nested=1
  • 对于 AMD CPU,请运行

    > sudo modprobe -r kvm_amd && modprobe kvm_amd nested=1

要永久启用嵌套,请在 /etc/modprobe.d/kvm_*.conf 文件中启用 nested KVM 模块参数,具体取决于您的 CPU

  • 对于 Intel CPU,编辑 /etc/modprobe.d/kvm_intel.conf 并添加以下行

    options kvm_intel nested=1
  • 对于 AMD CPU,编辑 /etc/modprobe.d/kvm_amd.conf 并添加以下行

    options kvm_amd nested=1

当您的 L0 主机能够进行嵌套时,您可以以以下方式启动 L1 客户机

  • 使用 -cpu host QEMU 命令行选项。

  • vmx(对于 Intel CPU)或 svm(对于 AMD CPU)CPU 功能添加到 -cpu QEMU 命令行选项,这会为虚拟 CPU 启用虚拟化。

6.4.1 VMware ESX 作为客户机超visor 编辑源文件

如果您在 KVM 裸机超visor 之上使用 VMware ESX 作为客户机超visor,您可能会遇到不稳定的网络通信。此问题尤其发生在嵌套 KVM 客户机与 KVM 裸机超visor 或外部网络之间。

<cpu mode='host-model' check='partial'/>

要修复它,请修改 CPU 配置如下

[...]
<cpu mode='host-passthrough' check='none'>
 <cache mode='passthrough'/>
</cpu>
[...]
打印此页面