가상화와 하이퍼 바이저

가상화란?


하나의 물리적인 컴퓨터 하드웨어를 사용하여 여러 개의 가상적인 환경을 생성하고 실행하는 기술이나 방법을 말합니다.

이러한 가상 환경은 가상 머신(VM, Virtual Machine)이라고도 불리며, 각 가상 머신은 독립된 운영체제와 응용 프로그램을 실행할 수 있습니다.

 

  • 하나의 물리머신 상에서 복수의 시스템(게스트 OS)을 동시 운영한다.
  • 가상화 이전에는 하나의 애플리케이션만 운영할 수 있었음.
  • 가상화 이후에는 애플리케이션들이 OS위에 바로 올라가는 것이 아니라 각기 다른 가상 머신 위에 올라갑니다.

 

 

그럼 어떻게 다른 OS들을 사용할 수 있을까?

각각의 OS는 ‘커널’이라는 것이 존재하는데, 커널은 하드웨어 리소스를 관리하고, 명령어를 해석하는 역할을 합니다.

하지만, OS마다 명령어를 해석하는 규칙도 다릅니다.

 

 

서로 다른 명령어들을 이해하는 방법?? 하이퍼바이저


하이퍼바이저는 각 OS마다 말하는 명령을 하드웨어가 이해할 수 있게 하나의 명령어로 번역해 주는 인터페이스 역할을 합니다.

이런 가상화를 구현하기 위한 기술이 하이퍼 바이저입니다.

 

타입1 (Bare-metal) 하이퍼바이저

  • 호스트의 하드웨어 위에서 직접 실행됩니다.
  • 호스트 시스템과 하드웨어 사이에서 하드웨어 리소스를 가상화하고 관리합니다.
  • 일반적으로 서버 가상화에 사용됩니다

타입2 (Hosted) 하이퍼바이저

  • 기존 운영 체제 위에서 실행되며, 호스트 운영 체제에서 동작합니다.
  • 호스트 운영 체제 위에서 하이퍼바이저가 동작하고, 가상 머신들을 만들고 실행합니다.
  • 설치가 편리하고, 구성이 편합니다. (성능은 낮음)

 

가상화 방식


전가상화

각 게스트 OS에서 물리적인 CPU, RAM, 네트워크 인터페이스, 디스크에 요청하는 명령들이 각각 다르므로, 가상화 계층인 하이퍼바이저가 이를 받아 일관된 하드웨어 명령으로 변환하여 지원합니다.

하드웨어를 완전히 가상화하는 방식으로 HVM(Hardware Virtual Machine) 이라고도 불립니다.

하이퍼바이저를 구동하면 DOM0라고 하는 관리용 가상 머신이 실행되며, 모든 가상머신의 하드웨어 접근이 DOM0를 통해서 이루어집니다.

장점과 단점

장점

  • 하드웨어를 완전히 가상화하기 때문에 Guest OS 운영체제의 별다른 수정이 필요 없음.

단점

  • 하이퍼바이저가 OS들의 모든 명령을 중재하기 때문에 성능이 비교적 느립니다.

각 게스트 OS는 DOM 0 라는 관리 머신을 거쳐 하이퍼바이저와 통신하므로, CPU와 RAM처럼 I/O가 잦은 자원을 컨트롤하기에는 번거롭습니다.

이런 한계를 개선하기 위해 반가상화 방식이 출현하게 되었습니다.

 

반가상화

가상 머신과 하이퍼바이저가 협력하여 성능을 개선하는 방식입니다.

전가상화의 가장 큰 단점인 성능저하를 해결하기 위해 Hyper Call 이라는 인터페이스를 통해 하이버파이저에게 직접 요청을 날릴 수 있습니다.

각 게스트 OS에서 물리적인 CPU, RAM, 네트워크 인터페이스, 디스크에 요청하는 일부 명령을 하이퍼바이저를 거치지 않고 하드웨어에게 직접 요청합니다.

