안녕하세요, 오랜만에 글을 올립니다.

 

VMware KB (https://kb.vmware.com/s/article/1003746) 에 의하면 일반적으로 특별한 일이 없으면 Virtual Machine Hardware version 의 업그레이드를 권장하지 않습니다.

 

Warning: Upgrading a VM’s HW version is not recommended unless features in the new version are needed. Upgrading a Virtual Machine to the latest hardware version is the physical equivalent of swapping the drive out of one system and placing it into a new one. Its success will depend on the resiliency of the guest operating system in the face of hardware changes. VMware does not recommend upgrading virtual hardware version if you do not need the new features exposed by the new version. For more information, see Upgrading a virtual machine to the latest hardware version (multiple versions) (1010675).

 

vHW 버전의 경우 보통 ESXi 버전이 올라가면서 새로 생기는 기능 (더 많은 메모리 할당이 필요하다던가, vNVME controller 가 필요하다던가..)  때문에 업그레이드 하는 경우가 많죠.

그리고 VMware 에서 제공하는 Virtual Appliance 형태의 제품 (vCenter 나 vROPS) 등은 vHW 버전 업그레이드를 하지 않습니다.

 

그런데… 한가지 알아두셔야 할 부분이 있습니다.

 

아래 예로 설명드리겠습니다.

 

아래는 Broadwell Generation 을 사용하는 시스템 환경입니다.

vHW 버전 11

vHW 13 입니다.

화면 해상도가 달라서 다르게 보이실 수 있는데, 결론은 vHW 버전이 다르더라도 CPU Flag 는 차이가 없습니다.

 

그런데..

 

아래는 Gold 6240 을 사용하는 시스템입니다.

vHW 버전 11

vHW 버전 13

 

보시다시피 CPU Flag 가 다릅니다. 뭐 EVC 라도 걸려있나 라고 하고 봤는데, 실제로 EVC 가 걸려있지 않은 환경이였습니다.

그래서 좀 알아봤더니…

 

skylake 이상의 CPU 를 쓸때는 vHW 버전 13 이상이어야(정확히는 14) CPU 의 flag 들이 다 노출되는 것을 확인할 수 있었습니다.

대부분의 경우 별 문제는 안되지만, 위에 있는 flag 를 사용해서 연산을 수행하는 어플리케이션을 돌리시는 경우에는 에러가 발생할 수 있습니다. avx512 라던가.. 이런 것들이요.  보통 이럴때는 SIGILL 에러가 떨어진다고 합니다.

 

정리하면, skylake or cascade lake 이상의 CPU 를 쓰실경우에는 vHW 버전도 13 이상으로 유지하시는게 좋겠습니다. broadwell 까지는 변동이 없는걸로 봐서 상관없을 것 같습니다.

2 thoughts on “Virtual Machine Hardware version”
  1. VMware가 문서가 비교적 충실하게 잘 제공되는 편이기는 하지만 가끔씩 중요한 부분들이 언급이 안 되어 있다는 것을 느끼곤 합니다.

    벤더 문서에서도 명확하게 설명이 안 되어 있는 부분을 잘 설명해주셔서 감사합니다.

  2. 추가로 가상하드웨어 버전 14 (esxi 6.7)에서 게스트 운영 체제를 윈도우 서버 2019로 선택하면 가상머신 생성이 되지 않거나, 템플릿에서 배포가 되지 않는 점도 확인되어 공유합니다. 최소 15 이상으로 올려야할 것 같습니다. 저희 랩 환경에서는 ESXi가 7.0U3라서 바로 19로 올렸습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다