InfraPlatform

파일시스템-RAID-ZFS - Zettabyte File System

IT오이시이 2025. 8. 12. 11:08
728x90

파일시스템-ZFS RAID볼륨구성 : Zettabyte File System

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

현재는 오픈 소스 프로젝트인 OpenZFS를 통해 리눅스, FreeBSD 등 다양한 운영체제에서 사용되고 있습니다.

 

ZFS의 주요 개념 및 특징

  1. 스토리지 풀(Storage Pool) 및 Zpool:
    • 기존의 파일 시스템이 파티션 단위로 관리되는 것과 달리, ZFS는 여러 개의 디스크를 묶어 하나의 **스토리지 풀(Zpool)**로 관리합니다.
    • Zpool은 파일 시스템, 논리 볼륨(zvol) 등 여러 하위 계층을 가질 수 있으며, 디스크를 추가하여 용량을 쉽게 확장할 수 있습니다.
  1. Copy-on-Write (CoW)
    • ZFS의 핵심 기술로, 데이터가 변경될 때 기존 데이터를 덮어쓰지 않고 새로운 블록에 기록하는 방식입니다.
    • 이 기술 덕분에 스냅샷, 데이터 무결성 보장 등 여러 고급 기능이 가능해집니다.
  1. 데이터 무결성(Data Integrity)
    • ZFS는 모든 블록에 대해 256비트 체크섬(checksum)을 생성하고 검증합니다.
    • 데이터를 읽을 때마다 체크섬을 확인하여 데이터 손상(Silent Corruption)을 자동으로 감지하고, RAID-Z 구성 시 손상된 데이터를 자동으로 복구하는 "자가 치유(self-healing)" 기능을 제공합니다.
  1. RAID-Z
    • ZFS 자체적으로 제공하는 소프트웨어 RAID 기능으로, RAID 5, RAID 6과 유사한 역할을 수행합니다.
    • RAID-Z1: 한 개의 디스크 고장에 대비 (RAID 5 유사)
    • RAID-Z2: 두 개의 디스크 고장에 대비 (RAID 6 유사)
    • RAID-Z3: 세 개의 디스크 고장에 대비 (높은 안정성)
    • 기존 RAID의 "쓰기 홀(write-hole)" 문제를 해결하여 더욱 안정적인 데이터 보호를 제공합니다.
  1. 스냅샷(Snapshot) 및 클론(Clone)
    • 특정 시점의 파일 시스템 상태를 '읽기 전용'으로 저장하는 기능입니다. CoW 기술 덕분에 스냅샷 생성에 거의 시간이 들지 않고 용량도 적게 차지합니다.
    • 스냅샷을 기반으로 새로운 파일 시스템을 생성하는 클론(Clone) 기능을 활용할 수 있습니다.
  1. 기타 고급 기능:
    • 압축(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)를 요구하므로 사용 환경에 맞는 하드웨어 구성이 중요합니다.

728x90
반응형