호스트 OS(호스트 운영 체제)는 컴퓨터에 설치되어 하드웨어와 직접 상호작용하는 기본 소프트웨어를 의미하며, 특히 가상화 환경에서 게스트 운영 체제(Guest OS)와 구분하기 위해 사용되는 용어입니다.
호스트 OS와 타입 2 하이퍼바이저의 관계
호스트 OS라는 표현은 일반적으로 하드웨어와 직접 통신하면서 타입 2(Type 2) 하이퍼바이저를 구동하는 운영 체제를 지칭할 때 가장 많이 사용됩니다. 타입 2 하이퍼바이저는 '호스티드 하이퍼바이저'라고도 불리며, 하드웨어에 직접 접근하지 않고 호스트 운영 체제 위에서 실행됩니다.
이러한 타입 2 하이퍼바이저는 여러 개의 가상 머신(VM)을 생성할 수 있으며, 각 가상 머신은 자체적인 게스트 운영 체제를 실행합니다. 이때 게스트 OS가 반드시 호스트 OS와 동일한 종류일 필요는 없습니다.
실제 활용 예시
애플의 OS X가 설치된 맥 컴퓨터를 생각해 볼 수 있습니다. 만약 사용자가 윈도우 전용 애플리케이션을 실행하고 싶다면, OS X가 설치된 컴퓨터에 VMware Fusion과 같은 타입 2 하이퍼바이저를 설치하여 가상화를 구현할 수 있습니다.
이후 VMware Fusion으로 가상 머신을 생성하고 해당 VM에 Windows 10을 게스트 OS로 설치하면, 사용자는 이 가상 머신 안에서 윈도우 애플리케이션을 문제없이 실행할 수 있습니다. 이 경우 컴퓨터에 원래 설치되어 있던 OS X가 호스트 운영 체제가 되며, VM 위에서 동작하는 Windows 10은 게스트 운영 체제가 됩니다.
호스트 OS가 없는 가상화 환경: 타입 1 하이퍼바이저
그러나 모든 가상화 서버가 호스트 OS를 사용하는 것은 아닙니다. 많은 경우 타입 1(Type 1) 하이퍼바이저, 즉 '베어메탈(Bare-metal) 하이퍼바이저'가 서버의 하드웨어에 직접 설치됩니다.
타입 1 하이퍼바이저는 호스트 OS의 역할을 대신 수행하며, 하드웨어 위에서 바로 가상 머신들을 생성하고 각 VM에 게스트 운영 체제를 실행할 수 있게 해줍니다.
컨테이너 가상화에서의 호스트 OS
호스트 운영 체제라는 용어는 컨테이너 기반 가상화를 설명할 때도 사용됩니다. 컨테이너는 동일한 서버 위에서 애플리케이션들을 분리하기 위한 논리적 파티션이라고 할 수 있습니다.
VM처럼 애플리케이션마다 운영 체제 전체를 복제하는 대신, 컨테이너는 같은 서버에 있는 애플리케이션들이 하나의 운영 체제 커널을 공유하면서도 하드웨어 수준의 격리는 유지할 수 있게 해줍니다. 이때 공유되는 운영 체제가 바로 호스트 OS입니다.
게스트 OS가 호스트 OS 역할을 하는 경우
서버 관리자라면 VM의 게스트 운영 체제가 동시에 컨테이너의 호스트 운영 체제 역할을 하는 다소 혼란스러운 상황을 마주할 수도 있습니다.
예를 들어, VMware ESXi(타입 1 하이퍼바이저)가 설치된 서버에서 Linux 배포판을 게스트 OS로 실행하는 VM을 운영한다고 가정해 봅시다. 이 Linux 게스트 OS 위에서 여러 개의 컨테이너를 생성하면, 해당 컨테이너들은 Linux OS 커널을 공유하게 되므로 이 Linux 운영 체제는 컨테이너 입장에서 호스트 OS가 되는 것입니다.