24.6. ARM 64 上的虚拟化与 AMD64 和 Intel 64 上的虚拟化有何不同
ARM 64 系统上 RHEL 9 中的 KVM 虚拟化(也称为 AArch64)与 AMD64 和 Intel 64 系统上的 KVM 在许多方面不同。这包括但不限于:
- 客户机操作系统
- ARM 64 虚拟机(VM)中唯一支持的客户机操作系统是 RHEL 9。
- Web 控制台管理
- RHEL 9 web 控制台中虚拟机管理 的某些功能在 ARM 64 硬件上无法正常工作。
- vCPU 热插和热拔
- 在 ARM 64 主机上不支持将虚拟 CPU (vCPU)附加到正在运行的虚拟机(也称为 vCPU 热插)。另外,与 AMD64 和 Intel 64 主机类似,ARM 64 上不支持从正在运行的虚拟机中移除 vCPU (vCPU 热拔)。
- SecureBoot
- SecureBoot 功能在 ARM 64 系统上不提供。
- Migration
- 目前不支持在 ARM 64 主机之间迁移虚拟机。
- Memory page sizes
ARM 64 目前仅支持运行具有 64 KB 内存页大小的虚拟机,且仅在具有 64 KB 内存页大小的主机上。目前在主机或客户机中不支持 4 KB 页大小。
要在 ARM 64 上成功创建虚拟机,您的主机必须 使用 64 KB 内存页大小的内核 ,并且子创建虚拟机时,您必须使用
kernel-64k 软件包
安装它,例如通过在 kickstart 文件中包含以下参数:%packages -kernel kernel-64k %end
- 巨页
具有 64 KB 内存页大小的 ARM 64 主机支持具有以下大小的大内存页:
- 2 MB
- 512 MB
16 GB
当您在 ARM 64 主机上使用透明巨页(THP)文件系统时,它只支持 512 MB 巨页。
- SVE
ARM 64 架构提供 Scalable Vector Expansion (SVE) 功能。如果主机支持该功能,在虚拟机中使用 SVE 可以在这些虚拟机中提高向量数计算和字符串操作的速度。
在支持它的主机 CPU 上默认启用了 SVE 的基线级别。但是,红帽建议明确配置每个向量长度。这确保虚拟机只能在兼容的主机上启动。要做到这一点:
验证您的 CPU 是否有 SVE 功能:
# grep -m 1 Features /proc/cpuinfo | grep -w sve Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm fcma dcpop sve
如果这个命令的输出中包含
sve
或其退出代码是 0,则您的 CPU 支持 SVE。打开您要修改的虚拟机的 XML 配置:
# virsh edit vm-name
编辑
<cpu>
元素,类似如下:<cpu mode='host-passthrough' check='none'> <feature policy='require' name='sve'/> <feature policy='require' name='sve128'/> <feature policy='require' name='sve256'/> <feature policy='disable' name='sve384'/> <feature policy='require' name='sve512'/> </cpu>
这个示例明确启用了 SVE 向量长度 128、256 和 512,并明确禁用了向量长度 384。
- CPU 型号
-
ARM 64 上的虚拟机目前仅支持
host
CPU 型号。 - 保存和恢复虚拟机
- 目前在 ARM 64 主机上不支持 保存和恢复 虚拟机。
- PXE
在预引导执行环境(PXE)功能中引导,但不支持,红帽强烈建议不要在生产环境中使用它。
如果您需要 PXE 引导,则只能使用
virtio-net-pci
网络接口控制器(NIC)。另外,需要使用虚拟机 UEFI 平台固件(带有edk2-aarch64
软件包安装的)内置VirtioNetDxe
驱动程序进行 PXE 引导。请注意,不支持 iPXE 选项 ROM。- 设备内存
- 设备内存功能,如双列直插式内存模块(DIMM)和非易失性 DIMM (NVDIMM)在 ARM 64 上无法工作。
- pvpanic
-
ARM 64 上目前不支持 pvpanic 设备。确保从 ARM 64 上客户机 XML 配置的
<devices>
部分中删除<panic>
元素,因为它的存在可能导致虚拟机无法引导。 - OVMF
ARM 64 主机上的虚拟机无法使用 AMD64 和 Intel 64 上使用的 OVMF UEFI 固件,其包含在
edk2-ovmf
软件包中。相反,这些虚拟机使用edk2-aarch64
软件包中包含的 UEFI 固件,它提供类似的接口并实施类似的功能集。具体来说,
edk2-aarch64
提供了一个内置的 UEFI shell,但不支持以下功能:- SecureBoot
- 管理模式
- kvm-clock
-
不需要为 ARM 64 上虚拟机中的时间管理配置
kvm-clock
服务。 - 外设设备
ARM 64 系统支持与 AMD64 和 Intel 64 设备部分不同的外围设备的集合。
- 仅支持 PCIe 拓扑。
-
ARM 64 系统通过使用
virtio-*-pci
驱动程序来支持virtio
设备。另外,不支持virtio-iommu
和virtio-input
设备。 -
virtiofs
功能仅作为技术预览提供,因此不被支持。 -
virtio-gpu
驱动程序只支持图形安装。 -
ARM 64 系统只支持
usb-mouse
和usb-tablet
设备用于图形安装。不支持其他 USB 设备、USB passthrough 或 USB 重定向。 - 使用虚拟功能 I/O (VFIO)的设备分配只支持 NIC(物理和虚拟功能)。
- 模拟设备
ARM 64 上不支持以下设备:
- 模拟声音设备,如 ICH9、ICH6 或 AC97。
- 模拟图形卡,如 VGA 卡。
-
模拟网络设备,如
rtl8139
。
- GPU 设备
- ARM 64 系统上不支持 分配 GPU 设备。
- 串行控制台配置
-
当在虚拟机上设置串行控制台时,请使用
console=ttyAMA0
内核选项,而不是使用grubby
实用程序的console=ttyS0
。 - 不可屏蔽中断
- 目前无法向 ARM 64 虚拟机发送不可屏蔽中断(NMI)。
- 嵌套虚拟化
- 目前无法在 ARM 64 主机上创建嵌套虚拟机。
- v2v 和 p2v
-
virt-v2v
和virt-p2v
工具只在 AMD64 和 Intel 64 构架上被支持,因此在 ARM 64 上不提供。