|Index|SUSE Linux Enterprise Server 文档|虚拟化指南|使用 libvirt 管理虚拟机|Guest 安装
适用范围 SUSE Linux Enterprise Server 15 SP7

10 Guest 安装

VM Guest 由一个包含操作系统和数据文件的映像以及一个描述 VM Guest 虚拟硬件资源的配置文件构成。VM Guest 托管在 VM 主机服务器上并受其控制。本节提供有关安装 VM Guest 的概括说明。有关支持的 VM Guest 列表,请参见第 7 章 “虚拟化限制和支持”。

与运行操作系统需要满足的要求相比,虚拟机几乎没有什么要求。如果操作系统未根据虚拟机主机环境进行优化,将只能以全虚拟化模式在硬件辅助虚拟化计算机硬件上运行,并需要加载特定的设备驱动程序。提供给 VM Guest 的硬件取决于主机的配置。

您应该了解与在多个虚拟机上运行单个已许可操作系统副本相关的任何许可问题。有关详细信息,请查阅操作系统许可协议。

10.1 基于 GUI 的 Guest 安装

提示
提示:更改新虚拟机的默认选项

可以更改在创建新虚拟机时要应用的默认值。例如,要将 UEFI 设置为新虚拟机的默认固件类型,请从虚拟机管理器的主菜单中选择编辑 › 首选项,单击新建虚拟机,然后将 UEFI 设置为默认固件。

指定新 VM 的默认选项
图 10.1︰ 指定新 VM 的默认选项

新建虚拟机向导将帮助您完成创建虚拟机和安装其操作系统需执行的步骤。要启动该向导,请打开虚拟机管理器并选择文件 › 新建虚拟机。或者,启动 YaST 并选择虚拟化 › 创建虚拟机。

  1. 从 YaST 或虚拟机管理器中启动新建虚拟机向导。

  2. 选择安装源 — 本地可用的媒体或网络安装源。要从现有映像安装 VM Guest,请选择导入现有磁盘映像。

    在运行 Xen 超级管理程序的 VM 主机服务器上,您可以选择是要安装半虚拟化 Guest 还是全虚拟化 Guest。您可以在体系结构选项下选择相应的选项。根据此项选择,并非所有安装选项均可用。

  3. 根据在上一步中所做的选择,您需要提供以下数据:

    本地安装媒体(ISO 映像或 CDROM)

    在 VM 主机服务器上指定包含安装数据的 ISO 映像的路径。如果该映像是作为 libvirt 存储池中的卷提供的,您也可以使用浏览来选择。有关详细信息,请访问 第 13 章 “高级存储主题”。

    或者,选择已插入到 VM 主机服务器光驱中的物理 CD-ROM 或 DVD。

    网络安装(HTTP、HTTPS 或 FTP)

    提供指向安装源的 URL。有效的 URL 前缀包括 ftp://、http:// 和 https:// 等。

    在 URL 选项下,提供自动安装文件(例如 AutoYaST 或 Kickstart)的路径以及内核参数。提供 URL 后,应该就会自动正确检测到操作系统。如果情况并非如此,请取消选择基于安装媒体自动检测操作系统,并手动选择操作系统类型和版本。

    导入现有磁盘映像

    要从现有映像安装 VM Guest,您需要在 VM 主机服务器上指定该映像的路径。如果该映像是作为 libvirt 存储池中的卷提供的,您也可以使用浏览来选择。有关详细信息,请访问 第 13 章 “高级存储主题”。

    手动安装

    如果您要创建虚拟机,手动配置其组件并在稍后安装其操作系统,则适合使用这种安装方法。要将 VM 调整为特定的产品版本,请开始键入版本名称(例如 sles),然后在出现匹配项时选择所需的版本。

  4. 选择新虚拟机的内存大小和 CPU 数量。

  5. 如果在第一步中选择了导入现有映像,则会省略此步骤。

    设置 VM Guest 的虚拟硬盘。创建新磁盘映像,或者从存储池中选择一个现有的磁盘映像(有关详细信息,请参见第 13 章 “高级存储主题”)。如果您选择创建磁盘,将会创建一个 qcow2 映像,该映像默认存储在 /var/lib/libvirt/images 下。

    设置磁盘是可选操作。例如,如果您直接从 CD 或 DVD 运行实时系统,可以通过停用为此虚拟机启用存储来省略此步骤。

  6. 在向导的最后一个屏幕上指定虚拟机的名称。如果您希望能够查看和更改虚拟化硬件选择,请选中在安装之前自定义配置。在网络选择下指定网络设备。使用网桥设备时,系统会预先填充主机上的第一个网桥。要使用其他网桥,请在文本框中手动更新为该网桥名称。

    单击完成。

  7. (可选) 如果您在上一步中保留了默认设置,则会开始安装。如果您选择了在安装之前自定义配置,会打开 VM Guest 配置对话框。有关配置 VM Guest 的详细信息,请参见第 14 章 “使用虚拟机管理器配置虚拟机”。

    完成配置后,单击开始安装。

