Linux Filesystem Overview
ext4, XFS, Btrfs, ZFS 특징 비교 및 선택 기준
🗂️ 파일시스템이란?
파일시스템(Filesystem)은 저장 장치(HDD, SSD 등)에 데이터를 어떻게 저장하고 조직화할지 정의하는 구조임.
핵심 역할:
- 파일과 디렉토리의 논리적 구조 제공
- 메타데이터 관리 (파일명, 권한, 타임스탬프 등)
- 저장 공간 할당 및 관리
- 데이터 무결성 보장
📊 주요 파일시스템 비교
| 파일시스템 | 개발사 | 최대 파일 크기 | 최대 볼륨 크기 | 주요 특징 |
|---|---|---|---|---|
| ext4 | Linux | 16TB | 1EB | 리눅스 표준, 안정성 검증 |
| XFS | SGI/Red Hat | 8EB | 8EB | 대용량 파일, 고성능 |
| Btrfs | Oracle/Linux | 16EB | 16EB | CoW, 스냅샷, 서브볼륨 |
| ZFS | Sun/Oracle | 16EB | 256ZB | CoW, 데이터 무결성, 압축 |
| NTFS | Microsoft | 16EB | 256TB | Windows 표준 |
🔍 파일시스템 상세
ext4 (Fourth Extended Filesystem)
리눅스의 사실상 표준 파일시스템임.
특징:
- ext3의 후속 버전, 하위 호환성 유지
- 저널링(Journaling) 지원으로 장애 복구 용이
- Extent 기반 할당으로 대용량 파일 효율적 처리
- 20년 이상의 검증된 안정성
적합한 용도:
- 범용 리눅스 서버
- 부트 파티션
- 안정성이 최우선인 환경
# ext4 파일시스템 생성
mkfs.ext4 /dev/sdb1
# 마운트
mount /dev/sdb1 /mnt/dataXFS
Silicon Graphics에서 개발한 고성능 64비트 파일시스템임.
특징:
- 대용량 파일과 디렉토리에 최적화
- 병렬 I/O 성능 우수
- 동적 inode 할당
- RHEL/CentOS 7 이후 기본 파일시스템
적합한 용도:
- 대용량 미디어 파일 저장
- 데이터베이스 서버
- 고성능 I/O가 필요한 환경
제한사항:
- 파일시스템 축소 불가 (확장만 가능)
- 작은 파일이 많은 환경에서는 ext4보다 비효율적
# XFS 파일시스템 생성
mkfs.xfs /dev/sdb1
# 온라인 확장
xfs_growfs /mnt/dataBtrfs (B-tree Filesystem)
리눅스의 차세대 파일시스템을 목표로 개발됨.
특징:
- Copy-on-Write (CoW) 방식
- 내장 스냅샷 및 롤백 기능
- 서브볼륨(Subvolume) 지원
- 온라인 파일시스템 체크 및 복구
- 내장 RAID 지원 (0, 1, 10, 5, 6)
- 투명한 압축 지원 (zstd, lzo, zlib)
적합한 용도:
- 개발 환경 (스냅샷 활용)
- NAS/홈서버
- 데이터 보호가 중요한 워크스테이션
제한사항:
- RAID 5/6은 아직 불안정 (프로덕션 비권장)
- ZFS 대비 성숙도가 낮음
# Btrfs 파일시스템 생성
mkfs.btrfs /dev/sdb1
# 스냅샷 생성
btrfs subvolume snapshot /mnt/data /mnt/data/.snapshots/snap1
# 압축 활성화
mount -o compress=zstd /dev/sdb1 /mnt/dataZFS (Zettabyte File System)
Sun Microsystems에서 개발한 엔터프라이즈급 파일시스템임.
특징:
- Copy-on-Write (CoW): 데이터 덮어쓰기 없이 새 위치에 기록
- 체크섬 기반 데이터 무결성: 모든 블록에 체크섬 적용, Silent Corruption 방지
- 스냅샷 및 클론: 즉각적인 스냅샷 생성, 공간 효율적
- 내장 압축: lz4, gzip, zstd 등 지원
- 내장 RAID (RAID-Z): RAID-Z1, Z2, Z3 (패리티 1~3개)
- 스토리지 풀(zpool): 볼륨 매니저와 파일시스템 통합
- Deduplication: 중복 데이터 제거 (메모리 사용량 높음)
- Send/Receive: 스냅샷 기반 효율적인 복제
적합한 용도:
- 엔터프라이즈 NAS/SAN
- 백업 및 아카이브 시스템
- 데이터 무결성이 최우선인 환경
- 가상화 스토리지
제한사항:
- 높은 메모리 요구량 (특히 Dedup 사용 시)
- 라이선스 이슈로 Linux 커널 미포함 (별도 모듈 설치)
- Write Amplification으로 SSD 수명에 영향
# ZFS 풀 생성 (RAID-Z1 = RAID 5 유사)
zpool create datapool raidz1 /dev/sdb /dev/sdc /dev/sdd
# 데이터셋 생성
zfs create datapool/backup
# 압축 활성화
zfs set compression=lz4 datapool/backup
# 스냅샷 생성
zfs snapshot datapool/backup@daily-2025-01-20
# 스냅샷 롤백
zfs rollback datapool/backup@daily-2025-01-20
# 원격 복제 (Send/Receive)
zfs send datapool/backup@snap1 | ssh remote-server zfs receive remotepool/backup🆚 Copy-on-Write (CoW) vs 전통적 방식
전통적 방식 (ext4, XFS)
flowchart LR A["원본 데이터"] -->|덮어쓰기| B["수정된 데이터"]
- 장점: 단순하고 효율적
- 단점: 쓰기 중 장애 시 데이터 손상 가능
Copy-on-Write (Btrfs, ZFS)
flowchart LR A["원본 데이터"] B["새 위치에 수정된 데이터 기록"] C["포인터 업데이트"] A --> B --> C A -.->|원본 보존| A
- 장점: 원본 보존, 스냅샷 용이, 장애 복구 강점
- 단점: 단편화 증가, 쓰기 증폭
📋 파일시스템 선택 가이드
flowchart TD Start["파일시스템 선택 가이드"] Q1{"데이터 무결성이 최우선?"} Q2{"대용량 파일 위주?"} Q3{"스냅샷/롤백 필요?"} Q4{"엔터프라이즈급?"} ext4["ext4 - 범용, 안정성"] xfs["XFS - 대용량, 고성능"] btrfs["Btrfs - 스냅샷, 홈서버"] zfs["ZFS - 엔터프라이즈"] Start --> Q1 Q1 -->|Yes| Q4 Q1 -->|No| Q2 Q2 -->|Yes| xfs Q2 -->|No| Q3 Q3 -->|Yes| btrfs Q3 -->|No| ext4 Q4 -->|Yes| zfs Q4 -->|No| btrfs
| 상황 | 권장 파일시스템 | 이유 |
|---|---|---|
| 범용 리눅스 서버 | ext4 | 안정성, 호환성 |
| 대용량 DB 서버 | XFS | 대용량 파일 성능 |
| 개인 NAS/홈서버 | Btrfs | 스냅샷, 사용 편의성 |
| 엔터프라이즈 스토리지 | ZFS | 데이터 무결성, 확장성 |
| Windows 호환 필요 | NTFS | 크로스 플랫폼 |
🔗 관련 포스트
- 리눅스 배포판 개요 및 비교 - 배포판별 기본 파일시스템 포함
- DW 시스템 및 스토리지 기술 용어 정리 - ZFS가 백업 계층에서 활용되는 맥락