第4章 仮想化の制限

この章では、Red Hat Enterprise Linux 6 の仮想化パッケージにおける追加サポートと製品の制限を説明しています。

4.1. KVM の制限

KVM ハイパーバイザーには、以下の制限が適用されます。
ゲストあたりの最大 vCPU 数
ゲストあたりのサポートされる仮想 CPU の最大数は、Red Hat Enterprise Linux 6 のどのマイナーバージョンをホストマシンとして使用しているかによって異なります。6.0 のリリースでは最大 64 に対応し、6.3 は最大 160 に対応しています。現在、6.6 のリリースはゲストあたり最大 160 の仮想 CPU に対応しています。
不変タイムスタンプカウンター (TSC) ビット
不変 TSC を搭載してないシステムは、追加設定が必要です。不変 TSC が搭載されているかどうかを確認し、関連する問題を解決するための設定手順についての詳細は、14章KVM ゲストのタイミング管理 を参照してください。
メモリーのオーバーコミット
KVM はメモリーのオーバーコミットをサポートし、ゲスト仮想マシンのメモリーを swap に保存できます。スワップが頻繁になされると仮想マシンの実行速度が遅くなります。swap パーティションのサイズを安全かつ効率的に決定する方法についての記事は、Red Hat ナレッジベースの https://access.redhat.com/site/solutions/15244 に記載されています。メモリーのオーバーコミットに KSM が使用される場合は、swap サイズがこの記事で説明されている推奨サイズにしたがっていることを確認してください。

重要

デバイス割り当てが使用されている場合、DMA を割り当てデバイスで有効にするにはすべての仮想マシンメモリーが静的に事前割り当てされる必要があります。このため、メモリーのオーバーコミットはデバイス割り当てではサポートされません。
CPU のオーバーコミット
1 つの物理プロセッサーコアあたりに 11 個以上の仮想 CPU を割り当てることは推奨されません。CPU オーバーコミット率の決定にはキャパシティープラニングツールの使用が推奨されます。割合はそれぞれのワークロードによって大きく異なるため、理想的な割合を予想することは困難です。たとえば、あるユースケースではゲスト仮想マシンが CPU を 100% 消費しますが、別のケースでは複数のゲストが完全にアイドル状態になる場合もあります。
Red Hat は、システム上に存在する物理コアの全体数より多くの vCPU を単一ゲストで実行することをサポートしていません。ハイパースレッドはコアとみなすことはできますが、そのパフォーマンスはシナリオによって異なり、通常のコアと同等のパフォーマンスは期待することはできません。
CPU のオーバーコミットに関するヒントや推奨事項については、『Red Hat Enterprise Linux 仮想化管理ガイド』 を参照してください。
仮想化 SCSI デバイス
Red Hat Enterprise Linux の KVM では、SCSI エミュレーションはサポートされていません。
仮想化 IDE デバイス
KVM では、ゲスト仮想マシン 1 台あたりの仮想化 (エミュレートされた) IDE デバイスは最大 4 つまでに制限されています。
PCI デバイス
Red Hat Enterprise Linux 6 は、仮想マシン 1 台あたり 32 の PCI デバイススロットと、デバイススロット 1 つあたり 8 つの PCI 機能をサポートします。つまりマルチ機能が有効化されると、理論上はゲストあたり最大 256 の PCI 機能が提供されることになります。
しかし、この理論上の最大数は以下の制限を受けます。
  • それぞれの仮想マシンがサポートするのは、最大 8 つの割り当てデバイス機能です。
  • 4 つの PCI デバイススロットは、デフォルトで 5 つのエミュレートされたデバイスに設定されています。しかしユーザーは、ゲストオペレーティングシステムの操作に不要な場合、デフォルト設定のエミュレートされたデバイスの内 2 つを明示的に削除できます (スロット 2 のビデオアダプターデバイスと、通常はスロット 3 である一番下にある利用可能なスロットのメモリーバルーンドライバーデバイス)。これにより、ユーザーは仮想マシン 1 台あたり最大 30 の PCI デバイススロット機能のサポートを受けられます。
