付録B 複数のアーキテクチャー上での KVM 仮想化の使用

デフォルトでは、Red Hat Enterprise Linux 7 での KVM 仮想化は AMD64 および Intel 64 アーキテクチャーと互換性を維持します。しかし、Red Hat Enterprise Linux 7.5 以上では kernel-alt パッケージが導入されたため、以下のアーキテクチャーもサポートされるようになりました。
これらのアーキテクチャー上で仮想化を使用する場合、インストール、使用方法、および機能のサポートは若干 AMD64 や Intel 64 とは異なることに注意してください。詳細は、以下を参照してください。

B.1. IBM POWER Systems での KVM 仮想化の使用

Red Hat Enterprise Linux 7.5 より、IBM POWER8 Systems および IBM POWER9 Systems で KVM 仮想化がサポートされるようになりました。しかし、IBM POWER8 は kernel-alt を使用しないため、POWER8 と POWER9 のアーキテクチャーは一部異なります。

インストール

IBM POWER8 および POWER9 Systems 向けの Red Hat Enterprise Linux 7 に KVM 仮想化をインストールするには、以下を行います。
  1. カスタマーポータルのブート可能なイメージからホストシステムをインストールします。
    詳細な手順については、『Red Hat Enterprise Linux 7 インストールガイド』を参照してください。
  2. お使いのホストシステムがハイパーバイザーの要件を満たしているようにしてください。
    • お使いのマシンが適切なタイプであることを確認します。
      # grep ^platform /proc/cpuinfo
      このコマンドの出力には、サポートされる PowerNV マシンタイプで実行されていることを示す PowerNV エントリーが含まれている必要があります。
      platform        : PowerNV
    • KVM-HV カーネルモジュールをロードします。
      # modprobe kvm_hv
    • KVM-HV カーネルモジュールがロードされたことを確認します。
      # lsmod | grep kvm
      KVM-HVが正常にロードされた場合は、このコマンドの出力に kvm_hv が含まれます。
  3. 2章仮想化パッケージのインストール に記載されている仮想化パッケージの他に、qemu-kvm-ma パッケージをインストールします。

アーキテクチャーの関連事項

IBM POWER 向けの Red Hat Enterprise Linux 7.5 上の KVM 仮想化は、AMD64 や Intel 64 システムの KVM とは以下の点が異なります。
  • IBM POWER ホスト上のゲストに推奨される最低メモリー容量 の割り当ては 2GB の RAM です。
  • SPICE プロトコルは IBM POWER Systems ではサポートされていません。ゲストのグラフィカル出力を表示するには、VNCプロトコル を使用します。また、以下の仮想 グラフィクスカードデバイス のみがサポートされます。
    • vga: -vga std モードでのみサポートされ、-vga cirrus モードではサポートされません。
    • virtio-vga
    • virtio-gpu
  • 以下の仮想化機能は、AMD64 および Intel 64 ホストでは無効になっていますが、IBM POWER 上では動作します。しかし、Red Hat ではサポートしていないため、使用は推奨されません。
    • I/O スレッド
  • SMBIOS 設定は使用できません。
  • 互換モードのゲストを含む POWER8 ゲストは、以下のようなエラーで起動に失敗することがあります。
    qemu-kvm: Failed to allocate KVM HPT of order 33 (try smaller maxmem?): Cannot allocate memory
    これは、Red Hat Enterprise Linux 7.3 またはそれ以前を使用するゲストで発生する可能性が高くなります。
    この問題を解決するには、次のいずれかを実行します。
    • kvm_cma_resv_ratio=memory をホストのカーネルコマンドラインに追加して、ゲストの HPT (hashed page table) に使用できる CMA メモリープールを増やします。memory は、CMA プール用に確保する必要があるホストメモリーの割合 (パーセント) に置き換えます (デフォルト値は 5)。
    • virsh edit guestname コマンドを使用し、<maxMemory> 要素の値を下げて、ゲストの最大ホットプラグメモリーを減らします。
    • ゲストがメモリーホットプラグを許可する場合は、ゲストを Red Hat Enterprise Linux 7.4 以上に更新します。
      ゲストに対してメモリーホットプラグが有効になっていることを確認するには、ゲストの XML 設定で <maxMemory> 要素と NUMA トポロジー 設定を見つけます。
      # virsh dumpxml guestname | grep maxMemory
      <maxMemory slots='16' unit='KiB'>16777216</maxMemory>
      # virsh dumpxml guestname | grep cell
      <cell id='0' cpus='0-2' memory='1048576' unit='KiB'/>
      これらの要素が XML 設定に存在しない場合、Red Hat Enterprise Linux 7.4 にアップデートしても問題は修正されません。
  • 現在、THP (transparent huge page) を利用しても IBM POWER8 ゲストのパフォーマンスは著しく改善されません。
    また、IBM POWER8 Systems の静的な ヒュージページ のサイズは 16MiB と 16GiB で、IBM POWER9 の AMD64 および Intel64 は 2MiB および 1GiB であることに注意してください。そのため、ゲストに静的なヒュージページが設定されている場合、ゲストを IBM POWER8 ホストから IBM POWER9 ホストに移行できません。
    さらに、IBM POWER8 ゲストで 静的なヒュージページまたは THP を使用 できるようにするには、最初に ホスト上でヒュージページを設定 する必要があります。
  • AMD64 および Intel64 システムでサポートされる仮想 周辺デバイス の一部は、IBM POWER Systems ではサポートされず、異なるデバイスが代替としてサポートされます。
    • ioh3420xio3130-downstream デバイスを含む PCI-E 階層に使用されるデバイスはサポートされません。この機能の代替として、spapr-pci-host-bridge デバイスによって提供される複数の独立した PCI ルートブリッジが使用されます。
    • UHCI および EHCI PCI コントローラはサポートされません。代わりに OHCI および XHCI コントローラを使用してください。
    • 仮想 IDE CD-ROM (ide-cd) および仮想 IDE ディスク (ide-hd) などの IDE デバイスはサポートされません。代わりに virtio-scsi デバイスを使用してください。
    • エミュレートされた PCI の NIC (rtl8139) はサポートされません。代わりに virtio-net を使用してください。
    • intel-hdahda-outputAC97 などのサウンドデバイスはサポートされません。
    • usb-redirusb-tablet などの USB リダイレクトデバイスはサポートされません。
  • kvm-clock サービスを IBM POWER Systems の 時間管理 のために設定する必要はありません。
  • pvpanic デバイスは IBM POWER Systems ではサポートされません。しかし、このアーキテクチャーではデフォルトで有効になっている同等の機能を使用できます。この機能をゲストで有効にするには、<on_crash> 設定要素で preserve の値を使用します。さらに、<devices> セクションの <panic> 要素を削除するようにしてください。削除しないと、ゲストが IBM POWER Systems で起動しない原因となります。
  • POWER8 Systems では、ゲストをサポートするためにホストマシンをシングルスレッドモードで実行する必要があります。qemu-kvm-ma パッケージがインストールされている場合、これは自動的に設定されます。シングルスレッドのホストで実行しているゲストは複数のスレッドを使用することができます。