ESXi VM 자동 백업 스크립트 작성기 — ghettoVCB에서 자체 스크립트로
본 글은 작성 중입니다 (placeholder). 실제 스크립트 코드와 1회 복구 훈련(DR drill) 결과를 추가해 정식 회고로 확장 예정.
시작 — “백업이 있긴 한데 복구는 안 해봤다”
Hades 노드는 VMware ESXi 위에서 약 8개의 VM(개인 서비스, 테스트베드, Mattermost, PhotoPrism 등)을 돌리고 있습니다.
백업이라고 부를 만한 건 다음 두 가지뿐이었습니다.
- ESXi 데이터스토어 → NAS HDD 수동
cp(분기 1회 정도) - 중요 VM 디스크 vmdk를 외장 HDD로 분기 복사
문제는 한 번도 복구 시나리오를 돌려본 적이 없다는 것. 채용 공고들에서 흔히 보는 “RPO/RTO를 정의하고 운영한 경험”이 0이었습니다.
RPO / RTO 정의
| VM 분류 | 예시 | RPO | RTO |
|---|---|---|---|
| Critical | Mattermost, NAS 메타 DB | 24h | 2h |
| Important | PhotoPrism, JupyterHub | 7d | 8h |
| Sandbox | 테스트 VM | best-effort | best-effort |
이 표를 만든 것만으로도 “어디에 시간을 써야 하는지”가 명확해졌습니다.
후보 검토
- ghettoVCB — 표준 도구, 그러나 ESXi 8.x 호환성과 알림 체계가 부족
- Veeam Community — 무료지만 라이선스/소켓 제한, 학습 가치는 낮음
- 자체 셸 스크립트 ✅ — 학습 목적·커스터마이즈에 가장 적합
자체 스크립트 설계 (예정)
# pseudo
for vm in $(target_list); do
vim-cmd snapshot.create $vm "auto-backup"
ovftool ... "$vm" "$NAS_PATH/$(date +%F)/$vm.ova"
vim-cmd snapshot.removeall $vm
log_to_loki "$vm" "$status"
done
prune_older_than 30d
notify_discord "$summary"
TODO
- OVF 백업 시 incremental 불가 → 차분 전략 검토 (rsync + thin disk)
- Loki로 백업 로그 수집 (이전 글의 모니터링 스택과 연결)
- DR drill: 다른 노드에서 실제 복구 시도 → RTO 측정
- 백업 무결성 자동 검증 (sha256 + 부팅 테스트)
- “복구 실패 시 알람” 룰 추가
배운 것 (현재까지)
백업이 있다 ≠ 복구가 된다. 복구 훈련을 한 번 돌리고 나면 백업 스크립트 절반은 다시 쓰게 된다.