さらに PCI デバイス割り当てには、以下の制限が適用されます。
  • PCI デバイス割り当て (PCI デバイスの仮想マシンへのアタッチ) で PCI-e デバイスのデバイス割り当てを有効にするには、ホストシステムが AMD IOMMU または Intel VT-d サポートを備えている必要があります。
  • パラレル/レガシー PCI では、PCI ブリッジ内側の単一デバイスのみがサポートされています。
  • ルート非対応の PCIe スイッチで接続されている複数 PCIe エンドポイントは、PCIe スイッチの PCIe ブリッジ内での ACS サポートを必要とします。この制限を無効にするには、/etc/libvirt/qemu.conf ファイルを編集して、以下の行を挿入します。
    relaxed_acs_check=1
  • Red Hat Enterprise Linux 6 では、ゲストデバイスドライバーによる PCI 設定領域へのアクセスは制限されています。この制限により、PCI 設定領域に依存するドライバーの設定が失敗する場合があります。
  • Red Hat Enterprise Linux 6.2 は、割り込み再マッピングを PCI デバイス割り当て要件として導入します。プラットフォームが割り込み再マッピングをサポートしない場合、コマンドラインプロンプトで root ユーザーとして以下のコマンドを実行して、このサポートの KVM チェックを回避します。
    # echo 1 > /sys/module/kvm/parameters/allow_unsafe_assigned_interrupts
マイグレーションの制限
仮想マシンの排他的使用において、デバイス割り当ては仮想マシンに公開されている物理デバイスを参照します。デバイス割り当ては、仮想マシンが実行されている特定のホスト上のハードウェアを使用するため、デバイス割り当ての使用中は、マイグレーションおよび保存/復元がサポートされません。ゲストオペレーティングシステムがホットプラグをサポートしている場合は、マイグレーションまたは保存/復元操作前に割り当てデバイスを削除してこの機能を有効にできます。
ライブマイグレーションは、CPU タイプが同一のホスト間でのみ可能です (つまり、Intel から Intel 、または AMD から AMD のみ)。
ライブマイグレーションでは on または off で、両方のホストが No eXecution (NX) ビットの同一値セットを備えている必要があります。
マイグレーションが動作するには、書き込みモードで開かれたすべてのブロックデバイスで cache=none が特定される必要があります。

警告

cache=none オプションを加えない場合、ディスクの破損につながる恐れがあります。
ストレージの制限
ディスク全体やブロックデバイス全体 (/dev/sdb など) への書き込みアクセスをゲスト仮想マシンに与えることには、リスクが伴います。ゲスト仮想マシンにブロックデバイス全体へのアクセスがあると、ホストマシンとボリュームラベルやパーティションテーブルを共有できるようになります。ホストシステムのパーティション認識コードにバグがあった場合、セキュリティーリスクを発生させることになります。ホストマシンがゲスト仮想マシンに割り当てたデバイスを無視するように設定することで、このリスクを回避します。

警告

ストレージ制限に従わない場合、セキュリティーリスクにつながる恐れがあります。
SR-IOV の制限
SR-IOV は、以下のデバイスとのみ完全なテストを行っています。 (他の SR-IOV デバイスは機能する可能性がありますが、リリース時にはテストを実施していません)
  • Intel® 82576NS Gigabit Ethernet Controller (igb ドライバー)
  • Intel® 82576EB Gigabit Ethernet Controller (igb ドライバー)
  • Intel® 82599ES 10 Gigabit Ethernet Controller (ixgbe ドライバー)
  • Intel® 82599EB 10 Gigabit Ethernet Controller (ixgbe ドライバー)
コアダンプの制限
コアダンプは現在、マイグレーションの場合と同じインフラストラクチャーに実装されているので、デバイス割り当ての使用中はサポートされません。