VMware EVC 모드 작동 방식: 전체 개요

VMotion 기능을 熟悉한다면, ESXi 서버에서 VM 라이브 이전을 실시할 때 같은 프로세서를 사용하는 것을 추천하는 것을 기억해야 합니다. cluser에 다른 프로세서 모델을 사용하고자 하는 경우, 같은 기generation의 프로세서를 배포하는 것이 좋습니다. 그리고 строгим 요구사항으로, 프로세서는 같은 제조업체의 AMD나 Intel과 같은 것이어야 합니다. 그렇지 않으면 vMotion을 사용할 때 오류가 발생할 수 있습니다.

VMware은 생산 환경에서 발생할 수 있는 상황을 고려한 vSphere 소프트웨어를 설계했습니다. 이것은 클러스터를 확장하기 위해 다른 프로세서를 갖는 새로운 서버를 추가하는 것을 포함합니다. 이것은 일반적인 상황입니다. 예를 들어 3年前에 구입한 5개의 ESXi 노드로 cluber를 갖추고 业务적인 이유로 더 많은 VM을 실행하기 위해 두 개 추가적인 노드를 더 추가해야 합니다. 3年前에 구입한 프로세서는 현재 생산하고 있지 않으며 시장에서 더 안 판매되고 있습니다; 가장 최신 가정의 프로세서만 구입할 수 있습니다. 걱정할 理由이 없습니다.- VMware vSphere에서 하igh Availability clusters를 사용하면, 다른 프로세서를 갖는 노드를 추가하고 다른 프로세서를 갖는 호스트 사이에 가상 머신을 라이브 이전할 수 있습니다. 이것은 VMware vSphere의 클러스터에 EVC(Enhanced vMotion Capability) 기능을 사용하여 가능합니다.

VMware EVC 모드 작동 원리

각 새로운 세대의 프로세서에는 이전 프로세서 세대용으로 사용 가능한 명령어 세트에 추가로 새로운 명령어 세트가 포함됩니다. 일반적으로 새로운 기능은 실행 중인 응용 프로그램의 성능이나 보안을 향상시킵니다. 예를 들어, SkyLake 세대의 프로세서는 Haswell 세대의 프로세서와 비교하여 하나의 새로운 명령어 세트(SGX)를 가지고 있습니다. 이 두 프로세서 세대의 명령어 세트를 살펴보고 그 세부 내용을 탐색해 봅시다.

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 프로세서에서 버그로 인해 마이크로코드를 통해 비활성화되었으며, 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 마이그레이션에 채택된 동일한 환경을 갖게 됩니다. 동일한 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) 수준을 설정해야 할 수 있습니다.

일반적으로 VM을 실행 중인 경우 변경된 EVC 모드 설정을 적용하려면 종료하고 전원을 다시 켜야합니다. vCenter 4.1 이상을 사용하는 경우 가장 오래된 프로세서를 가진 ESXi 호스트에서 실행되는 VM은 종료되지 않을 수 있습니다(실행 중인 상태로 둘 수 있습니다). 이 경우, EVC 모드는 가장 오래된 프로세서의 세대와 동일해야합니다. 새로운 CPU 기능을 갖춘 프로세서가있는 ESXi 호스트에서 실행되는 VM은 전체 클러스터에서 EVC 모드를 활성화하기 전에 전원을 꺼야합니다. ESXi 호스트가 클러스터에서 제외되면 EVC 모드가 비활성화된 채로 계속 작동합니다.

VMware vSphere 버전 / EVC를 위한 CPU 호환성

필요한 EVC 모드는 프로세서 모델 및 vCenter Server 버전에 따라 다릅니다. 최신 버전의 vCenter Server에서의 EVC 모드는 최신 프로세서를 지원합니다. 최신 세대의 프로세서를 갖춘 서버가있는 경우 최신 버전의 vCenter를 사용하는 것이 좋습니다. 아래 표에서는 Intel 프로세서 세대 및 vCenter 버전 조합 중 환경의 EVC 클러스터 기준을 결정하는 데 지원되는 조합을 볼 수 있습니다.

