가상화 기술(서버 가상화, 컨테이너 가상화)
본문 바로가기
IT 이야기/가상화 기술

가상화 기술(서버 가상화, 컨테이너 가상화)

by 찬찬이 아빠 2023. 6. 15.
반응형

개인적으로 가상화 공부를 위해 정리한 내용들입니다.

함께 공부하자는 취지로 내용을 공유합니다.

1. 서버 가상화

VM은 ‘하이퍼바이저’를 이용해 하드웨어 자원을 가상화하는 방식 또는 그 결과물을 말합니다. 따라서 VM을 이해하기 위해서는 먼저 하이퍼바이저를 알아야 합니다.

하이퍼바이저는 호스트 시스템에서 다수의 게스트 OS를 구동할 수 있게 하는 소프트웨어입니다. 하드웨어를 가상화하면서 하드웨어와 각각의 VM을 모니터링하는 중간 관리자 역할을 하는 것이 하이퍼바이저(i.e Virtual Machine Monitor)입니다.

하이퍼바이저는 두 가지 유형으로 분류됩니다.

 

 (1) 베어메탈 가상화

Type1. 네이티브 or 하이퍼바이저형(native/bare-metal or Hypervisor)

 

하이퍼바이저가 하드웨어 바로 위에서 실행되는 방식입니다.
하이퍼바이저가 하드웨어를 직접 제어하기 때문에 자원을 효율적으로 사용할 수 있고, 별도의 호스트OS가 없으므로 오버헤드가 적지만 여러 하드웨어 드라이버를 세팅해야 하므로 설치가 어렵습니다.
대표적으로는 Xen, 마이크로소프트 Hyper-V, KVM이 네이티브 하이퍼바이저에 속합니다.


호스트 OS 없이 하드웨어에 하이퍼바이저를 설치하는 방식

베어메탈 가상화

  • 장점 : 별도의 Host OS가 없기 때문에 오버헤드가 적고, 하드웨어를 직접 제어하기 때문에 효율적으로 리소스를 사용할 수 있음
  • 단점 : 자체적으로 머신에 대한 관리 기능이 없기 때문에 관리를 위한 컴퓨터나 콘솔 필요

 

(2) 호스트 가상화

Type2. 호스트형(hosted)

 

호스트형 하이퍼바이저는 일반적인 소프트웨어처럼 호스트 OS 위에서 실행됩니다.
하드웨어 자원을 VM 내부의 게스트 OS에 에뮬레이트 하는 방식이기 때문에 네이티브 방식에 비해 오버헤드가 크지만, 게스트 OS 종류에 대한 제약이 없고 데스크톱뿐 아니라 노트북에서도 운영할 수 있습니다.

대표적으로는 VMware server, VMware Workstation, Virtual box가 있습니다.

하이퍼바이저에 의해 구동되는 VM은 각 VM별로 독립된 가상의 자원을 할당받습니다. VM은 논리적으로 분리되어 있어서 한 VM에 오류가 발생해도 다른 VM으로 확산되지 않는다는 장점이 있습니다.


호스트 OS 위에서 게스트 OS를 구동시키는 방식

호스트 가상화

  • 장점 : 가상의 하드웨어를 에뮬레이팅하기 때문에 호스트 운영체제에 크게 제약사항이 없음
  • 단점 : OS위에 OS가 얹히는 방식이기 때문에 오버헤드가 클 수 있음

 

 (3) 전가상화 / 반가상화

네이티브형 하이퍼바이저는 전가상화, 반가상화 방식으로 세분화할 수 있습니다.
하이퍼바이저를 통해 가상 머신 내의 게스트 OS가 호스트 시스템을 활용한다는 점은 같지만, 하드웨어와 인터랙션하는 방식에 차이가 있습니다.

 

 

 

  ① 전 가상화(Full Virtualization)

  • 게스트 OS를 호스트 시스템과 완전히 분리하여 실행
  • 게스트 OS는 하드웨어 자원을 요청하기 위해, 반드시 하이퍼바이저가 중재 해야 함

전 가상화는 하드웨어를 모두 가상화하는 방식입니다.
게스트 OS가 하이퍼바이저에게 하드웨어 시스템 제어를 요구하면, 하이퍼바이저는 하드웨어에게 해당 요구 사항을 전달합니다.

