융융이'Blog

[용어정리]하이퍼바이저(hypervisor)란? 본문

2022이전/클라우드

[용어정리]하이퍼바이저(hypervisor)란?

바로퇴장 2020. 6. 1. 10:44

Hyperviseur.png

하이퍼바이저란? 호스트컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼을 말한다. 즉, 가상머신을 생성하고 구동하는 소프트웨어입니다. 하이퍼바이저는 CPU, 메모리, 스토리지 등의 가상 OS에 필요한 리소스를 물리적 리소스에서 할당받아 제공을 한다.

서로 다른 여러개의 운영체제를 나란히 구동할 수 있으며, 하이퍼바이저를 사용해 동일한 가상화 하드웨어 리소스를 공유합니다. VM을 모니터링하는 중간 관리 VMM(Virtual Machine Monitor)이라고 불린다.

쉽게 설명하자면, Hypervisor는

  1. OS들에게 자원을 나눠주며 조율한다.
  2. OS들의 커널을 번역해서 물리적 하드웨어에게 외쳐준다.

종류

하이퍼바이저는 일반적으로 2가지로 나뉜다.

img

  • 타입 1(native or bare-metal)
    • 가상 시스템 또는 게스트운영 체제 중 하나의 문제가 하드웨어에서 실행 중인 다른 게스트 운영체제에 영향을 미치지 않는다는 것입니다. 그림 위와 같이 가상머신이 2번째 수준으로 실행됩니다. 대표적인 하이퍼바이저는 Xen, KVM, Oracle VM server for SPARC, Microsoft Hyper-V a및 VMware의 ESX / ESXi가 있습니다.

  • 타입2 (Hosted)

Hosted 하이퍼바이저는 일반 프로그램과 같이 호스트 운영체제에서 실행되며 VM 내부에서 동작되는 게스트 운영체제는 하드웨어에서 3번째 수준으로 실행됩니다. 대표적으로는 VMware Server, VMware Workstation , Virtual box가 있습니다.

전가상화 vs 반가상화

하이퍼바이저는 어떻게 가상화를 하느냐 가상화가 지원되는 하드웨어를 쓰느냐 쓰지 않느냐에 따라 또 분류가 나누어집니다.

전가상화(Full Virtualiztion)란?

전가상화(Full Virtualization)란 하드웨어를 모두 가상화 한 것을 말합니다. 하이퍼바이저를 베어메탈에 구동하면, DOM0라고 하는 관리용 가상머신이 구동된다. 전가상환는 나머지 모든 가상머신들의 하드웨어 접근이 이 DOM0를 통해서 이뤄진다. 모든 명령에 대해서 DOM0가 개입을 하게 되는 형태이다. 하드웨어를 완전히 가상화 하기 때문에 게스트운영체제의 별다른 수정없이 사용할 수 있다는 장점이 있다.

하지만 하이퍼바이저가 모든 명령을 중재하게 되기 때문에 성능이 비교적 느리다. 또 한, 특정 인스트럭션의 경우 하이퍼바이저가 반스시 처리해줘야하며, 트랩 처리도 해줘야 하는 문제가 있다.

반가상화

전가상화와는 달리 하드웨어를 완전히 가상화하지 않는다. 전가상화의 가장 큰 단점인 성능 저하를 해소하고자 모든 명령을 DOM0를 통해 하이퍼바이저에게 요청을 하는 것이 아니라 하이퍼콜(Hyper Call)이라는 인터페이스로 직접 하이퍼바이저에게 요청을 날릴 수 있게 해주는 것이다. 따라서 전가상화에 비해 성능이 빠르다는 장점이 있다.

하지만 하이퍼콜을 이용하여 하이퍼바이저에게 요청을 보내는 동작을 기존 OS들은 할 수 없다. 즉, 게스트 운영체제가 하드웨어의 가상화 여부를 알고 있어야 하며, 필요한 경우 하이퍼바이저에게 하이퍼콜을 요청할 수 있도록 운영체제의 커널을 수정해야 한다. 따라서 오픈소스 운영체제가 아니라면 반가상화를 이용하기 쉽지 않다는 단점이 있다. (물론 Xen-tool 같은 것을 윈도우에 설치하면 반가상화를 이용할 수 있는 방법이 있긴 하다)