가장 적합한 EVC 모드는 클러스터 내부의 ESXi 서버의 가장 오래된 프로세서 모델에 의해 결정됩니다. 기술적으로는 가장 오래된 프로세서의 세대보다 낮은 수준의 EVC 모드를 선택하는 것이 가능하지만, 일반적으로 이러한 설정을 하는 이유가 없습니다. 이전 버전의 ESXi 및 vSphere는 새로운 프로세서를 지원하지만, 해당 vSphere 버전이 출시되었을 때 기능적이고 그 당시에 최신으로 고려되었던 오래된 프로세서의 수준에서 최대 EVC 기준이 보존됩니다.

EVC 모드의 수준을 변경할 때는 실행 중인 VM을 종료하고 다시 시작하여 해당 VM에 설정을 적용해야 합니다. VM을 재부팅하는 것만으로 충분하지 않습니다.

VMware 호환성 가이드

VMware 웹 사이트에서 프로세서의 호환성 및 vCenter 서버의 가능한 최고 EVC 모드를 확인할 수 있습니다. 호환성을 확인하려면 VMware 호환성 가이드 페이지를 열고 드롭다운 메뉴에서 CPU 시리즈를 선택하십시오 (즉, 무엇을 찾고 있습니까), 제품 릴리스 버전 목록에서 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 모드의 최고 수준은 Intel Haswell Generation입니다.

요구 사항

EVC 모드를 활성화한 후 vMotion이 올바르게 작동하려면 다음 요구 사항을 충족해야 합니다:

  • 모든 ESXi 호스트의 프로세서는 Intel 전용 또는 AMD 전용이어야 합니다.
  • ESXi 호스트의 UEFI/BIOS에서 Intel VT-x 또는 AMD-V와 같은 프로세서 가상화 기능이 활성화되어 있어야 합니다.
  • ESXi 호스트는 동일한 vCenter Server에 의해 관리되어야 합니다.
  • ESXi 호스트는 vMotion을 사용하도록 구성되어야 합니다.EVC 활성화 및 구성 방법

EVC를 활성화하고 구성하는 방법

이론에 익숙해지면, EVC 모드의 구성을 실제로 검토해보겠습니다. EVC 레벨이 낮아져야 하는 ESXi 호스트에서 가상머신을 종료해야 할 수도 있습니다. 가능한 문제를 피하기 위해 UEFI/BIOS에서 비활성화된 프로세서 기능이 없는지 확인하십시오.

브라우저의 주소 표시줄에 vCenter Server의 IP 주소를 입력하여 웹 브라우저에서 VMware vSphere 웹 클라이언트를 엽니다. vCenter > 호스트 및 클러스터로 이동하여 각 ESXi 호스트를 선택하여 CPU (중앙 처리 장치) 구성을 확인합니다. 현재 예제에서는 클러스터에 추가되고 vCenter Server 5.5로 관리되는 두 개의 ESXi 호스트가 실행되는 ESXi 5.5를 고려합니다. 아래 스크린샷에서 첫 번째 ESXi 호스트의 프로세서 모델은 Intel Xeon E3110이고 두 번째 ESXi 호스트에 설치된 프로세서는 Intel Xeon X3430입니다.

ESXi 호스트가 이미 클러스터에 추가되었다면 클러스터(temp-cluster 예제)를 선택하고 Manage 탭을 클릭한 다음 Settings 탭을 열고 Configuration > VMware EVC를 선택하고 Edit 버튼을 클릭합니다.

이제 vCenter에서 EVC 모드를 선택하기 전에 웹 브라우저에서 새 탭을 열고 블로그 게시물에서 위에 표시된 VMware 호환성 가이드를 엽니다. 현재 예에서는 ESXi 5.5, Intel Xeon 31xx 시리즈Intel Xeon 34xx 시리즈를 선택해야 합니다. CPU/EVC Matrix 버튼을 클릭한 후, 스크린샷에서 Intel Penryn Generation이 EVC 모드 설정에서 선택되어야 함을 확인할 수 있습니다.

웹 브라우저의 vSphere 웹 클라이언트 탭으로 돌아가 클러스터의 EVC 모드 설정을 엽니다. Intel 호스트용 EVC 활성화를 클릭합니다. VMware EVC 모드의 드롭다운 메뉴에서 Intel Penryn Generation을 선택해야 합니다. 창 아래쪽에서 호환성 섹션에 유효성 검사 성공이 표시됩니다. 이제 EVC 모드 설정을 저장하려면 확인을 클릭할 수 있습니다.

