ZFS 스냅샷: 스냅샷 생성, 복원 및 자동화 방법

10분 소요 - 2026년 5월 5일

hero section cover
목차
  • ZFS 스냅샷: 생성, 복원 및 자동화하는 방법
  • ZFS 스냅샷의 작동 방식
  • 스냅샷 만들기
  • 스냅샷에서 복원하기
  • 스냅샷 관리 및 정리하기
  • Sanoid로 리텐션 자동화
  • Zfs send를 사용한 오프사이트 복제
  • 랜섬웨어 보호에 대한 참고 사항
  • 동영상 추천
  • 최종 의견
공유

Linux에서 ZFS 스냅샷을 만들고, 복원하고, 자동화하는 방법을 알아보세요. 명령어, 롤백, 보존 정책, Sanoid를 사용한 오프사이트 복제에 대해 다룹니다

ZFS 스냅샷: 생성, 복원 및 자동화하는 방법

ZFS 스냅샷은 파일 시스템의 읽기 전용, 특정 시점 복사본입니다. 즉시 생성되고 데이터가 변경될 때까지 공간을 차지하지 않으며 몇 초 만에 파일을 롤백하거나 복구할 수 있습니다. 서버, VPS 인스턴스 또는 데이터가 손실되어서는 안 되는 모든 것을 관리한다면 스냅샷은 워크플로우의 일부가 되어야 합니다.

이 글에서는 ZFS 스냅샷의 작동 방식, 사용 방법, 보존을 자동화하여 데이터가 쌓이지 않도록 하는 방법에 대해 설명합니다.

ZFS 스냅샷의 작동 방식

ZFS는 CoW(Copy-on-write) 모델을 사용합니다. 스냅샷을 만들 때 ZFS는 데이터를 복제하지 않습니다. 단순히 블록 포인터 트리의 현재 상태를 기록합니다. 새 쓰기는 빈 블록으로 이동하고 스냅샷은 원본을 계속 참조합니다.

즉, 스냅샷은 데이터 세트 크기에 관계없이 마이크로초 단위로 생성되며, 생성 시 추가 공간을 전혀 소비하지 않습니다. 스냅샷은 해제될 수 있는 원본 블록을 유지하므로 라이브 데이터 세트가 변경될 때만 공간을 사용하기 시작합니다.

이는 전체 파일을 스캔하고 복사하는 rsync나 tar와 같은 파일 수준 백업 도구와는 근본적으로 다릅니다. 10GB 파일 중 4KB를 변경하는 경우, rsync는 전체 파일을 복사합니다. ZFS는 4KB 블록만 저장합니다.

스냅샷도 변경할 수 없습니다. 커널 수준에서 읽기 전용으로 적용되므로 사용자 공간 프로세스(랜섬웨어 포함)가 수정할 수 없습니다. ZFS에 내장된 체크섬 기능과 결합하면 복원 시 데이터 무결성을 확인할 수 있습니다.

스냅샷 만들기

전제 조건

ZFS가 설치되어 있고 풀이 설정되어 있어야 합니다. Ubuntu 20.04 이상에서:

sudo apt update && sudo apt upgrade -y
sudo apt install zfsutils-linux -y
sudo modprobe zfs

풀을 만듭니다. 단일 디스크의 경우(일반적으로 VPS에서):

sudo zpool create tank /dev/sdb

전용 서버에서 미러링된 설정의 경우 재부팅 후 문제를 방지하려면 장치 이름 대신 디스크 ID를 사용하세요:

sudo zpool create tank mirror /dev/disk/by-id/ata-DISK1 /dev/disk/by-id/ata-DISK2

압축 사용(LZ4가 빠르고 효과적임):

sudo zfs set compression=lz4 tank

그런 다음 워크로드에 대한 데이터 세트를 만듭니다:

sudo zfs create tank/web
sudo zfs create tank/databases

스냅샷 찍기

기본 명령입니다:

sudo zfs snapshot tank/web@before-update

타임스탬프가 있는 이름의 경우(cron과 함께 유용):

sudo zfs snapshot tank/db@$(date +%Y%m%d_%H%M%S)

모든 하위 데이터세트를 한 번에 캡처하려면 재귀 플래그를 사용합니다:

sudo zfs snapshot -r tank@daily_backup

다음으로 확인합니다:

sudo zfs list -t snapshot

스냅샷에서 복원하기

개별 파일 복원

모든 ZFS 데이터 세트에는 마운트 지점에 숨겨진 .zfs/snapshot 디렉터리가 있습니다. Ls에는 표시되지 않지만 직접 탐색할 수 있습니다:

ls /tank/web/.zfs/snapshot/before-update/

단일 파일을 복원하려면 다음과 같이 하세요:

cp -p /tank/web/.zfs/snapshot/before-update/config/app.conf /tank/web/config/

P 플래그를 사용하면 권한과 타임스탬프가 유지됩니다.

전체 데이터 세트 롤백

예를 들어 업그레이드에 실패한 후 모든 것을 되돌릴 필요가 있는 경우:

sudo zfs rollback tank/web@before-update

ZFS는 데이터를 복사하는 대신 블록 포인터를 업데이트하므로 거의 즉각적으로 복구할 수 있습니다. 하지만 스냅샷 이후에 변경된 모든 내용이 영구적으로 손실된다는 파괴적인 단점이 있습니다.

대상과 현재 상태 사이에 최신 스냅샷이 존재하면 ZFS는 롤백을 차단합니다. 롤백을 강제로 실행하고 중간 스냅샷을 제거하려면 -r을 사용하세요:

sudo zfs rollback -r tank/db@20260426_090000

