가상화 (Virtualization) [전가상화, 반가상화, 컨테이너]

2022. 12. 13. 11:15가상화(Virtualization)

Virtualization 개요
   - 서버나 단일 컴퓨터상에 여러 독립적인 OS를 설치하고 동시에 운영할 수 있는 시스템을 구성하는 것
   - 가상화를 사용할 경우 비용을 절감하고, 시스템의 가용성을 높이고, 유연한 운영을 할 수 있다.
   - 여러 부서에서 서로 다른 프로젝트를 진행 할 경우 개별 서버를 구매하여 사용 하게되면 비용 및 작업부하도가 높아진다.
   - 반면 가상화를 사용 할 경우 한 대의 서버로 서로 다른 프로젝트의 개발 환경을 독립적으로 구성할 수 있다.
   - 가상화의 종류로는 네트워크 가상화(VLAN), 서버 가상화(KVM, Doker), 스토리지(RAID, HADOOP)가상화 등이 있다.

 

 

 

 

 

$ Hypervisor Virtualization

   - TYPE 1 / 네이티브(Native) 또는 베어메탈(Bare Metal) 하이퍼바이저

   - Host OS 없이 HW에 Hypervisor를 설치 후 가상화를 사용하는 방식 ( 전가상화, 반가상화 방식으로 구분 )
   - 종류 : Xen, KVM, MS hyper-V 등이 있다.
   - [ 장점 ] : 별도의 Host OS가 없기 때문에 오버헤드가 적고, HW를 직접 제어하여 효율적인 리소스 사용가능
   - [ 단점 ] : VM에 대한 자체적인 관리 기능이 없기 때문에 관리를 위한 별도의 콘솔(명령어)이 필요하다.

 

 

 

Hypervisor Full Virtualization ( 전가상화 )

   - 하드웨어 전체를 완전히 가상화하는 방식
   - 전가상화 하이퍼바이저를 구동 할 경우 모든 Guest OS 명령은 DOM을 통해 처리된다.
   - 전가상화의 DOM은 Guest OS의 종류와 상관없이 HW를 제어 할 수 있다.
   - [ 장점 ] : 하드웨어를 완전히 가상화하기 때문에 Guest OS 운영체제의 별다른 수정이 필요 없음.
   - [ 단점 ] : 하이퍼바이저가 모든 명령을 중앙에서 처리하기 때문에 성능이 저하된다.

 

 

Hypervisor Para Virtualization ( 반가상화 )

   - 하드웨어 전체를 가상화하지 않는다.
   - 전 가상화의 단점인 성능저하 문제를 해결하기 위해 Hyper-Call 인터페이스를 사용한다.
   - Guest OS는 서로 다른 인터페이스를 통해 HW를 제어하게 된다.
   - Hyper-Call 인터페이스를 사용하기 위해서는 OS Kernel 수정작업을 진행해야 한다. ( MS 사용불가 )
   - [ 장점 ] : 모든 명령을 DOM0를 통해 하이퍼바이저에게 요청하는 전가상화에비해 성능이 빠름.
   - [ 단점 ] : 각 OS의 커널을 수정해야하며 오픈소스 OS가 아닐 경우 반가상화를 사용 할 수 없다.

 

 

KVM ( Kernel Based Virtual Machine )

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

   - 구체적으로, KVM을 사용하면 Linux를 하이퍼바이저로 전환하여 호스트 머신에서 게스트 또는 VM(가상 머신) 등 격리된 가상 환경 여러 개가 실행되도록 할 수 있다

   - KVM은 적재 가능한 커널 모듈의 형태로 존재

   - Qemu은 에뮬레이터 이며 하드웨어를 소프트웨어적으로 구현해 특정 실행 환경을 제공

 

 

$ Host Virtualization

   - TYPE 2 / 호스트(Hosted) 하이퍼바이저

   - Host OS에서 Hypervisor Software를 설치하여 Guest OS를 운영하는 방식
   - 종류 : VMware, Virtual Box 등이 있다.
   - [ 장점 ] : 가상의 HW를 Emulation하기 때문에 Host OS의 제약사항이 없다.
   - [ 단점 ] : Host OS위에 Guest OS가 동작하는 방식이므로, 오버헤드가 크다.

 

 

 

$ Container Virtualization ( 컨테이너 )

   - Host OS위에 컨테이너관리 소프트웨어를 설치하여, 논리적인 공간(Container)으로 나누어 사용
   - APP 동작을 위한 라이브러리 및 어플리케이션으로 구성되어 있어 이를 각각 개별 서버처럼 사용 가능하다.
   - Container Virtualization은 오버헤드가 적어 가볍고 빠르게 가상화 환경을 구축 할 수 있다.