모든 VPS가 같은 방식으로 만들어지는 것은 아닙니다. 그 밑의 가상화 기술이 서버가 얼마나 격리되는지, 어떤 소프트웨어를 실행할 수 있는지, 성능이 어떤지를 결정합니다. 가장 자주 보게 될 이름은 KVM과 OpenVZ이며, LXC도 있습니다.
가상 서버를 만드는 두 가지 방법
전가상화(KVM)는 각 고객에게 자체 커널을 가진 완전한 가상 머신을 제공합니다. 하이퍼바이저가 하드웨어를 나누며, 서버는 실제 컴퓨터처럼 동작합니다.
컨테이너 가상화(OpenVZ, LXC)는 모든 고객이 호스트의 커널을 공유합니다. 각 컨테이너는 자신의 파일과 프로세스만 보지만, 이웃과 같은 커널 위에서 실행됩니다.
나란히 비교
| KVM | OpenVZ / LXC | |
|---|---|---|
| 커널 | 자체 커널 | 호스트와 공유 |
| 격리 | 강함 | 약함 |
| Docker, WireGuard, 커스텀 커널 모듈 실행 | 가능 | 제한되거나 불가능한 경우가 많음 |
| Windows 실행 | 가능 | 불가능 |
| RAM 보장 | 고정되고 예약됨 | 초과 판매될 수 있음("버스트 가능") |
| 오버헤드 | 작음 | 가장 작음 |
KVM이 더 안전한 선택인 이유
- 소프트웨어를 직접 고릅니다. Docker, VPN, nftables 같은 방화벽, 커널 모듈을 로드하는 도구가 허락을 구하지 않고도 작동합니다.
- 실제 메모리. 구매한 RAM은 내 머신에 할당됩니다. 컨테이너 호스트는 존재하는 것보다 많은 메모리를 팔고 고객이 다 쓰지 않기를 바라기도 합니다.
- 더 나은 격리. 이웃 가상 머신의 장애나 공격이 내 머신에 영향을 미칠 가능성이 훨씬 낮습니다.
- 모든 운영 체제. Linux 배포판, BSD, Windows 모두 수정 없이 실행됩니다.
그래도 컨테이너가 적합한 경우
컨테이너는 빠르게 시작하고 낭비가 적어서, 호스트들이 매우 저렴한 플랜에 사용하고 여러분도 Docker로 자신의 VPS 안에서 사용합니다. 커널에 특별한 것을 요구하지 않는 단순한 워크로드에는 충분합니다.
내가 쓰는 것이 무엇인지 확인하는 방법
systemd-detect-virt
lscpu | grep -i hypervisor
cat /proc/user_beancounters # exists only on OpenVZ
첫 번째 명령에서 kvm이 나오면 전가상화입니다. 마지막 파일이 존재하면 OpenVZ를 사용 중입니다.
자주 묻는 질문
KVM이 OpenVZ보다 낫나요?
대부분의 용도에서는 그렇습니다. KVM은 VPS마다 자체 커널과 더 강력한 격리를 제공하므로 어떤 OS와 Docker도 실행할 수 있습니다. OpenVZ는 호스트 커널을 공유하며 제약이 더 많습니다.
OpenVZ에서 Docker를 실행할 수 있나요?
컨테이너가 호스트 커널을 공유하기 때문에 안 되는 경우가 많고, 되더라도 제한이 따릅니다. Docker에는 KVM이 더 안전한 선택입니다.
KVM이 더 비싼가요?
리소스가 더 엄격하게 할당되므로 약간 비싸지만, 격리와 호환성을 생각하면 대개 그만한 가치가 있습니다.