vMotion機能に慣れている場合、おそらくすべてのESXiサーバーで同じプロセッサを使用することを推奨されることを思い出すでしょう。クラスター内で異なるプロセッサモデルを使用するサーバーを使用する場合、同じ世代のプロセッサをデプロイするのが望ましいです。更に、厳格な要件として、プロセッサは同じ vendor(インテルやAMDなど)で製造されなければならないことがあります。そうでない場合、vMotionを使用する際にはエラーが発生する可能性が高いです。
VMwareは、プロダクション環境で発生する状況を考慮に入れたvSphereソフトウェアを設計しました。これには、クラスターを拡張するために新しいサーバーを追加することも含まれます。これは一般的な状況です。例えば、3年前に購入した5台のESXiノードのクラスターを考えます。ビジネスニーズに応じてより多くのVMを実行するために2台のノードを追加する必要があります。3年前に購入したプロセッサは現在は生産されていませんし、市場では販売されていません;最新的なファミリーのプロセッサしか購入できません。心配する必要はありません-vSphereで高可用性クラスターを使用し、異なるプロセッサのノードを追加し、異なるプロセッサを持つホスト間で仮想マシンのライブマイグレーションをvMotionで行うことができます。これはVMware vSphereのクラスターに対するEnhanced vMotion Capability(EVC)機能を有効にすることによって可能です。
VMware EVCモードの動作原理
各世代の新CPUには、前世代のCPUで利用可能な命令セットに加え、新しい命令セットが含まれています。新しい機能は一般的に、実行中のアプリケーションのパフォーマンスやセキュリティを向上させます。たとえば、SkyLake世代のプロセッサには、Haswell世代のプロセッサと比較して、1つの新しい命令セット(SGX)があります。これらの2つのプロセッサ世代の命令セットを見て、それらの詳細を調べましょう。
Haswell(2013)の命令セット:
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-EXを除くHaswellプロセッサのバグにより、マイクロコードを介して無効になっています。
SkyLake(2017)の命令セット:
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の移行に採用される、均一な環境が得られます。均一なプロセッサを持たないESXiホストで実行されるすべてのVMに対して同じCPUID命令ベースラインを強制することにより、均一なvMotion互換性が提供されます。CPUIDは、CPUのAPIと見なすことができます。
一方で、Haswell EVCモードが有効になると、SGX命令セットの利点が失われますが、他方では、新しいプロセッサを追加しても既存のクラスタのパフォーマンスが低下しない可能性があります。既存のクラスタに古いプロセッサを搭載する場合、特定のケースではパフォーマンスが低下することがあります。
注意: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モードが無効のままで動作が続行されます。
VMware vSphereバージョン/EVC用CPU互換性
必要なEVCモードは、プロセッサモデルと
最適なEVCモードは、クラスタ内のESXiサーバーで最も古いプロセッサーのモデルに基づいて決定されます。古い(低い)EVCモードを最も古いプロセッサーの世代以下に選択する技術的には可能ですが、一般的にはこのような設定を行う理由はないでしょう。ESXiの古いリリースとvSphereは新しいプロセッサーをサポートしますが、最大のEVC基準線は、そのvSphereバージョンがリリースされた際に機能していた古いプロセッサーのレベルに保持されます。これらはその時点で最新のものだったと考えられていました。
EVCモードのレベルを変更する際には、設定をそれらのVMsに適用するために、実行中のVMsを停止して再起動する必要があります。VMの再起動だけは十分ではありません。
VMwareの互換性ガイド
VMwareのウェブサイトで、プロセッサの互換性とvCenterサーバーの最高可能なEVCモードを確認できます。互換性を確認するには、VMware互換性ガイドのページを開き、ドロップダウンメニュー(つまり、何を探していますか)でCPUシリーズを選択し、製品リリースバージョンリストでESXiバージョンを選択し、CPUシリーズリストでESXiホストにインストールされているプロセッサを選択します(左のマウスボタンをクリック)。必要なパラメータを選択したら、CPU/EVCマトリックスボタンをクリックして、ESXiサーバーの利用可能なEVCモードの表を表示します。以下のスクリーンショットに示す例では、ESXi 6.5(vCenter 6.5で管理)、Intel Xeon E3-1500-v5、Xeon E5-4600-v3、およびXeon Platinum 8100プロセッサが選択されています。選択したすべてのプロセッサでサポートされるEVCモードの最高レベルはIntel Haswell Generationです。
必要条件
EVCモードを有効にした後、vMotionが正常に機能するには、次の要件を満たす必要があります:
- すべてのESXiホストのプロセッサは、IntelのみまたはAMDのみである必要があります。
- Intel VT-xやAMD-Vなどのプロセッサ仮想化機能が、ESXiホストのUEFI/BIOSで有効にされている必要があります。
- ESXiホストは同じvCenter Serverによって管理されている必要があります。
- ESXiホストはvMotionを使用するように構成されている必要があります。
EVCの有効化と構成方法
EVC の有効化と構成方法
理論に慣れたら、実際に EVC モードの構成を見直しましょう。EVC レベルを低下させる必要がある ESXi ホスト上の VM を電源オフにするかもしれません。UEFI/BIOS で無効になっているプロセッサ機能がないことを確認して、問題が起こらないようにします。
Web ブラウザで VMware vSphere Web Client を開き、vCenter Server の IP アドレスをブラウザのアドレスバーに入力します。次に、vCenter > ホストとクラスタに移動し、各 ESXi ホストを選択して CPU(中央処理装置)の構成を確認します。この例では、ESXi 5.5 を実行し、クラスタに追加され、vCenter Server 5.5 で管理されている 2 つのホストを考慮しています。以下のスクリーンショットに示すように、最初の ESXi ホストのプロセッサ モデルは Intel Xeon E3110 であり、2 番目の ESXi ホストには Intel Xeon X3430 が搭載されています。
ESXi ホストがすでにクラスタに追加されている場合は、クラスタ(この例では temp-cluster)を選択し、管理タブをクリックしてから、設定タブを開き、構成 > VMware EVC を選択し、編集ボタンをクリックします。
vCenterでEVCモードを選択する前に、ウェブブラウザで新しいタブを開き、このブログ投稿で上に表示されているようにVMware Compatibility Guideを開いてください。現在の例では、ESXi 5.5、Intel Xeon 31xx Series、Intel Xeon 34xx Seriesを選択する必要があります。CPU/EVC Matrixボタンをクリックした後、スクリーンショットでIntel Penryn GenerationがEVCモード設定で選択されていることがわかります。
vSphere Web Clientのウェブブラウザのタブに戻り、クラスターのEVCモード設定を開きます。 IntelホストのEVCを有効にするをクリックします。 VMware EVCモードのドロップダウンメニューで、Intel Penryn Generationを選択する必要があります。ウィンドウの下部には、互換性セクションで検証が成功しましたと表示されます。これでEVCモード設定を保存するためにOKをクリックできます。
その後、VMware EVCセクションでVMware EVCが有効になっていますという情報が表示されます。 現在のCPUIDの詳細をクリックして、レジスタやマスク値の詳細が表示されるセクションを展開します。
EVCモードは新しいクラスターを作成する際にも有効にできます。VMwareはこの可能性を推奨しています。新しいクラスターの作成中にEVCモードを有効にすることで、通常(新しいEVC設定を適用するためにVMをシャットダウンして電源を入れる必要があることを思い出してください)クラスターで電源が入っているVMをシャットダウンしたり移行したりする問題に遭遇することを防ぎます。
CPUIDマスキング
全クラスターのすべてのVMとESXiホストに適用されるグローバルEVCモードに加えて、vCenter ServerではカスタムVMのCPUIDフラグを手動で設定することもできます。vCenterは、VMに設定されたCPUIDパラメータと、宛先ESXiホストで利用可能なCPUIDパラメータを比較します。これらのパラメータが同じである場合、vMotionによるVMの移行が許可されます。CPUIDマスキング機能は、EVCモード機能よりも古いものです。
VMのCPUIDマスクを設定するためには、以下の手順を実行します:
必要なVMを選択し、VMを右クリックして設定の編集を選択します。開かれた設定の編集ウィンドウで、仮想ハードウェア> CPUを開き、CPUIDマスクを選択し、詳細をクリックします。
CPU識別マスクウィンドウで、必要なレジスタ文字列を選択し、マスクをビットレベルで編集するために値をクリックします。マスクの設定に使用される各文字の意味を表示するには、凡例ボタンをクリックします。
注意! VMware Knowledge Baseまたは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では、異なるクラスターやvCenter Servers間でVMの移行に役立つVMごとのEVCモードを設定でき、より細かい管理が可能です。VMごとのEVCモードは、仮想マシンの設定の属性として設定され、vMotionで移行する必要があるVMの管理に柔軟性を追加します。VMのハードウェア互換性はバージョン14以上である必要があります。VMごとのEVCモードの構成は、featMask.vm.cpuid文字列を含む行としてVMのVMX構成ファイルに保存されます。VMごとに構成されたEVCモードを持つVMが移行されると、VMXファイルに保存されたEVC構成もVMとともに移行されます。VMごとのEVCモード設定は、VMの電源を切っているときに変更できます(変更されたVMごとのEVCモード設定を適用するには、VMの電源を切ってから再起動してください)。
特定のVMがクラスター内に存在し、グローバルEVCモードが構成されている場合、そのVMに対して個別のVM EVCモードを有効にすると、個別のVM EVCモードはクラスター全体に設定されたEVCモードと同じかそれ以下にすることができます。したがって、グローバルおよび個別のVM EVCモードを同時に構成することが可能です。VMをクローンした後、個別のVM EVC設定はVMとともにクローンされます。
個別のVM EVCモードを構成するには、VMware vSphere HTML5クライアントを開き、「ホストとクラスター」に移動し、必要なVMを選択します。次に、「構成」タブを開き、「その他> VMware EVC」を選択し、「編集」をクリックします。
ダウンタイムなしでクラスターでEVCモードを有効にする方法
一部の場合、クラスター全体でEVCモードを有効にすることができます(通常、VMをシャットダウンして電源を入れ直してクラスターのEVCモード設定を適用する必要があります)。これは、次の要件を満たしている場合に可能です:
- 実行中のVMが最も古いプロセッサを搭載したESXiホストに存在すること
- クラスターのEVCモードが最も古いプロセッサの世代に一致するCPU命令セットを使用するように構成されていること
vCenter VMのEVCモードを有効にする方法
VMware vSphere環境で一般的な次の状況に遭遇する可能性があります:
vCenter Serverが、EVCモードが有効になっているクラスターに追加する必要のあるESXiホスト上でVMとして実行されている場合
ESXiのホストが运行中のVM(vCenterを実行しているVMを含む)を含むと、EVCを有効にした後、すべてのVMを停止するまではクラスタに追加できない問題があります。一方、vCenterを管理するためにはVMが运行している必要がありますが、今は使用中であるためvCenter VMを停止できません。この問題は、vCenter VMが新しいプロセッサーを持つESXiホストで运行している場合に特に深刻です。
注釈:この場合、vCenter VMをネットワークに接続するためには、ディストリビューション vSwitchではなく、Standard vSwitchを使用することを推奨します。
A possible solution. Consider the algorithm that can help you to resolve the issue for VMware vSphere 5.5:
- まだクラスタにESXiサーバーが存在していない場合、vCenter VMを実行していない別のESXiサーバーをクラスタに移動します。クラスタに移動するESXiサーバー上のVMは、電源を切られていなければならます。
- vCenter Serverを実行しているVMを停止してください。VMware Host Clientを使用して、vCenter VMがあるESXiホストに接続し、VMをアンレジストしたり、SSHクライアントを使用してファイルをコピーしたりするか、VMware Host ClientでvCenter VMを右クリックし、Unregisterを押します。vCenter VMのすべてのファイルを、既にクラスタに移動したESXiサーバーに接続されたデータストアに手動でコピーします。NFSまたはiSCSI 共有ストレージが2つのESXiホストで共用されている場合、VMファイルを別の場所にコピーする必要はないでしょう。
注釈:vCenter Server VMを1つのESxiホストから別のESxiホストに移動する前に、VMの仮想ネットワークアダプターのMACアドレスを手動で設定する必要があるかもしれません。
- vCenter VMをクラスターに移動したESXiホストに登録します(VMware Host ClientでESXiホストに接続し、データストアを開き、vCenter VMのファイルを見つけ、VMXファイルを選択し、ファイルを右クリックしてVMを登録します)。このESXiホストでvCenter VMをクラスターで実行します。vCenterにVMware vSphere Clientでログインして、vCenterでvSphere環境を管理できることを確認します。一時的にAdmission Controlを無効にする必要がある場合があります。
- 元々vCenter VMが動作していたソースESXiホストをクラスターに移動します。ホストを移動する前に必要に応じてそのESXiホストの他のVMをシャットダウンします。
結論
Enhanced vMotion Capability(EVC)は便利なVMware vSphere機能であり、クラスターを拡張可能にし、異なる世代のプロセッサを持つノードをクラスターに追加してVM live migrationを実行できるようにします。EVCモードは、新世代プロセッサの機能をマスクし、クラスター内のESXiホストが使用する最も古いプロセッサ世代の機能に一致する統一のベースラインを作成します。その結果、すべてのプロセッサが同じ命令セットを使用し、実行中のVMをvMotionで移行できる均一な環境が得られます。クラスターを使用する多くのVMwareの顧客はEVCモードを使用しています。ESXiホストの追加や実行中のVMの移行(vCenter Serverを実行しているVMを含む)に関連する可能性のある問題を避けるために、クラスターの作成時にEVCモードを有効にすることが推奨されています。
クラスターを使用しているかどうかに関係なく、VMware VMのバックアップを忘れないでください。NAKIVO Backup&Replicationは、VMware VMを保護できる迅速で信頼性の高い手頃なデータ保護ソリューションです。これにより、VMがクラスター内のESXiホスト間で移行している場合でもVMを保護できます。
Source:
https://www.nakivo.com/blog/how-vmware-evc-mode-works-overview/