Virtualization
Virtualization
Virtualization
- 가상화란 컴퓨터 리소스를 추상화한다는 뜻
- 물리적 리소스를 숨기고 사용자에게 가상의 컴퓨팅 환경 제공
- 하나의 물리적 리소스 위에서 여러 OS를 동시에 실행할 수 있게 해줌
- 운영체제와 하드웨어를 분리할 수 있다는 장점 존재
- 물리적 리소스에 설치된 OS를
호스트 OS
, 가상 머신 위에 설치된 OS를 게스트 OS
라고 함
하이퍼바이저
- 가상 머신은 하이퍼바이저를 이용해 하드웨어를 가상화
- 호스트 시스템에서 다수의 게스트 OS를 구동할 수 있게 해 주는 소프트웨어
- 하드웨어와 가상 머신 사이의 중간 관리자 역할
하이퍼바이저 가상화 방법
- 네이티브 방식
- 하이퍼바이저가 하드웨어 바로 위에서 실행됨
- 하드웨어 자원을 효율적으로 사용 가능하지만, 하드웨어 드라이버 설치 필요
Hyper-V
, Xen
등이 대표적- 전가상화와 반가상화로 구분됨
- 전가상화
- 하드웨어를 모두 가상화해서 게스트 OS와 호스트 시스템을 완전 분리
DOM 0
라는 관리 머신을 거쳐 하이퍼바이저와 통신- I/O가 잦은 자원을 컨트롤하기 번거로움
- 반가상화
- 하드웨어를 완전히 가상화하지 않음
- 게스트 OS의 커널을 일부 수정해 하이퍼바이저를 통해 하드웨어와 통신 가능
- 자원을 직접 요청 가능하므로 전가상화에 비해 성능이 좋음
- 게스트 OS에 종속성이 생기므로 범용성은 떨어짐
- 호스트 방식
- 하이퍼바이저가 호스트 OS 위에서 동작
- 네이티브 방식에 비해 오버헤드가 크지만, 게스트 OS에 종속되지 않음
- VMWare, Virtual Box 등이 해당
컨테이너 가상화 방법
- 하이퍼바이저 기반의 가상화 방법의 대안으로, 하이퍼바이저 및 게스트 OS 없이 가상화하는 방법
- 컨테이너라는 격리된 컴퓨팅 환경을 사용함
- 컨테이너에 애플리케이션에 필요한 라이브러리, 구성 파일 등을
이미지
단위로 빌드하고 배포하면 됨 - OS가 필요하지 않으므로 가상 머신에 비해 실행 및 배포가 빠르고 가벼움
Docker
가 가장 많이 사용됨
단점
- 많은 메모리 필요, Thrashing 발생 가능
- CPU 경쟁에 따른 성능 하락 발생 가능
- 사용에 시스템적인 지식 필요 -> 컨테이너 방식 사용시 해결 가능
References
- https://eunjinii.tistory.com/10
- https://library.gabia.com/contents/infrahosting/7426/