각 게스트 OS는 ‘DOM 0’라는 관리 머신을 거쳐 하이퍼바이저와 통신하므로, CPU와 RAM처럼 I/O가 잦은 자원을 컨트롤 하기에는 번거롭습니다. 이런 한계를 개선하기 위해 반가상화 방식이 출현하게 되었습니다.


  • 하드웨어를 완전히 가상화 하는 방식으로 Hardware Virtual Machine 이라고도 불림
  • 하이퍼바이저를 구동하면 DOM0라고 하는 관리용 가상 머신이 실행되며, 모든 가상머신들의 하드웨어 접근이 DOM0을 통해서 이루어짐
    • 즉, 모든 명령에 대해서 DOM0가 개입을 하게되는 형태입니다.
  • 하이퍼바이저는 가상화된 OS에 무관하게 각 OS들이 내리는 명령어 인식 가능
    • ex) 윈도우 에서 Add, 리눅스 에서 ADD, 맥에서 add 라는 명령어를 내렸을때 하이퍼바이저가 “더해라”라고 번역 하여 명령어로 번역하여 실행
  • 하이퍼바이저는 이러한 번역 역할 뿐만 아니라 가상화된 OS들에게 자원을 할당해주는 역할도 담당
  • 장점 : 하드웨어를 완전히 가상화하기 때문에 Guest OS 운영체제의 별다른 수정이 필요 없음
  • 단점 : 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 비교적 느림

 

  ② 반가상화(Para Virtualization)

  • 게스트 OS를 일부 수정하여 필요한 하드웨어 자원을 직접 요구할 수 있음

반 가상화 방식은 하드웨어를 완전히 가상화하지 않습니다.
대신 게스트 OS의 커널을 일부 수정해 하드웨어와 인터랙션할 수 있도록 합니다.
OS를 수정해야 하므로 게스트 OS가 윈도우일 경우 별도의 Tool을 이용해야 해서 번거로움이 있습니다.

대표적인 반가상화 방식 소프트웨어인 Xen에서 게스트 OS는 Hyper Call이라는 명령어를 통해 하드웨어에 필요한 자원을 바로 하이퍼바이저에 전달하고, 하이퍼바이저는 바로 하드웨어를 제어합니다.

즉, 각각의 게스트 OS는 필요한 자원을 직접 요청할 수 있는 능력이 있으므로 모든 요청을 ‘DOM 0’ 가 한꺼번에 처리하여 하드웨어를 제어하는 전가상화 방식에 비해 성능이 좋습니다.


  • 반가상화는 전가상화와 달리 하드웨어를 완전히 가상화 하지 않음
  • 전가상화의 가장큰 단점인 성능저하의 문제를 해결하기 위해 하이퍼콜(Hyper Call)이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청
  • 가상화된 각 OS들이 각각 다른 번역기를 가진 형태로, 그 번역기는 각각 다른 OS에서 내리는 각각 다른 명령어를 "더해라"라고 번역
  • 장점 : 모든 명령을 DOM0를 통해 하이퍼바이저에게 요청하는 전가상화에비해 성능이 빠름
  • 단점 : 하이퍼바이저에게 Hyper Call 요청을 할 수 있도록 각 OS의 커널을 수정해야하며 오픈소스 OS가 아니면 반가상화를 이용하기가 쉽지 않음

 

2. 컨테이너 가상화

최근 가상화 기술의 축은 하이퍼바이저 기반의 가상화에서 컨테이너 기반 가상화로 이동하고 있습니다.

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

  • 네임 스페이스: 리눅스 시스템 자원을 묶어 프로세스에 할당하는 방식으로, 하나의 프로세스 자원을 관리하는 기능. IBM에서 개발.
  • cgroup: CPU, 메모리 등 프로세스 그룹의 시스템 자원 사용량을 관리하여 특정 애플리케이션이 자원을 과다하게 사용하는 것을 제한. Google에서 개발.

이처럼 격리된 고유 영역에서 애플리케이션을 실행하는 것을 의미하는 컨테이너는 애플리케이션의 실행에 필요한 라이브러리와 바이너리, 기타 구성 파일을 ‘이미지’ 단위로 빌드하여 패키지로 배포합니다.

실행에 필요한 모든 환경이 준비되어 있으므로 어떤 환경에서도 애플리케이션을 오류 없이 동작시킬 수 있는 것이 가장 큰 특징입니다.

