본문 바로가기
IT/Azure

가상화 종류와 차이 조사

by rapker 2023. 4. 26.
반응형
VMware, VirtualBox, Paralles 같은 가상화 프로그램들은 전혀 궁굼하지 않았지만,
그동안 public cloud 를 접해오면서 각 vendor들에서는 어떠한 가상화 기술을 사용하는지 궁굼했었습니다.
728x90
 
각 public cloud vendor가 어떤 가상화 기술을 사용하는지 왜 궁굼했냐~~
 
때는 바야흐로..... -0-
Public cloud를 Azure로 접하게 되면서 Shared VM에 대해 이것저것 알아가는 중이였습니다.
 
어느날
"Shared VM이 돌아가는 Host의 유지관리를 위해 정기적인 maintenance 발생되어 Shared VM에 영향을 끼칠 수 있고, 이를 피하기 위해 Shared VM이 아닌 Dedicated Host를 사용하여 한 달에 한번(최대 35일) 원하는 시간에 maintenance를 진행할 수 있다."
 
이런 말을 들었고 생각을 좀 해봤습니다.
 
'Guest OS에 업데이트를 비활성화 했어도 Host 때문에 Guest OS가 영향을 받을 수 있구나'
 
'왜? Host 업데이트도 끄면 안되나?' 라는 생각을 갖게 되었습니다.
 
비슷한 무렵 "AWS 사용할 때는 몇개월씩 maintenance없이 Shared VM이 잘 사용 했었는데 Azure는 왜 그러냐" 라는 이야기가 들리고...
 
AWS와 Azure의 가상화 방식이 달라서 그렇다, 가상화 사용하는 OS가 windows라서 그렇다 등 의 이야기를 듣고
 
'응 그렇구나~ OS랑 가상화 방식이랑 달라서 그렇구나' 까지는 이해 했지만 나중에 기회되면 찾아봐야지~
라고 생각한게 벌써 1년이 넘어가는..... -0-
 
가상화 종류를 비롯해 이번에 조사하면서 기록한 내용들은 아랫쪽에 잘 모셔 두었구요
 
요점 정리만 해놓고 나중에 꺼내 봐야겠습니다.
 
 
하이퍼바이저 가상화
  • Linux
    • Xen
      • Xen PV (Para Virtualization) : 반가상화
      • Xen HVM (Hardware Virtual Machine) : 전가상화
    • KVM
      • Linux 커널에 내장된 기능
  • Windows
    • Hyper-V
  • Container
 
 
Public Cloud Vendor에서 사용하는 가상화
 
AWS
Azure
GCP
Hypervisor
Xen HVM
Xen PV
Nitro
Hyper-V
KVM
Host OS
Linux
Windows
Linux
 
AWS는 Xen HVM, Xen PV모두 지원 했지만 현재 Xen HVM만 지원하는 쪽으로 방향을 잡은 것 같고, 점차 Nitro 가상화를 주력으로 하려는 모양새입니다.
 
위 표에서 보면 Azure만 Windows를 사용하고 있구요, Windows 정책상 한 달에 한번 업데이트를 해야 하기 때문에
슬프게도 Azure만 정기적인 Maintenance가 있는 것으로 알려져 있습니다. ㅜㅜ
 
하여 연결을 유지해야하는(socket 통신) 프로그램(서버)이 실행되는 VM이 필요한 고객사의 경우 ADH (Azure Dedicated Host)를 권장하는 편이고
주로 게임사에서 ADH가 사용되고 있습니다.
 
반응형
 

 

 
조사하면서 기록
 
 
  1. 호스트 가상화
    1. Host OS위에 Guest OS가 구동되는 방식
    2. 종류 : VM Workstation, VMware Server, VMware Player, MS Virtual Server, Virtual PC, Virtual Box, Paralles Workstation 등
  2. 하이퍼바이저 가상화
    • Host OS 없이? 하드웨어에 하이퍼바이저를 설치하여 사용되는 방식
    • 종류 : Xen, MS Hyper-V, Citrix, KVM 등
 
가상화 종류
전가상화 (Full-Virtualization)
  • Hardware Virtual Machine 이라고도 불림
  • 하이퍼바이저를 구동하면 DOM0라고 하는 관리용 가상머신이 실행되고
  • 모든 가상머신들의 하드웨어 접근이 DOM0를 통해 일어짐
  • 장점 : 하드웨어를 완전히 가상화 하기 때문에 Guest OS 의 별다른 수정이 필요없음
  • 단점 : 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 비교적 느림


