하나의 장치에 여러 환경
한 물리 서버에서 여러 가상 머신을 실행하면 각 환경은 가상의 CPU와 메모리, 디스크를 갖는 컴퓨터처럼 동작할 수 있다. 하이퍼바이저는 이 환경들을 관리하고 실제 자원의 사용을 중재한다.
가상 머신마다 운영체제와 프로그램을 따로 구성할 수 있어 서로 다른 실행 환경을 유지하는 데 도움이 된다. 다만 같은 물리 장치의 용량과 고장 위험을 공유한다는 사실은 남는다.
가상화가 곧 에뮬레이션은 아니다
가상화는 자원에 접근하는 인터페이스를 분리하는 개념이다. 다른 장치의 명령과 동작을 소프트웨어로 재현하는 에뮬레이션과 겹치는 부분이 있지만 동일한 개념은 아니다. 현대 시스템은 하드웨어 지원을 이용해 많은 명령을 직접 실행하기도 한다.
컨테이너와의 구분
운영체제 수준의 격리는 여러 실행 환경이 커널을 공유하면서 프로세스와 자원의 범위를 나누는 방식이다. 일반적인 가상 머신은 각각의 게스트 커널을 사용할 수 있다는 점에서 다르다.
격리 방식과 자원 비용, 사용할 수 있는 운영 환경의 제약은 구현에 따라 다르다. 가볍다는 이유만으로 모든 상황에서 더 적합한 방식이라고 볼 수는 없다.
공유 자원을 관리하기
가상 환경의 개수를 늘려도 물리적인 처리 능력이 저절로 늘어나지는 않는다. CPU 사용 시간과 메모리, 저장 장치의 대역폭을 여러 환경이 나누어 쓴다. 자원 제한과 관측, 장애 범위에 대한 설계가 함께 필요하다.