Info
Content

The vMotion Process Under the Hood

원문 출처 : https://blogs.vmware.com/vsphere/2019/07/the-vmotion-process-under-the-hood.html

VMware vSphere vMotion 기능은 오늘날의 가상 인프라에서 가장 중요한 기능 중 하나다. 2002년에 처음 시작되었고, 2003년에 릴리즈된 이후 활성 상태의 VM을 한 물리적 ESXi 호스트에서 다른 물리적 ESXi 호스트로 마이그레이션할 수 있게 되었다. 오늘날 VM을 원활하게 마이그레이션하는 기능은 거의 모든 가상화 구현에서 필수적인 부분이다. 워크로드의 이동성은 VMware HCX(Hybrid Cloud Extension)를 사용하여 사내 클라우드와 퍼블릭 클라우드 간에 워크로드를 이동할 수 있어 진정한 하이브리드 클라우드 환경의 기반이며, vSphere vMotion은 여전히 IT 업계에서 가장 중요한 Game-Changer 중 하나이며 앞으로도 그럴 것이다.
오랜 기간 vMotion 내부에서는 새로운 기술을 지원하기 위해 많은 것이 개발되어 왔다.

vMotion-timeline3-1024x265.png

이 블로그 게시물은 활성 컴퓨팅 상태를 소스에서 대상 ESXi 호스트로 마이그레이션하는 표준 vMotion인 컴퓨팅 전용 마이그레이션에 초점을 맞춘다. 또한 컴퓨팅 vMotion과 결합하면 XvMotion으로 간주되는 Storage vMotion을 수행할 수 있는 가능성도 있다. 다른 양념으로는 Long Distance vMotion과 Cross vCenter vMotion이 있으며, 이 두 가지 양념은 주로 vMotion 프로세스의 ESXi 측면에서 vCenter Server 작업을 수행하는 것이다.
이 글을 읽으면 가상 머신 마이그레이션을 시작할 때 후드 아래에서 일어나고 있는 '마법'에 대해 더 잘 이해할 수 있을 것이다.

vMotion 프로세스

가상 시스템 마이그레이션이 시작되면 vCenter Server 인스턴스가 마이그레이션을 처리하기 위해 소위 오래 Long-Running Migration 작업을 실행하게 된다. 첫 번째 단계는 호환성 검사를 수행하는 것이다. 대상 호스트에서 가상 시스템을 실행할 수 있는가? 라이브 마이그레이션을 막을 수 있는 가능한 제약조건에 대해 확인해본다. 다음으로 소스 및 대상 ESXi 호스트에게 진행 상황을 알려 주는 것이다. 다음 정보를 포함하는 마이그레이션 규격이 생성된다:

  • 라이브로 마이그레이션되는 VM
  • 해당 가상 시스템의 구성(가상 하드웨어, VM 옵션 등)
  • 소스 ESXi 호스트
  • 대상 ESXi 호스트
  • vMotion 네트워크 세부 정보

마이그레이션 사양은 vCenter Server 인스턴스에 의해 소스 및 대상 ESXi 호스트와 공유되고, 마이그레이션 프로세스를 시작하는 데 필요한 모든 정보가 교환되는지 확인한다. vCenter Server는 ESXi 호스트에서 실행 중인 VPXA(Virtual Provisioning X Agent)를 호출하는 VPXD(Virtual Provisioning X Daemon)를 사용하여 ESXi 호스트와 통신한다. VPXA는 VPXD의 메시지를 수신하여 마이그레이션 규격을 수신하여 hostd를 통해 VMX 프로세스에 전달한다. 호스트 데몬(hostd)은 VMstate와 같은 가상 시스템 원격 측정을 포함한 관리를 위해 호스트별 정보와 액세스를 유지 관리한다. 마이그레이션이 시작되면 hostd는 마이그레이션 중에 가상 시스템의 구성을 변경할 수 없도록 가상 시스템을 중간 상태로 전환한다.

vMotion-process4.png

