VPS란 무엇인가? 개념과 작동 원리 쉽게 이해하기
VPS는 하이퍼바이저를 통해 물리 서버를 독립적인 가상 환경으로 분할한 서비스입니다. root 권한을 직접 제어하며 전용 메모리와 디스크를 사용하는 VPS의 기술적 특징과 KVM 등 주요 가상화 기술의 작동 원리를 상세히 설명합니다.
VPS란 무엇인가?
VPS(virtual private server)는 데이터 센터에 있는 실제 컴퓨터의 일부를 할당받아, 마치 온전한 한 대의 기기처럼 빌려 쓰는 서비스입니다. 컴퓨터 내부의 소프트웨어가 이를 여러 개의 독립적인 서버로 분할하며, 사용자는 그중 하나를 배정받습니다. 사용자에게는 고유한 메모리, 디스크, IP 주소가 제공되며, root 계정으로 로그인하여 원하는 모든 소프트웨어를 설치할 수 있습니다. 이 서버는 항상 실행 상태를 유지하며, 인터넷상의 공인 IP 주소를 통해 요청에 응답합니다.
이 세 단어를 나누어 보면 서비스의 의미가 명확해집니다. Server는 항상 켜져서 네트워크를 통해 요청에 응답하는 컴퓨터를 의미합니다. Virtual은 소프트웨어를 통해 가상으로 생성되었음을 뜻합니다. 사용자의 서버는 더 큰 물리적 기기를 분할한 것입니다. Private은 해당 파티션이 오직 사용자만의 것임을 의미합니다. 사용자의 파일과 실행 중인 프로그램은 옆 파티션을 빌린 다른 사용자에게는 보이지 않습니다.
지금까지 root 권한을 가져본 적이 없다면, 마지막 부분이 가장 중요합니다. VPS는 사용자가 직접 기기의 관리자가 되는 첫 번째 호스팅 유형입니다. 미리 설정된 것은 아무것도 없으며, 사용자를 제약하는 것 또한 없습니다.
하이퍼바이저가 분할하는 자원과 공유하는 자원
자원을 분할하는 프로그램을 하이퍼바이저라고 합니다. 이 프로그램은 호스트라고 불리는 물리 머신에서 실행됩니다. 하이퍼바이저는 각 고객에게 가상의 하드웨어 세트(프로세서, 메모리 블록, 디스크, 네트워크 카드)를 제공합니다. 운영체제는 이 가상 하드웨어에 설치되며, 마치 실제 컴퓨터를 소유한 것처럼 부팅됩니다. 이 게스트 시스템이 바로 여러분의 VPS입니다. Linux 호스트에서는 주로 KVM(kernel-based virtual machine)을 하이퍼바이저로 사용하며, Xen, VMware ESXi, Microsoft Hyper-V도 동일한 역할을 수행합니다.
메모리와 디스크는 공간 단위로 분할됩니다. 반면 프로세서는 시간 단위로 분할됩니다. 이 차이 하나가 나중에 사용자가 겪게 되는 대부분의 의문점을 설명해 줍니다. 여러분에게 할당된 메모리는 다른 게스트가 점유할 수 없는 전용 메모리입니다. 디스크는 호스트 스토리지의 파일이나 논리 볼륨이며, 삭제하기 전까지는 여러분의 소유로 유지됩니다. 가상 코어는 호스트의 실제 코어로 향하는 대기열이며, 하이퍼바이저는 초당 수천 번씩 어떤 게스트를 다음에 실행할지 결정합니다.
다음 명령어를 통해 어떤 종류의 가상화를 사용 중인지 확인할 수 있습니다.
systemd-detect-virt
uname -rsystemd-detect-virt 명령어는 일반적인 VPS에서 kvm을 출력합니다. 이는 완전한 하이퍼바이저가 여러분만을 위한 커널을 부팅했음을 의미합니다. 컨테이너 가상화 환경에서는 lxc, openvz 또는 container이 출력됩니다. 이 경우 서버는 호스트 운영체제 내부의 격리된 영역이며, 커널은 해당 장비를 사용하는 다른 모든 고객과 공유됩니다. 베어메탈 서버에서는 none가 출력됩니다. 커널을 공유한다는 것은 여러분이 커널을 변경할 수 없음을 의미하므로, 이 차이는 실제 운영 환경에서 중요한 결과를 초래합니다. 커널 모듈을 로드할 수 없기 때문에 WireGuard VPN 모듈과 같은 커널 내 기능은 Operation not supported 오류로 인해 실패하며, uname -r는 여러분이 선택하지 않았고 업그레이드할 수도 없는 버전을 보고합니다.
여기서 가상(virtual)이라는 말은 무슨 뜻입니까?
서버가 소프트웨어로 구성되어 있으므로, 결제 후 1분 정도면 생성됩니다. 하드웨어를 직접 랙에 장착할 필요가 없습니다. 템플릿 이미지를 기반으로 구축되므로, 재설치를 수행하면 몇 분 안에 깨끗한 Ubuntu 상태로 돌아옵니다. 물리적 설치 환경이라면 치명적일 실수도 여기서는 기껏해야 오후 한나절의 시간만 소요될 뿐입니다. 대부분의 제공업체 패널은 위험한 작업을 시도하기 전에 디스크 스냅샷을 생성하거나, 재부팅을 통해 플랜 크기를 조정하거나, 호스트 하드웨어에 작업이 필요할 때 게스트를 다른 하드웨어로 이동시키는 기능을 제공합니다.
가격 또한 같은 사실에서 기인합니다. 하나의 물리적 머신을 여러 고객이 동시에 비용을 분담하므로, VPS가 전체 서버를 임대하는 것보다 저렴한 이유가 여기에 있습니다.
비용은 혜택과 직결됩니다. 하드웨어를 공유하므로, 이웃한 서버의 부하가 높으면 본인에게도 문제가 될 수 있습니다. 아래 제한 사항 섹션에서 이를 측정하는 명령어를 확인할 수 있습니다.
여기서 private이 의미하는 바는 무엇입니까?
Private은 격리를 의미하며, 어느 정도 수준의 격리인지 구체적으로 이해할 필요가 있습니다. 사용자는 자신만의 커널, 루트 파일 시스템, 사용자 계정, 프로세스 목록, 방화벽 규칙 및 IP 주소를 할당받습니다. 동일한 호스트를 사용하는 다른 고객은 사용자의 프로세스 목록을 확인하거나 파일을 읽을 수 없습니다. 상대방의 게스트 환경에는 사용자의 메모리나 가상 디스크로 접근할 수 있는 경로가 없기 때문입니다. 이들은 단지 전원 공급 장치를 공유할 뿐인 두 개의 독립된 운영 체제입니다.
공유 호스팅(Shared hosting)은 이와 반대되는 방식입니다. 수백 개의 다른 웹사이트가 운영되는 장비의 특정 디렉터리, 제어판, 그리고 서비스 제공자가 설치하기로 결정한 소프트웨어만을 제공받습니다. 그곳에는 apt install가 존재하지 않습니다. 패키지를 설치하면 전체 장비에 영향을 미치게 되는데, 그 장비는 사용자가 임의로 변경할 수 있는 대상이 아니기 때문입니다. 공유 호스팅과 VPS 비교에서 이러한 차이점을 상세히 다룹니다. 한 줄로 요약하자면, 공유 호스팅은 계정을 빌려주는 것이고, VPS는 컴퓨터를 빌려주는 것입니다.
VPS 사양서 한 줄씩 읽기
모든 VPS는 짧은 숫자 목록으로 판매됩니다. 아래는 제공업체들이 광고하는 중급형 플랜의 예시이며, 이 가이드에서 계속 사용될 것입니다. 이는 2026년 8월 기준의 일반적인 공개 수치이며, 특정 견적은 아닙니다.
The data behind this chart
[
{
"plan": "Example mid-range VPS",
"vcpu_cores": 4,
"ram_gb": 16,
"nvme_gb": 160,
"bandwidth_tb": 8,
"ipv4_addresses": 1
}
]이 한 줄이 제품의 전부입니다. 왼쪽에서 오른쪽으로 읽으십시오.
4 vCPU. vCPU(가상 중앙 처리 장치)는 하이퍼바이저가 사용자에게 할당하는 호스트 프로세서의 스레드 하나를 의미합니다. 플랜에 전용(dedicated)이라는 명시가 없다면, 이는 예약된 자원이 아니라 해당 스레드의 공유 자원입니다. 서버 내부에서 nproc 명령을 실행하면 4가 출력되며, lscpu 명령은 호스트 설정 방식에 따라 실제 호스트 CPU 모델명이나 일반적인 QEMU 모델명을 보여줍니다.
16 GB RAM. 메모리는 엄격하게 예약된 자원이며, 동시에 넘을 수 없는 한계치이기도 합니다. free -h 명령은 구매한 용량보다 약간 적은 수치를 보고하는데, 16 GB 플랜에서 약 15Gi 정도로 나타납니다. 이는 리눅스가 사용 가능한 메모리를 계산하기 전에 커널과 여러 예약된 메모리 영역이 제외되기 때문입니다. 메모리가 부족해지면 호스트로부터 자원을 빌려올 수 없습니다.
160 GB NVMe. NVMe(Non-Volatile Memory Express)는 호스트 내부에서 드라이브가 연결되는 방식이며, 구형 플랜에서 사용하던 SATA SSD보다 훨씬 빠릅니다. 할당된 자원은 가상 디스크로 나타나며, KVM 환경에서는 보통 /dev/vda로 표시됩니다. df -h / 명령을 실행하면 160 GB보다 약간 적은 용량이 표시되며, 사용 가능한 공간은 이보다 더 적습니다. 이는 ext4 파일 시스템이 기본적으로 root 사용자를 위해 5%의 공간을 예비로 남겨두기 때문입니다. SSD VPS에서 SSD가 실제로 의미하는 것과 구매한 디스크 사양을 확인하는 방법에서 더 자세히 다룹니다.
8 TB 전송량. 이는 월간 데이터 이동량을 의미하며, 보통 아웃바운드 트래픽만 계산합니다. 이는 데이터 총량이며, 포트 속도는 별도의 수치로 보통 1 Gbit/s입니다. 허용량을 초과하면 제공업체 정책에 따라 추가 요금이 부과되거나 속도가 제한되므로, 동영상 호스팅을 하기 전에 해당 약관을 확인하십시오. sudo apt install vnstat 명령과 vnstat -m 명령을 조합하면 설치 시점부터의 자체적인 트래픽 사용량을 확인할 수 있습니다.
1 IPv4 주소. 이 주소는 서버를 임대하는 동안 사용자에게 귀속됩니다. 도메인을 연결하고, 모든 포트에서 트래픽을 수신할 수 있으며, 보통 제공업체 패널에서 메일 서버가 확인하는 역방향 DNS(reverse DNS) 레코드를 설정할 수 있습니다. 매우 저렴한 플랜의 경우 여러 고객이 하나의 공용 주소를 공유하는 NAT VPS인 경우가 있으며, 이때 ip -4 addr show 명령은 10.0.0.5와 같은 사설 주소를 보고하고 인바운드 포트가 제한됩니다.
제공받은 사양을 확인하는 네 가지 명령은 다음과 같습니다.
nproc
free -h
df -h /
ip -4 addr show위 명령의 결과가 앞서 설명한 반올림 오차 범위를 넘어 사양서와 일치하지 않는다면, 서버에 아무것도 구축하기 전에 기술 지원 티켓을 발행하는 것이 좋습니다.
실무에서 root 권한이 의미하는 것
root는 Linux의 관리자 계정이며 사용자 ID는 0입니다. id -u를 실행하면 root일 때 0이 표시됩니다. root는 시스템 전체를 위한 패키지를 설치하고, 1024 미만의 포트를 열 수 있으며(커널이 특권 프로세스를 위해 예약해 둔 영역이므로 일반 사용자는 포트 80에서 웹 서버를 시작할 수 없습니다), 커널 모듈을 로드하고, 커널을 교체하고, 디스크의 모든 파일을 읽거나 수정할 수 있습니다. 또한 부주의한 명령 한 번으로 시스템을 파괴할 수도 있습니다. 이를 되돌려 줄 사람은 아무도 없습니다.
실무적인 차이는 간단합니다. 공유 호스팅에서는 소프트웨어를 설치해 달라고 지원 티켓을 보내야 하지만, VPS에서는 다음 명령을 입력합니다.
sudo apt update
sudo apt install -y nginx
systemctl status nginxsystemctl status nginx을 실행하면 1~2초 내에 active (running)이 출력되어야 하며, 브라우저에서 서버 IP 주소로 접속하면 기본 nginx 페이지가 보여야 합니다. 상태가 failed로 출력된다면 journalctl -u nginx -n 50을 실행하여 마지막 줄들을 확인하십시오. 서비스가 시작을 거부한 이유가 기록되어 있습니다. 흔한 원인은 설정 파일의 오타나 다른 프로그램이 이미 포트 80을 사용 중인 경우입니다.
root는 보안의 전체 경계이기도 하며, 제공업체가 생성한 비밀번호로 처음 제공됩니다. 새 서버에 접속한 첫 세션에서 바로 애플리케이션을 설치해서는 안 됩니다. 일반 사용자를 생성하고, SSH 키로 로그인 방식을 변경하며, 포트 앞에 방화벽을 배치하십시오. 새 VPS에서의 첫 10분은 해당 체크리스트를 순서대로 다루며, SSH 키 기초는 로그인 자체를, ufw 방화벽 기초는 포트 설정을, 최소 권한 사용자는 이후 서비스가 어떤 권한으로 실행되어야 하는지를 설명합니다. 비밀번호 로그인만 사용하고 방화벽이 없는 서버는 하루에도 수천 번의 무차별 대입 공격을 받게 되며, journalctl -u ssh -f을 통해 공격이 들어오는 것을 확인할 수 있습니다.
VPS의 한계는 무엇인가?
프로세서는 공유되며, 공유 정도를 측정할 수 있다. Steal time은 가상 CPU가 실행 준비를 마쳤음에도 하이퍼바이저가 물리 코어를 다른 게스트에게 할당하여 아무것도 하지 못한 시간의 비율이다.
vmstat 1 5마지막 열인 st는 steal time을 나타낸다. 공유 호스트에서 1~2% 정도의 일시적인 수치는 정상이다. 서버의 프로세스가 유휴 상태임에도 두 자릿수 수치가 지속된다면 호스트가 과도하게 할당된 상태이며, 대기 현상이 서버 외부에서 발생하므로 서버 내부의 튜닝으로는 해결할 수 없다. VPS 벤치마킹 방법에서는 이를 제공업체에 문의하기 전에 증명하는 방법을 설명한다. Steal은 KVM 및 Xen 게스트에서 보고된다. 컨테이너 가상화 환경에서는 이 값이 0으로 고정되어 아무런 정보를 제공하지 않는다.
메모리는 고정되어 있으며, 한계점에 도달하면 즉시 차단된다. 할당이 실패하면 커널의 OOM(out of memory) killer가 프로세스를 선택하여 SIGKILL로 종료한다.
sudo dmesg -T | grep -i "out of memory"다음 한 줄은 원인을 알 수 없던 중단 사태를 설명한다.
Out of memory: Killed process 2412 (mysqld) total-vm:2183104kB, anon-rss:1897224kB, file-rss:0kBSIGKILL은 프로세스에 아무것도 기록할 기회를 주지 않으므로, 애플리케이션 자체 로그에는 보통 아무런 내용도 남지 않는다. 원인은 커널 로그에만 존재한다. 많은 VPS 이미지는 스왑 파일 없이 배포되므로 한계점이 더욱 엄격하게 작용한다. 따라서 작은 스왑 파일을 추가하는 것이 일반적인 초기 설정이다.
디스크는 빠르지만 공유된다. 호스트의 NVMe는 빠르지만, 사용자의 할당 영역은 입출력 작업을 두고 다른 모든 게스트와 경쟁한다. 한가한 시간에 측정한 벤치마크 결과가 피크 시간대의 성능을 보장하지는 않는다.
하드웨어는 직접 제어할 수 없다. 어떤 장치도 물리적으로 연결할 수 없다. USB 장치, 캡처 카드, 그래픽 카드를 사용할 수 없다. 단, 계획적으로 패스스루를 지원하는 별도의 고가 상품인 GPU 탑재 VPS는 예외다.
정확히 한 대의 장비로 존재한다. VPS는 단일 머신이다. 호스트에 장애가 발생하면 호스트가 복구될 때까지 서버는 중단되며, 직접 장애 조치(failover)를 구축하지 않는 한 서비스는 복구되지 않는다. 백업은 사용자의 책임이므로 VPS에서 restic 백업은 설정 목록에 포함해야 한다. 제공업체의 스냅샷은 편리하지만, 보호 대상과 동일한 인프라에 저장되므로 백업으로 간주할 수 없다.
기술 지원은 하이퍼바이저 수준에서 멈춘다. 관리형이 아닌 플랜에서 제공업체는 하드웨어, 네트워크, 가상화 계층의 정상 상태만 유지한다. 운영체제부터 그 상위의 모든 계층은 보안 업데이트를 포함하여 사용자의 책임이다. 관리형 호스팅과 비관리형 호스팅의 차이에서 이 경계를 설명하며, Ubuntu 자동 보안 업데이트는 가장 먼저 활성화해야 할 유용한 기능이다.
VPS와 혼동하기 쉬운 개념 비교
가상 머신(virtual machine)은 일반적인 개념이며, VPS는 그 상업적 형태 중 하나입니다. 운영체제, 공인 IP 주소, 네트워크가 이미 구성되어 월 단위로 임대하는 가상 머신을 의미합니다. VPC(virtual private cloud)는 대규모 클라우드 내부의 사설 네트워크이며, 서버는 그 안에 위치하므로 완전히 다른 목적을 가집니다. VPS, VM, VPC 비교에서 이 세 용어를 명확히 구분합니다.
전용 서버(dedicated server)는 하이퍼바이저 없이 이웃 서버가 없는 물리적 장비 전체를 의미합니다. 월 비용이 몇 배 더 비싸지만, 스틸 타임(steal time)이나 디스크 경합이 실제 병목 현상일 때 적합한 해결책입니다. VPS와 전용 서버 비교에서 결정 요소를 나열합니다.
VPN(virtual private network)은 VPS와 철자 두 개만 같을 뿐 아무런 관련이 없습니다. VPN은 장비 간의 암호화된 터널입니다. VPS는 장비 그 자체이며, 흔히 사용하는 용도 중 하나가 직접 VPN을 구축하는 것이기에 혼동이 발생합니다. VPS와 VPN 비교에서 두 용어를 정리합니다.
개인 소유 하드웨어나 가정 내 장비에 설치한 Proxmox 같은 하이퍼바이저는 비용 대비 더 많은 자원을 제공하지만, 많은 서비스가 가정용 회선을 의심스러운 것으로 간주합니다. Proxmox와 VPS 비교에서 성능, 소음, 가동 시간과 월 이용료를 비교합니다.
VPS에서 무엇을 실행하나요?
솔직히 말씀드리면 Linux에서 실행되는 모든 것을 운영할 수 있습니다. 흔히 데이터베이스를 포함한 웹사이트, 개인용 VPN, 게임 서버, 상태 모니터링 도구, 메일 서버, 미디어 라이브러리, 또는 노트북을 닫아도 계속 작동하는 코딩 에이전트 등을 실행합니다. 실행하는 모든 서비스는 특정 포트에서 대기하므로, Linux에서 포트란 무엇인가를 다음 단계로 학습하는 것이 좋습니다. 또한 VPS로 할 수 있는 일에서는 각 항목별 리소스 비용을 포함한 더 자세한 목록을 확인할 수 있습니다.
FAQ
VPS와 가상 머신은 같은 것입니까?
VPS는 기업이 운영체제, 공인 IP 주소, 월 이용료를 포함하여 임대해 주는 가상 머신입니다. 기반 기술은 동일합니다. 두 용어는 사용 범위가 다릅니다. "가상 머신"은 본인의 노트북에서 실행하는 것을 포함하여 하이퍼바이저 위에서 구동되는 모든 게스트를 지칭하며, "VPS"는 구매하는 상품을 의미합니다. VPC는 또 다른 개념으로, 서버가 아니라 클라우드 제공업체 내부의 사설 네트워크를 뜻합니다.
VPS를 사용하려면 Linux를 알아야 합니까?
기초적인 지식은 필요하며, 나머지는 사용하면서 배울 수 있습니다. 시작 단계에서 필요한 것은 ssh으로 접속하기, cd와 ls로 이동하기, nano으로 파일 편집하기, apt로 소프트웨어 설치하기, journalctl로 로그 읽기입니다. 관리형이 아닌 VPS는 업데이트와 방화벽을 직접 처리해야 합니다. 이 과정이 부담스럽다면, 더 높은 월 이용료를 지불하고 관리형 플랜이나 제어판을 사용하여 일부 업무를 위임할 수 있습니다.
왜 VPS의 RAM 용량이 약속된 플랜보다 적게 표시됩니까?
Linux는 사용 가능한 메모리를 보고하고, 플랜은 할당된 메모리를 광고하기 때문입니다. 커널 이미지와 몇몇 예약된 메모리 영역이 free -h의 총합에서 제외되므로, 16 GB 플랜은 보통 약 15Gi로 표시됩니다. 수백 메가바이트 정도의 차이는 정상입니다. 하지만 수 기가바이트의 차이가 난다면 이는 정상적인 범위를 벗어난 것이므로 기술 지원 티켓을 발행해야 합니다.
Steal time이란 무엇이며, 걱정해야 합니까?
Steal time은 가상 CPU가 실행 준비를 마쳤으나 하이퍼바이저가 물리적 코어를 다른 게스트에게 할당하여 대기해야 했던 시간의 비율입니다. vmstat 1의 st 열에서 확인할 수 있습니다. 공유 하드웨어 환경에서 일시적으로 1~2% 정도 발생하는 것은 정상입니다. 서버의 부하가 낮은데도 두 자릿수 이상의 수치가 지속된다면 물리적 호스트가 과도하게 할당된 상태입니다. 서버 내부에서는 호스트의 스케줄러를 제어할 수 없으므로, 다른 호스트로 이전하거나 플랜을 변경해야 합니다.
하나의 VPS에서 여러 서비스를 실행할 수 있습니까?
네, 가능합니다. root 권한을 갖는 이유가 바로 그것입니다. 머신은 범용으로 사용되며, 메모리 용량이 허용하고 각 서비스가 서로 다른 포트를 사용한다면 여러 서비스가 공존할 수 있습니다. 보통 메모리가 첫 번째 한계이며, 디스크 속도가 두 번째 한계입니다. 메일 서비스는 예외적인데, 메일 전송은 IP 주소의 평판에 의존하기 때문입니다. 호스팅 제공업체에서 새로 할당받은 주소는 대형 메일 시스템으로부터 신뢰받지 못하는 경우가 많습니다.