쉽게 말하면, 가상화된 각 Guest OS들이 각각 다른 번역기를 가지고 있는 것입니다.

 

장점과 단점

장점

  • 전가상화보다 성능이 우수합니다. 특히 CPU 연산과 I/O 작업에서 성능 향상을 기대할 수 있습니다.

단점

  • 가상 머신의 운영 체제를 수정해야 하므로 호스트 시스템에 반드시 가상화 지원을 하는 수정된 운영 체제를 설치해야 합니다.
  • 게스트 운영체제를 수정해야 하므로 호환성 문제가 발생할 수 있습니다.

 

하이퍼바이저의 종류

1. KVM (Kernel-based Virtual Machine)

커널을 기반으로 전가상화 방식을 지원하는 리눅스 기반 오픈소스 하이퍼바이저

전가상화 방식이기 때문에 게스트 OS로 리눅스나 윈도우 이미지를 수정하지 않고 여러 가상 머신을 실행할 수 있습니다.

 

2. Xen과 Xen Server

Xen(젠)은 오픈소스 하이퍼바이저 중 하나로, 하드웨어 위에서 실행되는 Type1의 형태 또는 베어 메탈 형태의 가상화 기술입니다.

CPU, Memory, Inturrupt 등을 직접 다루고, 물리 자원을 추상화합니다.

네트워크와 스토리지는 전가상화, RAM/CPU는 반가상화 방식을 사용하여 실제 CPU와 유사한 성능을 가집니다.

 

3. Hyper-V

MS가 Windows 서버에 추가한 전가상화 방식의 하이퍼바이저입니다.

윈도우용 VirtualBox 혹은 VMWare, Docker Engine 등이 Hyper-V를 이용합니다.

 

컨테이너 방식의 가상화

가상 머신보다 훨씬 더 가벼운 형태로 실행되며, 이미지 기반 배포가 가능하고 가볍게 실행됩니다.

리눅스 기반의 컨테이너 이미지만 실행할 수 있습니다.

컨테이너 이미지는 리눅스 커널 + 라이브러리 + 애플리케이션이 하나로 묶인 형태로 애플리케이션에 특화된 라이브러리만 묶기 때문에 가볍고 버전 충돌도 일어나지 않습니다.

컨테이너 기술은 LXC(Linux Container)에서부터 출발합니다. LXC는 호스트 OS에서 프로세스 간 벽을 만드는 기술로, 네임 스페이스와 cgroup을 조합한 형태입니다.

 

네임스페이스

리눅스 시스템 자원을 묶어 프로세스에 할당하는 방식

하나의 프로세스 자원을 관리하는 기능이며 IBM에서 개발하였습니다.

 

Cgroup

메모리 등 프로세스 그룹의 시스템 자원 사용량을 관리하여 특정 애플리케이션이 자원을 과다하게 사용하는 것을 제한합니다. Google에서 개발

 

가상머신과 컨테이너의 차이점은 무엇인가요?

공통점

하이퍼바이저와 컨테이너 모두 다른 소프트웨어 계층에서 가상화를 제공합니다.

 

차이점

[ 하이퍼바이저 ]

소프트웨어 환경에서 하드웨어를 추상화합니다.

 

[ 컨테이너 ]

컨테니어 엔진이 운영 체제를 추상화하는 환경에서 실행됩니다.

일반적으로 컨테이너에서는 OS가 포함되지 않아 크기가 수십 MB에 불과하고, OS 부팅이 없으므로 서비스 시작 시간이 짧습니다.

'CS > 인프라' 카테고리의 다른 글

VPC란?? Virtual Private Cloud의 모든 것  (4) 2023.06.08
IaaS VS PaaS VS SaaS  (2) 2023.03.30
컨테이너와 가상머신의 차이점 with Docker  (2) 2023.01.26
JenKins 개념 및 기능  (0) 2023.01.12