파일시스템-RAID-ZFS - Zettabyte File System
파일시스템-ZFS RAID볼륨구성 : Zettabyte File System
ZFS는 "Zettabyte File System"의 약자로, 썬 마이크로시스템즈(Sun Microsystems)에서 솔라리스 운영체제를 위해 개발된 혁신적인 파일 시스템이자 논리 볼륨 관리자입니다.
단순한 파일 시스템을 넘어, 데이터 무결성 보장, 볼륨 관리, 소프트웨어 RAID, 스냅샷 등 다양한 기능을 통합한 것이 가장 큰 특징입니다.
현재는 오픈 소스 프로젝트인 OpenZFS를 통해 리눅스, FreeBSD 등 다양한 운영체제에서 사용되고 있습니다.

ZFS의 주요 개념 및 특징
- 스토리지 풀(Storage Pool) 및 Zpool:
- 기존의 파일 시스템이 파티션 단위로 관리되는 것과 달리, ZFS는 여러 개의 디스크를 묶어 하나의 **스토리지 풀(Zpool)**로 관리합니다.
- Zpool은 파일 시스템, 논리 볼륨(zvol) 등 여러 하위 계층을 가질 수 있으며, 디스크를 추가하여 용량을 쉽게 확장할 수 있습니다.
- Copy-on-Write (CoW)
- ZFS의 핵심 기술로, 데이터가 변경될 때 기존 데이터를 덮어쓰지 않고 새로운 블록에 기록하는 방식입니다.
- 이 기술 덕분에 스냅샷, 데이터 무결성 보장 등 여러 고급 기능이 가능해집니다.
- 데이터 무결성(Data Integrity)
- ZFS는 모든 블록에 대해 256비트 체크섬(checksum)을 생성하고 검증합니다.
- 데이터를 읽을 때마다 체크섬을 확인하여 데이터 손상(Silent Corruption)을 자동으로 감지하고, RAID-Z 구성 시 손상된 데이터를 자동으로 복구하는 "자가 치유(self-healing)" 기능을 제공합니다.
- RAID-Z
- ZFS 자체적으로 제공하는 소프트웨어 RAID 기능으로, RAID 5, RAID 6과 유사한 역할을 수행합니다.
- RAID-Z1: 한 개의 디스크 고장에 대비 (RAID 5 유사)
- RAID-Z2: 두 개의 디스크 고장에 대비 (RAID 6 유사)
- RAID-Z3: 세 개의 디스크 고장에 대비 (높은 안정성)
- 기존 RAID의 "쓰기 홀(write-hole)" 문제를 해결하여 더욱 안정적인 데이터 보호를 제공합니다.
- 스냅샷(Snapshot) 및 클론(Clone)
- 특정 시점의 파일 시스템 상태를 '읽기 전용'으로 저장하는 기능입니다. CoW 기술 덕분에 스냅샷 생성에 거의 시간이 들지 않고 용량도 적게 차지합니다.
- 스냅샷을 기반으로 새로운 파일 시스템을 생성하는 클론(Clone) 기능을 활용할 수 있습니다.
- 기타 고급 기능:
- 압축(Compression): 파일 시스템 레벨에서 압축을 설정하여 디스크 용량을 절약하고 성능을 향상시킬 수 있습니다.
- Deduplication: 동일한 데이터를 한 번만 저장하여 용량을 절약합니다. (많은 시스템 리소스가 필요)
- 아카이브 캐시(L2ARC) 및 로그 장치(ZIL): SSD를 캐시 장치로 사용하여 성능을 극대화할 수 있습니다.
설치 및 설정 방법 (Ubuntu 22.04 기준)
ZFS는 리눅스 커널에 기본적으로 포함되어 있지 않지만, 패키지 관리자를 통해 쉽게 설치할 수 있습니다.
1. ZFS 설치
Ubuntu/Debian 계열 운영체제에서는 zfsutils-linux 패키지를 설치합니다.
sudo apt update
sudo apt install zfsutils-linux
설치 후 zfs --version 명령어로 설치를 확인할 수 있습니다.
2. ZFS 스토리지 풀 생성 (Zpool)
새로운 디스크 3개를 RAID-Z1으로 구성하는 예시입니다. 디스크 식별자는 시스템에 따라 다를 수 있으므로 lsblk 또는 fdisk -l 명령어로 먼저 확인해야 합니다. 여기서는 /dev/sda, /dev/sdb, /dev/sdc를 사용한다고 가정합니다.
주의: 스토리지 풀을 생성하면 해당 디스크의 모든 데이터가 삭제됩니다.
# zpool create [풀 이름] raidz [디스크1] [디스크2] [디스크3]
sudo zpool create mypool raidz /dev/sda /dev/sdb /dev/sdc
mypool이라는 이름의 ZFS 스토리지 풀이 생성되고, RAID-Z1으로 구성됩니다.
3. 파일 시스템 생성
생성된 mypool 위에 새로운 파일 시스템을 만듭니다.
# zfs create [풀 이름]/[파일 시스템 이름]
sudo zfs create mypool/data
위 명령은 /mypool/data 라는 새로운 파일 시스템을 생성하고, 자동으로 /mypool/data 경로에 마운트됩니다.
4. 스냅샷 생성 및 관리
파일 시스템의 특정 시점 상태를 스냅샷으로 저장할 수 있습니다.
# 스냅샷 생성
sudo zfs snapshot mypool/data@backup-2025-08-06
# 스냅샷 목록 확인
sudo zfs list -t snapshot
# 스냅샷으로 롤백 (주의: 롤백 이후의 모든 데이터는 손실됩니다)
sudo zfs rollback mypool/data@backup-2025-08-06
# 스냅샷 삭제
sudo zfs destroy mypool/data@backup-2025-08-06
5. 볼륨 상태 확인
zpool status 명령어로 스토리지 풀의 상태와 디스크 상태를 확인할 수 있습니다.
zpool status mypool
- STATE: 풀의 현재 상태 (예: ONLINE, DEGRADED)를 보여줍니다.
- STATUS: 디스크 오류 및 기타 문제에 대한 정보를 제공합니다.
ZFS는 강력한 기능과 안정성을 제공하지만, 충분한 시스템 메모리(RAM)를 요구하므로 사용 환경에 맞는 하드웨어 구성이 중요합니다.