13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] qm

  • Proxmox를 CLI로 자동화하기 — qm·pct 실전 명령 정리

    Proxmox는 웹 UI가 훌륭하지만, 반복 작업이나 자동화는 결국 CLI가 답입니다. VM은 qm, 컨테이너는 pct — 이 두 명령만 익히면 클릭 수십 번을 한 줄로 끝낼 수 있습니다. 제가 홈랩을 운영·실습하며 실제로 가장 많이 쓰는 명령을 정리합니다.

    1. qm(VM) vs pct(LXC) — 쌍둥이 명령

    두 명령은 구조가 거의 같습니다. 대상만 VM이냐 컨테이너냐의 차이죠.

    작업 VM (qm) LXC (pct)
    목록 qm list pct list
    시작/정지 qm start/stop ID pct start/stop ID
    설정변경 qm set ID ... pct set ID ...
    설정보기 qm config ID pct config ID

    2. 설정 변경 — 클릭 대신 한 줄

    CPU·메모리·디스크를 명령으로 바꿉니다. 실제로 DevStack VM을 세팅할 때 이렇게 했습니다.

    # 메모리·코어 변경
    qm set 200 --memory 12288 --cores 6
    
    # CPU 타입을 host로 (가상화 기능 노출 — 중첩가상화/명령어셋)
    qm set 200 --cpu host
    
    # 디스크 확장(온라인, 무중단)
    qm resize 200 scsi0 +37G
    
    # LXC도 동일
    pct set 113 --memory 2048 --cores 2

    3. 컨테이너 안에서 명령 실행 — pct exec

    pct exec는 LXC 내부에 SSH 없이 바로 명령을 넣습니다. 홈랩 자동화의 핵심입니다.

    # 컨테이너 113 안에서 명령 실행
    pct exec 113 -- bash -lc "docker compose up -d"
    
    # 호스트에서 여러 컨테이너 상태 한 번에
    for id in 100 112 113; do echo -n "$id: "; pct status $id; done

    (참고: VM은 커널이 분리돼 qm exec 대신 QEMU Guest Agent나 SSH를 씁니다.)

    4. 스냅샷·복제 — 실험의 안전망

    # 위험 작업 전 스냅샷
    qm snapshot 200 before_test
    qm rollback 200 before_test     # 되돌리기
    
    # 템플릿에서 새 VM 풀 클론 (cloud-init 템플릿 활용)
    qm clone 9000 201 --full --name node1

    스냅샷 한 줄이면 몇 초 만에 되돌릴 수 있어, 실습·업그레이드 전에 습관처럼 찍습니다.

    5. 원격에서 한 번에 — SSH + pct 조합

    저는 작업 PC에서 Proxmox 호스트를 거쳐 컨테이너까지 한 줄로 조작합니다.

    # 작업PC → Proxmox 호스트 → LXC 113 내부 명령
    ssh root@proxmox-host "pct exec 113 -- bash -lc 'uptime'"

    이 패턴으로 여러 호스트·컨테이너를 스크립트로 묶어 자동화할 수 있습니다.

    6. 자주 쓰는 조회 명령

    pvesm status           # 스토리지 용량/상태
    qm config 200 | grep -E "cpu|memory|net"   # 특정 설정만
    pct config 113 | grep features              # LXC 기능 플래그
    pvesh get /nodes/$(hostname)/status         # 노드 상태(API)

    7. 정리

    qm(VM)·pct(LXC)는 구조가 같아 한 번 익히면 양쪽에 다 씁니다. set으로 설정, exec로 내부 실행, snapshot/clone으로 안전망 — 이 세 가지가 홈랩 자동화의 기본기입니다. 웹 UI로 배우되, 반복이 보이면 CLI로 넘기세요. 그게 홈랩을 “운영”하는 단계로 가는 길입니다.