클라우드 VM을 신청하면 몇 분 만에 서버 한 대가 뚝딱 생깁니다. 그런데 데이터센터에서 물리 서버를 새로 사서 꽂아준 건 당연히 아니죠. 이미 돌아가고 있는 서버 한 대를 쪼개서 그중 일부를 떼어준 겁니다. 이걸 가능하게 하는 게 가상화이고, 그 한가운데 하이퍼바이저라는 소프트웨어가 있어요.

하이퍼바이저가 하는 일
하이퍼바이저는 물리 서버의 CPU, 메모리, 디스크, 네트워크를 잘라서 여러 개의 가상 머신에 나눠주는 역할을 합니다. 각 가상 머신은 자기가 서버 한 대를 통째로 쓰고 있다고 믿어요. 옆방에 다른 가상 머신이 돌아가고 있다는 것도 모르고, 서로의 메모리를 들여다볼 수도 없습니다. 이 격리가 가상화의 핵심입니다.
하이퍼바이저는 크게 두 종류로 나뉩니다. 타입 1은 하드웨어 위에서 바로 돌아가는 방식이에요. 중간에 운영체제가 끼지 않으니 오버헤드가 적고 자원을 효율적으로 씁니다. 서버와 데이터센터에서 쓰는 게 이쪽입니다. 타입 2는 윈도우나 맥에 프로그램 하나 설치하듯 운영체제 위에서 돌아갑니다. 설치가 간편하고 게스트 OS 제약이 적지만, 호스트 OS를 한 번 거치니 성능 손해가 있어요. 개발이나 테스트, 학습용으로 적합합니다.
KVM은 어느 쪽일까
리눅스 기반 클라우드에서 가장 널리 쓰이는 KVM은 이 분류에 딱 들어맞지 않아서 종종 헷갈립니다. 이름부터 Kernel-based Virtual Machine, 즉 커널 기반 가상 머신이에요. 리눅스 커널에 모듈로 올라가서 커널 자체를 하이퍼바이저로 만들어버립니다.

리눅스라는 운영체제가 있어야 돌아가니 타입 2처럼 보이지만, 실제로는 커널이 CPU의 하드웨어 가상화 기능을 직접 쓰기 때문에 성능은 타입 1에 가깝습니다. 그래서 타입 1.5로 부르기도 해요. CPU와 메모리 작업에서 거의 물리 서버에 근접한 성능이 나오는 이유가 여기 있습니다.
KVM 옆에는 보통 QEMU가 따라옵니다. KVM이 CPU와 메모리 가상화를 맡고, QEMU가 디스크나 네트워크 카드 같은 주변 장치를 흉내 내는 역할을 나눠 맡아요. 둘이 한 몸처럼 움직이기 때문에 KVM 기반이라고 하면 사실상 KVM과 QEMU 조합을 뜻합니다.
가상 머신과 컨테이너는 다릅니다
요즘은 도커 같은 컨테이너 얘기도 자주 나오죠. 둘 다 하나의 서버를 나눠 쓴다는 점은 같지만 나누는 층이 다릅니다. 가상 머신은 운영체제를 통째로 하나씩 더 띄우고, 컨테이너는 호스트의 커널을 공유하면서 프로세스 수준으로만 격리해요.
그래서 컨테이너는 가볍고 뜨는 속도가 빠른 대신 격리 수준이 낮습니다. 커널을 공유하니 커널에 문제가 생기면 전부 영향을 받아요. 반대로 가상 머신은 무겁지만 격리가 확실합니다. 다른 고객과 인프라를 공유하는 환경에서 보안이 중요하다면 여전히 가상 머신이 안전한 선택이에요. 운영체제를 자유롭게 고르고, 커널 파라미터까지 직접 손대야 하는 작업도 가상 머신이라야 가능합니다.

VM을 고를 때 볼 것
사양표의 vCPU 숫자만 보면 놓치는 게 있습니다. 같은 4 vCPU라도 물리 코어를 몇 개의 가상 머신이 나눠 쓰는지에 따라 체감 성능이 크게 갈려요. 한 물리 서버에 가상 머신을 빽빽하게 몰아넣으면 이웃이 CPU를 많이 쓸 때 내 서버가 느려지는 일이 생깁니다.
디스크도 마찬가지입니다. NVMe인지 일반 SSD인지에 따라 데이터베이스 응답 속도가 눈에 띄게 달라져요. 그리고 의외로 많이 놓치는 게 스냅샷과 백업의 차이입니다. 스냅샷은 같은 스토리지 안에 특정 시점을 표시해두는 것이라, 스토리지 자체에 문제가 생기면 스냅샷도 함께 사라집니다. 별도 저장소에 남기는 백업이 따로 있어야 해요.
TIDC는 국내 데이터센터에서 KVM 기반 클라우드 VM을 직접 운영하고 있습니다. 어떤 사양이 맞을지 판단이 어려우시면 현재 트래픽과 용도를 알려주세요. 과하지도 부족하지도 않은 구성으로 함께 잡아드리겠습니다.