본문 바로가기
컴퓨터공학기초 개념/운영체제

39. 가상머신의 이해

by devraphy 2021. 7. 12.

- 가상 머신은 최근의 인공지능이나 클라우드 컴퓨팅에서 많이 사용되는 기술이다. 

- 가상 머신 기술을 운영체제 측면에서 보면, 소프트웨어를 이용하여 하드웨어를 여러개 구현하는 것이다. 

- 이와같은 이유로 OS 측면에서 가상머신을 위한 특별한 기술이나 깊이있는 접근을 필요로 하지 않는다.

- 하지만, 가상머신 기술 자체는 대학원의 전공으로 지정될 만큼 깊이있는 기술이다. 

- 이번 포스팅에서는 가상머신에 대해 가볍게 알아보도록 하자

 

1. 가상머신이란? 

- 하나의 하드웨어(컴퓨터)에서 다수의 운영체제를 실행하도록 하여 개별 컴퓨터처럼 사용할 수 있도록 하는 것

- 이를 두고, 소프트웨어를 통해 하드웨어를 emulate(모방하다)한다고 말한다. 


2. 가상머신 구현방식

a) Virtual Machine Type 1 (native or bare metal)

- 하이퍼바이저 또는 버추얼 머신 모니터(VMM)라고 불리는 소프트웨어를 이용하여 하드웨어를 emulate하는 방식

   ▶ 하이퍼바이저(= VMM): 운영체제와 응용 프로그램을 물리적 하드웨에서 분리하는 프로세스 

   ex) Xen, KVM

 

ex) AWS에서 사용하는 방식 → 예를 들어, 100개의 컴퓨터 HW자원을 1000명이 사용할 수 있는 가상머신으로 만든다. 

 

b) Virtual Machine Type 2

- 하이퍼바이저 또는 VMM이 Host OS 상위에 설치되어 있는 환경 

   ex) 윈도우 환경에서 리눅스를 구동하는 경우, Mac에서 윈도우를 구동하는 경우  

   ex) VMware, Parallels Desktop 

 

c) Full Virtualization(전 가상화)

- 각 가상머신이 하이퍼바이저를 통해서 하드웨어와 통신하는 환경

- 하이퍼바이저가 가상머신과 하드웨어의 통신을 위한 통역사의 역할을 한다. 

- 가상머신의 OS가 스스로 가상머신이라는 것을 인지하고 있지 않은 환경

- 최근 HW의 성능개선으로 인해 전 가상화 방식을 더욱 선호한다. 

 

d) Half Virtualization(반 가상화)

- 각 가상머신이 직접 하드웨어와 통신하는 환경

- 가상머신의 OS가 스스로 가상머신이라는 것을 인지하고 있는 환경  

- 가상머신의 OS가 스스로 가상머신 이라는 것을 알게 하기위해서 가상머신에 들어가는 OS의 코드를 수정해야 한다. 

- 하이퍼바이저는 가상머신에서 요청하는 자원에 대한 관리를 하게 된다. 

 


3. 추가자료 

a) KVM에 대하여

클릭하면 확대됩니다.

 

b) Docker

- 기존의 가상머신과는 다른 형태의 가상머신 

- 기존의 가상머신은 하드웨어를 emulate하는 방식으로, 하이퍼바이저와 추가 OS등의 필요로 인한 성능저하 이슈가 존재한다.

   ▶ 하드웨어 전체의 추상화를 필요로함

- 그러나, Docker의 경우 운영체제 레벨에서 별도로 분리된 환경을 구현하여 실행 환경을 제공한다. 

   ▶ 커널의 추상화

   ▶ chroot 리눅스 명령어 사용 

   리눅스 컨테이너: 마치 리눅스를 처음 설치했을 때와 유사한 실행환경을 제공한다.  

 

 

c) Java Virtual Machine

- JVM은 기존의 가상머신과는 다른 목적의 가상머신이다. 

- Java라는 코드를 실행환경 또는 OS에 상관없이 컴파일 하기 위한 목적으로 사용하는 것

- Java 컴파일러는 컴파일을 통해 bytecode를 생성한다. 

- byte코드를 실행환경 또는 OS 환경에 따라 이해할 수 있는 언어로 번역하기위한 역할로 JVM을 사용하는 것 

 


4. 결론 

a) bare-metal 방식(= type1)이 가장 성능이 좋다. 

- 하드웨어에 직접 접근하기 때문이다. 

- AWS가 bare-metal 방식을 사용하는 이유이기도 하다. 

 

b) Docker는 경량 이미지로, 실행환경을 통째로 백업 및 실행이 가능하다.

- Data Engineering에서 Docker로 시스템 실행환경 설정과 프로그램을 한번에 묶어서 배포할 수 있다.

- 실무에서 많이 쓰이는 이유이기도 하다. 

댓글