24.7. ARM 64 での仮想化が AMD64 および Intel 64 とどのように異なるか
ARM 64 システム (AArch64 とも呼ばれます) 上の RHEL 9 の KVM 仮想化は、AMD64 および Intel 64 システム上の KVM とはいくつかの点で異なります。これには以下が含まれますが、以下に限定されません。
- ゲストのオペレーティングシステム
- 現在、ARM 64 仮想マシン (VM) でサポートされているゲストオペレーティングシステムは RHEL 9 のみです。
- vCPU のホットプラグとホットアンプラグ
- 仮想 CPU (vCPU) を実行中の仮想マシンに接続すること (vCPU のホットプラグとも呼ばれます) は、現在 ARM 64 ホストではサポートされていません。さらに、AMD64 および Intel 64 ホストと同様に、実行中の仮想マシンからの vCPU の削除 (vCPU ホットアンプラグ) は、ARM 64 ではサポートされていません。
- SecureBoot
- SecureBoot 機能は、ARM 64 システムでは使用できません。
- 移行
- 現在、ARM 64 ホスト間での仮想マシンの移行はサポートされていません。
- 仮想マシンの保存および復元
- 仮想マシンの 保存と復元 は現在、ARM 64 ホストではサポートされていません。
- メモリーページサイズ
ARM 64 は、現在 64 KB または 4 KB のメモリーページサイズでの仮想マシンの実行をサポートしています。ただし、ホストとゲストの両方で同じメモリーページサイズを使用する必要があります。ホストとゲストのメモリーページサイズが異なる設定はサポートされていません。
デフォルトでは、RHEL 9 は 4 KB のメモリーページサイズを使用します。64 KB のメモリーページサイズで仮想マシンを実行する場合、ホストが 64 KB のメモリーページサイズのカーネルを使用 している必要があります。仮想マシンを作成するときは、たとえばキックスタートファイルに次のパラメーターを含めるなどして、
kernel-64k package
とともに仮想マシンをインストールする必要があります。%packages -kernel kernel-64k %end
%packages -kernel kernel-64k %end
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - huge page
メモリーページサイズが 64 KB の ARM 64 ホストでは、次のサイズのヒュージメモリーページがサポートされます。
- 2 MB
- 512 MB
16 GB
メモリーページサイズが 64 KB の ARM 64 ホストで Transparent Huge Page (THP) を使用する場合、512 MB の huge page のみがサポートされます。
メモリーページサイズが 4 KB の ARM 64 ホストでは、次のサイズのヒュージメモリーページがサポートされます。
- 64 KB
- 2 MB
- 32 MB
1024 MB
メモリーページサイズが 4 KB の ARM 64 ホストで Transparent Huge Page (THP) を使用する場合、2 MB の huge page のみがサポートされます。
- SVE
ARM 64 アーキテクチャーは、Scalable Vector Expansion (SVE) 機能を提供します。ホストがこの機能をサポートしている場合、仮想マシンで SVE を使用すると、これらの仮想マシンでのベクトル数学計算と文字列操作の速度が向上します。
SVE のベースラインレベルは、それをサポートするホスト CPU でデフォルトで有効になっています。ただし、Red Hat では、各ベクトルの長さを明示的に設定することを推奨しています。これにより、仮想マシンは互換性のあるホスト上でのみ起動できるようになります。これを行うには、以下を行います。
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
Preboot Execution Environment (PXE) でのブートは、機能しますがサポート対象外です。そのため、実稼働環境では使用しないことを Red Hat は強く推奨します。
PXE ブートが必要な場合は、
virtio-net-pci
ネットワークインターフェイスコントローラー (NIC) でのみ可能です。
- EDK2
ARM 64 ゲストは、
edk2-aarch64
パッケージに含まれている UEFI ファームウェアを使用します。このファームウェアは、AMD64 および Intel 64 上の OVMF UEFI と同様のインターフェイスを提供し、同様の機能セットを実装します。具体的には、
edk2-aarch64
は組み込みの UEFI シェルを提供しますが、次の機能はサポートしていません。- SecureBoot
- 管理モード
- kvm-clock
-
kvm-clock
サービスは、ARM 64 の仮想マシンで時間管理用に設定する必要はありません。 - 周辺機器
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 パススルー、または USB リダイレクトはサポートされていません。 - Virtual Function I/O (VFIO) を使用するデバイスの割り当ては、NIC (物理および Virtual Function) でのみサポートされます。
- エミュレートされたデバイス
次のデバイスは ARM 64 ではサポートされていません。
- ICH9、ICH6、AC97 などのエミュレートされたサウンドデバイス。
- VGA カードなどのエミュレートされたグラフィックカード。
-
rtl8139
などのエミュレートされたネットワークデバイス。
- GPU デバイス
- GPU デバイスの割り当て は、現在 ARM 64 システムではサポートされていません。
- ネストされた仮想化
- 現在、ARM 64 ホストではネストされた仮想マシンを作成できません。
- v2v および p2v
-
virt-v2v
ユーティリティーおよびvirt-p2v
ユーティリティーは、AMD64 および Intel 64 のアーキテクチャーでのみ対応しており、ARM 64 では提供されません。