13년차의 서버실

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

[태그:] 데이터보호

  • Proxmox 백업 vzdump 완전 정리 — 스냅샷 말고 진짜 백업 걸기

    지난 ZFS 글에서 “스냅샷은 백업이 아니다”라고 했습니다. 그럼 Proxmox에서 진짜 백업은 어떻게 할까요? 답은 vzdump입니다. VM·컨테이너를 통째로 백업하는 Proxmox 내장 도구인데, 솔직히 저도 아직 예약 백업을 안 걸어둔 상태라 이번 기회에 제대로 정리합니다.

    1. vzdump이 하는 일

    vzdump은 VM/LXC 전체를 하나의 아카이브로 백업합니다. 스냅샷(같은 디스크 안의 되돌리기)과 달리, 별도 스토리지(NAS 등)에 복제본을 만드는 진짜 백업입니다.

    • 디스크가 통째로 죽어도 복구 가능
    • 다른 노드·다른 서버로 이전 가능
    • 보관 개수를 정해 자동 로테이션

    2. 백업 모드 3가지

    모드 다운타임 특징
    snapshot 거의 없음 실행 중 백업(권장)
    suspend 잠깐 정지 중간 안전성
    stop 완전 정지 가장 일관적

    대부분 snapshot 모드면 충분합니다. 실행 중인 서비스를 멈추지 않고 백업하니까요(단, DB처럼 일관성이 중요하면 stop 고려).

    3. 수동 백업 — 한 줄

    # LXC 113을 NAS 스토리지에 snapshot 모드로 백업
    vzdump 113 --mode snapshot --storage nas-backup --compress zstd
    
    # 여러 개 한 번에
    vzdump 112 113 124 --mode snapshot --storage nas-backup --compress zstd

    --compress zstd는 빠르고 압축률도 좋아 요즘 표준입니다. 백업 파일은 지정한 스토리지(예: NAS)에 .vma.zst(VM) / .tar.zst(LXC)로 쌓입니다.

    4. 예약 백업 (여기가 진짜 핵심)

    수동은 잊어버립니다. Proxmox 웹UI Datacenter → Backup → Add에서 예약을 겁니다. 핵심 설정은 —

    • 대상: 백업할 VM/LXC 선택(또는 전체)
    • 스토리지: 반드시 다른 디스크/NAS(같은 풀에 백업하면 의미 없음)
    • 스케줄: 예) 매일 새벽 3시
    • 보관(Retention): 일 7 / 주 4 / 월 3 등
    # /etc/pve/jobs.cfg 에 생성되는 예약 백업(예시)
    vzdump: backup-daily
    	schedule 03:00
    	storage nas-backup
    	mode snapshot
    	compress zstd
    	prune-backups keep-daily=7,keep-weekly=4

    5. 복구

    백업이 있으면 복구는 간단합니다. 웹UI에서 백업 파일 선택 → Restore, 또는 CLI로:

    # LXC 복구 (새 ID 113으로)
    pct restore 113 /mnt/nas-backup/dump/vzdump-lxc-113-....tar.zst --storage local-zfs

    중요: 백업은 복구 테스트까지 해봐야 진짜 백업입니다. 한 번쯤 테스트 ID로 복구해 정상 부팅을 확인해 두세요.

    6. 정리 — 스냅샷 + vzdump = 완성

    스냅샷은 위험한 작업 직전의 빠른 되돌리기, vzdump은 다른 스토리지에 두는 진짜 백업입니다. 둘은 역할이 다르니 둘 다 써야 합니다. 저처럼 “스냅샷은 하는데 예약 백업은 아직”인 분이라면, 오늘 Datacenter → Backup에서 매일 백업 하나만 걸어두세요. 미래의 내가 고마워할 겁니다.

  • ZFS 스냅샷으로 홈랩 안전망 만들기 — 스냅샷은 백업이 아니다 (실제 구성 공개)

    홈랩을 굴리다 보면 “업데이트 한 번 잘못 눌렀다가 서비스가 통째로 날아갈 뻔한” 순간이 옵니다. 저는 그때마다 ZFS 스냅샷 덕에 몇 초 만에 되돌렸습니다. 이번 글은 제가 실제로 쓰는 ZFS 스냅샷 안전망 — 장점만이 아니라 아직 못 채운 구멍까지 솔직하게 공개합니다. 미화된 튜토리얼이 아니라 실제 제 홈랩 상태 그대로입니다.

    1. 왜 ZFS 스냅샷이 홈랩의 안전망인가

    스냅샷은 특정 시점의 파일시스템 상태를 통째로 얼려 두는 기능입니다. ZFS는 Copy-on-Write 구조라 스냅샷을 찍어도 공간을 거의 안 먹고(변경분만 차지), 찍는 데 1초도 안 걸립니다. 그래서 저는 위험한 작업 직전에 습관처럼 하나 찍습니다.

    # 컨테이너/데이터셋 스냅샷 하나 찍기
    zfs snapshot rpool/data/subvol-102-disk-0@pre_immich_upgrade
    
    # 현재 스냅샷 목록 확인
    zfs list -t snapshot

    실제로 제 홈랩엔 이런 스냅샷이 남아 있습니다 — subvol-102-disk-0@pre_immich_v275. Immich(사진 서버)를 v2.75로 올리기 직전에 찍어 둔 것이고, 용량은 2.38GB(그 뒤 바뀐 만큼만) 차지합니다. 업그레이드가 꼬였으면 아래 한 줄로 되돌렸을 겁니다.

    # 문제 생기면 스냅샷 시점으로 롤백
    zfs rollback rpool/data/subvol-102-disk-0@pre_immich_v275

    2. 덤으로 얻는 것 — 압축

    ZFS를 쓰면 lz4 압축이 사실상 공짜로 따라옵니다. CPU 부담은 거의 없는데 공간은 아껴 줍니다. 제 실제 압축비입니다.

    풀 용도 압축비(실측)
    rpool (SSD 236GB) 시스템·컨테이너 1.66x
    nas-data (14.5TB) 사진·미디어 파일 약 1.01x

    포인트는 압축은 데이터 종류를 탄다는 겁니다. 시스템·설정·텍스트가 많은 SSD 풀은 1.66배(≈40% 절약)나 압축되지만, 이미 압축돼 있는 사진·동영상 풀은 1.01배로 거의 효과가 없습니다. “ZFS 압축 켜면 무조건 이득”이 아니라 미디어엔 의미 없고 시스템·백업 데이터엔 크게 이득입니다.

    3. 가장 중요한 함정 — 스냅샷은 백업이 아니다

    여기서 많은 분이 착각합니다. 스냅샷은 백업이 아닙니다. 스냅샷은 같은 풀·같은 디스크 안에 있습니다. 즉 —

    • 실수로 지운 파일 복구, 잘못된 업데이트 롤백 → 스냅샷으로 충분
    • 디스크(풀) 자체가 고장, 서버 도난·화재, 랜섬웨어 → 스냅샷도 같이 사라짐

    스냅샷은 “되돌리기(undo)”이고, 백업은 “다른 장소에 복제본”입니다. 둘은 역할이 다르고 둘 다 필요합니다.

    4. 솔직한 고백 — 내 구성의 구멍

    제 홈랩을 점검해 보니 이렇습니다.

    • 스냅샷 28개가 있지만 전부 수동입니다. 자동 스냅샷 도구(sanoid 등)도, 예약 타이머도 없습니다.
    • 예약된 오프사이트 백업 잡이 없습니다. 즉 “위험 작업 전 수동 스냅샷”은 잘 하지만, 주기적 자동 스냅샷·외부 백업은 아직 못 갖췄습니다.

    이건 자랑이 아니라 많은 개인 홈랩의 현실이고, 저도 예외가 아니라는 고백입니다. 그래서 다음 단계로 아래를 정리했습니다.

    5. 제대로 하려면 — 다음 단계

    (1) 자동 스냅샷 로테이션 — sanoid
    수동 스냅샷은 잊어버리기 쉽습니다. sanoid를 쓰면 “시간별·일별·주별로 자동으로 찍고 오래된 건 자동 삭제”가 됩니다.

    # /etc/sanoid/sanoid.conf 예시
    [rpool/data]
        use_template = production
        recursive = yes
    
    [template_production]
        hourly = 24
        daily = 14
        weekly = 4
        autosnap = yes
        autoprune = yes

    (2) 진짜 백업 — 3-2-1 규칙
    데이터 3벌, 2가지 매체, 1벌은 오프사이트. ZFS라면 zfs send | zfs recv로 다른 서버·NAS에 증분 복제하거나, Proxmox 환경이면 PBS(Proxmox Backup Server)로 컨테이너·VM을 중복제거 백업하는 게 정석입니다.

    # ZFS 증분 전송(다른 풀/서버로 백업)
    zfs send -i @어제 rpool/data/subvol-102-disk-0@오늘 | \
      ssh backup-host zfs recv backup/subvol-102

    6. 결론

    ZFS 스냅샷은 홈랩에서 가장 값싸고 강력한 안전장치입니다. 위험한 작업 전에 한 줄이면 몇 초 만에 되돌릴 수 있으니까요. 하지만 스냅샷 ≠ 백업이라는 점, 그리고 수동에 기대면 언젠가 빈다는 점을 잊으면 안 됩니다. 저처럼 “수동 스냅샷은 하는데 자동화·오프사이트 백업은 아직”인 분이 많을 겁니다. 스냅샷으로 시작하되, sanoid 자동화와 3-2-1 백업까지 가는 걸 목표로 삼으시길 권합니다. 저도 그렇게 채워 갈 계획입니다.