6 安装虚拟化组件 #
可通过两种方式安装运行 VM 主机服务器所需的虚拟化工具:
在安装主机操作系统期间选择特定的系统角色。
在安装主机操作系统后运行相应的 YaST 模块。
6.1 指定系统角色 #
您可以在安装主机 SUSE Linux Enterprise Server 的过程中安装所需的全部虚拟化工具。在执行安装步骤(参见第 8 章 “安装步骤”)期间,您会看到 屏幕。
在此屏幕中,您可以选择
或 角色。在安装操作系统期间,系统会自动执行相应软件的选择和设置。
这两个虚拟化系统角色都会创建专用的 /var/lib/libvirt
分区,并启用防火墙和 Kdump 服务。
6.2 运行 yast2-vm 模块 #
根据安装范围,可能不会在您的系统上安装任何虚拟化工具。使用 YaST 模块yast2-vm。
› 配置超级管理程序时,会自动安装这些工具。如果 YaST 中未提供此模块,请安装软件包6.2.1 安装 KVM #
要安装 KVM 和 KVM 工具,请执行以下操作:
确认是否已安装 yast2-vm 软件包。此软件包是 YaST 的配置工具,可以简化超级管理程序的安装过程。
启动 YaST 并选择
› 。选择
以安装最少量的 QEMU 工具。如果还需要基于libvirt
的管理堆栈,请选择 。使用 确认。要为 VM Guest 启用正常网络功能,建议使用网桥。YaST 会建议自动在 VM 主机服务器上配置网桥。如果您同意执行此操作,请选择
,否则请选择 。安装完成后,您便可以开始设置 VM Guest。不需要重引导 VM 主机服务器。
6.2.2 安装 Xen #
要安装 Xen 和 Xen 工具,请执行以下操作:
启动 YaST 并选择
› 。选择
以安装最少量的 Xen 工具。如果还需要基于libvirt
的管理堆栈,请选择 。单击 确认。要为 VM Guest 启用正常网络功能,建议使用网桥。YaST 会建议自动在 VM 主机服务器上配置网桥。如果您同意执行此操作,请选择
,否则请选择 。安装完成后,您需使用 Xen 内核重引导计算机。
提示:默认引导内核如果一切按预期进行,请使用 YaST 更改默认引导内核,并将支持 Xen 的内核设置为默认内核。有关更改默认内核的详细信息,请参见第 14.3 节 “使用 YaST 配置引导加载程序”。
6.3 模式 #
可以使用 Zypper 和模式来安装虚拟化软件包。运行 zypper in -t pattern
PATTERN 命令。可用模式包括:
- KVM
kvm_server
:为 KVM VM 主机服务器设置用于进行管理的 QEMU 工具kvm_tools
:安装用于管理和监视 VM Guest 的libvirt
工具
- Xen
xen_server
:为 Xen VM 主机服务器设置用于进行管理的 Xen 工具xen_tools
:安装用于管理和监视 VM Guest 的libvirt
工具
6.4 安装 UEFI 支持 #
KVM Guest 使用 OVMF 固件来支持安全引导。Xen HVM Guest 也支持从 OVMF 固件引导,但不支持安全引导。
UEFI 支持由 OVMF(开放虚拟机固件)提供。要启用 UEFI 引导,请先安装 qemu-ovmf-x86_64 或 qemu-uefi-aarch64 软件包,具体取决于 Guest 的体系结构。
系统会自动选择虚拟机使用的固件。自动选择是根据
qemu-ovmf-ARCH 软件包中的 *.json 文件做出的。libvirt
QEMU 驱动程序会在装载时分析这些文件,因此知道各种固件的功能。然后,当用户选择固件类型以及任何所需功能(例如,安全引导支持)时,libvirt
能够找到符合用户要求的固件。
例如,要指定支持安全引导的 EFI,请使用以下配置:
<os firmware='efi'> <loader secure='yes'/> </os>
软件包 qemu-ovmf-ARCH 中包含以下文件:
root #
rpm -ql qemu-ovmf-x86_64
[...] /usr/share/qemu/ovmf-x86_64-ms-code.bin /usr/share/qemu/ovmf-x86_64-ms-vars.bin /usr/ddshare/qemu/ovmf-x86_64-ms.bin /usr/share/qemu/ovmf-x86_64-suse-code.bin /usr/share/qemu/ovmf-x86_64-suse-vars.bin /usr/share/qemu/ovmf-x86_64-suse.bin [...]
*-code.bin
文件是 UEFI 固件文件。*-vars.bin
文件是对应的变量储存映像,可用作每个 VM 的非易失性储存模板。首次创建 VM 时,libvirt
会将指定的 vars
模板复制到每个 VM 路径的 /var/lib/libvirt/qemu/nvram/
下。名称中不包含 code
或 vars
的文件可用作单个 UEFI 映像。它们没有太大的作用,因为每次经过 VM 关开机周期后,UEFI 变量都不会保存。
*-ms*.bin
文件包含存放在实际硬件上的 Microsoft 密钥。因此,在 libvirt
中它们已配置为默认设置。同样,*-suse*.bin
文件包含预安装的 SUSE 密钥。还有一组不包含预安装密钥的文件。
有关细节,请参见使用 UEFI 和安全引导和 http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt。
6.5 在 KVM 中启用嵌套虚拟化 #
KVM 的嵌套式虚拟化仍为技术预览版。此版本是出于测试目的提供的,我们不提供相关支持。
嵌套式 Guest 是 KVM Guest 中运行的 KVM Guest。在描述嵌套式 Guest 时,我们会用到以下虚拟化层:
- L0
运行 KVM 的裸机主机。
- L1
在 L0 上运行的虚拟机。由于它可以在另一个 KVM 上运行,因此称为 Guest 超级管理程序。
- L2
在 L1 上运行的虚拟机。称为嵌套式 Guest。
嵌套式虚拟化具有诸多优势。它可在以下场景中为您提供便利:
在云环境中直接使用所选的超级管理程序管理您自己的虚拟机。
将超级管理程序及其 Guest 虚拟机作为单个实体进行实时迁移。
使用嵌套式虚拟化进行软件开发和测试。
要暂时启用嵌套功能,请去除该模块,然后使用 nested
KVM 模块参数重新装载该模块:
对于 Intel CPU,请运行:
tux >
sudo
modprobe -r kvm_intel && modprobe kvm_intel nested=1对于 AMD CPU,请运行:
tux >
sudo
modprobe -r kvm_amd && modprobe kvm_amd nested=1
要永久启用嵌套功能,请根据您的 CPU,在 /etc/modprobe.d/kvm_*.conf
文件中启用 nested
KVM 模块参数:
对于 Intel CPU,请编辑
/etc/modprobe.d/kvm_intel.conf
并添加下面一行:options kvm_intel nested=Y
对于 AMD CPU,请编辑
/etc/modprobe.d/kvm_amd.conf
并添加下面一行:options kvm_amd nested=Y
如果 L0 主机能够嵌套,则您可以通过以下方式之一启动 L1 Guest:
使用
-cpu host
QEMU 命令行选项。将
vmx
(对于 Intel CPU)或svm
(对于 AMD CPU)CPU 功能添加到-cpu
QEMU 命令行选项,用于启用虚拟 CPU 的虚拟化。