⫸VMware

VMotion 작동 원리

OSMU-PIPELINE 2022. 10. 12. 10:16
반응형

VMotion

운영 중인 가상 머신이 power off 되거나 중지되지 않은 채 그대로 다른 물리적 서버로 이동하기 위해서 해결해야 할 과제는 크게 세 가지이다.

 

첫 번째는 가상 머신의 게스트 운영체제가 가지고 있는 메모리 값과 CPU 상태를 어떻게 다른 물리적인 서버의 VMkernel로 이동시킬 것인지에 관해서이다. 우선 원본 ESXi 서버 위에서 작동 중인 가상 머신에게 VMotion 명령이 떨어지게 되면 가상 머신의 메모리 페이지 값들이 대상 ESXi 서버 쪽으로 네트워크를 통해 먼저 복사가 이루어진다. 복사가 이루어지는 동안에도 계속하여 가상 머신 내의 게스트 운영체제는 I/O를 처리하고 있기 때문에 메모리 페이지 값은 항상 변경될 수 있다. 원본 ESXi 서버는 이렇게 변경되는 메모리 페이지 값을 저장하기 위해 최초 메모리 페이지 값 복사가 시작되는 순간부터 별도의 저장 위치를 만들어 두는데, 이것을 메모리 비트맵이라 부른다. 메모리 비트맵에는 1차적으로 가상 머신의 메모리 페이지 값이 대상 ESXi 서버로 복사가 된 이후부터 변경된 모든 메모리 페이지 값이 저장된다.

원본 ESXi 서버가 1차적으로 가상 머신의 모든 메모리 값을 대상 ESXi 서버 쪽으로 복사해 둔 다음 최종적으로 변경된 메모리 값이 저장된 메모리 비트맵 값을 대상 ESXi 서버 쪽으로 복사를 해야 한다. 하지만 그 순간에도 역시 계속하여 원본 ESXi 서버의 가상 머신에서는 서비스를 진행하고 있기 때문에 메모리 페이지 값이 변경될 수 밖에 없다.

그렇다고 해서 무한정 메모리 비트맵에 저장만 하고 있을 수는 없기 때문에 최종적으로 메모리 비트맵을 대상 ESXi 서버로 복사하는 순간 가상 머신은 멈추게 된다. 그러나 크게 걱정하지 않아도 된다. 최초 전체 메모리 값을 복사는 시간이 조금 소요될 뿐, 변경된 메모리 비트맵 값이 복사되기 위해서 걸리는 시간은 매우 짧으며 보통 2초를 넘기지 않는다.

 

메모리 이전과 아울러 CPU 실행 상태의 이전 역시 많은 주의가 필요하다. 우선 기본적으로 인텔 CPU는 인텔 CPU 끼리, AMD CPU는 AMD CPU 끼리만 서로 이동이 가능하다. 인텔과 AMD CPU와의 상호 VMotion 이동은 불가능하다. 이는 각각의  CPU 제조사에서 구현한 명령어 체계(Instruction set)가 조금씩 틀리기 때문이다. 또한 같은 제조사의 CPU라 할지라도 호환 가능한 CPU세대가 정해져 있으므로 VMware 홈페이지에서 해당 CPU 호환성을 파악하는 것이 중요할 것이다.

 

VMotion이 작동되기 위해 해결되어야 할 두 번째 숙제는 바로 가상 머신의 게스트 운영체제가 담겨 있는 VMDK 파일에 대한 접근 문제이다. 대용량의  VMDK 파일을 메모리 페이지 값 복사와 같이 네트워크를 통해 복사를 할 수는 없기 때문에, 반드시 가상 머신의 VMDK 파일은 원본 ESXi 서버와 대상 ESXi 서버가 서로 접근할 수 있는 공유 스토리지 볼륨에 위치하고 있어야 한다. 바로 VMFS 데이터스토어 또는 NFS 데이터 스토어가 그것이다. VMotion을 해야 하는 가상 머신들의 VMDK 파일은 다른 ESXi 서버들이 접근할 수 없는 로컬 SCSI 기반의 VMFS 데이터스토어에 저장되어서는 안 된다. VMFS 데이터스토어의 경우 클러스터 파일 시스템 구조를 가지고 있기 때문에 다수의 ESXi 서버가 동시에 접근할 수 있지만, 그 위에 존재하는 VMDK 파일은 오직 하나의 ESXi 서버만 열 수가 있다. 그렇기 때문에 VMotion이 실행되면 해당 가상 머신의 VMDK 파일에 대한 소유권 및 접근 권한이 원본 ESXi 서버에서 대상 ESXi 서버로 변경이 이루어진다. NFS 데이터스토어 역시 파일 수준의 공유 서비스를 지원하기 때문에 다수의 ESXi 서버들이 동시에 접근이 가능하지만, 별도의 lock 파일을 통해 VMDK 파일이 단 하나의 ESXi 서버에서만 열릴 수 있다.