VMM(Virtual Machine Monitor) 프로세스는 가상 시스템 메모리를 관리하고 가상 시스템 스토리지 및 네트워크 I/O 요청을 VMkernel로 전송하는 역할을 한다. 다른 모든, 성능에 중요하지 않은 I/O 요청은 VMM에서 VMX로 전달된다. VMX(Virtual Machine Extension) 프로세스가 VMkernel에서 실행되며, 성능에 중요하지 않은 디바이스에 대한 I/O VMM은 마이그레이션 중에 소스 ESXi 호스트에서만 사용된다. 이는 가상 시스템의 활성 메모리가 있는 위치이기 때문이다.
이 작업이 완료되면 소스 ESXi의 VMkernel 마이그레이션 모듈이 vMotion 지원 네트워크의 소켓을 열어 대상 ESXi 호스트와의 통신을 설정한다.

사전 복사(Pre-Copy) 단계 준비

지금쯤 모든 프로세스와 통신 경로가 라이브 마이그레이션을 시작할 준비가 되어 있을 것이다. 준비 단계는 대상 ESXi 호스트가 마이그레이션할 VM에 대해 컴퓨팅 리소스를 미리 할당하는지 확인하는 것이다. 또한 VM은 대상 ESXi 호스트에 생성되지만 마스킹되어 있다. 마이그레이션 사양에 포함된 VM에 대한 모든 정보를 이미 알고 있음
준비 단계가 완료되면 메모리가 소스에서 대상 ESXi 호스트로 전송되는 사전 복사 단계로 프로세스가 이동한다. 소스 ESXi 호스트의 모든 가상 시스템 메모리 페이지를 추적해야 한다. 이렇게 함으로써 vMotion 프로세스는 이러한 메모리 페이지를 대상 호스트에 다시 보내야 하므로 마이그레이션 중에 덮어쓰는 메모리 페이지를 Dirty Page라고 한다.

Page Tracing

사전 복사(Pre-Copy) 단계에서는 가상 시스템에서 사용 중인 vCPU가 페이지 트레이서를 설치하기 위해 잠시 기절(stunned) 시킨다. 이제 VMM이 가상 시스템의 메모리 페이지 테이블 상태를 소유하므로 VMkernel 마이그레이션 모듈에서 페이지 추적을 시작하도록 요청한다. 다음 다이어그램은 vMotion 중에 게스트 OS가 메모리에 데이터를 쓸 때 발생하는 작업을 보여 준다.

vMotion-pagetrace2.png

반복적인 메모리 사전 복사

페이지 추적은 연속적인 순환(cycle)이다. 여러번의 반복을 통해 메모리 사전복사 컨버전스를 지향한다. 첫 번째 반복(사전 복사 단계 1)은 가상 시스템 메모리를 복사한다. 다음 반복(사전 복사 단계 0 ~ n)은 더티 메모리 페이지를 복사하는 작업을 한다. 예를 들어, 24GB 메모리가 있는 가상 시스템을 라이브 마이그레이션할 때 반복이 다음과 같이 나타날 수 있다.

  • 단계 -1: 24GB의 가상 시스템 메모리 및 추적 페이지를 복사하십시오. 우리가 그 기억을 보내면, 8GB가 더러워진다.
  • 0단계: 오염된 8GB를 다시 전송하십시오. 이 과정에서 메모리는 또 다른 3GB를 더럽힌다.
  • 1단계: 3GB를 전송하십시오. 이러한 전송이 진행되는 동안 가상 시스템이 1GB 더러워짐
  • 2단계: 나머지 1GB를 전송하십시오.

메모리 페이지가 소스에서 대상 ESXi 호스트로 복사되므로 모든 메모리가 대상으로 복사되는 시기를 결정해야 한다. VMM은  반복 후에 사전 복사 프로세스를 종료할 수 있는지 여부를 VMkernel에 묻는다. 이는 모든 메모리 변경 사항(더러운 페이지)이 대상 호스트에 복사됐을 때만 가능하다. 반복 메모리 사전 복사 알고리즘의 일부는 모든 대상 메모리 페이지를 소스와 일치시키는 것이다. 0페이지부터 최대 또는 마지막 메모리 페이지 번호까지 모든 메모리 페이지를 순차적으로 점검하여 대상 페이지가 원본 페이지와 동기화되었는지 확인한다.

vMotion-iterativememprecpy2.png

사전 복사를 종료할 수 있는지 여부를 판단하려면 500ms 보다 작은 범위에서 마지막 메모리 페이지 복사를 완료할 수 있는지 검증해야 한다. 마이그레이션 세금(tax)의 정보를 사용하여 이 값을 계산할 수 있다.

  • 마이그레이션 전송 속도, 메모리 데이터를 복사하는 속도(GbE)가 호스트에 미치는 영향
  • 더티 페이지 비율(GB/s); 게스트 OS에서 덮어쓰는 메모리 페이지 수
  • 대상 호스트로 전송할 페이지는 몇 장이나 남았는가?

