가상화 기술의 종류
가상 머신 VM
하나의 컴퓨팅 리소스를 가상화시켜 논리적으로 여러개의 컴퓨터로 나눕니다. 호스트에 여러 가상 머신이 동시에 존재할 수 있습니다. 가상 머신을 구성하는 주요 파일에는 로그 파일, NVRAM 설정 파일, 가상 디스크 파일, 구성 파일 등이 있습니다.
용도
- 서버가상화 : AWS, gcp, Azure, Naver Cloud, KT Cloud 등 가상화 머신에서 서버를 돌릴 수 있도록 제공
- 샌드박스 : 바이러스에 감염된 데이터에 액세스하고 운영 체제를 테스트하는 등, 호스트 환경에서 수행하기에 위험한 특정 작업을 수행하기 위해 생성됩니다. 가상 머신은 다른 시스템에서 sandbox화되므로, 가상 머신 내의 소프트웨어는 호스트 컴퓨터를 변조할 수 없습니다.
장점
- 재해 복구 및 애플리케이션 프로비저닝 옵션 제공합니다.
- 서버 원격 유지 및 관리, 스케일 인 아웃이 가능합니다.
- 하나의 물리적 컴퓨터에서 여러 운영 체제 환경을 실행할 수 있습니다.
단점
- 하나의 물리적 시스템에서 여러 가상 머신을 실행하면 성능이 불안정해질 수 있습니다.
호스트 가상화 Virtual BOX
호스트가상화는 Base가 되는 Host OS위에 Guest OS가 구동되는 방식입니다. 종류로는 VM Workstation, VMware Server, VMware Player, MS Virtual Sever, Virtual PC, Virtual Box, Paralles Workstation 등이 있습니다.
- 장점 : 가상의 하드웨어를 에뮬레이팅하기 때문에 호스트 운영체제에 크게 제약사항이 없습니다.
- 단점 : OS위에 OS가 얹히는 방식이기 때문에 오버헤드가 클 수 있습니다.
하이퍼바이저 가상화 AWS
하이퍼가상화는 Host OS없이 하드웨어에 하이퍼바이저를 설치하여 사용하는 방식입니다. 종류로는 Xen, MS hyper-V, citrix, KVM 등이 있습니다.
- 장점 : 별도의 Host OS가 없기 때문에 오버헤드가 적고, 하드웨어를 직접 제어하기 때문에 효율적으로 리소스를 사용할 수 있습니다. 대부분의 IaaS 솔루션에 해당합니다.
- 단점 : 자체적으로 머신에 대한 관리 기능이 없기 때문에 관리를 위한 컴퓨터나 콘솔이 필요합니다. (AWS ssh 연결 관리, 관리자 콘솔 등)
더 알아보기
하이퍼바이저 가상화는 아래와같이 다시 전가상화(Full-Virtualization or Hardware Virtual Machine)와 반가상화(Para-Virtualization)로 분류 됩니다.
전가상화(Full-Virtualization)
전가상화는 하드웨어를 완전히 가상화 하는 방식으로 Hardware Virtual Machine 이라고도 불립니다.하이퍼바이저를 구동하면 DOM0라고 하는 관리용 가상 머신이 실행되며, 모든 가상머신들의 하드웨어 접근이 DOM0을 통해서 이루어집니다.즉, 모든 명령에 대해서 DOM0가 개입을 하게되는 형태입니다.
쉽게 말해 하이퍼바이저는 가상화된 OS가 뭐든지간에 각 OS들이 내리는 명령어를 알아들을 수 있습니다.예를들어 윈도우 에서 Add, 리눅스 에서 ADD, 맥에서 add 라는 명령어를 내렸을때 하이퍼바이저가 “더해라”라고 번역 하여 명령어를 실행해주는 것입니다.하이퍼바이저는 이러한 번역 역할 뿐만 아니라 가상화된 OS들에게 자원을 할당해주는 역할도 담당합니다.
- 단점 : 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 비교적 느림
- 장점 : 하드웨어를 완전히 가상화하기 때문에 Guest OS 운영체제의 별다른 수정이 필요 없음
반가상화(Para-Virtualization)
반가상화는 전가상화와 달리 하드웨어를 완전히 가상화 하지 않습니다.
전가상화의 가장큰 단점인 성능저하의 문제를 해결하기 위해 하이퍼콜(Hyper Call)이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청을 날릴 수 있습니다.
쉽게 말하면 가상화된 각 OS들이 각각 다른 번역기를 갖고 있는 것입니다. 그 번역기는 각각 다른 OS에서 내리는 각각 다른 명령어를 “더해라”라고 번역해주게 되는 것입니다.
- 장점 : 모든 명령을 DOM를 통해 하이퍼바이저에게 요청하는 전가상화에비해 성능이 빠름
- 단점 : 하이퍼바이저에게 Hyper Call 요청을 할 수 있도록 각 OS의 커널을 수정해야하며 오픈소스 OS가 아니면 반가상화를 이용하기가 쉽지 않음
컨테이너 가상화 Docker
호스트 OS위에 컨테이너관리 소프트웨어를 설치하여, 논리적으로 컨테이너를 나누어 사용합니다.컨테이너는 어플리케이션 동작을 위한 라이브러리와 어플리케이션등으로 구성되기때문에 이를 각각 개별 서버처럼 사용가능합니다.
- 장점 : 컨테이너 가상화는 오버헤드가 적어 가볍고 빠른 장점이 있음
- 단점 : 커널을 공유하기 때문에 커널 단의 문제가 발생하면 컨테이너도 영향을 받습니다. 리눅스 기반 운영체제에서 지원합니다. 최근에는 WSL(윈도우 서브리눅스) 제공으로 어느정도 완화되었습니다.