반가상화(Para-Virtualization)

  • 전가상화의 가장 큰 단점인 성능저하의 문제를 해결하기 위해 Hyper Call 이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청을 날립니다.
  • 장점 : 모든 명령을 DOM0를 통해 하이퍼바이저에게 요청하는 전가상화에비해 성능이 빠름
  • 단점 : 하이퍼바이저에게 Hyper Call을 요청할 수 있도록 각 OS의 커널을 수정해야 하며 오픈소스 OS가 아니면 반 가상화를 이용하기 쉽지 않음
 
컨테이너 가상화
  • 호스트 OS위에 컨테이너 관리 소프트웨어를 설치하여 논리적으로 컨테이너를 나누어 사용합니다.
  • 장점 : 오버헤드가 적어 가볍고 빠른 장점이 있음
  • 단점 : 사용하기 까지 공부할 것이 추가로 생김

 

 

 

 

AWS

Xen 또는 니트로 하이퍼바이저

 

EC2 instance의 가상화 기술은 아래 표와 같이 Xen PV 으로 시작하여 Xen HVM 을거쳐 Nitro 까지 발전을 거듭해왔습니다.

[AWS] Nitro system 이란?(AWS 5세대 인스턴스) - KimDragon Tech & Economy Blog (AWS 가상화에 대한 설명 좋음)

[리눅스 가상화 개념] 가상화(Virtualization)와 하이퍼 바이저 (Hypervisor) - 사막의 여우 (하이퍼바이저 가상화의 설명 좋음)

 

 

 

 

 

 

 

Azure AWS에서 사용하는 호스트가 각각 Windows Server와 Linux Server 사용되는 것으로 알려져 있는데

윈도우라서 Hyper-v를 쓰고 리눅스라서 Xen을 쓰는게 아닌가본데?

 

 

 

 

모든 AWS AMI(Amazon Machine Image)는 베어메탈에서 Xen 하이퍼바이저를 사용합니다. Xen은 HVM (Hardware Virtual Machine) 및 PV (반가상화)의 두 가지 가상화를 제공합니다. -링크

 

 

아 하이퍼바이저 라는건 그냥 가상화 기술을 의미 하는거고 os 단에서 가상화 해주는게

리눅스는 KVM이고, 윈도우는 Hyper-v 인건가? - 링크

 

그러네~ 맞네~

Hyper-V vs KVM : Select the right hypervisor for your IT needs

Hyper-v는 Windows만 되고 KVM은 오픈소스로 Intel, AMD에서 작동할 수 있다네

 

Hyper-V와 KVM의 주요 차이점

  • Hyper-V는 Microsoft에서 제공하고 Windows에서 실행되는 반면
  • KVM은 Linux에 내장 된 오픈소스 하이퍼바이저 라는 것

 

 

Hyper-V와 KVM의 메모리 프로비저닝 옵션

Windows Server, Windows 10 Pro 및 Windows 10 Enterprise에 Hyper-V를 포함하고 Hyper-V Server라는 Hyper-V의 무료 독립 실행형 버전을 제공

KVM은 x86 머신이 있는 최신 Linux 커널과 가상화 기술이 활성화된 Intel 프로세서 또는 보안 가상머신 기능이 있는 AMD 프로세서에서 작동할 수 있습니다.

 

AWS에서의 PV와 HVM 문서 내용 중

반가상화(PV)가 성능이 더 좋다고 알려져 왔기 때문에 HVM을 선택할 일은 없었는데,

PV가 HVM보다 성능이 좋기는 했지만 그 차이가 크지 않았고 AWS가 발전하면서 퍼포먼스 차이가 더 줄어들었거나 어떤 경우는 HVM이 더 좋은 성능을 내는 경우도 있다고 한다. 또 이렇게 된 이유로 Xen 자체의 기술 향상, 새로운 세대의 CPU 도입, EC2 driver의 향상 등을 들고 있다.

그리고 이번에 직접 목격한 대로 AWS는 PV => HVM으로 점차 바꾸고 있는 중인 것 같고 최신 instance type들은 HVM으로만 제공하는 것으로 보인다.

AMI(Amazon Machine Image) matrix를 살펴보니 이제 PV지원하는 instance type은 거의 없다.

Amazon Linux AMI 인스턴스 유형 매트릭스

 

 

 

Azure 선단의 하이퍼바이저 보안 문서 내용 중

Azure 하이퍼바이저 시스템은 Windows Hyper-V를 기반으로 합니다.

 

GCE에서 하이퍼 바이저 선택으로 KVM

