20.41. ゲスト仮想マシンの CPU モデルの設定

単純なデフォルト設定では、ゲスト仮想マシンの CPU 設定は、XML が表示するホスト物理マシンの機能と同じ基本的な XML 表現を受け入れます。つまり virsh cpu-baseline コマンドの XML は、domain 要素下で、トップレベルにあるゲスト仮想マシン XML に直接コピーすることができます。以前の XML スニペットには、ゲスト仮想マシンの XML 内に CPU を記述する際に利用できるいくつかの追加の属性があります。これらはほとんど無視できますが、ここでそれらの属性の機能について簡単に説明します。トップレベルの <cpu> 要素には match という属性があり、以下の値を持つことができます。
  • match='minimum' - ホスト物理マシン CPU には、少なくともゲスト仮想マシン XML 内に記述されている CPU 機能がなければなりません。ホスト物理マシンにゲスト仮想マシンの設定範囲を超える追加の機能がある場合は、それらはゲスト仮想マシンに対しても表示されます。
  • match='exact' - ホスト物理マシン CPU には、少なくともゲスト仮想マシン XML 内に記述されている CPU 機能がなければなりません。ホスト物理マシンにゲスト仮想マシンの設定範囲を超える追加の機能がある場合は、それらはゲスト仮想マシンには非表示になります。
  • match='strict' - ホスト物理マシン CPU には、ゲスト仮想マシン XML 内に記述してあるものと全く同じ CPU 機能がなければなりません。
次の機能拡張により、 <feature> の各要素に「policy」属性を追加で持たせ、 以下のような値を設定することができます。
  • policy='force' - ホスト物理マシンが持たない機能の場合でもゲスト仮想マシンに対してその機能を表示します。これは通常、ソフトウェアエミュレーションの場合にのみ役立ちます。

    注記

    force ポリシーを使用した場合でも、ハイパーバイザーが特定の機能をエミュレートしないこともあります。
  • policy='require' - ホスト物理マシンが持たない機能の場合でも、ゲスト仮想マシンに対してその機能を表示し、その後に失敗します。これは適切なデフォルトと言えます。
  • policy='optional' - サポートされる機能の場合、その機能をゲスト仮想マシンに表示します。
  • policy='disable' - ホスト物理マシンが持つ機能の場合、その機能はゲスト仮想マシンには非表示となります。
  • policy='forbid' - ホスト物理マシンが持つ機能の場合、失敗してゲスト仮想マシンの起動が拒否されます。
「forbid」ポリシーは、CPUID マスク内にない機能の場合でも、不正な動作をしているアプリケーションがその機能の使用を試みており、この機能を持つホスト物理マシン上でゲスト仮想マシンを間違って実行することを避けたい状況での特定のシナリオに対応します。「optional」ポリシーは、移行に関して特殊な動作をします。ゲスト仮想マシンが最初に起動する際にそのフラグは「optional」ですが、ゲスト仮想マシンのライブマイグレーションの実行時にこのポリシーは「require」に変わります。この理由は移行時に機能が消滅することを防ぐためです。