더북(TheBook)

리눅스 가상 시스템의 구조

시스템 하드웨어를 운영체제가 제어하고 운영체제 위, 사용자 영역에서 응용 프로그램이 돌아가는 일반적인 리눅스 시스템 환경과 다르게 리눅스 가상 시스템은 앞서 가상 엔진이라고 표현한 하이퍼바이저 위에서 가상 운영체제를 실행합니다(그림 4-2).

그림 4-2 하이퍼바이저 위에서 운영되는 가상 시스템

하이퍼바이저Hypervisor는 물리적인 시스템에 다수의 가상 운영체제가 동시에 실행될 수 있게 해주는 논리적인 플랫폼(시스템 또는 소프트웨어)입니다. 하이퍼바이저에 따라 가상 기술도 다양한 방식으로 나뉩니다. 리눅스에서 사용할 수 있는 하이퍼바이저에는 KVM, VMware, Virtual PC 등이 있으며 우리가 사용할 하이퍼바이저는 커널 가상 장치인 KVMKernel Virtual Machine입니다. KVM은 리눅스 커널 모듈로 사용자 영역에서 가상 기술을 제공하는 하이퍼바이저입니다. VMware나 Virtual PC와 달리 오픈 소스 기술로 제작되어 누구나 사용 가능합니다.

호스트Host는 가상 시스템을 운영하는 실제 시스템을 의미합니다. 첫째마당에서 설치하고 사용 방법을 익혀왔던 우분투 14.04가 호스트 역할을 맡습니다. 게스트Guest는 호스트에서 운영되는 가상 장치Virtual Machine입니다. 게스트는 호스트와 독립된 환경으로 각각 다른 운영체제로도 동작 가능합니다. 그림 4-2처럼 우분투 14.04 호스트 위에 게스트로 윈도 7과 우분투 14.04를 동시에 운영할 수 있고 반대로 윈도 7 호스트 위에 게스트로 우분투 14.04를 운영할 수도 있습니다.

Tip

네트워크 세계에서 ‘네트워크에 연결된 장치’를 호스트라고 합니다. 가상 기술에서 호스트는 게스트를 운영하는 실제 시스템을 의미하는 전혀 다른 개념이므로 혼동하지 않기를 바랍니다.

이렇게 게스트가 다른 환경의 호스트에서 동작하려면 게스트의 명령을 호스트가 이해할 수 있는 명령으로 바꿔주는 에뮬레이터가 필요합니다. QEMU는 KVM에서 사용하는 에뮬레이터로 게스트에서 호스트의 하드웨어를 제어할 수 있게 명령을 변환합니다.

그림 4-3은 리눅스 가상 시스템이 동작하는 방식을 보여줍니다.

그림 4-3 리눅스 가상 시스템의 동작 원리

➊ 게스트의 일반적인 애플리케이션 명령은 하이퍼바이저 없이 그대로 실행됩니다.

➋ 운영체제 수준의 명령, 예를 들어 하드웨어를 제어하기 위한 요청은 QEMU에게 보냅니다.

➌ QEMU는 명령을 변환해서 하이퍼바이저인 KVM에 보냅니다.

➍ 하이퍼바이저 KVM이 하드웨어를 제어합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.