이후에 VMware EVC 섹션에서 VMware EVC가 활성화됨 정보가 표시됩니다. 섹션을 확장하여 레지스터 및 마스크 값에 대한 자세한 내용을 확인하려면 현재 CPUID 세부정보를 클릭합니다.

EVC 모드는 새 클러스터를 생성하는 동안에도 활성화할 수 있습니다. VMware는 이 가능성을 권장하는 관행으로 소개합니다. 새 클러스터를 생성하는 동안 EVC 모드를 활성화하면 일반적으로 새 EVC 설정을 적용하려면 켜져 있는 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 지식 베이스나 VMware 지원 지침을 숙지하기 전에는 마스크를 편집하지 마십시오. CPU 호환성 마스크를 수동으로 편집하면 지원되지 않는 VM 구성이 발생할 수 있습니다. 예를 들어, Windows VM이 BSOD로 실패할 수 있습니다.

PowerCLI에서 EVC 모드 구성 확인

전체 클러스터와 사용자 지정 VM의 EVC 모드 구성을 VMware PowerCLI에서 다음 명령을 사용하여 확인할 수 있습니다:

Get-VM | Select Name,HardwareVersion,

VM_EVC_Mode

Cluster_Name

Cluster_EVC_Mode

COMMAND어flight 후 クラスター内のすべてのホストのサポートされる最大のEVCレベルを確認することができます。

Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode

VMごとのEVCモード

上記で説明したEVCモードはクラスターレベルのオプションです。VMware vSphere 6.7では、異なるクラスターやvCenter Server間でVMの移動に便利な、VMごとのEVCモードを設定する機能を提供しています。これによりより詳細な管理が可能です。VMごとのEVCモードは仮想マシンの設定の属性として設定され、vMotionと共に移動する必要のあるVMの管理により柔軟性を提供します。VMのハードウェア互換性はバージョン14またはそれ以上でなければならません。VMごとのEVCモードの設定は、VMのVMX設定ファイルに保存され、featMask.vm.cpuid文字を含む行としてなされます。EVCモードを設定したVMが移動されると、VMXファイルに保存されたEVC設定がVMとともに移動します。VMがオフになっている間にVMごとのEVCモードの設定を変更することができます(VMの電源を切り替えると、変更されたVMごとのEVCモード設定が適用されます)。

만약 이미 전역 EVC 모드가 구성된 클러스터에 있는 VM에 대한 per-VM EVC 모드를 활성화하면, per-VM EVC 모드는 전체 클러스터에 설정된 EVC 모드보다 동일하거나 낮을 수 있습니다. 따라서 전역 및 per-VM EVC 모드를 동시에 구성하는 것이 가능합니다. VM을 복제한 후에는 per-VM EVC 설정이 VM과 함께 복제됩니다.

per-VM EVC 모드를 구성하려면 VMware vSphere HTML5 클라이언트를 열고 호스트 및 클러스터로 이동한 다음 필요한 VM을 선택하세요. 구성 탭을 열고 더 보기 > VMware EVC를 선택한 후 편집을 누르세요.

다운타임 없이 클러스터에서 EVC 모드를 활성화하는 방법

일부 경우에는 전체 클러스터에서 EVC 모드를 활성화할 때 VM 중지가 필요하지 않을 수 있습니다(일반적으로 클러스터 EVC 모드 설정을 적용하려면 VM을 종료하고 켜야 합니다). 이는 다음 요구 사항을 충족하는 경우에 가능합니다:

  • 실행 중인 VM이 가장 오래된 프로세서를 가진 ESXi 호스트에 상주함
  • 클러스터의 EVC 모드가 가장 오래된 프로세서의 세대와 일치하는 CPU 명령 집합을 사용하도록 구성됨

vCenter VM에 대한 EVC 모드 활성화

다음과 같은 상황이 VMware vSphere 환경에서 흔히 발생할 수 있습니다:

vCenter Server가 EVC 모드가 활성화된 클러스터에 추가되어야 하는 ESXi 호스트에서 VM으로 실행 중입니다.

