13년차의 서버실

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

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 백업까지 가는 걸 목표로 삼으시길 권합니다. 저도 그렇게 채워 갈 계획입니다.