VMware EVCモードの仕組み:完全ガイド
vMotion機能に詳しい方なら、VMのライブマイグレーションを行う際には、すべてのESXiサーバーで同じプロセッサを使用することが推奨されていることをご存じでしょう。クラスタ内で異なるプロセッサモデルのサーバーを使用する場合は、同じ世代のプロセッサを導入することをお勧めします。さらに、プロセッサはIntelやAMDなど、同じベンダー製である必要があります。そうしないと、vMotionの使用時にエラーが発生する可能性があります。
VMwareは、異なるプロセッサを搭載した新しいサーバーを追加してクラスタを拡張する場合など、本番環境で発生し得る状況を考慮してvSphereソフトウェアを設計しています。これはよくある状況です。例えば、3年前に購入した5台のESXiノードで構成されるクラスタがあり、ビジネスニーズに合わせてより多くのVMを実行するためにさらに2台のノードを追加する必要がある場合を想像してみてください。 3年前に購入したプロセッサは現在生産終了となっており、市場でも販売されていません。購入できるのは最新ファミリーのプロセッサのみです。心配する必要はありません。 高可用性クラスタ vSphereでは、異なるプロセッサを搭載したノードを追加し、vMotionを使用して、プロセッサの異なるホスト間で仮想マシンのライブマイグレーションを行うことができます。これは、VMware vSphereのクラスタで有効化できる"Enhanced vMotion Capability(EVC)"機能によって可能になります。
VMware EVCモードの動作原理
新しい世代のプロセッサには、前世代のプロセッサで利用可能な命令セットに加え、新しい命令セットが搭載されています。こうした新機能は、通常、アプリケーションの実行におけるパフォーマンスやセキュリティを向上させます。例えば、Skylake世代のプロセッサには、1つの新しい命令セットが搭載されています(SGX)ハスウェル世代のプロセッサと比較して。これら2つのプロセッサ世代の命令セットを見て、その詳細を詳しく見ていきましょう。
Haswell (2013) instruction sets:
x86-64、MMX、AES-NI、CLMUL、FMA3、SSE、SSE2、SSE3、SSSE3、SSE4、SSE4.1、SSE4.2、AVX、AVX2、TXT、VT-x、VT-d。 TSX バグのため、Haswellプロセッサ(Haswell-EXを除く)では、マイクロコードによって命令が無効化されています。
SkyLake (2017) instruction sets:
x86-64、MMX、AES-NI、CLMUL、FMA3、SSE、SSE2、SSE3、SSSE3、SSE4、SSE4.1、SSE4.2、AVX、AVX2、TXT、 TSX, SGX, VT-x, VT-d。
これは、EVC設定でHaswell互換レベルを選択した場合、Skylakeプロセッサを搭載したサーバーではSGX命令セットを無効化(より正確にはマスク)する必要があり、その結果、すべてのプロセッサが同一の命令セットで動作することを意味します。これにより、vMotionを使用したVM移行に適した均一な環境が実現されます。 この統一されたvMotion互換性は、統一されたプロセッサを持たないESXiホスト上で実行されるすべてのVMに対して、同じCPUID命令ベースラインを強制することで実現されます。CPUIDは、CPU向けのAPIと見なすことができます。
一方で、Haswell EVCモードを有効にするとSGX命令セットの利点は失われますが、他方で、新しいプロセッサを搭載したホストをクラスタに追加しても、既存のクラスタのパフォーマンスが低下することはありません。 既存のクラスタに旧式のプロセッサを搭載したESXiホストを追加した場合、特定の状況でパフォーマンスの低下が見られる可能性があります。
注: SGX(Software Guard Extensions)を使用すると、コードやデータの保護された領域(エンクレーブとも呼ばれる)を構成し、稼働中のアプリケーションをハッカーの攻撃から高度に保護することができます。アプリケーションにSGX命令を使用する開発者は、たとえ攻撃者のアプリケーションがより高い権限を持っていたとしても、不正なアクセスや改ざんからアプリケーションを保護することができます。
注: TSX(Transactional Synchronization Extensions)は、リソースをプロセッサコア間で分散させるために、実行中のタスクの大部分をハードウェアレベル(CPU自体)に移行することを保証します。プロセッサがTSX命令をサポートしていない場合、この分散はオペレーティングシステムやアプリケーションによってソフトウェアレベルで実行されます。お使いのHaswellプロセッサでマイクロコードによってTSX命令セットが無効になっている場合は、EVCモードを旧世代(Ivy Bridge)レベルに設定する必要がある可能性があります。
通常、変更した EVC モードの設定を適用するには、実行中の VM をシャットダウンしてから再起動する必要があります。vCenter 4.1 以降を使用している場合、最も古いプロセッサを搭載した ESXi ホスト上で実行中の VM はシャットダウンする必要はありません(実行状態のままにしておくことができます)。 この場合、EVCモードは、その最も古いプロセッサの世代と同じに設定する必要があります。より新しいCPU機能を備えたプロセッサを搭載したESXiホスト上で実行中のVMは、環境全体でEVCモードを有効にする前に電源を切る必要があります。 クラスターESXiホストがクラスタから除外されると、EVCモードが無効化された状態で動作を継続します。
EVCにおけるVMware vSphereのバージョンおよびCPUの互換性
必要なEVCモードは、プロセッサのモデルおよびバージョンによって異なります。 vCenter Server. 最新バージョンの vCenter Server の EVC モードは、最新のプロセッサに対応しています。最新世代のプロセッサを搭載したサーバーをご利用の場合は、最新バージョンの vCenter のご利用をご検討ください。以下の表では、お使いの環境における EVC クラスタのベースラインを決定するために、どの世代の Intel プロセッサと vCenter バージョンの組み合わせがサポートされているかを確認できます。
最適なEVCモードは、クラスタ内のESXiサーバーで最も古いプロセッサのモデルによって決定されます。技術的には、最も古いプロセッサの世代よりも古い(低い)レベルのEVCモードを選択することも可能ですが、一般的にそのような設定を行う理由はありません。 ESXi および vSphere の古いリリースでは新しいプロセッサがサポートされていますが、EVC の最大ベースラインは、その vSphere バージョンがリリースされた時点で動作しており、当時利用可能な最新と見なされていた古いプロセッサのレベルに維持されます。
EVC モードのレベルを変更する場合、実行中の VM に設定を適用するには、VM の電源を一度切ってから再起動する必要があります。VM を再起動するだけでは不十分です。
VMware互換性ガイド
お使いのプロセッサの互換性およびvCenter Serverで利用可能な最高レベルのEVCモードについては、VMwareのWebサイトで確認できます。互換性を確認するには、以下のページを開いてください。 VMware 互換性ガイド、選択 CPU series ドロップダウンメニュー(つまり、何をお探しですか)で、 製品リリースバージョンリストからESXiのバージョンを選択し、 CPUシリーズ リストには以下のものが含まれます Ctrl ボタンをクリックし、ESXiホストにインストールされているプロセッサを選択します(マウスの左ボタンをクリック)。必要なパラメータを選択したら、 CPU/EVC Matrix ボタンをクリックすると、お使いのESXiサーバーで利用可能なEVCモードの一覧が表示されます。以下のスクリーンショットの例では、ESXi 6.5(vCenter 6.5で管理)、Intel Xeon E3-1500-v5、Xeon E5-4600-v3、およびXeon Platinum 8100プロセッサが選択されています。選択されたすべてのプロセッサでサポートされているEVCモードの最高レベルは インテル・ハスウェル世代.
要件
~のために vMotion EVCモードを有効にした後、正常に動作させるには、以下の要件を満たす必要があります:
- すべてのESXiホストのプロセッサは、Intelのみ、またはAMDのみに限定する必要があります。
- ESXiホストのUEFI/BIOSで、Intel VT-xやAMD-Vなどのプロセッサ仮想化機能を有効にする必要があります。
- ESXiホストは、すべて同じvCenter Serverによって管理される必要があります。
- ESXiホストは、vMotionを使用するように設定する必要があります。
EVCの有効化と設定方法
理論について理解したところで、実際にEVCモードの設定を確認してみましょう。EVCレベルを低下させる必要があるESXiホスト上のVMの電源を切る必要がある場合があります。問題の発生を防ぐため、UEFI/BIOSでプロセッサ機能が無効になっていないことを確認してください。
ブラウザのアドレスバーにvCenter ServerのIPアドレスを入力し、VMware vSphere Web Clientを開きます。次に、 vCenter > Hosts and clusters 各ESXiホストを選択し、CPU(中央処理装置)の構成を確認します。この例では、クラスターに追加され、vCenter Server 5.5によって管理されているESXi 5.5を実行する2台のホストを取り上げます。下のスクリーンショットにあるように、最初のESXiホストのプロセッサモデルは インテル Xeon E3110 また、2台目のESXiホストにインストールされているプロセッサは インテル Xeon X3430.
ESXiホストがすでにクラスタに追加されている場合は、クラスタを選択してください(temp-cluster (この例では)、をクリックして Manage タブをクリックし、次に Settings タブで、[選択] Configuration > VMware EVC そして、 Edit ボタン。
vCenterでEVCモードを選択する前に、Webブラウザで新しいタブを開き、 VMware 互換性ガイド このブログ記事の上記の通りです。現在の例では、以下を選択する必要があります ESXi 5.5, インテル Xeon 31xx シリーズ そして インテル Xeon 34xx シリーズをクリックした後、 CPU/EVC マトリックス ボタンをクリックすると、スクリーンショットにあるように インテル・ペナリン世代 EVCモードの設定で選択する必要があります。
vSphere Web Client が開いているウェブブラウザのタブに戻り、クラスタの EVC モード設定を開きます。[クリック] Enable EVC for Intel Hosts. VMware EVC モードのドロップダウンメニューで、以下を選択する必要があります インテル・ペナリン世代ウィンドウの下部に、次のように表示されるはずです Validation succeeded ~の中で 互換性 セクション。これで、 了解 EVCモードの設定を保存するには。
その後、VMware EVC のセクションで、以下の情報が VMware EVC が有効になっています が表示されます。クリックしてください Current CPUID Details レジスタとマスク値に関する詳細を追加する。
新しいクラスタの作成時にEVCモードを有効にすることも可能です。VMwareはこの方法を推奨されるベストプラクティスとして推奨しています。新しいクラスタの作成時にEVCモードを有効にしておけば、クラスタ内で稼働中のVMのシャットダウンや移行に関連する問題が発生するのを防ぐことができます(ご記憶の通り、通常、新しいEVC設定を適用するには、VMをシャットダウンしてから再起動する必要があります)。
CPUIDのマスキング
クラスタ全体のすべてのVMおよびESXiホストに適用されるグローバルEVCモードに加え、vCenter Serverでは、特定のVMに対してCPUIDフラグを手動で設定することができます。vCenterは、VMに設定されたCPUIDパラメータと、移行先のESXiホストで利用可能なCPUIDパラメータを比較します。これらのパラメータが一致する場合、vMotionによるVMの移行が許可されます。 CPUIDマスキング機能は、EVCモード機能よりも以前から存在しています。
VMのCPUIDマスクを設定するには、以下の手順を実行します。
必要なVMを選択し、VMを右クリックして、[ Edit Settings. 開いた 設定を編集 ウィンドウ、開く Virtual Hardware > CPU、選択 CPUID mask、そしてクリック Advanced.
その CPU識別マスク ウィンドウで、必要なレジスタ文字列を選択し、値をクリックしてマスクをビット単位で編集します。 Legend マスクの設定に使用されている各文字の意味を確認するには、このボタンをクリックしてください。
Caution! VMwareナレッジベースやVMwareサポートの指示内容を十分に理解するまでは、マスクを編集しないでください。CPU互換性マスクを手動で編集すると、サポート対象外のVM構成になる可能性があります。例えば、Windows VMではブルースクリーン(BSOD)が発生する恐れがあります。
PowerCLI での EVC モードの設定確認
次のコマンドを使用すると、VMware PowerCLI でクラスタ全体およびカスタム VM の EVC モードの設定を確認できます。
Get-VM | Select Name,HardwareVersion,
@{Name='VM_EVC_Mode';Expression={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}},
@{Name='Cluster_Name';Expression={$_.VMHost.Parent}},
@{Name='Cluster_EVC_Mode';Expression={$_.VMHost.Parent.EVCMode}} | ft
また、次のコマンドを実行すると、クラスタ内のすべてのホストでサポートされている最大EVCレベルを確認できます:
Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode
VMごとのEVCモード
前述のEVCモードはクラスタレベルのオプションです。VMware vSphere 6.7では、VMごとのEVCモードを設定する機能が提供されており、異なるクラスタ間やvCenter Server間でのVMの移行に有用であり、よりきめ細かな制御が可能になります。 VMごとのEVCモードは、仮想マシン設定の属性として設定され、vMotionによる移行が必要なVMの管理にさらなる柔軟性をもたらします。VMのハードウェア互換性はバージョン14以降である必要があります。VMごとのEVCモードの設定は、VMのVMX構成ファイルに、以下の行として保存されます。 featMask.vm.cpuid 文字列。VMごとのEVCモードが設定されたVMを移行する場合、VMXファイルに保存されているそのVMのEVC設定もVMとともに移行されます。VMごとのEVCモードの設定は、VMの電源をオフにした状態で変更できます(変更したVMごとのEVCモードの設定を適用するには、VMの電源をオフにしてからオンにしてください)。
すでにグローバル EVC モードが設定されているクラスタ内に存在する VM に対して、VM 単位の EVC モードを有効にする場合、VM 単位の EVC モードは、クラスタ全体で設定されている EVC モードと同等か、それより低いレベルに設定できます。したがって、グローバル EVC モードと VM 単位の EVC モードの両方を同時に設定することが可能です。 VMのクローン作成後、VMごとのEVC設定はVMとともにクローンされます。
VMごとのEVCモードを設定するには、VMware vSphere HTML5クライアントを開き、[ ホストとクラスタ、次に必要なVMを選択します。を開きます。 Configure タブで、[選択] More > VMware EVC そしてクリック Edit.
ダウンタイムなしでクラスタのEVCモードを有効にする方法
場合によっては、VMのダウンタイムを発生させることなく、クラスタ全体でEVCモードを有効にすることができます(通常、クラスタのEVCモード設定を適用するには、VMをシャットダウンしてから再起動する必要があります)。これは、以下の要件が満たされている場合に可能です:
- 実行中のVMは、最も古いプロセッサを搭載したESXiホスト上に配置されます
- クラスタのEVCモードは、最も古いプロセッサの世代に対応するCPU命令セットを使用するように設定されています
vCenter VM の EVC モードを有効にする
VMware vSphere 環境では、次のような状況がよく発生します。
vCenter Server is running as a VM on an ESXi host that must be added to a cluster for which the EVC mode is enabled.
問題は、EVCを有効化した後、すべてのVMがシャットダウンされるまで、VM(vCenterを実行しているVMを含む)が稼働中のESXiホストをクラスタに追加できない点です。一方で、クラスタを管理するにはvCenterを実行しているVMが必要であり、現在使用中であるため、vCenter VMをシャットダウンすることはできません。この問題は、vCenter VMが新しいプロセッサを搭載したESXiホスト上で実行されている場合に特に深刻です。
注: 標準仕様を使用することをお勧めします vSwitch (分散vSwitchではありません)この場合、vCenterを実行しているVMをネットワークに接続するために使用します。
A possible solution. VMware vSphere 5.5 の問題を解決するのに役立つアルゴリズムについて検討してみましょう:
- クラスタ内にまだESXiサーバーが存在しない場合は、別のESXiサーバー(vCenter VMを実行していないもの)をクラスタに移動してください。クラスタに移動するESXiサーバー上のVMは、すべて電源をオフにしておく必要があります。
- vCenter Server を実行している仮想マシンをシャットダウンします。VMware Host Client を使用して vCenter 仮想マシンが存在する ESXi ホストに接続し、仮想マシンの登録を解除するか、SSH クライアントで接続してファイルをコピーします。VMware Host Client で、vCenter 仮想マシンを右クリックし、[ 登録解除. vCenter VMのすべてのファイルを、手順1でクラスターに移動済みのESXiサーバーに接続されたデータストアに手動でコピーします。NFSまたはiSCSIの場合 共有ストレージ 両方のESXiホストでこのVMが使用されている場合、VMファイルを別の場所にコピーする必要はありません。
注: vCenter Server を実行している仮想マシンをある ESXi ホストから別のホストに移動する前に、その仮想マシンの仮想ネットワークアダプタの MAC アドレスを手動で設定する必要がある場合があります。
- クラスタに移動したESXiホスト上でvCenter VMを登録します(VMware Host ClientでESXiホストに接続し、データストアを開き、vCenter VMのファイルを探してVMXファイルを選択し、ファイルを右クリックして VMを登録する). クラスタ内のこのESXiホスト上でvCenter VMを実行します。VMware vSphere Clientを使用してvCenterにログインし、vCenterでvSphere環境を管理できることを確認してください。一時的にアドミッションコントロールを無効にする必要がある場合があります。
- vCenter VMが当初稼働していたソースESXiホストをクラスターに移動します。ホストを移動する前に、必要に応じてそのESXiホスト上の他のVMをシャットダウンしてください。
結論
Enhanced vMotion Capability(EVC)は、クラスタのスケーラビリティを維持し、vMotion を使用して ESXi ホスト間で仮想マシンのライブマイグレーションを実行するために、異なる世代のプロセッサを搭載したノードをクラスタに追加できるようにする、VMware vSphere の便利な機能です。 EVCモードでは、クラスタ内のESXiホストで使用されている最も古い世代のプロセッサの機能に合わせるため、新世代プロセッサの機能をマスクします。その結果、すべてのプロセッサが同じ命令セットを使用する均一な環境が実現され、実行中のVMをvMotionで移行できるようになります。 クラスタを利用する多くの VMware のお客様が EVC モードを使用しています。ESXi ホストの追加や、vCenter Server を実行している VM を含む稼働中の VM の移行に関連する問題を回避するため、クラスタ作成の段階で EVC モードを有効にすることをお勧めします。
クラスタを使用しているかどうかに関わらず、VMware VM のバックアップを忘れないでください。 NAKIVO Backup & Replication これは、高速かつ信頼性が高く、手頃な価格のデータ保護ソリューションであり、VMware VMがクラスタ内のESXiホスト間で移行している場合でも、それらを保護することができます。











