티스토리 뷰
📦 Proxmox 백업 운영 최종 가이드
이 문서는 다음 내용을 한 번에 정리한 최종본입니다.
- vzdump 백그라운드 실행 방법
- 다중 VM 순차 자동 백업 스크립트
- 백업 실패 알림 연동 (Slack / Google Chat)
- Proxmox Backup Server(PBS) 구축 개요
- 실무 운영 시 주의사항
1. vzdump 백그라운드 실행
1-1. 기본 실행
nohup vzdump 200 \
--dumpdir /mnt/hdd \
--mode snapshot \
--compress zstd \
> /var/log/vzdump-200.log 2>&1 &

1-2. 안정성 옵션 포함
nohup vzdump 200 \
--dumpdir /mnt/hdd \
--mode snapshot \
--compress zstd \
--bwlimit 50000 \
--ionice 7 \
--lockwait 600 \
> /var/log/vzdump-200.log 2>&1 &
1-3. 실행 상태 확인
ps -ef | grep vzdump
tail -f /var/log/vzdump-200.log

2. 다중 VM 자동 백업 스크립트
아래 스크립트는 여러 VM을 순차적으로 자동 백업합니다.
동시 실행으로 인한 스토리지 병목을 줄이기 위해 한 대씩 처리합니다.
2-1. 스크립트 예제
파일명 예시: multi-vm-backup.sh
#!/bin/bash
set -u
STORAGE_DIR="/mnt/hdd"
LOGFILE="/var/log/proxmox-multi-backup.log"
VM_LIST="201 202 203 204 205"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
HOSTNAME=$(hostname)
# Slack Webhook (없으면 빈 값 유지)
SLACK_WEBHOOK=""
# Google Chat Webhook (없으면 빈 값 유지)
GCHAT_WEBHOOK="https://chat.googleapis.com/v1/spaces/AAAAzEGyH54/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=hh5s9S_25T5ICq-uv2e07dvF5EVZkepNwbqKE1oAjWc"
send_slack() {
local MSG="$1"
if [ -n "$SLACK_WEBHOOK" ]; then
curl -s -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"${MSG}\"}" \
"$SLACK_WEBHOOK" >/dev/null 2>&1
fi
}
send_gchat() {
local MSG="$1"
if [ -n "$GCHAT_WEBHOOK" ]; then
curl -s -X POST -H 'Content-Type: application/json' \
-d "{\"text\":\"${MSG}\"}" \
"$GCHAT_WEBHOOK" >/dev/null 2>&1
fi
}
notify_all() {
local MSG="$1"
send_slack "$MSG"
send_gchat "$MSG"
}
log() {
echo "[$(date '+%F %T')] $1" | tee -a "$LOGFILE"
}
log "===== Backup Start on ${HOSTNAME} ====="
notify_all "[Proxmox Backup] 시작: ${HOSTNAME} / ${DATE}"
for VMID in $VM_LIST; do
log "VM ${VMID} 백업 시작"
vzdump "$VMID" \
--dumpdir "$STORAGE_DIR" \
--mode snapshot \
--compress zstd \
--bwlimit 50000 \
--ionice 7 \
--lockwait 600 >> "$LOGFILE" 2>&1
RC=$?
if [ $RC -eq 0 ]; then
log "VM ${VMID} 백업 성공"
else
log "VM ${VMID} 백업 실패 (rc=${RC})"
notify_all "[Proxmox Backup] 실패: VM ${VMID} / Host ${HOSTNAME} / rc=${RC}"
fi
sleep 30
done
log "===== Backup End ====="
notify_all "[Proxmox Backup] 완료: ${HOSTNAME} / $(date '+%Y-%m-%d %H:%M:%S')"
2-2. 실행 권한 부여
chmod +x /root/multi-vm-backup.sh
2-3. 수동 실행
nohup /root/multi-vm-backup.sh > /var/log/multi-vm-backup-nohup.log 2>&1 &
2-4. Crontab 자동 실행
매일 새벽 2시에 실행 예시:
crontab -e
0 2 * * * /root/multi-vm-backup.sh
3. Kubernetes VM 백업 순서 권장안
현재 구조가 Kubernetes Master / Worker 혼합이라면, 단순 VM 번호 순서보다 아래 순서를 권장합니다.
권장 순서
1단계: 일반 VM
- 100
- 101
- 102
2단계: Worker
- 203
- 204
- 205
3단계: Master
- 200
- 201
- 202
이유
- Worker 먼저 백업하면 서비스 워크로드 영향이 상대적으로 적음
- Master를 동시에 백업하면 etcd / control plane 영향 가능성 존재
- 순차 처리 시 클러스터 안정성 확보에 유리함
예시:
VM_LIST="100 101 102 203 204 205 200 201 202"
4. 백업 실패 알림 연동
4-1. Slack 알림
Slack Incoming Webhook 생성
- Slack App 생성
- Incoming Webhooks 활성화
- 대상 채널 선택
- Webhook URL 발급
예시 설정:
SLACK_WEBHOOK="https://hooks.slack.com/services/XXX/YYY/ZZZ"
단건 테스트
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"[TEST] Proxmox backup alert"}' \
"https://hooks.slack.com/services/XXX/YYY/ZZZ"
4-2. Google Chat 알림
Google Chat Webhook 생성
- Google Chat Space 생성
- Space 관리 메뉴에서 Incoming Webhook 추가
- Webhook URL 복사
예시 설정:
GCHAT_WEBHOOK="https://chat.googleapis.com/v1/spaces/AAA/messages?key=BBB&token=CCC"
단건 테스트
curl -X POST -H 'Content-Type: application/json' \
-d '{"text":"[TEST] Proxmox backup alert"}' \
"https://chat.googleapis.com/v1/spaces/AAA/messages?key=BBB&token=CCC"
4-3. 알림 운영 팁
- 시작 / 성공 / 실패를 모두 보내면 너무 시끄러울 수 있음
- 실무에서는 보통 실패만 알림 또는 일일 완료 요약 + 실패 즉시 알림 형태를 권장
- Webhook URL은 스크립트에 직접 넣지 말고 별도 환경파일로 분리하는 것이 안전함
예시 환경파일:
파일명: /root/.backup-alert.env
SLACK_WEBHOOK="https://hooks.slack.com/services/XXX/YYY/ZZZ"
GCHAT_WEBHOOK="https://chat.googleapis.com/v1/spaces/AAA/messages?key=BBB&token=CCC"
스크립트 상단:
source /root/.backup-alert.env
권한 설정:
chmod 600 /root/.backup-alert.env
5. PBS(Proxmox Backup Server) 구축 가이드
PBS는 vzdump --dumpdir 방식보다 운영성이 훨씬 좋습니다.
특히 VM 수가 늘어나거나 장기 보관, 중복 제거, 증분 백업이 필요하면 PBS가 더 적합합니다.
5-1. PBS 장점
- 중복 제거(deduplication)
- 증분 백업(incremental backup)
- 빠른 백업 / 복구
- 백업 무결성 검증 가능
- 보관 정책(prune) 관리 편리
- Proxmox VE와 연동이 쉬움
5-2. 권장 구성
최소 구성 예시
- PBS 전용 서버 1대
- CPU: 4 Core 이상
- Memory: 8GB 이상
- Storage: 백업 용량 기준 별도 디스크
- Network: Proxmox VE와 1GbE 이상 권장
권장 구성 예시
- CPU: 8 Core
- Memory: 16GB 이상
- Storage: RAID1 또는 RAID5/6, 가능하면 SSD Cache 고려
- 백업망 분리 가능하면 별도 백업 네트워크 구성
5-3. PBS 설치 개요
PBS 전용 서버에 설치합니다.
ISO 또는 Debian 기반 설치
- PBS ISO 설치
- 또는 Debian 설치 후 PBS 패키지 설치
설치 후 웹 접속 예시:
https://PBS_IP:8007
5-4. PBS 저장소(Datastore) 생성
웹 UI에서 Datastore 생성:
예시:
- Datastore Name: pbs-backup
- Backing Path: /backup/pbs
CLI 예시:
proxmox-backup-manager datastore create pbs-backup /backup/pbs
5-5. Proxmox VE에 PBS 등록
PVE 웹 UI:
- Datacenter
- Storage
- Add
- Proxmox Backup Server
입력값 예시:
- ID: pbs01
- Server: 192.168.0.50
- User: backup@pbs
- Datastore: pbs-backup
- Fingerprint: PBS에서 확인
5-6. PBS 대상 백업 작업 생성
PVE 웹 UI:
- Datacenter
- Backup
- Add
설정 예시:
- Storage: pbs01
- Schedule: daily
- Mode: snapshot
- Selection: 원하는 VM 선택
- Max Workers: 1
Max Workers = 1 이 핵심입니다.
여러 VM을 동시에 밀지 않고 순차 처리합니다.
5-7. 보관 정책(Prune) 예시
예시 정책:
- keep-last: 7
- keep-daily: 7
- keep-weekly: 4
- keep-monthly: 6
CLI 예시:
proxmox-backup-manager prune-job create pbs-backup \
--schedule 'daily' \
--keep-last 7 \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6
5-8. 검증 작업(Verify) 권장
백업은 저장만 하면 끝이 아니라 검증도 중요합니다.
예시:
proxmox-backup-manager verify-job create pbs-backup --schedule 'sun 03:00'
6. PBS 운영 권장 아키텍처
소규모 환경
- PVE 1대
- PBS 1대
- 백업 대상 VM 10~30대
중규모 환경
- PVE Cluster
- PBS 전용 서버
- NAS 또는 대용량 로컬 디스크
- 백업 네트워크 분리
운영 팁
- PBS는 운영 VM과 같은 스토리지에 두지 않는 것이 좋음
- 백업 저장소는 가급적 운영 스토리지와 분리
- 장기적으로는 외부 NAS / 오브젝트 스토리지 2차 보관도 고려
7. 실무 점검 포인트
7-1. 백업이 멈춘 것처럼 보일 때
확인 명령어:
ps -ef | grep vzdump
tail -f /var/log/proxmox-multi-backup.log
iostat -x 1
df -h
주요 원인
- HDD IO 병목
- NFS 지연
- 압축 CPU 부족
- 저장소 용량 부족
- 스냅샷 lock 대기
7-2. 백업 성능 개선 팁
- HDD면 --bwlimit 꼭 사용
- CPU 부족하면 --compress lzo 또는 --compress 0
- PBS 도입 시 증분 백업으로 성능 체감 개선 가능
- 백업 시간대는 업무 외 시간으로 분리
8. 추천 최종 운영안
현재 바로 가능한 방식
- vzdump + nohup
- 다중 VM 순차 스크립트
- 실패 시 Slack / Google Chat 알림
- cron 등록
중장기 권장 방식
- PBS 전용 서버 구축
- PVE에서 PBS 스토리지 등록
- Backup Job + Prune Job + Verify Job 운영
- 장애 알림은 PBS / PVE 로그와 함께 ChatOps 연동
9. 최종 결론
가장 현실적인 운영 순서는 아래와 같습니다.
1단계
현재 환경에서 바로 적용:
- nohup 기반 백그라운드 실행
- 순차 다중 VM 스크립트
- 실패 알림 연동
2단계
환경이 커지면 전환:
- PBS 구축
- 증분 백업
- 중복 제거
- 보관 정책 자동화
- 무결성 검증
즉,
소규모는 vzdump 스크립트, 중장기 운영은 PBS가 정답에 가깝습니다.
10. 부록
10-1. 가장 간단한 단일 VM 백그라운드 실행
nohup vzdump 200 \
--dumpdir /mnt/hdd \
--mode snapshot \
--compress zstd \
> /var/log/vzdump-200.log 2>&1 &
10-2. 가장 실무적인 다중 VM 실행
nohup /root/multi-vm-backup.sh > /var/log/multi-vm-backup-nohup.log 2>&1 &
10-3. 환경파일 분리 예시
source /root/.backup-alert.env
필요 시 다음 문서로 이어서 확장할 수 있습니다.
- Proxmox 백업 장애 분석 가이드
- PBS 장애 대응 가이드
- Kubernetes VM 백업/복구 절차서
- Ansible 기반 Proxmox 백업 자동화 문서
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- K8s
- chunking
- poetry
- Qdrant
- 오라클
- open ai
- 5.4.0.1072
- 테라폼
- n8n
- KoSimCSE
- embedding
- VectorStore
- MCP
- llama
- 임베딩
- llm
- kiwipiepy
- Oracle
- Chroma
- 쿠버네티스
- Weaviate
- AWS
- RangChain
- CVE 취약점 점검
- Ai
- faiss
- 코로나19
- 버쳐박스
- MSA
- RAG
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
글 보관함