문제는 ESXi 호스트에서 실행중인 VMs(vCenter 실행 중인 VM을 포함한)를 EVC를 사용하는 것으로 이동하기 전에 모두 정지할 수 없다는 것입니다. 다만, vCenter를 관리하기 위해서는 vCenter VM이 필요하며, 현재 사용되는 것으로 vCenter VM을 정지할 수 없습니다. 이러한 문제는 vCenter VM이 ESXi 호스트에서 신 Couner 프로세서를 사용하는 경우에 더욱 critical해집니다.

참고: 이 경우에는 vCenter VM과 네트워크를 연결하는 것을 고려한다면 Standard vSwitch(Distributed vSwitch가 아닌)를 사용하는 것이 좋습니다.

A possible solution. Consider the algorithm that can help you to resolve the issue for VMware vSphere 5.5:

  1. 集群에 아직 ESXi 서버가 없다면 다른 ESXi 서버(vCenter VM을 실행하고 있지 않은)를 集群에 추가하십시오. 集群에 이동할 ESXi 서버에 있는 VMs은 정지되어야 합니다.
  2. vCenter Server를 실행하는 VM을 정지하십시오. VMware Host Client을 사용하여 vCenter VM이 위치하고 있는 ESXi 호스트에 연결하여 VM을 등록解除하거나 SSH 클라이언트를 사용하여 파일을 복사하십시오. VMware Host Client에서 vCenter VM을 오른쪽 클릭하고 Unregister를 눌러 manuel로 vCenter VM의 모든 파일을 이미 集群에 이동한 ESXi 서버가 연결되어 있는 datastore에 복사하십시오. ESXi 호스트가 NFS나 iSCSI shared storage를 공유하고 있는 경우, VM 파일을 다른 위치로 복사할 필요가 없습니다.

참고: vCenter Server가 실행되는 VM을 한 ESXi 호스트에서 다른 ESXi 호스트로 이동하기 전에 VM의 가상 네트워크 어댑터의 MAC 주소를 수동으로 지정해야 합니다.

  1. vCenter VM을 클러스터로 이동된 ESXi 호스트에 등록하십시오 (VMware Host Client를 사용하여 ESXi 호스트에 연결하여 데이터 저장소를 열고 vCenter VM의 파일을 찾아 VMX 파일을 선택한 다음 파일을 마우스 오른쪽 버튼으로 클릭하고 VM 등록을 누르십시오). 클러스터에서 이 ESXi 호스트에서 vCenter VM을 실행하십시오. VMware vSphere Client로 vCenter에 로그인하여 vSphere 환경을 vCenter로 관리할 수 있는지 확인하십시오. 임시로 Admission Control을 비활성화해야 할 수도 있습니다.
  2. 원래로 vCenter VM이 작동했던 소스 ESXi 호스트를 클러스터로 옮기십시오. 호스트를 이동하기 전에 필요에 따라 해당 ESXi 호스트의 다른 VM을 종료하십시오.

결론

향상된 vMotion 기능(EVC)은 클러스터를 확장 가능하게 유지하고 다양한 세대의 프로세서로 노드를 추가하여 vMotion을 사용하여 ESXi 호스트 간에 VM 라이브 마이그레이션을 수행할 수 있는 유용한 VMware vSphere 기능입니다. EVC 모드는 새로운 세대의 프로세서의 기능을 가리고 클러스터의 ESXi 호스트에 사용된 가장 오래된 프로세서 세대의 기능과 일치하는 통합된 기준을 만듭니다. 결과적으로 모든 프로세서가 동일한 명령어 집합을 사용하고 실행 중인 VM이 vMotion으로 이동할 수 있는 동질적인 환경이 생깁니다. 클러스터를 사용하는 많은

클러스터를 사용하든 사용하지 않든 VMware VM을 백업하는 것을 잊지 마십시오. NAKIVO Backup & Replication은 클러스터 내의 ESXi 호스트 간에 마이그레이션하는 VM이라 할지라도 VMware VM을 보호할 수 있는 빠르고, 신뢰할 수 있으며, 저렴한 데이터 보호 솔루션입니다.

Source:
https://www.nakivo.com/blog/how-vmware-evc-mode-works-overview/