Notice
suyeonme
[운영체제] VM(Virtual Machine) vs Container 본문
VM(Virtual Machine)
VM은 하이퍼바이저(hypervisor)로 컴퓨터 환경을 가상화(emulation)하는 방법이다. 하이퍼바이저를 이용하여 HostOS위에 특정 운영체제(가상 이미지)로 GuestOS를 올려 여러개의 VM을 생성할 수 있다. 하드웨어 스택을 가상화한다.
예를 들면, HostOS가 window이고 그 위에 GuestOS로 Linux를 설치할 수 있다. GuestOS 입장에서는 물리 서버와 동일하게 사용이 가능하다.
하이퍼바이저의 종류로 virtual box, Xen, KVM, VMware등이 있다.
장점
- 각각의 VM간 완전한 격리로 보안성이 높다.
- GuestOS로 다양한 OS를 사용할 수 있다.
단점
- 크기가 GB단위로 사이즈가 크다.
- 각각의 OS를 띄워야하므로 시작 및 종료 시간이 느리다. (분 단위)
- 운영 및 마이그레이션이 어렵다.
Container
HostOS위에 컨테이너(논리적 분류)를 생성하고 어플리케이션 작동을 위해 필요한 라이브러리 및 어플리케이션을 모아서 별도의 서버인 것 처럼 사용할 수 있는 방법이다. 이 때 여러개의 컨테이너가 커널을 공유(HostOS의 리소스)한다. OS 수준에서 가상화를 실시하여 OS 커널에서 컨테이너를 구동한다.
여러개의 컨테이너를 조합하여 하나의 어플리케이션을 구축하는 MSA(Micro Service Architecture)에 쿠버네티스와 함께 많이 사용된다.
장점
- 크기가 MB단위로 사이즈가 작다.
- 운영체제 커널을 공유하기 때문에 시작 시간 및 종료 시간이 빠르며(초 단위) 전체 부팅보다 메모리를 적게 사용한다.
- 커널을 공유하기때문에 여러 환경간에 이동이 쉽다.
단점
- HostOS와 동일한 OS만 사용할 수 있다.
- 커널을 공유하기 때문에, 특정 컨테이너에서 문제가 발생할 경우 다른 컨테이너도 영향을 받을 수 있다. (보안성이 낮다)
'프로그래밍👩🏻💻 > 운영체제' 카테고리의 다른 글
[운영체제] CPU 스케줄링(CPU Scheduling) (0) | 2022.08.10 |
---|---|
[운영체제] 스레드(Thread) (0) | 2022.08.10 |
[운영체제] 프로세스(Process) (0) | 2022.08.07 |
[운영체제] 컴퓨터 성능 향상 기술 (0) | 2022.08.07 |
[운영체제] 운영체제의 구조와 하드웨어의 구성 (0) | 2022.07.28 |
Comments