그림처럼 컨테이너는 하이퍼바이저와 게스트 OS가 필요하지 않으므로 더 가벼운 것이 두번째 특징입니다. 일반적으로 컨테이너에는 OS가 포함되지 않아 크기가 수십 MB에 불과하고, 운영체제 부팅이 필요 없으므로 서비스를 시작하는 시간도 짧습니다. 크기가 작기 때문에 컨테이너 복제와 배포에도 용이합니다.

 

애플리케이션을 실행할 때에도 물리 서버에서 애플리케이션 하나를 실행하는 것과 마찬가지로, 호스트 OS 위에 애플리케이션의 실행 패키지인 ‘이미지’를 배포하기만 하면 됩니다.

 

반면, VM은 항상 게스트 OS가 포함되므로 보통 수 GB에 해당하고, 애플리케이션을 실행할 때에도 먼저 VM을 띄우고 자원을 할당한 다음, 게스트 OS를 부팅하여 애플리케이션을 실행시켜야 합니다.

이처럼 VM에 비해 컨테이너는 애플리케이션을 실행, 배포하는 과정이 가볍기 때문에 하나의 물리 서버에서 더 많은 애플리케이션을 구동시킬 수 있습니다.

 

출처 : https://library.gabia.com/contents/infrahosting/7426/

 

가비아 라이브러리

IT 콘텐츠 허브

library.gabia.com


호스트 OS위에 컨테이너관리 소프트웨어를 설치하여, 논리적으로 컨테이너를 나누어 사용하는 방식

컨테이너 가상화

  • 장점: 컨테이너 가상화는 오버헤드가 적어 가볍고 빠름
  • 단점: 보안적으로 완전 격리가 되지 않아 오류 전파 및 침해 가능성
  • 예시) 도커, 쿠버네티스

(1) 가상화의 발전과정

가상화의 발전과정

  • 전통적인 배포 시대
    • 초기 조직은 애플리케이션을 물리 서버에서 실행
    • 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에, 리소스 할당의 문제 발생
    • 물리 서버 하나에서 여러 애플리케이션을 실행하면, 리소스를 과다 사용하는 인스턴스가 다른 애플리케이션의 성능이 저하 유발
    • 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행하는 것은 리소스가 충분히 활용되지 않으며, 유지 비용 과다
  • 가상화된 배포 시대
    • 단일 물리 서버의 CPU에서 여러 가상 시스템 (VM)을 실행
    • VM간에 애플리케이션을 격리하고 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스 할 수 없으므로, 일정 수준의 보안성을 제공
    • 리소스를 보다 효율적으로 활용할 수 있으며, 쉽게 애플리케이션을 추가하거나 업데이트할 수 있고 하드웨어 비용을 절감할 수 있어 더 나은 확장성 제공
    • 가상화를 통해 일련의 물리 리소스를 폐기 가능한(disposable) 가상 머신으로 구성된 클러스터로 구성 가능
    •  가상 머신은 가상화된 하드웨어 상에서 자체 운영체제를 포함한 모든 구성 요소를 실행하는 하나의 완전한 머신
  • 컨테이너 개발 시대
    • 컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유하므로 각각의 컨테이너는 보다 가벼움

 

(2) 기존 가상 머신과의 차이

기존 가상 머신과의 차이

가상 머신 컨테이너
하드웨어 레벨 가상화 OS 레벨 가상화
가상 하드웨어 환경 위에 게스트 OS 설치 컨테이너 엔진으로 어플리케이션 실행 환경 격리
구현 기술: 하이퍼바이저 구현 기술: 도커
VMWare, Linux KVM, Xen  

 

(3) 장단점

  • 장점
    • 속도 빠름(기존 물리 시스템과 거의 유사)
    • 이미지 생성 및 공유가 쉬움
    • 단일 어플리케이션 구동을 위한 최소한의 환경만 구분
  • 단점
    • 가상머신 방식처럼 다양한 OS를 사용할 수 없음
    • 보안적으로 완전히 격리되지 않음

 

 

 

<참고자료>

https://itwiki.kr/w/%EC%84%9C%EB%B2%84_%EA%B0%80%EC%83%81%ED%99%94

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

https://itwiki.kr/w/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88_%EA%B0%80%EC%83%81%ED%99%94

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

 

반응형

'IT 이야기 > 가상화 기술' 카테고리의 다른 글

도커(Docker)  (0) 2023.06.15
가상화, 하이퍼바이저, VM(가상머신)  (0) 2023.06.15

댓글