만약 그렇지 않다면, 다음 반복이 일어난다. 결과가 "예"인 경우 VMkernel 마이그레이션 모듈은 사전 복사 프로세스를 종료한다.

이제 더티 페이지 비율이 마이그레이션 전송 속도보다 높으면 어떻게 될까? 만약 그렇다면, 우리는 결코 메모리 사전 복사 융합에 도달할 수 없고 마이그레이션이 중단될 것이기 때문에 또 다른 반복을 하는 것은 의미가 없다. 이것이 바로 우리가 vSphere 5.0과 함께 SDPS(Stun During Page Send)를 도입한 이유다. 기본적으로 SDPS는 VMkernel이 VMM에게 스케줄링된 지침을 실행하지 말고 정말로 짧은 '절전'을 도입하라고 지시하는 방법이다. 이는 워크로드 성능에 미치는 영향처럼 들릴 수 있지만, 이는 세분화된 수준에서 발생한다. 우리는 여기서 마이크로초 단위로 이야기하고 있는데, 이것은 우리가 수렴할 수 있는 매우 작은 시간 체계 때문에 vMotion 프로세스가 성공할 것이다.

SDPS는 더러운 페이지 비율이 전송 속도보다 큰 경우 각 반복으로 실행된다. 후속 반복은 이전 반복 동안 수정된 더러운 메모리 페이지만 복사한다. 반복 기간이 짧으면 게스트 OS가 메모리 페이지를 수정하거나 더러워질 기회가 줄어들어 다음 사전 복사 반복이 짧아진다. 성능 비용의 형태가 수반되지만, 일반적으로 SDPS는 작업 부하에서 눈에 띄지 않는다. 목표는 항상 게스트 OS에서 마이그레이션이 발생하는 것을 인식하지 못하게 하는 것이다.

전환

메모리 사전 복사 마이그레이션이 VMM에 의해 종료된 상태에서 모든 메모리 페이지는 대상 ESXi 호스트에 있게 된다. 이제 VMM은 소스 가상 시스템을 일시 중단할 수 있는 원격 프로시저 호출(RPC)을 VMX에 전송한다. VMX가 가상 시스템을 일시 중단하고 체크포인트 데이터를 대상 ESXi 호스트에 보내는 체크포인트 단계로 진입한다.

vMotion-checkpoint.png

이 과정에서 대상 ESXi 호스트의 VM이 마스크 해제되고, 체크포인트 데이터를 사용하여 상태가 복원된다. 기본적으로 대상의 가상 시스템 전원이 켜져 있지만 부팅 프로세스가 중단되어 소스 ESXi 호스트에서 마이그레이션되는 메모리 페이지를 가리킨 경우 이 모든 일은 일반적으로 100~200ms에 일어난다. 가상 시스템이 실행 상태가 아닌 스턴타임입니다. 스턴 시간의 지속 시간은 호스트 하드웨어 및 동적 게스트 워크로드와 같은 다양한 요인에 따라 달라진다.

이제 VM이 라이브로 마이그레이션됐다!

마치면서

vMotion 프로세스를 심층적으로 설명하려고 했지만, 배경에서 일어나는 일에 대해 공유할 세부 사항이 훨씬 더 많다. 나는 네가 이 블로그 게시물에 감사하기를 바란다. 귀중한 정보를 제공해 준 것에 대해 우리 vMotion 엔지니어링 팀에 큰 감사를 표한다.

VMworld에 참석 중인 경우 HBI2333BU – ‘How to Get the Most Out of vSphere vMotion에 방문하기 바란다. 워크로드가 증가하고 있는 상황에서 vMotion 성능을 향상시키기 위해 무엇을 할 수 있는가? 이 세션에서는 vMotion 프로세스에 대한 보다 자세한 정보를 알아보고 마이그레이션 시간과 디버깅을 줄이는 방법에 대한 모범 사례를 살펴보십시오. 100GbE NIC를 사용하여 vMotion을 조정하여 라인 레이트 성능을 얻는 방법에 대해 알아 보십시오.

학습용 다른 자료

Enhanced vMotion Compatibility (EVC) Explained

VMotion, the story and confessions

 

No Comments
Back to top