提示
提示:将组合键传递给虚拟机

安装将在一个虚拟机管理器控制台窗口中开始。某些组合键(例如 Ctrl–Alt–F1)会被 VM 主机服务器识别,但不会传递给虚拟机。虚拟机管理器提供“粘滞键”功能来绕过 VM 主机服务器。按 Ctrl、Alt 或 Shift 三次使该键成为粘滞键,然后按组合键中剩余的键便可将组合键传递给虚拟机。

例如,要将 Ctrl–Alt–F2 传递给 Linux 虚拟机,请按 Ctrl 三次,然后按 Alt–F2。也可以按 Alt 三次,然后按 Ctrl–F2。

在安装 VM Guest 期间以及安装之后,都可以在虚拟机管理器中使用粘滞键功能。

10.1.1 为虚拟机配置 PXE 引导

PXE 引导使虚拟机能够通过网络从安装媒体引导,而无需从物理媒体或安装磁盘映像进行引导。有关设置 PXE 引导环境的更多细节,请参见第 18 章 “准备网络引导环境”。

要使您的 VM 从 PXE 服务器引导,请执行以下步骤:

  1. 按照第 10.1 节 “基于 GUI 的 Guest 安装”中所述启动安装向导。

  2. 选择手动安装方法。

  3. 按照向导操作到最后一步,然后选中在安装之前自定义配置。单击完成确认。

  4. 在自定义屏幕上,选择引导选项。

  5. 检查引导设备顺序,然后选择启用引导菜单。

    • 要保留默认引导选项 VirtIO 磁盘,请单击应用进行确认。

    • 要强制虚拟机使用 PXE 作为默认引导选项,请执行以下作:

      1. 在引导菜单配置中选择 NIC 设备。

      2. 使用右侧的箭头标志将其移动到顶部。

      3. 单击应用进行确认。

  6. 单击开始安装以开始安装。现在按 Esc 进入引导菜单,然后选择 1. iPXE。如果正确配置了 PXE 服务器,PXE 菜单屏幕将会显示。

10.2 使用 virt-install 从命令行安装

virt-install 是个命令行工具,可帮助您使用 libvirt 库创建新虚拟机。如果您无法使用图形用户界面,或需要自动化虚拟机创建过程,此工具十分有用。

virt-install 是个复杂的脚本,其中包含大量命令行开关。下面是必需的开关。有关详细信息,请参见 virt-install (1) 的手册页。

一般选项
  • --name VM_GUEST_NAME:指定新虚拟机的名称。该名称必须在同一连接上超级管理程序已知的所有 Guest 中保持唯一。该名称用于创建和命名 Guest 的配置文件,您可以通过 virsh 使用该名称来访问 Guest。该名称可以包含字母数字和 _-.:+ 字符。

  • --memory REQUIRED_MEMORY:以 MB 为单位指定分配给新虚拟机的内存量。

  • --vcpus NUMBER_OF_CPUS:指定虚拟 CPU 数量。要获得最佳性能,虚拟处理器数量应小于或等于物理处理器数量。

虚拟化类型
  • --paravirt:安装半虚拟化 Guest。如果 VM 主机服务器支持半虚拟化和全虚拟化,这就是默认设置。

  • --hvm:安装全虚拟化 Guest。

  • --virt-type HYPERVISOR:指定超级管理程序。支持的值为 kvm 或 xen。

Guest 存储空间

指定 --disk、--filesystem 或 --nodisks 作为新虚拟机的存储类型。例如,--disk size=10 会在超级管理程序的默认映像位置创建 10 GB 磁盘,并将此磁盘用于 VM Guest。--filesystem /export/path/on/vmhost 指定 VM 主机服务器上要导出到 Guest 的目录。--nodisks 会安装没有本地存储空间的 VM Guest(适合使用实时 CD 的情形)。

安装方法

使用 --location、--cdrom、--pxe、--import 或 --boot 指定安装方法。

访问安装

使用 --graphics VALUE 选项指定如何访问安装。SUSE Linux Enterprise Server 支持值 vnc 或 none。

如果使用 VNC,virt-install 将尝试启动 virt-viewer。如果 virt-viewer 未安装或无法运行,请使用您偏好的查看器手动连接到 VM Guest。要明确阻止 virt-install 启动查看器,请使用 --noautoconsole。要定义用于访问 VNC 会话的口令,请使用以下语法:--graphics vnc,password=PASSWORD。

