가상 머신 (Virtual Machine)
쉽게 풀면
가상 머신은 "컴퓨터 안의 컴퓨터"라고 생각하면 쉽습니다. 내 노트북(호스트) 위에 소프트웨어로 만든 또 다른 컴퓨터(게스트)를 띄우고, 그 안에 별도의 운영체제를 설치해서 마치 진짜 컴퓨터처럼 쓰는 것입니다. 예를 들어 윈도우 노트북 안에서 가상 머신을 하나 만들어 리눅스를 설치하면, 실제로는 컴퓨터가 한 대뿐이지만 사용자 입장에서는 컴퓨터 두 대를 쓰는 것과 똑같이 느껴집니다. 자바 프로그램이 어떤 운영체제에서든 똑같이 동작하는 이유도, 자바 가상 머신(JVM)이라는 가상의 실행 환경이 운영체제와 프로그램 사이에서 차이를 흡수해 주기 때문입니다.
왜 중요한가
가상 머신은 클라우드 컴퓨팅의 기본 단위이자, 서로 다른 실험 환경을 동일한 조건으로 재현하고 격리할 수 있게 해주는 인프라이기 때문에, 시스템·분산처리 연구부터 대규모 실험을 다루는 여러 분야 논문에서 실험 환경 구성 방식으로 자주 언급됩니다. 또한 하나의 물리 서버 자원을 여러 사용자·작업이 안전하게 나눠 쓸 수 있게 해주는 가상화 기술 자체가 클라우드 자원 관리, 보안, 성능 연구의 중요한 주제이기도 합니다.
논문에서는 이렇게 쓰입니다
이 문장은 "실제 물리 서버 대신 소프트웨어로 만든 동일한 사양의 컴퓨터 환경을 여러 개 준비해서, 하드웨어 차이가 실험 결과에 영향을 주지 않도록 통제했다"는 뜻입니다.
한 대의 실제 서버 위에서 여러 가상 머신이 동시에 자원을 나눠 쓸 때, 제안한 스케줄링 방법이 컴퓨터 자원을 더 효율적으로 쓰게 해준다는 뜻이다.
악성코드를 실제 컴퓨터가 아니라 언제든 원상 복구 가능한 가상 머신 안에서 실행해, 실제 시스템이 감염되지 않도록 안전하게 실험했다는 의미다.
조금 더 깊게 보면
가상 머신은 하이퍼바이저(hypervisor)라는 소프트웨어 계층이 물리적 CPU, 메모리, 디스크 자원을 여러 게스트 운영체제에 나누어 할당하고 중재하는 방식으로 동작하며, 하이퍼바이저는 물리 하드웨어에 직접 설치되는 유형(type 1)과 호스트 운영체제 위에서 실행되는 유형(type 2)으로 구분됩니다. 컨테이너와 비교하면 가상 머신은 각자 완전한 운영체제 커널을 가지므로 격리 수준이 더 강하지만 자원 오버헤드가 크고, 컨테이너는 커널을 공유해 가볍지만 격리 경계가 상대적으로 얕다는 트레이드오프가 있습니다.
주의할 점
가상 머신은 운영체제 전체를 통째로 가상화하기 때문에 무겁고 부팅 시간이 걸립니다. 반면 컨테이너화는 운영체제 커널을 공유하면서 애플리케이션 단위로만 격리하므로 훨씬 가볍고 빠르게 뜬다는 차이가 있으며, 둘을 같은 개념으로 혼동하지 않도록 주의해야 합니다.