24.7. ARM 64 の仮想化と AMD 64 および Intel 64 の仮想化の相違点
ARM 64 システム (AArch64 とも呼ばれます) 上の RHEL 10 の KVM 仮想化は、AMD64 および Intel 64 システム上の KVM とはいくつかの点で異なります。これには以下が含まれますが、以下に限定されません。
- ゲストのオペレーティングシステム
- 現在、ARM 64 仮想マシン (VM) でサポートされているゲストオペレーティングシステムは、RHEL 9 と RHEL 10 のみです。
- vCPU のホットプラグとホットアンプラグ
- 仮想 CPU (vCPU) を実行中の仮想マシンに接続すること (vCPU のホットプラグとも呼ばれます) は、現在 ARM 64 ホストではサポートされていません。さらに、AMD64 および Intel 64 ホストと同様に、実行中の仮想マシンからの vCPU の削除 (vCPU ホットアンプラグ) は、ARM 64 ではサポートされていません。
- セキュアブート
- セキュアブート機能は、ARM 64 システムではテクノロジープレビューとしてのみ利用可能です。
- マイグレーション
- 現在、ARM 64 ホスト間での仮想マシンの移行は、CPU、ファームウェア、およびメモリーページサイズが同じホスト間でのみサポートされています。
- メモリーページサイズ
ARM 64 は、現在 64 KB または 4 KB のメモリーページサイズでの仮想マシンの実行をサポートしています。ただし、ホストとゲストの両方で同じメモリーページサイズを使用する必要があります。ホストとゲストのメモリーページサイズが異なる設定はサポートされていません。
ただし、別のページサイズのカーネルをインストールすることはできます。デフォルトでは、RHEL 10 は 4 KB のメモリーページサイズを使用します。64 KB のメモリーページサイズで仮想マシンを実行する場合、ホストが 64 KB のメモリーページサイズのカーネルを使用 している必要があります。仮想マシンを作成するときは、たとえばキックスタートファイルに次のパラメーターを含めるなどして、
kernel-64k packageとともに仮想マシンをインストールする必要があります。%packages -kernel kernel-64k %end- 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 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-passthroughCPU モデルのみをサポートしています。 - PXE
Preboot Execution Environment (PXE) でのブートは、機能しますがサポート対象外です。そのため、実稼働環境では使用しないことを Red Hat は強く推奨します。
PXE ブートが必要な場合は、
virtio-net-pciネットワークインターフェイスコントローラー (NIC) でのみ可能です。- EDK2
-
ARM 64 ゲストは、
edk2-aarch64パッケージに含まれている UEFI ファームウェアを使用します。このファームウェアは、AMD64 および Intel 64 上の OVMF UEFI と同様のインターフェイスを提供し、同様の機能セットを実装します。
- kvm-clock
-
kvm-clockサービスは、ARM 64 の仮想マシンで時間管理用に設定する必要はありません。 - 周辺機器
ARM 64 システムは、AMD64 および Intel 64 デバイスとは部分的に異なる周辺機器のセットをサポートします。
- PCIe トポロジーのみがサポートされます。
-
ARM 64 システムは、
virtio-*-pciドライバーを使用してvirtioデバイスをサポートします。したがって、virtio-pciデバイスのみがサポートされます。 -
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などのエミュレートされたネットワークデバイス。
- ネストされた仮想化
- 現在、ARM 64 ホストではネストされた仮想マシンを作成できません。
- v2v および p2v
-
virt-v2vユーティリティーおよびvirt-p2vユーティリティーは、AMD64 および Intel 64 のアーキテクチャーでのみ対応しており、ARM 64 では提供されません。