세 번째 숙제는 바로 가상 머신의 네트워크 정보이다. 가상 머신이 대상 ESXi 서버로 VMotion 되어 이동하더라도 가상 머신의 MAC 주소 값은 어차피 가상으로 생성된 주소이므로 변경되지는 않는다. 그러나 가상 머신의 위치가 변경된 것은 상위의 물리적 스위치가 알 수 없기 때문에, VMotion이 완료되면 ESXi 서버는 가상 머신의 MAC 주소 값과 포트 위치 값을 새로 갱신하기 위해 RARP 요청을 자동으로 날린다.

VMotion 과정
<VMotion 과정>

VMotion이 진행되는 전체 과정을 순서대로 살펴보면 다음과 같다.

  1. 우선 두 대의 ESXi 서버가 존재하며 ESX01번 위에서 한대의  가상 머신이 작동되고 있다고 가정하자. 각각의 ESXi 서버에는 VMkernel용 포트 그룹을 지닌 가상 스위치와 가상 머신용 포트 그룹을 지닌 가상 스위치가 준비되어 있으며, 각 가상 스위치는 상단의 물리적 스위치와 같이 연결되어 있다. 한편 공유 스토리지 위에 가상 머신의 가상 디스크 파일이 존재하고 있으며, 두 대의 ESXi 서버가 공유 스토리지의 볼륨을 같이 바라보고 있다.
  2.  VMotion이 시작되면 ESXi01에서 작동 중인 가상 머신의 메모리 페이지 값을 ESXi02로 복사하기 시작한다. 이때 VMotion 네트워크를 통해 복사가 이루어진다. 이와 동시에 메모리 비트맵 값이 생성되는데, 가상 머신은 계속해서 운영되고 있기 때문에 메모리 페이지 값이 복사되는 와중에도 언제든지 메모리 페이지 값이 변경될 수 있다. 이때 변경되는 메모리 페이지 값들은 메모리 비트맵에 저장된다. 
  3. 가상 머신의 메모리 페이지 값이 전부 복사가 완료되었다면 ESXi01에서 작동 중인 가상 머신은 잠시 멈추게 된다. 바로 메모리 비트맵 값을 최종적으로 ESXi02쪽으로 복사하기 위해서 이다. 이때의 시간은 전체 메모리 페이지 값을 복사하는 시간보다는 훨씬 짧으며 대략 2초 안에 복사가 완료된다. 한편 ESXi01에서 가상 머신이 멈추면서 ESXi02에서 가상 머신 시작 준비를 한다. 가상 머신이 작동하는데 필요한 모든 구성 파일과 가상 디스크 파일은 공유 스토리지에 존재하므로, ESXi01에서는 해당 가상 머신의 구성 파일과 가상 디스크 파일에 대한 소유권을 버리게 되고(Release) 대상 서버인 ESXi02에서 파일을 열게 된다.
  4. 이제 마지막으로 가상 머신의 MAC 주소 값과 물리적인 스위치 포트 매핑이 변경되었다는 RARP 요청이 뿌려지고, 물리적인 스위치들은 포워딩 테이블 값을 업데이트하게 된다. 이와 함께 최종적으로 가상 머신은 ESXi02에서 시작되면서 VMotion은 마무리된다.
반응형

'⫸VMware' 카테고리의 다른 글

HA 개요 및 작동 원리  (0) 2022.10.14
Storage VMotion 작동 원리  (0) 2022.10.13
가상 머신 스냅샷  (0) 2022.10.11
가상 머신의 구조  (0) 2022.10.10
vCenter 서버 구조  (0) 2022.10.09