vMotion
vSphere의 VM Online Migration 기능
- VM을 현재 동작하고 있는 ESXi Host에서 다른 ESXi Host로 실시간으로 이동시키는 기능
- Guest OS + App들이 다운되지 않고 Host를 이동
- x86 서버 가상화가 VMware에 처음 소개된 시점에서 가장 기본적 + 혁신적인 기능으로 인식되는 중
- VM은 OS와 물리 서버와의 의존도를 상당히 낮춤
- ESXi Host 차원에서 vMotion은 VM의 리소스 및 제어권을 넘겨 받는 것
- 데이터스토어 내의 VM의 CPU 및 메모리 부분은 host 사이에서 이동
- 데이터스토어의 용량은 바뀌지 X → host 간 공유 스토리를 사용하기 때문
- vSphere 6 이상의 vMotion은 ESXi host 간 마이그레이션 뿐 아니라 vCenter 사이에서도 동작 가능
- 네트워크 발전을 통해 대륙간 vMotion 역시 가능해짐
- VM → Migration
→ 계산 리소스만 변경(vMotion) → host 선택
→ vSwitch(VMKernel) 선택 → vMotion 우선순위 선택 → vMotion 진행 → VM 의 host 변경 확인
vMotion이 구현되기 위한 조건
- ESXi Host 간 공유 스토리지 설정
- 모든 ESXi host가 같은 스토리지 볼륨을 바라보고 있어야 함
- 공유 스토리지 형식은 FC SAN, FCoE, iSCSI SAN, NFS 중 한 가지
- 사실 vSphere 6에서는 공유 스토리지 없이도 vMotion 기능이 가능하긴 함
- 그러나 여전히 공유 스토리지가 갖추어져야 수행한 기능이 많아서 공유 스토리지는 국룰
- vMotion 전용 고속 개별 네트워크
- VM 용 네트워크 X, VMkernel 용 네트워크 O
- VMKernel 용 vSwitch 생성이 필요 (없으면 vMotion 자체가 안됨)
- 생성 이후 vMotion 트래픽 서비스 사용 선택 (FT, SAN, 프로비저닝 등등 다 마찬가지)
- vMotion이 수행되는 시점에서 네트워크로 VM의 메모리 비트맵 이미지 전송 → 전용 네트워크 필요
- VM 들이 사용하는 네트워크와는 별개의 독립적인 네트워크 필요
- 10G 네트워크 (한 개 혹은 여러 개의 별도로 구성되어도 상관 없음)
- vSphere 5에서는 1G로도 충분 했으나, 네트워크 발전 및 퍼포먼스 최적화로 10G로 수정됨
- CPU 호환성
- ESXi Host를 올릴 x86 서버들 간의 밴더 호환성 (Intel CPU, AMD CPU 등)
- EVC (Enhanced vMotion Compatibility)
- VMware에서 제공해주는 CPU 호환성을 위한 기술
- 예전에는 vMotion 호환성을 맞추기 위해 CPUID의 필드 비트를 맞추는 등의 방법을 사용 (현재는 사용 X)
- EVC 기술을 제공함으로써 vSphere 버전과 x86 서버의 CPU가 너무 오래되지만 않으면 대부분 vMotion이 호환되도록 설계함
vMotion이 수행되는 절차
이 모든 과정이 진행되는 동안 사용자는 변화를 거의 느낄 수 없음
- ESXi 01, 02는 같은 SAN을 공유 + SAN 위에 있는 VMFS를 공유, ESXi 01에서 VM이 VM 네트워크를 사용 중 → ESXi 01에서 02로 vMotion 실행
- 메모리를 ESXi 01
→ ESXi 02로 사전 copy
→ copy 진행 중에 발생하는 메모리 변경 분은 ESXi 01의 메모리 비트맵에 보관
→ 메모리 copy 시 vMotion 네트워크 사용
- ESXi 01에서 돌고 있는 VM 정지 (아주 순간적이므로 사용자는 정지를 인식하지 못함) + ESXi 01 메모리 비트맵(변경 분)을 ESXi 02 host 로 복사
- ESXi 02 에서 VM 기동 + 유저는 ESXi 02 에 새로 뜬 VM에 접속(내용은 동일)
- 마이그레이션 완료 후 ESXi 01 host에서 VM 삭제
→ 실제로 VM 내에 설치된 OS에도 영향 X, 마이그레이션만 진행됨