07. VM생성하기

Proxmox VE에서 VM 생성하기
Proxmox VE에서 VM을 만드는 작업은 Web UI 기준으로 몇 단계면 완료됩니다. 하지만 운영 환경에서는 VM을 만들 수 있는지보다, 일관된 표준으로 반복 생성할 수 있는지가 더 중요합니다.
CPU Type, BIOS, Machine Type, 디스크 컨트롤러, 캐시, VirtIO NIC, VLAN, QEMU Guest Agent 설정은 성능, 호환성, 백업, 마이그레이션, 장애 대응에 영향을 줍니다.
이 글은 일반 Linux VM을 기준으로 VM 생성 절차와 권장 설정을 정리합니다.
VM 생성 전 준비
| 구분 | 확인 사항 |
|---|---|
| OS 이미지 | Linux 또는 Windows ISO 준비 |
| VirtIO 드라이버 | Windows VM이면 virtio-win.iso 준비 |
| 스토리지 | ISO 저장소와 VM 디스크 저장소 구분 |
| 네트워크 | 연결할 Bridge와 VLAN ID 확인 |
| VM ID·이름 | 중복 없는 번호와 표준 네이밍 정의 |
| 자원 | vCPU, 메모리, 디스크 용량 산정 |
| 시스템 설정 | BIOS, Machine Type, CPU Type 정책 정의 |
| 운영 정책 | Guest Agent, 백업, 모니터링, 템플릿 정책 정의 |
반복 생성 환경에서는 아래 항목을 문서화합니다.
VM Standard
├── VM ID Range
├── Naming Convention
├── OS Image and Template Version
├── BIOS / Machine Type
├── CPU Type
├── Disk Controller / Cache / Discard Policy
├── Bridge / VLAN Policy
├── Guest Agent Policy
└── Backup / Monitoring Policy
ISO와 VM ID 준비
ISO는 ISO 콘텐츠를 허용한 local 또는 별도 ISO 스토리지에 업로드합니다.
local
├── ISO Images
├── Container Templates
├── Backup
└── Snippets
local-lvm
└── VM Disks
local-lvm은 일반적으로 VM 디스크용 LVM-thin 스토리지이므로 ISO 업로드 대상으로 사용할 수 없습니다. 실제 스토리지 이름과 허용 콘텐츠 유형은 환경마다 다르므로 Web UI에서 먼저 확인합니다.
Windows VM은 Windows ISO 외에 virtio-win.iso를 준비합니다. VirtIO SCSI 디스크와 VirtIO NIC를 사용하면 성능과 효율성에 유리하지만, Windows 설치 과정에서 드라이버를 로드해야 할 수 있습니다.
VM ID와 이름은 CLI, API, 백업, 모니터링에서 반복 사용하므로 일관되게 정합니다.
VM ID 예시
100-199: Infrastructure
300-399: DevOps
400-499: Kubernetes Control Plane
500-599: Kubernetes Worker
600-699: Database
800-899: Template
이름 예시
gitlab-dev-01
k8s-cp-prod-01
k8s-worker-prod-01
postgresql-prod-01
Linux VM 생성 절차
Web UI에서 다음 메뉴를 선택합니다.
Node
└── Create VM
생성 마법사는 일반적으로 아래 순서로 진행합니다.
1. General
2. OS
3. System
4. Disks
5. CPU
6. Memory
7. Network
8. Confirm
General과 OS
| 항목 | 권장 예시 |
|---|---|
| Node | VM을 생성할 Proxmox 노드 |
| VM ID | 정책에 맞는 중복 없는 ID |
| Name | k8s-cp-prod-01 같은 표준 이름 |
| Start at boot | 서비스 의존성을 고려해 선택 |
| OS Type | Linux |
| ISO | local 또는 ISO 저장소의 설치 이미지 |
부팅 순서는 모든 VM에 일괄 적용하지 말고, DNS·스토리지·DB처럼 선행 의존성이 있는 서비스에만 필요한 순서를 적용합니다.
System 설정
| 항목 | 권장 기준 |
|---|---|
| BIOS | 레거시·단순 호환성은 SeaBIOS, UEFI·Windows 11·PCIe·vTPM 요구는 OVMF 검토 |
| Machine Type | 일반 Linux VM은 i440fx·q35 모두 가능, UEFI·PCIe·Passthrough는 q35 우선 검토 |
| SCSI Controller | VirtIO SCSI single |
| QEMU Guest Agent | 활성화 |
VirtIO SCSI single은 신규 Linux VM에서 성능을 고려할 때 권장되는 구성입니다. 디스크별 컨트롤러와 I/O thread 구성을 활용할 수 있습니다.
운영 중인 VM의 BIOS나 Machine Type은 충분한 검증 없이 변경하지 않습니다. 부팅 실패나 장치 인식 문제를 유발할 수 있습니다.
Disk 설정
일반 Linux VM의 시작점으로 아래 구성을 검토할 수 있습니다.
| 항목 | 권장 예시 |
|---|---|
| Bus / Device | SCSI |
| Storage | local-lvm, ZFS, NFS, Ceph RBD 등 |
| SCSI Controller | VirtIO SCSI single |
| Cache | No cache를 보수적 기본값으로 검토 |
| Discard | Thin provisioning·SSD·TRIM 지원 시 활성화 검토 |
| IO Thread | VirtIO SCSI single과 함께 활성화 검토 |
| SSD Emulation | 백엔드와 게스트 OS 요구에 따라 검토 |
| Backup | 백업 대상 디스크면 활성화 |
Controller: VirtIO SCSI single
Disk: scsi0
Cache: No cache
Discard: Enabled
IO Thread: Enabled
Discard는 게스트의 TRIM 정보를 스토리지에 전달해 thin-provisioned 스토리지의 사용 공간 회수에 도움을 줄 수 있습니다. 단, 게스트 OS·파일시스템·디스크 옵션·스토리지 백엔드가 모두 지원해야 실제로 동작합니다.
Write back은 성능을 높일 수 있지만, 전원 보호, 스토리지 flush 보장, RAID 캐시 보호, 애플리케이션 일관성을 검증한 뒤 사용합니다. Write back (unsafe)는 데이터 손실 위험이 있으므로 운영 환경에서는 사용하지 않습니다.
CPU와 메모리
| 항목 | 권장 기준 |
|---|---|
| Socket | 일반 Linux VM은 보통 1 |
| Core | 워크로드 요구사항에 맞게 산정 |
| CPU Type | 단일 노드·균질 클러스터는 host 검토, 이기종 클러스터는 호환 CPU 모델 검토 |
| NUMA | 대형 VM, 다중 소켓 호스트, Passthrough, 성능 분석이 필요한 경우 검토 |
| Ballooning | 일반 VM은 검토 가능, DB·Redis·Prometheus·Kubernetes Worker는 보수적으로 적용 |
VM의 총 vCPU는 다음과 같이 계산됩니다.
[ \text{vCPU} = \text{Sockets} \times \text{Cores} ]
일반 Linux VM은 Sockets: 1과 필요한 코어 수를 사용하는 방식이 단순합니다.
Small VM: 1 Socket × 2 Cores
General VM: 1 Socket × 4 Cores
Large VM: 1 Socket × 8 Cores
CPU Type: host는 현재 노드의 CPU 기능을 최대한 노출하지만, 서로 다른 CPU 세대 또는 Intel·AMD가 섞인 클러스터에서는 라이브 마이그레이션 제약이 생길 수 있습니다. 마이그레이션을 고려한다면 조직 표준 CPU 모델을 정의합니다.
메모리는 CPU보다 보수적으로 할당합니다. Ballooning은 과할당 환경에서 유용할 수 있지만, DB·캐시·대형 JVM·Prometheus·Kubernetes Worker처럼 메모리 사용량이 크거나 민감한 워크로드에는 고정 메모리 또는 보수적 정책을 검토합니다.
Network 설정
일반 Linux VM은 VirtIO NIC를 우선 검토합니다.
| 항목 | 권장 예시 |
|---|---|
| Bridge | vmbr0, vmbr1 등 |
| Model | VirtIO |
| VLAN Tag | 네트워크 정책에 따른 VLAN ID |
| Firewall | VM 단위 정책을 사용할 경우 활성화 |
| Rate Limit | 필요한 경우 설정 |
Bridge: vmbr1
Model: VirtIO
VLAN Tag: 30
Firewall: Enabled
VLAN Tag를 설정했다면 Proxmox Bridge의 VLAN-aware 설정, 물리 스위치 Trunk, VLAN 생성, 라우팅, ACL·방화벽 정책도 함께 확인해야 합니다.
Guest Agent 설치
Proxmox VM 옵션에서 QEMU Guest Agent를 활성화한 뒤, 게스트 OS에도 Agent를 설치하고 실행합니다.
Proxmox VE VM Options
└── QEMU Guest Agent: Enabled
Guest OS
└── qemu-guest-agent: Installed and Running
Debian·Ubuntu 계열 예시입니다.
sudo apt update
sudo apt install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
Rocky Linux·AlmaLinux·RHEL 계열 예시입니다.
sudo dnf install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
Guest Agent는 게스트 IP·OS 정보 확인, 정상 종료 요청, 백업·스냅샷 시 파일시스템 freeze/thaw 같은 기능에 도움을 줍니다.
Windows VM 요약
Windows VM은 일반적으로 다음 조합을 검토합니다.
BIOS: OVMF
Machine: q35
SCSI Controller: VirtIO SCSI single
Disk: SCSI
NIC: VirtIO
Additional CD/DVD: virtio-win.iso
QEMU Guest Agent: Enabled
Windows 설치 화면에서 SCSI 디스크가 보이지 않으면 Load driver를 선택하고, 연결한 virtio-win.iso에서 현재 Windows 버전과 아키텍처에 맞는 vioscsi 드라이버를 선택합니다.
VirtIO ISO의 내부 경로는 드라이버 릴리스에 따라 달라질 수 있습니다. Windows 설치 후에는 virtio-win-guest-tools 또는 QEMU Guest Agent 설치 파일을 사용해 Guest Agent와 추가 드라이버를 설치합니다.
VM 생성 후 점검
Proxmox VE에서 VM 상태와 설정을 확인합니다.
qm list
qm status 401
qm config 401
# Guest Agent가 정상 동작하는 경우
qm guest cmd 401 network-get-interfaces
Linux Guest OS에서도 자원과 네트워크를 확인합니다.
lscpu
free -h
lsblk
df -h
ip -br addr
ip route
systemctl status qemu-guest-agent
다음 항목을 확인합니다.
- VM이 정상 부팅되고 콘솔 접속이 가능한가
- vCPU·메모리·디스크가 의도한 값으로 보이는가
- VirtIO NIC와 Bridge·VLAN이 올바르게 적용됐는가
- 게스트 IP와 기본 라우팅, DNS, NTP가 정상인가
- QEMU Guest Agent가 인식되는가
- 백업 대상과 보존 정책이 설정됐는가
- 자동 마운트는 장치명 대신 UUID·LABEL 기준으로 구성됐는가
CLI 생성 예시
다음 예시는 Rocky Linux ISO 기반 Linux VM 생성 흐름입니다.
qm create 401 \
--name k8s-cp-prod-01 \
--memory 8192 \
--cores 4 \
--sockets 1 \
--machine q35 \
--bios ovmf \
--scsihw virtio-scsi-single \
--agent enabled=1 \
--ostype l26 \
--onboot 1
qm set 401 \
--ide2 local:iso/Rocky-9.x-x86_64-dvd.iso,media=cdrom
qm set 401 \
--efidisk0 local-lvm:1,format=raw,pre-enrolled-keys=0
qm set 401 \
--scsi0 local-lvm:100,cache=none,discard=on,iothread=1,ssd=1
qm set 401 \
--boot order=ide2\;scsi0
qm set 401 \
--net0 virtio,bridge=vmbr1,tag=30,firewall=1
qm start 401
단일 노드 또는 CPU가 균질한 클러스터에서는 필요에 따라 아래 CPU 설정을 추가할 수 있습니다.
qm set 401 --cpu host
서로 다른 CPU 세대의 노드가 섞이거나 라이브 마이그레이션 호환성이 중요하다면, host 대신 조직 표준 CPU 모델을 정의해 사용합니다.
자주 하는 실수
- ISO를
local-lvm에 업로드하려고 하는 경우 - 클러스터 CPU 호환성을 확인하지 않고 모든 VM에
CPU Type: host를 적용하는 경우 - Guest Agent 옵션만 켜고 게스트 OS에 Agent를 설치하지 않는 경우
- 성능만 보고
Write back (unsafe)를 사용하는 경우 - VLAN Tag만 설정하고 Bridge·스위치 Trunk·라우팅·ACL을 확인하지 않는 경우
/dev/sda,/dev/vda같은 장치명만 기준으로 자동 마운트를 구성하는 경우- VM 생성 후 백업 등록과 실제 복구 테스트를 생략하는 경우
핵심 정리
- 운영 환경의 VM 생성은 클릭 작업이 아니라 표준화 작업입니다.
- ISO는 ISO 콘텐츠를 허용한
local또는 별도 ISO 스토리지에 업로드합니다. - 일반 Linux VM은 VirtIO SCSI single, SCSI 디스크, VirtIO NIC, QEMU Guest Agent 조합을 우선 검토할 수 있습니다.
- BIOS와 Machine Type은 OS·UEFI·PCIe·Passthrough 요구사항과 조직 표준을 기준으로 선택합니다.
- CPU Type
host는 성능에 유리할 수 있지만, 이기종 CPU 클러스터의 라이브 마이그레이션을 제한할 수 있습니다. - Discard와 IO Thread는 스토리지·게스트 OS·워크로드 조건을 확인한 뒤 적용합니다.
- QEMU Guest Agent는 Proxmox VM 옵션과 Guest OS 내부 설치·실행이 모두 필요합니다.
- Windows VM은
virtio-win.iso를 준비하고, 설치 과정에서 필요한 VirtIO 드라이버를 로드해야 할 수 있습니다. - VM 생성 후에는 자원, 네트워크, Guest Agent, 백업, 실제 복구 가능 여부를 점검합니다.
참고 자료
- Proxmox VE QEMU/KVM Virtual Machines
- Proxmox VE Windows VirtIO Drivers
- Proxmox VE Windows Guest Best Practices
- Proxmox VE Migration Guide