좋은 습관: 롤백하기 전에 현재(손상된) 상태를 스냅샷하여 필요한 경우 폴백할 수 있도록 하세요.

복구 방법속도데이터 손실 위험최상의 대상
.zfs를 통한 파일 복원파일 크기에 따라 다름없음실수로 인한 삭제, 단일 파일 복구
전체 롤백즉시높음(스냅샷 이후의 모든 변경 내용 손실)업그레이드 실패, 시스템 전반의 문제
테스트용 복제즉시없음(병렬 데이터 세트 생성)롤백 커밋 전 확인

스냅샷 관리 및 정리하기

스냅샷은 제로 크기에서 시작하지만 그 아래에서 라이브 데이터가 변경됨에 따라 크기가 커집니다. 공간 사용량을 확인합니다:

zfs list -t snapshot -o name,used,refer,creation

USED 열은 해당 스냅샷에 고유한 공간의 양을 보여줍니다. 참조 열에는 스냅샷을 찍었을 때 데이터 세트의 총 크기가 표시됩니다.

스냅샷을 삭제하려면 다음과 같이 하세요:

sudo zfs destroy tank/web@before-update

패턴별로도 삭제할 수 있습니다:

sudo zfs destroy tank/web@daily-2026-04-%

항상 먼저 드라이러닝하세요:

sudo zfs destroy -nv tank/web@daily-%

ZFS는 기술적으로 수백만 개의 스냅샷을 처리할 수 있지만, 데이터 세트당 몇 천 개를 넘으면 성능이 저하됩니다. Zfs list, zfs destroy와 같은 명령은 속도가 눈에 띄게 느려집니다. 보존을 엄격하게 유지하세요.

Sanoid로 리텐션 자동화

Sanoid는 ZFS 스냅샷 생성 및 가지치기를 자동화하기 위한 표준 도구입니다. Sanoid.conf에서 보존 정책을 정의하면 나머지는 자동으로 처리됩니다.

일반적인 프로덕션 구성은 다음과 같습니다:

워크로드 유형시간별매일매주월별
표준 생산24-4830812
데이터베이스(높은 이탈률)72301224
로그 / 낮은 우선순위12-24703
정적 미디어0703

Sanoid는 또한 자주 매개변수를 통해 1시간 미만의 스냅샷을 지원합니다. 자주 = 96, 자주_기간 = 15로 설정하면 15분마다 스냅샷을 생성합니다.

Cron을 통해 1분마다 또는 15분마다 실행되도록 Sanoid를 예약하면 자동으로 스냅샷을 생성하고 정리합니다.

Zfs send를 사용한 오프사이트 복제

단일 서버의 스냅샷은 우발적인 변경 및 소프트웨어 장애로부터 보호하지만 하드웨어 손실에 대해서는 보호하지 못합니다. 이를 위해 SSH를 통해 zfs 보내기zfs 받기를 사용하여 오프사이트 복제를 수행하세요:

zfs send tank/web@backup | ssh user@remote zfs receive backup/web

증분 전송(마지막 스냅샷 이후 변경된 내용만 전송)의 경우:

zfs send -i tank/web@old_snap tank/web@new_snap | ssh user@remote zfs receive backup/web

Sanoid의 동반 도구인 syncoid는 이 프로세스를 자동화하고 증분 전송, 오류 복구, 로깅을 처리합니다.

랜섬웨어 보호에 대한 참고 사항

ZFS 스냅샷은 커널 수준에서 읽기 전용이므로 표준 멀웨어는 이를 수정하거나 암호화할 수 없습니다. 이는 강력한 방어 계층입니다. 하지만 공격자가 루트 액세스 권한을 얻으면 데이터를 암호화하기 전에 스냅샷을 삭제할 수 있습니다.

스냅샷은 보다 광범위한 전략에서 하나의 계층으로 사용해야 합니다. 오프사이트 복제, 제한된 루트 액세스, 네트워크 수준 보안과 결합하세요. 스냅샷에만 의존하지 마세요.

동영상 추천

최종 의견

ZFS 스냅샷은 기본 사항만 이해하면 빠르고 공간 효율적이며 사용이 간편합니다. 오프사이트 백업을 대체할 수는 없지만, 기존 백업 도구가 할 수 없는 공백을 메워주는데, 바로 필요한 만큼 자주 수행할 수 있는 즉각적인 제로 오버헤드 복구 지점입니다.

VPS 또는 전용 서버에서 ZFS를 실행하는 경우, Sanoid를 설정하고 보존 정책을 정의한 다음 복제를 자동화하세요. 구성하는 데 30분이면 충분하며 문제가 발생했을 때 몇 시간을 절약할 수 있습니다. FDC VPS 또는 전용 서버에서 사용해 보세요.

블로그

이번 주 추천

더 많은 기사
ZFS 스냅샷: 스냅샷 생성, 복원 및 자동화 방법

ZFS 스냅샷: 스냅샷 생성, 복원 및 자동화 방법

Linux에서 ZFS 스냅샷을 만들고, 복원하고, 자동화하는 방법을 알아보세요. 명령어, 롤백, 보존 정책, Sanoid를 사용한 오프사이트 복제에 대해 다룹니다

10분 소요 - 2026년 5월 5일

VPS에 Redis를 설치하고 사용하는 방법

9분 소요 - 2026년 1월 7일

더 많은 기사
background image

질문이 있거나 맞춤형 솔루션이 필요하신가요?

icon

유연한 옵션

icon

글로벌 도달 범위

icon

즉시 배포

icon

유연한 옵션

icon

글로벌 도달 범위

icon

즉시 배포