콘텐츠로 이동

ZFS (Zettabyte File System)

Jan 28, 2026 · Updated Feb 11, 2026

ZFS는 볼륨 관리와 파일 시스템을 통합하고, 체크섬을 통한 데이터 무결성 검증과 스토리지 풀 기반의 유연한 공간 관리를 제공하는 현대적 파일 시스템이다. Solaris에서 개발되었고, 이후 OpenZFS로 Linux/BSD에 포팅되었다.

모든 데이터 블록과 메타데이터 블록에 체크섬을 적용한다. 체크섬은 해당 블록이 아닌 **상위 블록(부모 포인터)**에 저장하여, 블록 자체가 손상되어도 오류를 감지할 수 있다.

체크섬 저장 구조
1 메타데이터 블록 (부모)
자식 블록의 포인터 + 체크섬을 보관
2 데이터 블록
자신의 체크섬은 부모가 보관 → 자가 손상 감지 가능

미러/RAID-Z 구성에서 체크섬 불일치 발견 시 정상 복사본으로 **자가 치유(Self-Healing)**한다. Linux BTRFS도 유사한 체크섬 기능을 제공한다.

여러 디스크를 하나의 저장 공간 풀로 묶고, 그 위에 여러 ZFS 파일 시스템을 생성한다. 각 파일 시스템이 풀의 전체 여유 공간을 공유한다.

전통적 방식 — 고정 크기 볼륨
FS1 Volume 1
FS2 Volume 2
FS3 Volume 3
물리 디스크들 FS1 가득 차도 FS3 공간 사용 불가
ZFS — 풀 공유
ZFS FS1
ZFS FS2
ZFS FS3
Storage Pool 모든 FS가 풀의 여유 공간 공유
레벨설명
RAID-Z1RAID 5와 유사, 1개 패리티
RAID-Z2RAID 6와 유사, 2개 패리티
RAID-Z33개 패리티 (초대형 배열용)

체크섬과 결합하여 RAID 컨트롤러 버그도 감지하고, COW 방식으로 “write hole” 문제가 없다.

데이터 수정 시 기존 위치를 덮어쓰지 않고 새 위치에 기록한다. 항상 일관된 상태를 유지하고, 스냅샷 구현이 용이하며, 정전 시에도 데이터 일관성을 보장한다.

ZFS 주요 기능
데이터 관리
스냅샷 압축 (LZ4, ZSTD) 중복 제거
공간 제어
쿼터 (최대 용량) 예약 (최소 용량) 풀 공유
항목전통적 방식ZFS
볼륨 관리별도 (LVM)통합
파일 시스템 크기고정, 조정 어려움동적, 풀 공유
데이터 검증없음 또는 RAID만블록별 체크섬
RAID별도 구성RAID-Z 통합
스냅샷볼륨 레벨 (LVM)파일 시스템 레벨

공유 오피스에 비유할 수 있다. 전통적 방식은 각 부서에 고정 크기 사무실을 할당하여 한 부서는 꽉 차고 다른 부서는 텅 비는 반면, ZFS 풀은 전체 공간이 공유 오픈 오피스로 각 부서가 필요한 만큼 책상을 사용하고 남으면 반납한다.

Terminal window
zpool create mypool raidz disk1 disk2 disk3 disk4
zfs create mypool/home
zfs create mypool/data
zfs snapshot mypool/home@backup1
  • 장점: 강력한 데이터 무결성 (silent corruption 방지), 유연한 공간 관리, 통합 관리 (볼륨 + 파일 시스템 + RAID), 스냅샷과 복제 등 고급 기능
  • 단점: 체크섬 계산 오버헤드 (미미), 메모리 사용량 높음 (ARC 캐시), Linux에서 라이선스 이슈 (CDDL vs GPL), 학습 곡선