가상머신에 대한 기초적인 개념을 잡고 넘어갑니다. 이후 다루게 되는 가상머신에 대한 이야기는 시스템 가상 머신중에 vmware, virtualbox에 대하여 알아보게 됩니다.
그림출처 : http://www.quercussolutions.com/blog/index.php/windows-azure-virtual-machines-101/
가상머신 정의
가상 머신(Virtual Machine, VM)은 컴퓨팅 환경을 소프트웨어로 구현한 것, 즉 컴퓨터를 에뮬레이션하는 소프트웨어다. 가상머신상에서 운영체제나 응용프로그램을 설치 및 실행할 수 있다. 1
가상 머신은 실제 컴퓨터와 어느 정도의 통신과 사용을 기반으로 두 가지로 나뉜다. 시스템 가상 머신은 완전한 시스템 플랫폼을 제공하며, 다시 말해 완전한 운영 체제 (OS)의 실행을 지원한다. 반대로, 프로세스 가상 머신은 하나의 단일 프로그램을 실행하기 위해 만들어져 있는데, 다시 말해 단일 프로세스를 지원한다. 가상 머신의 중요한 특징은 안에서 돌아가는 소프트웨어가 가상 머신이 제공하는 환경과 자원에 제한을 받으며 가상 세계를 벗어날 수 없다는 것이다.
시스템 가상 머신
시스템 가상 머신은 때로 하드웨어 가상 머신이라고 하며 각 운영 체제를 실행하는 가상 머신 사이의 기초가 되는 물리 컴퓨터를 다중화(multiplex)한다. 가상화를 제공하는 소프트웨어 계층은 가상 머신 모니터 또는 하이퍼바이저라고 한다. 하이퍼바이저는 순 그대로의 하드웨어 또는 호스트 운영 체제 위에서 실행할 수 있다. 2
시스템 가상 머신의 주요 이점:
- 여러 운영 체제를 쓰는 환경은 운영 체제가 완벽히 고립된 채로 같은 컴퓨터에서 존재할 수 있다.
- 가상 머신은 실제의 컴퓨터가 제공하는 것과 다른 형태의 명령어 집합 구조 (ISA)를 제공한다.
즉, 다양한 OS를 제공하기 위해 멀티부팅의 어려움을 겪지 않아도 되고 각각은 서로 독립되어 있어 서로에게 영향을 미치지 않는다. 이는 관리에 용이성을 부여하고, 외부의 위험으로부터 분리된 환경이라 다양한 테스트 환경에 적합하다. 최근에는 서버를 가상화하여 사용자들에게 대여해주는 클라우드 호스팅이 유행하고 있는데, 이도 가상화 기술의 발전의 한 갈래이다.
저만의 운영체제를 실행하는 여러 개의 가상 머신들을 게스트 운영 체제라고 하며, 다른 장치가 충돌을 피하기 위해 각 장치에서 실행하기 위한 서버 통합(server consolidation)에서 쓰이며, 각 가상 머신에서는 같은 물리 컴퓨터에서 실행된다. 이러한 사용을 제품 품질의 고립 (QoS 고립)이라고 한다.
프로세스 가상 머신
VM은 응용 프로그램 가상 머신이라고도 하며, 운영 체제 안에서 일반 응용 프로그램을 돌리고 단일 프로세스를 지원한다. 프로세스가 시작하고, '끝내기'되어 파괴될 때 만들어진다. 목적은 플랫폼 - 아무 플랫폼에서나 같은 방식으로 실행하는 프로그램을 허용하고 기초가 되는 하드웨어나 운영 체제의 상세한 부분을 가져오는 독립 프로그래밍 환경을 제공하기 위함이다.
가상 머신이라고 하는 프로세스는 고급 프로그래밍 언어에서 높은 수준의 추출을 제공한다 (가상 머신 시스템에서 낮은 수준의 ISA 추출과 비교하면) — 가상 머신 프로세스들은 해석기를 사용하여 추가된다.
이러한 종류의 가상 머신은 자바 가상 머신을 사용하여 추가되는 자바와 더불어 인기를 끌었다. 또다른 예로는, 닷넷 프레임워크가 있는데 공통 언어 런타임라고 불리는 가상 머신을 실행한다.
출처 : 가상 머신
가상머신의 종류 및 비교
버추얼박스(VirtualBox) | VMWare | Parallels | |
---|---|---|---|
Host OS | Windows, Linux, Mac, Solaris, FreeBSD등 | Windows, Linux, Mac | Windows, Linux, Mac |
Guest OS | DOS, Windows, Linux, FreeBSD, Solaris등 | DOS, Windows, Linux, FreeBSD, Solaris | DOS, Windows, Linux, OS2 |
제공사 | Oracle | VMWare | Parallels IP Holdings |
라이센스 | 무료(오픈소스) | 쉐어웨어/상용($79 ~ $189) | 유료(49$ ~ $79) |