如果您使用 --graphics none,可以通过操作系统支持的服务(例如 SSH 或 VNC)访问 VM Guest。请参见操作系统安装手册了解如何在安装系统中设置这些服务。

传递内核和 initrd 文件

可以直接指定安装程序的内核和 Initrd,例如,指定来自网络来源的内核和 Initrd。要设置网络来源,请参见第 17.4 节 “手动设置 HTTP 储存库”。

要传递其他引导参数,请使用 --extra-args 选项。此选项可用于指定网络配置。有关详细信息,请参见 第 8 章 “引导参数”。

例 10.1︰ 从 HTTP 服务器加载内核和 initrd
# virt-install --location "http://example.tld/REPOSITORY/DVD1/" \
--extra-args="textmode=1" --name "SLES15" --memory 2048 --virt-type kvm\
--connect qemu:///system --disk size=10 --graphics vnc \
--network network=vnet_nated
启用控制台

默认不会对使用 virt-install 安装的新虚拟机启用控制台。要启用控制台,请如以下示例所示使用 --extra-args="console=ttyS0 textmode=1":

> virt-install --virt-type kvm --name sles12 --memory 1024 \
 --disk /var/lib/libvirt/images/disk1.qcow2 --os-variant sles12
 --extra-args="console=ttyS0 textmode=1" --graphics none

安装完成后,VM 映像中的 /etc/default/grub 文件将会更新,在 GRUB_CMDLINE_LINUX_DEFAULT 行中包含 console=ttyS0 选项。

使用 UEFI 安全引导
注意
注意

SUSE 仅支持在 AMD64/Intel 64 KVM Guest 上使用 UEFI 安全引导。Xen HVM Guest 支持使用 UEFI 固件引导,但不支持 UEFI 安全引导。

默认情况下,使用 virt-install 安装的新虚拟机会配置传统 BIOS。您可以通过 --boot firmware=efi 将这些虚拟机配置为使用 UEFI。系统会选择支持 UEFI 安全引导并已注册 Microsoft 密钥的固件。如果不需要安全引导,可以使用 --boot firmware=efi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no 选项来选择不支持安全引导的 UEFI 固件。

也可以明确指定 UEFI 固件映像。有关为虚拟机使用 UEFI 的高级信息和示例,请参见第 10.3.1 节 “高级 UEFI 配置”。

例 10.2︰ virt-install 命令行示例

以下命令行示例将创建带有 virtio 加速磁盘和网卡的新 SUSE Linux Enterprise 15 SP2 虚拟机。它将创建新的 10 GB qcow2 磁盘映像作为存储空间,源安装媒体为主机 CD-ROM 驱动器。此命令行使用 VNC 图形,并会自动启动图形客户端。

KVM
> virt-install --connect qemu:///system --virt-type kvm \
--name sle15sp2 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--os-variant sle15sp2
Xen
> virt-install --connect xen:// --virt-type xen --hvm \
--name sle15sp2 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--os-variant sle15sp2

10.3 高级 Guest 安装方案

本节提供有关超出了正常安装范围的操作(例如手动配置 UEFI 固件、使用内存气球和安装附加产品)的说明。

10.3.1 高级 UEFI 配置

虚拟机使用的 UEFI 固件由 OVMF(开放虚拟机固件)提供。qemu-ovmf-x86_64 软件包提供适用于 AMD64/Intel 64 VM Guest 的固件。AArch64 VM Guest 的固件由 qemu-uefi-aarch64 软件包提供。两个软件包都包含多个固件版本,每个固件版本都支持一组不同的特性和功能。这些软件包中还包含 JSON 固件描述符文件,用于描述各个固件版本的特性和功能。

libvirt 支持两种选择虚拟机 UEFI 固件的方法:自动和手动。如果使用自动选择方法,libvirt 将根据用户指定的一组可选功能选择固件。如果未明确指定功能,libvirt 将选择已启用安全引导并已注册 Microsoft 密钥的固件。使用手动选择方法时,必须明确指定固件的完整路径和任何可选设置。用户可以引用 JSON 描述符文件来查找满足其要求的固件。

提示
提示

目录 /usr/share/qemu/firmware 包含 libvirt 使用的所有 JSON 文件。此文件提供有关固件的详细信息,包括功能的功能和特性。

使用 virt-install 时,可以通过为 boot 选项指定 firmware=efi 参数(例如,--boot firmware=efi)来启用自动固件选择。可以通过请求添加或删除固件功能来影响选择过程。以下示例演示了如何在禁用 UEFI 安全引导的情况下自动选择固件。

