7 虚拟化限制和支持 #
仅当与 KVM 或 Xen 超级管理程序一起用于虚拟化时,QEMU 才受支持。TCG 加速器不受支持,即使 SUSE 产品中分发了该工具。用户切勿依赖 QEMU TCG 提供 Guest 隔离或任何安全保障。另请参见 https://qemu-project.gitlab.io/qemu/system/security.html。
7.1 体系结构支持 #
7.1.1 KVM 硬件要求 #
SUSE 支持在 AMD64/Intel 64、 AArch64、IBM Z 和 IBM LinuxONE 主机上实施 KVM 全虚拟化。
在 AMD64/Intel 64 体系结构上,KVM 是围绕 AMD* (AMD-V) 和 Intel* (VT-x) CPU 中包含的硬件虚拟化功能设计的。它支持芯片组和 PCI 设备的虚拟化功能,例如 I/O 内存映射单元 (IOMMU) 和单根 I/O 虚拟化 (SR-IOV)。您可以使用以下命令测试您的 CPU 是否支持硬件虚拟化:
>
egrep '(vmx|svm)' /proc/cpuinfo如果此命令未返回任何输出,则表示您的处理器不支持硬件虚拟化,或者已在 BIOS 或固件中禁用此功能。
以下网站指出了支持硬件虚拟化的 AMD64/Intel 64 处理器:https://ark.intel.com/Products/VirtualizationTechnology(针对 Intel CPU),以及 https://products.amd.com/(针对 AMD CPU)。
在 Arm 体系结构上,Armv8-A 处理器支持虚拟化。
在 Arm 体系结构上,仅支持通过 CPU 型号
host
(在虚拟机管理器或libvirt
中名为host-passthrough
)运行 QEMU/KVM。
仅当 CPU 硬件虚拟化功能可用时,才会加载 KVM 内核模块。
VM 主机服务器的一般性最低硬件要求与第 2.1 节 “硬件要求”中概述的相同。不过,对于每个虚拟化的 Guest 都需要提供额外的 RAM。此额外 RAM 量应至少与物理安装所需的 RAM 量相同。另外,强烈建议为每个运行中的 Guest 至少配备一个处理器核心或超线程。
AArch64 是个持续发展的平台。它不遵循传统的标准与合规性认证计划来实现与操作系统和超级管理程序的互操作性。请让您的供应商提供针对 SUSE Linux Enterprise Server 的支持声明。
不支持在 POWER 平台上运行 KVM 或 Xen 超级管理程序。
7.1.2 Xen 硬件要求 #
SUSE 支持 AMD64/Intel 64 上的 Xen。
7.2 超级管理程序限制 #
每个服务包 (SP) 的Release Notes中都概述了 Xen 和 KVM 的新功能和虚拟化限制。
仅支持 SUSE Linux Enterprise Server 官方储存库中包含的软件包。相反,packagehub 中提供的所有可选子软件包和插件(对于 QEMU 为 libvirt
)均不受支持。
有关每个主机的最大虚拟 CPU 总数,请参见第 4.5.1 节 “分配 CPU”。虚拟 CPU 总数应与可用物理 CPU 数成正比。
我们已从 32 位版本的 SUSE Linux Enterprise Server 11 SP2 中去除虚拟化主机设施。32 位 Guest 不受影响,可以使用提供的 64 位超级管理程序为其提供全面支持。
7.2.1 KVM 限制 #
在 AMD64/Intel 64 上运行 Linux Guest 的 SUSE Linux Enterprise Server 15 SP6 主机所支持(已经过测试)虚拟化的限制。对于其他操作系统,请咨询具体的供应商。
每个 VM 的最大虚拟 CPU 数 |
768 |
每个 VM 的最大内存 |
4 TiB |
KVM 主机限制与 SUSE Linux Enterprise Server 相同(请参见发行说明的相应章节),但以下限制除外:
每个 VM 的最大虚拟 CPU 数:请参见 第 4.5.1 节 “分配 CPU” 上的《Virtualization Best Practices Guide》中有关过量分配物理 CPU 的建议。虚拟 CPU 总数应与可用物理 CPU 数成正比。
7.2.2 Xen 限制 #
每个 VM 的最大虚拟 CPU 数 |
64 (HVM Windows Guest)、128(可信 HVM)或 512 (PV) |
每个 VM 的最大内存 |
2 TiB(64 位 Guest)、16 GiB(具有 PAE 的 32 位 Guest) |
最大物理 CPU 总数 |
1024 |
每个主机的最大虚拟 CPU 总数 |
请参见《虚拟化最佳实践指南》中有关物理 CPU 过量使用的内容(sec-vt-best-perf-cpu-assign)。虚拟 CPU 总数应与可用的物理 CPU 成正比。 |
最大物理内存 |
16 TiB |
挂起和休眠模式 |
不支持。 |
7.3 支持的主机环境(超级管理程序) #
本章介绍 SUSE Linux Enterprise Server 15 SP6 支持在不同虚拟化主机(超级管理程序)上作为 Guest 操作系统运行的状态。
SUSE Linux Enterprise Server |
超级管理程序 |
---|---|
SUSE Linux Enterprise Server 12SP5 |
Xen 和 KVM(SUSE Linux Enterprise Server 15 SP6 Guest 必须使用 UEFI 引导) |
SUSE Linux Enterprise Server 15 SP3 到 SP6 |
Xen 和 KVM |
Windows Server 2016、2019、2022
您也可以在 SUSE YES certification database 中搜索。
根据相应的product lifecycle,对 SUSE 主机操作系统的支持级别为全面 L3(适用于 Guest 和主机)。
SUSE 为第三方主机环境中的 SUSE Linux Enterprise Server Guest 提供全面 L3 支持。
对主机的支持以及与 SUSE Linux Enterprise Server Guest 相关的合作必须由主机系统供应商提供。
7.4 支持的 Guest 操作系统 #
本节列出了在 SUSE Linux Enterprise Server 15 SP6 上虚拟化且适用于 KVM 和 Xen 超级管理程序的 Guest 操作系统的支持状态。
仅当 Guest 中安装了半虚拟化驱动程序时,才能通过 libvirt
/virsh
重引导 Microsoft Windows Guest。有关下载和安装 PV 驱动程序的更多细节,请参见 https://www.suse.com/products/vmdriverpack/。
SUSE Linux Enterprise Server 12SP5
SUSE Linux Enterprise Server 15 SP2、15 SP3、15 SP4、15 SP5、15 SP6
SUSE Linux Enterprise Micro 5.1、5.2、5.3、5.4、5.5、6.0
Windows Server 2016、2019
Oracle Linux 6、7、8(仅适用于 KVM 超级管理程序)
SLED 15 SP3
Windows 10/11
有关可用组合和受支持版本的列表,请参见 https://documentation.suse.com/liberty 上的 SUSE Liberty Linux 文档。对于其他情况,将为这些操作系统提供有限的支持(L2,在合理的情况下提供修复)。
从 RHEL 7.2 开始,Red Hat 去除了 Xen PV 驱动程序。
在其他组合中提供 L2 支持,但只在可行的情况下才提供修复。SUSE 会对主机操作系统(超级管理程序)提供全面支持。Guest 操作系统问题需要在相应操作系统供应商的支持下予以解决。如果修复某个问题同时涉及到主机环境和 Guest 环境,则客户需要联系 SUSE 和 Guest VM 操作系统供应商。
所有 Guest 操作系统既支持全虚拟化,也支持半虚拟化。但以下操作系统例外:Windows 系统,它们只支持全虚拟化(但可以使用 PV 驱动程序:https://www.suse.com/products/vmdriverpack/);OES 操作系统,它们只支持半虚拟化。
除非另有说明,否则所有 Guest 操作系统在 32 位和 64 位环境中均受支持。
7.4.1 半虚拟化驱动程序的提供 #
为了提升 Guest 操作系统的性能,我们将会提供半虚拟化驱动程序(如果有)。尽管这些驱动程序不是必需的,但我们强烈建议使用。
从 SUSE Linux Enterprise Server 12 SP2 开始,我们已改用 PVops 内核。我们不再使用专用的 kernel-xen 软件包:
dom0 上的 kernel-default+kernel-xen 已由 kernel-default 软件包取代。
PV domU 上的 kernel-xen 软件包已由 kernel-default 软件包取代。
HVM domU 上的 kernel-default+xen-kmp 已由 kernel-default 取代。
对于 SUSE Linux Enterprise Server 12 SP1 和更低版本(低至 10 SP4),半虚拟化驱动程序包含在专用 kernel-xen 软件包中。
半虚拟化驱动程序的提供方式如下:
- SUSE Linux Enterprise Server 12/12 SP1/12 SP2
包含在内核中
- SUSE Linux Enterprise Server 11/11 SP1/11 SP2/11 SP3/11 SP4
包含在内核中
- SUSE Linux Enterprise Server 10SP4
包含在内核中
- Red Hat
从 Red Hat Enterprise Linux 5.4 开始提供。从 Red Hat Enterprise Linux 7.2 开始,Red Hat 已去除了 PV 驱动程序。
- Windows
SUSE 开发了适用于 Windows 的基于 virtio 的驱动程序,这些驱动程序包含在虚拟机驱动程序包 (VMDP) 中。有关详细信息,请参见 https://www.suse.com/products/vmdriverpack/。
7.5 支持的 VM 迁移场景 #
SUSE Linux Enterprise Server 支持将虚拟机从一台物理主机迁移到另一台物理主机。
7.5.1 脱机迁移场景 #
SUSE 支持脱机迁移:关闭 Guest VM,然后将其迁移到运行不同 SLE 产品(从 SLE 12 到 SLE 15 SPX)的主机。对于以下主机操作系统组合,全面支持 (L3) 从一台主机的 Guest 迁移到另一台主机的 Guest:
目标 SLES 主机 | 12 SP3 | 12 SP4 | 12 SP5 | 15 GA | 15 SP1 | 15 SP2 | 15 SP3 | 15 SP4 | 15 SP5 | 15 SP6 |
---|---|---|---|---|---|---|---|---|---|---|
源 SLES 主机 | ||||||||||
12 SP3 | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
12 SP4 | ❌ | ✓ | ✓ | ✓1 | ✓ | ❌ | ❌ | ❌ | ❌ | ❌ |
12 SP5 | ❌ | ❌ | ✓ | ❌ | ✓ | ✓ | ❌ | ❌ | ❌ | ❌ |
15 GA | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ✓ | ❌ | ❌ | ❌ |
15 SP1 | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ✓ | ❌ | ❌ | ❌ |
15 SP2 | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ✓ | ❌ | ❌ |
15 SP3 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ✓ | ✓ |
15 SP4 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ✓ |
15 SP5 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ |
15 SP6 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ |
✓ |
完全兼容且完全受支持 |
✓1 |
仅支持使用 KVM 超级管理程序 |
❌ |
不支持 |
7.5.2 实时迁移场景 #
本节列出了在 SLES 上运行虚拟化时实时迁移方案的支持状态。另请参见受支持方案所要满足的第 11.7.1 节 “迁移要求”。全面支持以下主机操作系统组合(根据相应的product life cycle,支持级别为 L3)。
SUSE 始终支持在运行 SLES 的主机之间实时迁移虚拟机,但这两个 SLES 版本的服务包编号必须是连续的。例如,从 SLES 15 SP4 迁移到 SLES 15 SP5。
SUSE 致力于为以下实时迁移提供支持:在 SUSE Linux Enterprise Server 的同一主要版本中,将虚拟机从运行 LTSS 所涵盖的服务包的主机迁移到运行更新服务包的主机。例如,将虚拟机从 SLES 12 SP2 主机迁移到 SLES 12 SP5 主机。对于从 LTSS 迁移到更新的服务包的场景,SUSE 只会执行极简单的测试,建议在尝试迁移关键的虚拟机之前执行全面的现场测试。
由于工具栈不同,不支持在 SLE 11 与 SLE 12 之间实时迁移,有关更多细节,请参见 Release notes。
SLES 15 SP6 及更高版本中包含内核补丁,以及用于在产品中启用 AMD 和 Intel 机密计算技术的工具。由于此技术尚未完全准备好用于生产环境,因此它作为技术预览提供。
目标 SLES 主机 | 12 SP4 | 12 SP5 | 15 GA | 15 SP1 | 15 SP2 | 15 SP3 | 15 SP4 | 15 SP5 | 15 SP6 | 15 SP7 |
---|---|---|---|---|---|---|---|---|---|---|
源 SLES 主机 | ||||||||||
12 SP3 | ✓ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
12 SP4 | ✓ | ✓ | ✓1 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
12 SP5 | ❌ | ✓ | ❌ | ✓ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
15 GA | ❌ | ❌ | ✓ | ✓ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
15 SP1 | ❌ | ❌ | ❌ | ✓ | ✓ | ❌ | ❌ | ❌ | ❌ | ❌ |
15 SP2 | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ❌ | ❌ | ❌ | ❌ |
15 SP3 | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ❌ | ❌ | ❌ |
15 SP4 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ❌ | ❌ |
15 SP5 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ | ✓ | ❌ |
15 SP6 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✓ | ✓2 |
✓ |
完全兼容且完全受支持 |
✓1 |
仅支持使用 KVM 超级管理程序 |
✓2 |
如果有 |
❌ |
不支持 |
7.6 功能支持 #
使用嵌套虚拟化可在一个 VM 的内部运行另一个虚拟机,同时仍可利用主机的硬件加速功能。嵌套虚拟化的性能较差,并且在调试时会提高复杂性。嵌套虚拟化通常用于测试目的。在 SUSE Linux Enterprise Server 中,嵌套虚拟化是作为技术预览提供的。此版本仅用于测试,我们不提供相关支持。用户可以报告 bug,但这些 bug 的处理优先级较低。此外我们明确指出,在使用嵌套虚拟化的情况下,不支持实时迁移或者保存或恢复 VM。
复制后是一种实时迁移虚拟机的方法,旨在让 VM 尽快在目标主机上运行,并视需要随着时间的推移在后台逐步转移 VM RAM。在某些情况下,与传统的预复制方法相比,这可能是一种优化。但此方法存在一个重大的缺点:在迁移过程中发生的错误(尤其是网络故障)可能会导致整个 VM RAM 内容丢失。因此,我们建议仅在生产环境中使用预复制,如果不介意丢失 VM 状态,可将后复制用于进行测试和实验。
7.6.1 Xen 主机 (Dom0) #
Dom0
) #不支持在运行时添加或去除物理 CPU,但可以脱机添加或去除每个 VM Guest 的虚拟 CPU。
7.6.2 Guest 功能支持 #
对于实时迁移,源体系结构和目标体系结构均需要匹配;即处理器(AMD* 或 Intel*)必须相同。除非使用了 CPU ID 掩码(例如,使用 Intel FlexMigration),否则目标的处理器修订版应该与源相同或者比源更新。如果在不同系统之间移动 VM,那么这些规则适用于每一次移动。为了避免优化的代码在运行时或应用程序启动期间失败,源 CPU 和目标 CPU 需要公开相同的处理器扩展。Xen 透明地向 VM 公开物理 CPU 扩展。总而言之,Guest 可以是 32 位或 64 位,但 VHS 必须相同。
仅当使用的是 PV 驱动程序 (VMDP) 时,才支持在 Xen 和 KVM 中热插拔虚拟网络和虚拟块设备,以及收缩、恢复动态虚拟内存及调整其大小。
对于支持 Intel FlexMigration 的计算机,CPU-ID 掩码和错误引发可让您更灵活地跨 CPU 迁移。
对于 KVM,有关支持的限制、功能、建议的设置和方案的详细说明以及其他有用信息均在 kvm-supported.txt
中提供。此文件是 KVM 软件包的一部分,可在 /usr/share/doc/packages/qemu-kvm
中找到。
✓ |
完全兼容且完全受支持 |
❌ |
不支持 |
[1] | 请参见 第 11.7.1 节 “迁移要求”。 |
[2] | 不包括 NetWare Guest。 |
[3] | 请参见 https://documentation.suse.com/sles/html/SLES-amd-sev/article-amd-sev.html |