22.6. ARM 64 上的虚拟化与 AMD64 和 Intel 64 上的虚拟化有何不同
ARM 64 系统上的 RHEL 10 中的 KVM 虚拟化(也称为 AArch64)与在几个方面 AMD64 和 Intel 64 系统上的 KVM 不同。这包括但不限于:
- 客户机操作系统
- 目前 ARM 64 虚拟机(VM)上唯一支持的客户机操作系统是 RHEL 9 和 RHEL 10。
- vCPU 热插拔
- 目前,ARM 64 主机不支持将虚拟 CPU (vCPU)附加到正在运行的虚拟机(也称为 vCPU 热插拔)。另外,与 AMD64 和 Intel 64 主机类似,ARM 64 上不支持从正在运行的虚拟机中移除 vCPU (vCPU 热拔)。
- SecureBoot
- SecureBoot 功能在 ARM 64 系统上不提供。
- Migration
- 目前,仅在具有相同 CPU 和相同内存页面大小的主机间支持在 ARM 64 主机间迁移虚拟机。
- Memory page sizes
ARM 64 目前支持运行具有 64 KB 或 4 KB 内存页大小的虚拟机,但主机和客户机必须使用相同的内存页大小。不支持主机和客户机具有不同的内存页大小配置。
默认情况下,RHEL 10 使用 4 KB 内存页面大小。如果要运行具有 64 KB 内存页面大小的虚拟机,您的主机 必须使用 64 KB 内存页面大小的内核。在创建虚拟机时,您必须安装
kernel-64k 软件包
,例如,通过在 kickstart 文件中包括以下参数:%packages -kernel kernel-64k %end
%packages -kernel kernel-64k %end
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 巨页
具有 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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果这个命令的输出中包含
sve
或其退出代码是 0,则您的 CPU 支持 SVE。打开您要修改的虚拟机的 XML 配置:
virsh edit vm-name
# virsh edit vm-name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
<cpu>
元素,类似如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个示例明确启用了 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-pci
设备。 -
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 上不提供。