この記事では、vCenter 2.x または vCenter Server 4.x で管理されている ESX ホスト間の vMotion CPU 互換性の制限をオーバーライドする方法について説明します。vCenter 1.x で管理されている ESX ホスト間の vMotion CPU 互換性の制限をオーバーライドする方法については、「vMotion CPU Compatibility - Migrations Prevented Due to CPU Mismatch - How to Override Masks for VirtualCenter 1.x (1011354)」を参照してください。
警告:特に記載されていない限り、移行後にアプリケーションやゲスト OS にエラーが発生する恐れがあるため、SSE3 などのアプリケーションで使用する CPU 機能の vMotion 制約の変更は、VMware ではサポートも推奨もしません。この記事に記載されているように、ESX 3.5 以降の一部のマスクでは体験版サポートを利用できます。機能の体験版サポートの詳細については、「http://www.vmware.com/support/policies/experimental.html」を参照してください。
VMware では、Enhanced vMotion Compatibility (EVC) を使用して vMotion の CPU 互換性に関するほとんどの問題を排除することをお勧めします。EVC の詳細については、「Enhanced vMotion Compatibility (EVC) processor support (1003212)」を参照してください。
ソース CPU とターゲット CPU が vMotion の要件を満たしているかを判断するために、vCenter と vCenter Server はターゲット CPU をデフォルトのビット マスク定義と比較し、重要でない機能は比較から除外します。プロセッサ ベンダーによって新しい機能が導入されると、vCenter および vCenter Server で使用されるビット マスクが更新されます。たとえば ESX Server 2.x では、NX (AMD) または XD (Intel) 機能は vMotion の互換性の計算には使用されませんが、ESX 3.x では使用されます。
特定の機能について vMotion の CPU 互換性チェックを無効にするには、デフォルトのビット マスクを変更することができます。ビット マスクの変更プロセスは、いくつかの VMware ドキュメントで特定の制約の「緩和」と呼ばれることがあります。
基盤となるコンポーネントと、それらのコンポーネントを vCenter Server と ESX Server ホスト システムがどのように扱うのかについての詳細は、この記事の範囲外です。詳細については、『Basic System Administration』の「CPU 互換性マスク」を参照してください。 もう 1 つの役に立つリソースは、VMware vMotion and CPU Compatibility に関する技術資料です。
Intel および AMD の CPU と vMotion の互換性に関する固有の情報については、次の記事を参照してください。
マスク | ESX 2.x | ESX 3.x | ESX 4.x |
CMPXCHG16B (AMD) | サポート対象外 | ESX 3.5 より前ではサポート対象外。ESX 3.5 以降では試験的にサポート。 | 試験的にサポート |
FFXSR (AMD) | サポート対象外 | サポート対象外 | サポート対象外 |
NX (AMD) | サポート対象 | サポート対象 | サポート対象 |
RDTSCP (AMD) | サポート対象外 | ESX 3.5 より前ではサポート対象外。ESX 3.5 以降では試験的にサポート。 | 試験的にサポート |
SSE3 (AMD) | サポート対象外 | ESX 3.5 より前ではサポート対象外。ESX 3.5 以降では試験的にサポート。 | 試験的にサポート |
SSE3 (Intel) | サポート対象外 | サポート対象外 | サポート対象外 |
SSE4.1 (Intel) | サポート対象外 | ESX 3.5 より前ではサポート対象外。ESX 3.5 以降では試験的にサポート。 | 試験的にサポート |
SSE4.2 (Intel) | サポート対象外 | ESX 3.5 より前ではサポート対象外。ESX 3.5 以降では試験的にサポート。 | 試験的にサポート |
XD (Intel) | サポート対象 | サポート対象 | サポート対象 |
AES (Intel) | サポート対象外 | ESX 3.5 より前ではサポート対象外。ESX 3.5 以降では試験的にサポート。 | 試験的にサポート |
ここでは、何をマスクする必要があるかに応じて、選択した仮想マシンに合わせてマスクを変更できます。次のセクションでは、いくつかの一般的な CPU レジスタのマスクを変更する手順について説明します。
CPU の NX/XD 機能では日常的に問題が発生します。互換性エラーのメッセージが表示されないようにするには、すべてのホストの BIOS でこの機能を有効化 (または無効化) します。
注:すべてのサーバに BIOS の NX や XD を有効または無効にするオプションがあるとは限りません。
NX/XD ビットに CPU 機能の互換性の問題が発生すると、次のようなエラーが生成されます。
The CPU of the host is incompatible with the cpu feature requirements of virtual machine; problem detected at CPUID level 0x80000001 register 'edx'.
NX/XD マスクを変更する前に仮想マシンをパワーオフします。
マスクを変更して NX/XD CPU ビットを有効化または無効化するには:
vMotion の互換性をさらに高めるために、他のいくつかの機能のマスクを変更できます。それらの機能のマスクのサポート条件については、「vMotion CPU Compatibility Requirements for Intel Processors (1991)」に記載されています。移行後にアプリケーションやゲスト OS にエラーが発生する恐れがあるため、SSE3 などのアプリケーションで使用する CPU 機能の vMotion 制約の変更は通常、VMware ではサポートも推奨もしません。
このビット マスクを変更する前に仮想マシンをパワーオフします。
他の CPU マスクを変更するには:
特定の機能のマスクを変更するには、次の表に示すようにダッシュと 0 の羅列を入力します。
機能 | レベル | 行 | マスク |
SSE3 | 1 | ecx | ---- ---- ---- ---- ---- ---- ---0 -0-0 |
SSSE3 | 1 | ecx | ---- ---- ---- -0-- ---- --0- ---0 -0-- |
1 | edx | ---- ---- ---- --0- ---- ---- ---- ---- | |
SSE4.1 | 1 | ecx | ---- ---- ---- 0--- ---- ---- ---- ---- |
SSE4.2 | 1 | ecx | ---- ---- 0--0 ---- ---- ---- ---- ---- |
80000001 | edx | ---- 0--- ---- ---- ---- ---- ---- ---- | |
AES | a | ecx | ---- --0- ---- ---- ---- ---- ---- --0- |
すべての変更が完了したら、[OK] をクリックして [CPU 識別マスク] ダイアログ ボックスを終了します。
[AMD のオーバーライド] タブには、AMD プロセッサに固有の機能が表示され、変更できます。それらの機能のマスクのサポート条件については、「vMotion CPU Compatibility Requirements for AMD Processors (1992)」に記載されています。移行後にアプリケーションやゲスト OS にエラーが発生する恐れがあるため、SSE3 などのアプリケーションで使用する CPU 機能の vMotion 制約の変更は通常、VMware ではサポートも推奨もしません。
このビット マスクを変更する前に仮想マシンをパワーオフします。
AMD プロセッサの他の CPU マスクを変更するには:
特定の機能のマスクを変更するには、次の表に示すようにダッシュと 0 の羅列を入力します。
機能 | レベル | 行 | マスク |
SSE3 | 1 | ecx | ---- ---- ---- ---- ---- ---- ---- ---0 |
RDTSCP | 80000001 | edx | ---- 0--- ---- ---- ---- ---- ---- ---- |
80000001 | ecx | ---- ---- ---- ---- ---- ---- ---- 0--- | |
CMPXCH16B | 1 | ecx | ---- ---- ---- ---- --0- ---- ---- ---- |
FFXSR | 80000001 | edx | ---- --0- ---- ---- ---- ---- ---- ---- |
すべての変更が完了したら、[OK] をクリックして [CPU 識別マスク] ダイアログ ボックスを終了します。
デフォルトのビット マスクに変更を組み込むと、複数の CPU 機能に基づいて vMotion を使用して互換性のないグループ間で移行できます。たとえば、SSE3 と SSSE3 の両方の互換性チェックを除外するには次のマスクを組み合わせます。
---- ---- ---- ---- ---- ---- ---0 -0-0
および
---- ---- ---- -0-- ---- --0- ---0 -0--
を組み合わせて
---- ---- ---- -0-- ---- --0- ---0 -0-0
ecx レジスタのマスクを生成します。
vCenter や vCenter Server で管理する ESX/ESXi ホストの場合、ビット マスクを全体的に変更するには、手動で vCenter や vCenter Server の構成ファイル (vpxd.cfg ) を編集します。構成ファイル vpxd.cfg には、vCenter Server や vCenter Server システムのさざまな要素や設定を定義する XML タグが含まれます。ビット マスクを変更するには、ゲスト OS の構成オプションのコンテキストでマスクを定義する適切な XML タグを構成ファイルに追加します。
ビット マスク全体の変更を個々の仮想マシンには適用するには、それらの仮想マシンをパワーオフし、再びパワーオンする必要があります。
注:vpxd.cfg ファイルは、デフォルトでは C:\Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter
これらの要素の作成についてはこの記事では詳しく扱っていませんが、「タグについて」セクションでは概要を説明しています。構成ファイルの編集および SSE3、SSSE3、SSE3 と SSSE3 の組み合わせのような一般的なマスク パターンの XML タグに関する特有の手順については、次のセクションを参照してください。
警告:移行後にアプリケーションやゲスト OS にエラーが発生する恐れがあるため、SSE3 などのアプリケーションで使用する CPU 機能の vMotion 制約の変更は、VMware ではサポートも推奨もしません。
タグは、マスクを適用するレジスタ、ホストとバージョンを特定します。タグは、vpxd.cfg ファイルの <vpxd> タグの直系の子孫です。タグは、ネストする必要がある順序で次のように表示されます。
<guestOSDescriptor> — <vpxd> 要素の直系の子孫(子)タグです。vpxd.cfg には単一の guestOSDescriptor 要素を含めることができます。 <host-product-and-version> — <guestOSDescriptor> の開始タグと終了タグ間に、マスクを適用するバージョンとホストを指定する複数のホスト-製品-および-バージョン-タグをネストできます。通常、ESX Server 2.x ホストの場合は <esx-2-x-x> 、ESX/ESXi 3.x ホストの場合は <esx-3-x-x> のように <host-product-and-version> タグを指定できますが、<esx-3-5-0> のように正確に指定することもできます。たとえば、タグ <esx-2-5-x> は、これ以降ネストされるマスクを適用する ESX サーバのさまざまなメンテナンス リリース レベルを特定します。 <virtual-machine-configuration-hardware-version> — 構成を仮想マシンのハードウェア バージョンで限定できます。たとえば、<all-versions> 、<vmx-03> 、<vmx-04> などです。<all-versions> が指定されている後述の例では、マスクが仮想マシンのすべてのハードウェア バージョンに適用されることを意味します。 <virtual-machine guest version> — ゲストのバージョンを指定できます。たとえば、<all-guests> 、<winXPPro64Guest> 、<winVistaGuest> などです。後述の例では <all-guests> が指定されているため、マスクがすべてのゲスト バージョンに適用されます。 <cpuFeatureMask> — このタグは実際のマスクの前に指定します。必要に応じて、<default-vendor> 、<amd> 、<intel> にマスクを定義します。マスクの定義に使用するタグ要素は、CPU マスクを識別します。要素の詳細には、ベンダー、CPU ID レベル、および CPU レジスタが含まれます。有効な選択を次に示します。
CPU vendor <default-vendor>, <amd>, <intel> CPU ID level <level-0>, <level-1>, <level-80000000>, <level-80000001> CPU register <eax>, <ebx>, <ecx>, <edx>
タグは、表に示す順序で埋め込む必要があります。CPU-ベンダー タグの後に、CPU-ID-レベル タグ、CPU-レジスタ タグの順で指定します。CPU-レジスタ タグの直後に、変更する機能の実際の 32 ビット レジスタ マスクを表す 32 のダッシュと x-s を続けます。このマスクの後に CPU-レジスタ-、CPU-ID-レベル-、CPU-ベンダー- 終了タグを続けます。
注:<default-vendor> タグを使用して定義されたマスクは、ベンダー固有のマスクが同一の CPU ID レベルに指定されていない場合にのみシステムで使用されます。
マスクの定義が終了したら、</guestOSDescriptor> で閉じます。
以下に、vpxd.cfg ファイルのコンテキストで表示されるタグ順序の例を示します。<config> と <vpxd> の開始タグと終了タグは、vpxd.cfg ファイルにすでに含まれています。<guestOSDescriptor> 開始タグは <vpxd> 開始タグの直後に指定し、ニーズに合わせて適切なタグを埋め込み、その後に </guestOSDescriptor> 終了タグを指定することができます。
<config>
<vpxd>
<guestOSDescriptor>
<esx-2-x-x>
<all-versions>
<all-guests>
<cpuFeatureMask>
[ここに、要素とマスクの定義を挿入します。一般的なマスク パターンを後述の例のパターンからコピーして貼り付けることができます。]
</cpuFeatureMask>
</all-guests>
</all-versions>
</esx-2-x-x>
</guestOSDescriptor>
...
</vpxd>
</config>
この例では、[Elements and mask...] プレースホルダ セクションに埋め込まれたマスクを vCenter Server で管理されているすべての ESX Server 2.x ホストとすべてのゲスト OS に適用します。
vCenter の構成ファイルを編集するには:
<cpuFeatureMask>
<default-vendor>
<level-1>
<ecx>----:----:----:----:----:----:---x:-x-x</ecx>
</level-1>
</default-vendor>
<amd>
<level-1>
<ecx>----:----:----:----:----:----:----:---x</ecx>
</level-1>
</amd>
</cpuFeatureMask>
<cpuFeatureMask>
<default-vendor>
<level-1>
<ecx>----:----:----:-x--:----:--x-:---x:-x--</ecx>
<edx>----:----:----:--x-:----:----:----:----</edx>
</level-1>
</default-vendor>
</cpuFeatureMask>
<cpuFeatureMask>
<default-vendor>
<level-1>
<ecx>----:----:----:-x--:----:--x-:---x:-x-x</ecx>
<edx>----:----:----:--x-:----:----:----:----</edx>
</level-1>
</default-vendor>
<amd>
<level-1>
<ecx>----:----:----:----:----:----:----:---x</ecx>
</level-1>
</amd>
</cpuFeatureMask>
デフォルトのマスクに加えたすべての変更を元に戻して、デフォルトの vMotion 互換性の制約を元に戻します。それには、適用したマスクのタイプに適切な次の手順を実行します。