Contents
see List개요
데이터의 무결성과 효율적인 스토리지 관리가 중요해지면서, 전통적인 ext4를 넘어 ZFS와 Btrfs 같은 차세대 파일시스템에 대한 관심이 높아지고 있습니다. 두 파일시스템 모두 COW(Copy-on-Write), 스냅샷, 체크섬 등 현대적인 기능을 제공하지만, 설계 철학과 적용 분야에는 차이가 있습니다. 이 글에서는 ZFS와 Btrfs를 다양한 관점에서 비교하여 환경에 맞는 선택을 돕습니다.
핵심 개념
COW(Copy-on-Write): 데이터를 수정할 때 원본을 덮어쓰지 않고 새 위치에 쓴 후 포인터를 변경합니다. 이를 통해 원자적 쓰기와 스냅샷이 가능해집니다.
ZFS: Sun Microsystems에서 개발, 현재 OpenZFS 프로젝트로 유지됩니다. 파일시스템과 볼륨 관리를 통합하며, 엔터프라이즈급 안정성이 특징입니다. CDDL 라이선스로 인해 Linux 커널에 직접 포함되지 않습니다.
Btrfs: Linux 커널에 네이티브로 포함된 COW 파일시스템입니다. 유연한 서브볼륨, 투명 압축, 온라인 리사이즈 등을 지원하며, SUSE와 Facebook(Meta)이 주요 후원사입니다.
RAID-Z vs Btrfs RAID: ZFS의 RAID-Z는 write hole 문제가 없는 안정적인 소프트웨어 RAID입니다. Btrfs의 RAID5/6은 여전히 불안정하여 프로덕션 사용이 권장되지 않습니다.
실전 예제: 주요 기능 비교
ZFS 풀 생성과 기본 관리 명령입니다.
# ZFS 설치 (Ubuntu)
sudo apt install zfsutils-linux
# 미러 풀 생성 (RAID1 상당)
sudo zpool create datapool mirror /dev/sdb /dev/sdc
# 데이터셋 생성 (서브볼륨과 유사)
sudo zfs create datapool/documents
sudo zfs create datapool/backups
# 압축 활성화
sudo zfs set compression=zstd datapool/documents
# 스냅샷 생성 및 복원
sudo zfs snapshot datapool/documents@2024-01-15
sudo zfs rollback datapool/documents@2024-01-15
# 상태 확인
zpool status
zfs list
Btrfs 기본 관리 명령입니다.
# Btrfs 파일시스템 생성
sudo mkfs.btrfs -L datafs /dev/sdb
# 마운트 (압축 옵션 포함)
sudo mount -o compress=zstd /dev/sdb /mnt/data
# 서브볼륨 생성
sudo btrfs subvolume create /mnt/data/@documents
sudo btrfs subvolume create /mnt/data/@backups
# 스냅샷 생성 (읽기 전용)
sudo btrfs subvolume snapshot -r /mnt/data/@documents /mnt/data/@snapshots/documents-2024-01-15
# 밸런스 (데이터 재배치)
sudo btrfs balance start -dusage=50 /mnt/data
# 상태 확인
sudo btrfs filesystem show
sudo btrfs filesystem usage /mnt/data
활용 팁
- 메모리 요구사항: ZFS는 ARC 캐시로 RAM을 적극 사용합니다. 1TB 스토리지당 최소 1GB RAM을 권장하며, dedup 사용 시에는 5배 이상이 필요합니다.
- RAID 선택: RAID5/6이 필요하면 ZFS(RAID-Z)를 선택하세요. Btrfs RAID5/6은 프로덕션에 적합하지 않습니다. Btrfs는 RAID1/RAID10에서 안정적입니다.
- 스냅샷 자동화: ZFS는 zfs-auto-snapshot, Btrfs는 snapper 또는 btrbk를 활용하여 자동 스냅샷 관리가 가능합니다.
- 부트 디스크: Btrfs는 GRUB과의 통합이 자연스러워 루트 파일시스템으로 사용하기 쉽습니다. ZFS on root는 가능하지만 설정이 복잡합니다.
- NAS 구축: TrueNAS는 ZFS, Synology는 Btrfs를 기본 사용합니다. 가정용 NAS에는 Btrfs가, 대용량 스토리지 서버에는 ZFS가 적합합니다.
마무리
ZFS는 데이터 무결성과 RAID가 중요한 엔터프라이즈 환경에, Btrfs는 유연성과 커널 네이티브 지원이 중요한 Linux 데스크톱 및 서버 환경에 적합합니다. 두 파일시스템 모두 ext4 대비 현대적인 기능을 풍부하게 제공하므로, 워크로드 특성과 인프라 규모에 맞춰 선택하면 됩니다.