가상화 장점

  1. 기민한 탄력성(Rapid Elasticity)
    • 탄력성은 필요에 따라 자원의 확장과 감소를 처리할 수 있는 능력을 말한다.
    • 클라우드 컴퓨팅 서비스를 사용하는 사용자는 자원을 무한대로 확장 할 수 있거나 필요한 만큼의 수준으로 마음대로 줄일 수 있어야 한다.
    • 이런 작업을 수행하는데 수일 이상 소요되는 것이 아니라 수분~수십분 이내로 작업을 할 수 있다.
  2. 측정 가능한 서비스(Measured Service)
    • 자원의 사용량이 실시간으로 수집되고 모니터링 돼야 한다.
    • 이 정보를 이용해 사용량에 따른 과금을 할 수 있으며, 자원의 부족에 따른 자원 추가 요청 등의 작업을 할 수 있따.
  3. 온디맨드 셀프 서비스(On-Demand Self-Service)
    • 사용자는 클아우드 서비스의 관리자 등과 같은 사람의 개입없이 원하는 시점에 서비스를 바로 사용할 수있따.
  4. 유비쿼터스 네트워크 접근(Ubiquitous Network Access)
    • 클라우드 서비스 제공자는 네트워크 기반으로 서비스에 접속 할 수 있게 해야한다.
    • 다양한 클라이언트에 의해 접속 가능하다.
  5. 자원 풀(Resource Pooling)
    • 물리적 자원이나 가상화된 자원은 풀로 관리되며, 사용자의 요청에 의해 사용자에게 할당되너나 다시 풀로 반환된다.
    • 사용자는 자원의 물리적인 위치, 크기등에 대해서는 모르고 자원을 추상화시켜 제공한다.
  6. 지역간 무중단 이동이 가능(중요)
    • 서로 다른 게스트OS사이에서 하나의 HOST 위에서 동작하고 있다면, APP의 중단없이 이동이 가능하다.

그리드 컴퓨팅, 유틸리티 컴퓨팅

  • 그리드 컴퓨팅(Grid Computing)

    • 인터넷에 분산된 다양한 시스템과 잉여 자원들을 공유
    • 가상의 슈퍼컴퓨터와 같이 활용(분산컴퓨팅 구조)
    • 클러스터 컴퓨팅의 확장된 개념으로 볼 수 있다.
  • 유틸리티 컴퓨팅(Utility Computing)

    • 가스, 전기 등과 같이 필요할 때마다 사용하는 방식(사용량 기반 과금 모형)

클라우드 컴퓨팅과의 관계(그리드, 유틸리티)

클라우드 컴퓨팅은 그리드 방식의 분산 컴퓨팅과 유틸리티 개념의 과금 모형을 혼합한 컴퓨팅 방식

  • 그리드 : 인터넷의 모든 컴퓨팅 자원
  • 클라우드 : 서비스를 제공하는 사업자의 컴퓨팅 자원으로 그리드 컴퓨팅의 사용화 개념

The NIST Cloud Definition Framework

서비스 전달 방식은 어떤 서비스를 제공하느냐에 따라 다음과 같이 나눠진다.

img

Infrastructure as a Service(IaaS)

서버를 운영하기 위해서는 서버 자원, IP, Network, Storage, 전력 등등 인프라를 구축하기 위해 여러가지가 필요합니다. Iaas는 이러한 것들을 가상의 환경에서 쉽고 편하게 이용할 수 있게 서비스 형태로 제공합니다. 예, GCP, AWS instance 기능들

Platform as a Service(PaaS)

서비스를 개발 할 수 있는 안정적인 환경(Platform)과 그 환경을 이용하는 응용 프로그램을 개발 할 수 있는 API까지 제공하는 형태를 Paas라고 합니다. 예: Google AppEngine, Docker

Software as a Service(SaaS)

:Cloud환경에서 동작하는 응용프로그램을 서비스 형태로 제공하는 것을 Saas라고 합니다. 예를들어 구글드라이브에서 pdf 파일을 열어보는 것들을 예를 들 수 있습니다

참고 :