- 가상 머신은 최근의 인공지능이나 클라우드 컴퓨팅에서 많이 사용되는 기술이다.
- 가상 머신 기술을 운영체제 측면에서 보면, 소프트웨어를 이용하여 하드웨어를 여러개 구현하는 것이다.
- 이와같은 이유로 OS 측면에서 가상머신을 위한 특별한 기술이나 깊이있는 접근을 필요로 하지 않는다.
- 하지만, 가상머신 기술 자체는 대학원의 전공으로 지정될 만큼 깊이있는 기술이다.
- 이번 포스팅에서는 가상머신에 대해 가볍게 알아보도록 하자
1. 가상머신이란?
- 하나의 하드웨어(컴퓨터)에서 다수의 운영체제를 실행하도록 하여 개별 컴퓨터처럼 사용할 수 있도록 하는 것
- 이를 두고, 소프트웨어를 통해 하드웨어를 emulate(모방하다)한다고 말한다.
2. 가상머신 구현방식
a) Virtual Machine Type 1 (native or bare metal)
- 하이퍼바이저 또는 버추얼 머신 모니터(VMM)라고 불리는 소프트웨어를 이용하여 하드웨어를 emulate하는 방식
▶ 하이퍼바이저(= VMM): 운영체제와 응용 프로그램을 물리적 하드웨에서 분리하는 프로세스
ex) Xen, KVM
ex) AWS에서 사용하는 방식 → 예를 들어, 100개의 컴퓨터 HW자원을 1000명이 사용할 수 있는 가상머신으로 만든다.
b) Virtual Machine Type 2
- 하이퍼바이저 또는 VMM이 Host OS 상위에 설치되어 있는 환경
ex) 윈도우 환경에서 리눅스를 구동하는 경우, Mac에서 윈도우를 구동하는 경우
ex) VMware, Parallels Desktop
c) Full Virtualization(전 가상화)
- 각 가상머신이 하이퍼바이저를 통해서 하드웨어와 통신하는 환경
- 하이퍼바이저가 가상머신과 하드웨어의 통신을 위한 통역사의 역할을 한다.
- 가상머신의 OS가 스스로 가상머신이라는 것을 인지하고 있지 않은 환경
- 최근 HW의 성능개선으로 인해 전 가상화 방식을 더욱 선호한다.
d) Half Virtualization(반 가상화)
- 각 가상머신이 직접 하드웨어와 통신하는 환경
- 가상머신의 OS가 스스로 가상머신이라는 것을 인지하고 있는 환경
- 가상머신의 OS가 스스로 가상머신 이라는 것을 알게 하기위해서 가상머신에 들어가는 OS의 코드를 수정해야 한다.
- 하이퍼바이저는 가상머신에서 요청하는 자원에 대한 관리를 하게 된다.
3. 추가자료
a) KVM에 대하여
b) Docker
- 기존의 가상머신과는 다른 형태의 가상머신
- 기존의 가상머신은 하드웨어를 emulate하는 방식으로, 하이퍼바이저와 추가 OS등의 필요로 인한 성능저하 이슈가 존재한다.
▶ 하드웨어 전체의 추상화를 필요로함
- 그러나, Docker의 경우 운영체제 레벨에서 별도로 분리된 환경을 구현하여 실행 환경을 제공한다.
▶ 커널의 추상화
▶ chroot 리눅스 명령어 사용
▶ 리눅스 컨테이너: 마치 리눅스를 처음 설치했을 때와 유사한 실행환경을 제공한다.
c) Java Virtual Machine
- JVM은 기존의 가상머신과는 다른 목적의 가상머신이다.
- Java라는 코드를 실행환경 또는 OS에 상관없이 컴파일 하기 위한 목적으로 사용하는 것
- Java 컴파일러는 컴파일을 통해 bytecode를 생성한다.
- byte코드를 실행환경 또는 OS 환경에 따라 이해할 수 있는 언어로 번역하기위한 역할로 JVM을 사용하는 것
4. 결론
a) bare-metal 방식(= type1)이 가장 성능이 좋다.
- 하드웨어에 직접 접근하기 때문이다.
- AWS가 bare-metal 방식을 사용하는 이유이기도 하다.
b) Docker는 경량 이미지로, 실행환경을 통째로 백업 및 실행이 가능하다.
- Data Engineering에서 Docker로 시스템 실행환경 설정과 프로그램을 한번에 묶어서 배포할 수 있다.
- 실무에서 많이 쓰이는 이유이기도 하다.
'컴퓨터공학기초 개념 > 운영체제' 카테고리의 다른 글
컴공기초 - 운영체제 개념 총정리(하) (0) | 2021.07.22 |
---|---|
컴공기초 - 운영체제 개념 총정리(상) (0) | 2021.07.16 |
38. 부팅의 이해 (0) | 2021.07.12 |
37. 파일 시스템 - inode 방식과 가상 파일시스템 (0) | 2021.07.09 |
36. 파일시스템 - 파일 시스템의 이해 (0) | 2021.07.09 |
댓글