24.7. ARM 64 上的虚拟化与 AMD64 和 Intel 64 上的虚拟化有何不同
ARM 64 系统上的 RHEL 9 中的 KVM 虚拟化(也称为 AArch64)与在几个方面 AMD64 和 Intel 64 系统上的 KVM 不同。这包括但不限于:
- 客户机操作系统
- ARM 64 虚拟机(VM)中唯一支持的客户机操作系统是 RHEL 9。
- vCPU 热插和热拔
- 目前,ARM 64 主机不支持将虚拟 CPU (vCPU)附加到正在运行的虚拟机(也称为 vCPU 热插)。另外,与 AMD64 和 Intel 64 主机类似,ARM 64 上不支持从正在运行的虚拟机中移除 vCPU (vCPU 热拔)。
- SecureBoot
- SecureBoot 功能在 ARM 64 系统上不提供。
- Migration
- 目前不支持在 ARM 64 主机之间迁移虚拟机。
- 保存和恢复虚拟机
- 目前在 ARM 64 主机上不支持 保存和恢复 虚拟机。
- Memory page sizes
ARM 64 目前支持运行具有 64 KB 或 4 KB 内存页面大小的虚拟机,但主机和客户机必须使用相同的内存页面大小。不支持主机和客户机具有不同的内存页面大小的配置。
默认情况下,RHEL 9 使用 4 KB 内存页面大小。如果要运行具有 64 KB 内存页面大小的虚拟机,您的主机 必须使用 64 KB 内存页面大小的内核。在创建虚拟机时,您必须使用
kernel-64k 软件包
进行安装,例如在 kickstart 文件中包括以下参数:%packages -kernel kernel-64k %end
- 巨页
具有 64 KB 内存页大小的 ARM 64 主机支持具有以下大小的大内存页:
- 2 MB
- 512 MB
16 GB
当您在具有 64 KB 内存页面大小的 ARM 64 主机上使用透明大内存页(THP)时,它只支持 512 MB 的巨页。
带有 4 KB 内存页面大小的 ARM 64 主机支持以下巨页:
- 64 KB
- 2 MB
- 32 MB
1024 MB
当您在带有 4 KB 内存页面大小的 ARM 64 主机上使用透明大内存页(THP)时,它只支持 2 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-passthrough
CPU 模型。 - PXE
在预启动执行环境(PXE)中引导可以正常工作,但不支持,红帽强烈建议在生产环境中使用它。
如果您需要 PXE 引导,则只能使用
virtio-net-pci
网络接口控制器(NIC)。
- EDK2
ARM 64 客户机使用
edk2-aarch64
软件包中包含的 UEFI 固件,它提供了一个与 AMD64 和 Intel 64 上的 OVMF 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
设备。 -
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 设备。
- 嵌套虚拟化
- 目前无法在 ARM 64 主机上创建嵌套虚拟机。
- v2v 和 p2v
-
virt-v2v
和virt-p2v
工具只在 AMD64 和 Intel 64 构架上被支持,因此在 ARM 64 上不提供。