GCP는 Xen이 아니라 KVM을 사용한다는데? 아닌가? 선택적으로 사용할 수 있다는건가?

 

Google Cloud에서 KVM 하이퍼바이저를 강화하는 7가지 방법: 일반 텍스트의 보안 중

Googld Cloud는 Google Compute Engine 및 Google Container Engine의 기반으로 수십명의 연구원이 검증한 오픈소스 KVM하이퍼바이저를 사용하며,...

 

 

여기까지 요약 정리

 
AWS
Azure
GCP
Hypervisor
Xen HVM
Xen PV
Nitro
Hyper-V
KVM
Host OS
Linux
Windows
Linux

 

아~ 여기 좋은거 찾았네

Xen, KVM, HVM, PV - 또리장군 내용 중 (각 가상화에 대한 설명이 잘 번역되어 있음)

 
Xen : metal상에 동작하는 hypervisor를 말하며(pc/server) 호스트 가상 머신들은 domain이라 불린다.
  • Xen PV domain은 para virtualized(반가상화) domain이다.
    • 이는 운영체제(일반적으로 리눅스)가 Xen 에서 동작하도록 수정되었다는 것을 의미하며
    • 하드웨어 에뮬레이션을 할 필요가 없다.
    • 이는 가장 효율적인 방법으로 성능면에서도 좋다.
  • Xen HVM domain은 domain이 하드웨어로 에뮬레이션되며
    • 이는 운영체제(리눅스, 윈도우 등) 수정되지 않고 하드웨어에 의해 에뮬레이트 된다.
    • 이로인해 조금 느려지는데 일반적으로 중요한 하드웨어(디스크, 네트워크)를 위해
    • 게스트 운영체제에 PV 드라이버를 설치해 전체적으로는 full virtualized로 게스트가 동작하지만
    • 성능상 중요한 하드웨어 부분은 para virtualzied로 동작시킨다.
    • 최근 리눅스 시스템을 커널안에 디스크와 네트워크를 위한 PV드라이버가 내장되어 있으며 윈도우즈 또한 다양한 PV 드라이버를 가지고 있다.
    • 근래에 개발되고 있는 HVM은 일반적으로 표준 작업량에서 HVM과 PV 사이 성능적으로 약간의 차이를 가지고 있다.(큰 차이 없다는 뜻인듯)
KVM은 Xen이 아니며 리눅스의 커널에 내장된 또 다른 가상화 플랫폼이다.
  • 게스트의 관점에서 보면 Xen HVM과 닮았다.
  • 게스트는 full virtualized로 동작하며 디스크나 네트워크를 위해 특정드라이버를 사용해 부분적으로 para virtualized로 동작한다.

 

Xen HVM과 KVM은 하드웨어 가상화 기술(Intel VT-x, AMD AMD-v)에 도움을 받는다.

이에 반해 Xen PV는 PV지원 없이는 운영체제를 동작시킬 수 없다. (Xen PV에서 윈도우즈를 동작 시킬 수 없다. 윈도우즈를 수정할 수 없으니...)

 

Xen HVM과 KVM은 게스크 시스템에서 PV드라이버를 사용하지 않는 장치를 위해 실제 하드웨어를 에뮬레이트 할 수 있도록 QEME (Quick Emulator)가상화 소프트웨어의 일부분을 사용한다.

 

Xen(PV와 HVM 둘 다)은 게스트가 동작하고 있는 상태에서도 하나의 물리 서버에서 다른 서버로 라이브 마이그레이션을 할 수 있다.

하지만 KVM도 할 수 있는지는 잘 모르겠다. (글쓴이가 이렇게 말 했지만 KVM도 라이브 마이그레이션 가능합니다.)

 

Xen과 KVM은 실제 메모리 보다 더 많이 적재할 수 없다. VMware와 같은 플랫폼은 게스트의 디스크에 스왑을 할 수 있다.

하지만 최근들어 Xen 하이퍼바이저는 게스트가 지원하는 경우 메모리 활용도와 게스트 성능을 향상 시킬 수 있는 transcendent memory를 지원한다.(커널 >= 3.something.)

 

 

반응형
LIST

'IT > Azure' 카테고리의 다른 글

Cognitive Translator 간단 테스트  (0) 2023.04.26
VMSS Flexible Mode  (0) 2023.04.26
Azure PowerShell Module 재설치  (0) 2023.04.26
Storage Account blob 이동 테스트  (0) 2023.04.26
Azure에서 인증서 백업받기  (0) 2023.04.26