vMotion の CPU 互換性 - CPU の不一致による移行の阻止 - マスクのオーバーライド方法
search cancel

vMotion の CPU 互換性 - CPU の不一致による移行の阻止 - マスクのオーバーライド方法

book

Article ID: 343131

calendar_today

Updated On:

Products

VMware vCenter Server VMware vSphere ESXi

Issue/Introduction

この記事では、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)」を参照してください。




Symptoms:
免責事項:これは英文の記事「vMotion CPU Compatibility - Migrations Prevented Due to CPU Mismatch - How to Override Masks (1993)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

Environment

VMware ESX Server 3.0.x
VMware ESXi 3.5.x Embedded
VMware VirtualCenter 2.5.x
VMware vCenter Server 5.0.x
VMware ESX Server 2.5.x
VMware vCenter Server 4.0.x
VMware ESXi 4.1.x Installable
VMware VirtualCenter 2.0.x
VMware vCenter Server 4.1.x
VMware ESXi 4.1.x Embedded
VMware ESX Server 3.5.x
VMware vCenter Server 5.5.x
VMware ESXi 4.0.x Installable
VMware ESX 4.1.x
VMware ESX Server 2.0.x
VMware vSphere ESXi 5.1
VMware ESXi 4.0.x Embedded
VMware ESX 4.0.x
VMware ESXi 3.5.x Installable
VMware vSphere ESXi 5.0
VMware ESX Server 2.1.x
VMware vSphere ESXi 5.5
VMware vCenter Server 5.1.x

Resolution

最近の Intel 45nm Core 2 CPU を使用していて、vCenter または vCenter Server のメッセージに従ってこの記事を参照している場合は、vMotion errors between different Intel 45nm Core 2 revisions (1008315)」を参照してください。
ESX/ESXi 3.5 Update 2 以降では、Enhanced vMotion Compatibility (EVC) を使用して vMotion の CPU 互換性に関するほとんどの問題を排除することをお勧めします。EVC の詳細については、「Enhanced vMotion Compatibility (EVC) processor support (1003212)」を参照してください。
デフォルトでは、vCenter と vCenter Server では、互換性のあるソース CPU とターゲット CPU 間で vMotion による移行のみを許可します。この記事では、CPU 互換性の制約をオーバーライドするタイミングと方法について説明し、追加の情報とリソースへのリンクを提供します。トピックは次のとおりです。

バックグラウンド

vMotion の目的では、互換性のある CPU とは、ソース CPU とターゲット CPU が同じメーカー(AMD または Intel)であること、同じ基本プロセッサ ファミリ(たとえば Pentium 4 または Core)のメンバーであること、および共通の機能セットが実装されていることを意味します。

ソース 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 の互換性に関する固有の情報については、次の記事を参照してください。

説明を簡単にするため、vMotion の CPU 互換性のためのデフォルトのビットマスクの変更は、単にマスクと呼ばれることもあり、通常は CPU 機能によって識別されます。たとえば、このナレッジベースの記事と、関連する 1991 および 1992 の記事にある SSE3 マスクなどです。
多くのマスクはサポートされていません。ESX 3.5 以降の一部のマスクでは体験版サポートを利用できます。マスクのサポート条件は次の表にまとめられています。
マスク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 以降では試験的にサポート。試験的にサポート

変更の範囲