> virt-install --connect qemu:///system --virt-type kvm \
--name sle15sp5 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--boot firmware=efi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no \
--os-variant sle15sp5
注意
注意

为确保永久性 VM Guest 在其生命周期内始终使用相同的固件和变量存储区,libvirt 将在 VM Guest XML 配置中记录自动选择的固件。自动选择固件是一次性活动。选择固件后,仅当 VM Guest 管理员使用手动选择固件的方法明确更改固件时,固件才会更改。

loader 和 nvram 参数用于手动选择固件。loader 是必选参数,nvram 定义可选的 UEFI 变量存储。以下示例演示了如何在启用安全引导的情况下手动选择固件。

> virt-install --connect qemu:///system --virt-type kvm \
--name sle15sp5 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--boot loader=/usr/share/qemu/ovmf-x86_64-smm-code.bin,loader.readonly=yes,loader.type=pflash,loader.secure=yes,nvram.template=/usr/share/qemu/ovmf-x86_64-smm-vars.bin \
--os-variant sle15sp5
注意
注意

libvirt 无法修改 UEFI 固件的任何特征。例如,它无法在启用了 UEFI 安全引导的固件中禁用 UEFI 安全引导,即使指定 loader.secure=no 也是如此。libvirt 将确保指定的固件可以满足任何指定的功能。例如,它将拒绝使用 loader.secure=no 禁用安全引导的配置,而是指定启用了 UEFI 安全引导的固件。

qemu-ovmf-x86_64 软件包中包含多个 UEFI 固件映像。例如,以下子集支持 SMM、UEFI 安全引导,并已注册 Microsoft、openSUSE 或 SUSE UEFI CA 密钥:

# 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
[...]

对于 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 的非易失性存储模板。首次创建 VM 时,libvirt 会将指定的 vars 模板复制到 /var/lib/libvirt/qemu/nvram/ 下每个 VM 的专属路径中。名称中不包含 code 或 vars 的文件可用作单个 UEFI 映像。它们没有太大的作用,因为每次经过 VM 关开机后,UEFI 变量都不会保存。

*-ms*.bin 文件包含存放在实际硬件上的 UEFI CA 密钥。因此,在 libvirt 中它们已配置为默认设置。同样,*-suse*.bin 文件包含预安装的 SUSE 密钥。还有一组不包含预安装密钥的文件。

有关 OVMF 的更多细节,请参见 http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt。

10.3.2 对 Windows Guest 使用内存气球

内存气球是在运行时更改 VM Guest 所用内存量的方法。KVM 和 Xen 超级管理程序都提供此方法,但需要 Guest 也支持此方法。

基于 openSUSE 和 SLE 的 Guest 支持内存气球,而 Windows Guest 需要通过虚拟机驱动程序软件包 (VMDP) 来提供气球技术。要使设置的最大内存大于为 Windows Guest 配置的初始内存,请执行以下步骤:

  1. 安装最大内存等于或小于初始值的 Windows Guest。

  2. 在 Windows Guest 中安装虚拟机驱动程序包,以提供所需的驱动程序。

  3. 关闭 Windows Guest。

  4. 将 Windows Guest 的最大内存重新设置为所需值。

  5. 再次启动 Windows Guest。

10.3.3 在安装中包含附加产品

某些操作系统(例如 SUSE Linux Enterprise Server)允许在安装过程中包含附加产品。如果附加产品安装源是通过 SUSE Customer Center 提供的,则无需进行特殊的 VM Guest 配置。如果安装源是通过 CD/DVD 或 ISO 映像提供的,则需要向 VM Guest 安装系统提供标准安装媒体映像和附加产品的映像。

如果您使用的是基于 GUI 的安装方法,请在向导的最后一步选择在安装之前自定义配置,并通过添加硬件 › 存储添加附加产品 ISO 映像。指定映像的路径,并将设备类型设置为 CD-ROM。

如果您是从命令行安装的,则需要使用 --disk 参数而不是 --cdrom 来设置虚拟 CD/DVD 驱动器。将使用第一个指定的设备进行引导。以下示例将 SUSE Linux Enterprise Server 15 连同 SUSE Enterprise Storage 扩展一起安装:

> virt-install \
 --name sles15+storage \
 --memory 2048 --disk size=10 \
 --disk /path/to/SLE-15-SP7-Full-ARCH-GM-media1.iso-x86_64-GM-DVD1.iso,device=cdrom \
 --disk /path/to/SUSE-Enterprise-Storage-VERSION-DVD-ARCH-Media1.iso,device=cdrom \
 --graphics vnc --os-variant sle15