ESX/ESXi バージョンや個々の必要性に応じて、デフォルトの CPU ビット マスクを変更する方法は 2つあります。
    • ESX/ESXi または ESX Server のすべてのバージョン:プロセッサ メーカー、バージョン番号、およびその他の基準で VirtualCenter Server や vCenter Server 単位でデフォルトのビット マスクを変更できます。この方法はサポートされていません。vMotion で移行するときに、マスクされた機能をアプリケーションで使用しようとするとクラッシュする可能性があります。
    • ESX/ESXi 3.x 以降:VI Client や vSphere Client を使用する仮想マシン ベースでビット マスクを変更できます。アプリケーションやゲスト OS が不安定になる恐れがあるため、これらの変更を行う前に仮想マシンをパワーオフする必要があります。この方法のサポート条件については、「vMotion CPU Compatibility Requirements for Intel Processors (1991)」(Intel プロセッサの場合)および「vMotion CPU Compatibility Requirements for AMD Processors (1992)」(AMD プロセッサの場合)に記載されています。

    CPU 識別ツール

    ホスト システムの CPU に関する詳細情報を取得するには、CPU 識別ユーティリティを使用します。VMware では、解凍可能な ISO イメージ ファイルとしてこのユーティリティが用意されており、オペレーティング システムまたは ESX をインストールする前でも、このユーティリティを使用してホストに関する CPU 情報を提供する起動可能な CD-ROM を作成できます。このツールの最新バージョンは、http://vmware.com/download/shared_utilities.html の VMware ダウンロード ページに用意されています。

    ESX/ESXi 3.x 以降での仮想マシンごとのマスキング

    vCenter 2.x および vCenter Server 4.x では、VI Client または vSphere Client を使用して個々の仮想マシンのデフォルト ビット マスクを変更できます。このビット マスクを変更する前に仮想マシンをパワーオフします。
    仮想マシンのデフォルトのビット マスクを変更するには:
    1. VI Client または vSphere Client を起動し、管理者として vCenter Server または vCenter Server に接続します。
    2. インベントリで、移行する仮想マシンを選択します。
    3. [サマリ] タブの [設定の編集] をクリックします。仮想マシンの [プロパティ] ウィンドウが表示されます。
    4. [プロパティ] ウィンドウの [オプション] タブをクリックします。
    5. [CPUID マスク] オプションを選択して CPU 識別マスク情報と設定を表示します。
    6. [詳細] をクリックすると、右側のペーンに CPU 識別マスクなどの複数の設定関連ボックスが表示されます。

    ここでは、何をマスクする必要があるかに応じて、選択した仮想マシンに合わせてマスクを変更できます。次のセクションでは、いくつかの一般的な CPU レジスタのマスクを変更する手順について説明します。

    デフォルトの NX/XD マスクの変更

    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 ビットを有効化または無効化するには:

    1. 仮想マシンの [オプション] タブで [CPUID マスク] オプションに移動します(必要に応じて前述の手順を参照)。
    2. 選択した仮想マシンの CPU 互換性チェックを無効にするには、[ゲストに NX フラグを非表示にする] を選択し、有効にするには [ゲストに NX フラグを表示する] を選択します。
    3. [OK] をクリックして変更内容を保存します。

    Intel CPU のデフォルト マスクの変更

    vMotion の互換性をさらに高めるために、他のいくつかの機能のマスクを変更できます。それらの機能のマスクのサポート条件については、「vMotion CPU Compatibility Requirements for Intel Processors (1991)」に記載されています。移行後にアプリケーションやゲスト OS にエラーが発生する恐れがあるため、SSE3 などのアプリケーションで使用する CPU 機能の vMotion 制約の変更は通常、VMware ではサポートも推奨もしません。

    このビット マスクを変更する前に仮想マシンをパワーオフします。

    他の CPU マスクを変更するには:

    1. 仮想マシンの [オプション] タブに移動します(必要に応じて上記の手順を参照)。
    2. [詳細] をクリックして CPU 識別マスクのプロパティのダイアログ ボックスを開きます。

      :[CPU 識別マスク] ダイアログ ボックスには、[仮想マシンのデフォルト] [AMD のオーバーライド] の 2 つのタブがあります。Intel CPU 機能のほとんどの変更は、[仮想マシンのデフォルト] タブで行います。AMD CPU 機能の変更は、[AMD のオーバーライド] タブで行います。これについては、この記事の次のセクションで説明します。

    3. 必要に応じて [仮想マシンのデフォルト] タブをクリックし、ダイアログ ボックスをアクティブにします。

    特定の機能のマスクを変更するには、次の表に示すようにダッシュと 0 の羅列を入力します。

    機能レベルマスク
    SSE31ecx

    ---- ---- ---- ---- ---- ---- ---0 -0-0

    SSSE31ecx

    ---- ---- ---- -0-- ---- --0- ---0 -0--

    1edx

    ---- ---- ---- --0- ---- ---- ---- ----

    SSE4.11ecx

    ---- ---- ---- 0--- ---- ---- ---- ----

    SSE4.21ecx

    ---- ---- 0--0 ---- ---- ---- ---- ----

    80000001edx

    ---- 0--- ---- ---- ---- ---- ---- ----

    AESaecx---- --0- ---- ---- ---- ---- ---- --0-

    すべての変更が完了したら、[OK] をクリックして [CPU 識別マスク] ダイアログ ボックスを終了します。

    AMD CPU のマスクの変更

    [AMD のオーバーライド] タブには、AMD プロセッサに固有の機能が表示され、変更できます。それらの機能のマスクのサポート条件については、「vMotion CPU Compatibility Requirements for AMD Processors (1992)」に記載されています。移行後にアプリケーションやゲスト OS にエラーが発生する恐れがあるため、SSE3 などのアプリケーションで使用する CPU 機能の vMotion 制約の変更は通常、VMware ではサポートも推奨もしません。

    このビット マスクを変更する前に仮想マシンをパワーオフします。

    AMD プロセッサの他の CPU マスクを変更するには:

    1. 仮想マシンの [オプション] タブに移動します(必要に応じて上記の手順を参照)。
    2. [詳細] をクリックして CPU 識別マスクのプロパティのダイアログ ボックスを開きます。
    3. [AMD のオーバーライド] タブをクリックしてダイアログ ボックスをアクティブにします。[AMD のオーバーライド] ページが表示されます。

    特定の機能のマスクを変更するには、次の表に示すようにダッシュと 0 の羅列を入力します。

    機能レベルマスク
    SSE31ecx
    ---- ---- ---- ---- ---- ---- ---- ---0
    RDTSCP80000001edx
    ---- 0--- ---- ---- ---- ---- ---- ----
    80000001ecx
    ---- ---- ---- ---- ---- ---- ---- 0---
    CMPXCH16B
    1ecx

    ---- ---- ---- ---- --0- ---- ---- ----

    FFXSR80000001edx
    ---- --0- ---- ---- ---- ---- ---- ----


    すべての変更が完了したら、[OK] をクリックして [CPU 識別マスク] ダイアログ ボックスを終了します。

    マスクの変更の結合

    デフォルトのビット マスクに変更を組み込むと、複数の CPU 機能に基づいて vMotion を使用して互換性のないグループ間で移行できます。たとえば、SSE3 と SSSE3 の両方の互換性チェックを除外するには次のマスクを組み合わせます。

    ---- ---- ---- ---- ---- ---- ---0 -0-0

    および

    ---- ---- ---- -0-- ---- --0- ---0 -0--

    を組み合わせて

    ---- ---- ---- -0-- ---- --0- ---0 -0-0

    ecx レジスタのマスクを生成します。


    ESX Server 2.x 以降でのグローバル マスキング

    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

    これらの要素の作成についてはこの記事では詳しく扱っていませんが、タグについてセクションでは概要を説明しています。構成ファイルの編集および SSE3SSSE3SSE3 と 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 の構成ファイルの編集

    vCenter の構成ファイルを編集するには:

    1. vpxd.cfg ファイルの場所に移動します。デフォルトでは、vpxd.cfg ファイルは C:\Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter ディレクトリにあります。
    2. WordPad などのテキスト エディタを使用して vpxd.cfg ファイルを開きます。vpxd.cfg ファイルは、vCenter Server や vCenter Server システムのさまざまなオプション設定を含む XML 形式のテキスト ファイルです。
    3. 開始タグと終了タグを追加して、マスクを適用するホスト、バージョン、その他の仕様を指定します。
    4. 一般的なマスク パターンでの例をコピーして貼り付けるか、またはデプロイに必要な他のマスクを適用します。
    5. 適切な変更を行ったら、VMware VirtualCenter Server サービスを再起動して新しいマスクを有効にします。

    一般的なマスク パターン

    次に、いくつかの一般的な CPU 機能マスクの例を示します。環境に応じてコピー、貼り付け、変更を行います。移行後にアプリケーションやゲスト OS にエラーが発生する恐れがあるため、VMware では次に示すマスクの使用はサポートも推奨しません。

    SSE3

    <cpuFeatureMask>
    <default-vendor>
    <level-1>
    <ecx>----:----:----:----:----:----:---x:-x-x</ecx>
    </level-1>
    </default-vendor>
    <amd>
    <level-1>
    <ecx>----:----:----:----:----:----:----:---x</ecx>
    </level-1>
    </amd>
    </cpuFeatureMask>

    SSSE3

    <cpuFeatureMask>
    <default-vendor>
    <level-1>
    <ecx>----:----:----:-x--:----:--x-:---x:-x--</ecx>
    <edx>----:----:----:--x-:----:----:----:----</edx>
    </level-1>
    </default-vendor>
    </cpuFeatureMask>

    SSE3 および SSSE3 の組み合わせ

    <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>

    デフォルトの CPU 互換性ビット マスクへの復帰

    デフォルトのマスクに加えたすべての変更を元に戻して、デフォルトの vMotion 互換性の制約を元に戻します。それには、適用したマスクのタイプに適切な次の手順を実行します。

    • 仮想マシンごとのマスクを使用する場合:[CPU 識別マスク] ダイアログ ボックスの [すべてデフォルトにリセット] をクリックして変更した行をデフォルトにリセットします。
    • グローバル マスクを使用する場合:vpxd.cfg ファイルに入力した追加タグを削除し、vCenter サービスを再起動します。


    Additional Information

    この記事の翻訳バージョンについては、以下を参照してください。

    日本語: vMotion の CPU 互換性 - CPU の不一致による移行の阻止 - マスクのオーバーライド方法 (2078408)
    简体中文: vMotion CPU 兼容性 - 由于 CPU 不匹配,阻止迁移 - 如何覆盖掩码 (2040925)vMotion CPU Compatibility - Migrations Prevented Due to CPU Mismatch - How to Override Masks