📁 파일 시스템 | |||||||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -6px -1px -11px" |
<colbgcolor=#f1d592><colcolor=#000>마이크로소프트 | FAT | NTFS | ReFS | |||
애플 | HFS | HFS+ | APFS | ||||
리눅스 / 유닉스 | ext2 | ext3 | ext4 | ||||
Btrfs | F2FS | XFS | ZFS |
B-tree file system
Btrfs 문서 (영문)
1. 개요
오픈소스 커뮤니티에서 개발하는 유닉스/ 리눅스용 파일 시스템으로, 주요 기여자는 SUSE, 메타, 웨스턴 디지털, 오라클 등이다.2. 특징
- 가볍다.
- B-Tree[1] 기반
- Copy-On-Write[2]
- 빈 공간 캐시, inode 캐시 지원
- 자동 조각모음
- 공간 압축: 작은 파일들을 한 섹터에 몰아넣는다.
- 데이터 압축: zlib, LZO, z-standard 압축 알고리즘 지원
- SSD 최적화: TRIM과는 상관없다. [3]
- 서브볼륨 관리: 각각의 서브볼륨을 파티션처럼 취급 가능
- 스냅샷 관리: 볼륨을 통째로 박제한다. 파일을 스냅샷으로 저장해두었던 상태로 쉽게 되돌릴수 있어 랜섬웨어 대응이나 백업 용도로 매우 좋으며, 증분 백업도 지원한다. 설정 예시
- 파티션 테이블이 없는 BtrFS 디스크: 파티션 테이블이 없는 BtrFS 디스크를 지원한다. 단 GRUB에서 사용을 권장하지 않는다.
- 데이터 중복제거(Data deduplication)
3. 주의사항
- 4K로 정렬된 디스크에서 최적의 속도를 발휘한다. MBR 디스크는 섹터 정렬에 주의해야 한다.
- swap 파일 기능은 리눅스 5.0 이상부터 사용이 가능하며, swap 파일의 Copy-On-Write를 비활성화해야 한다. btrfs에서의 swap 파일 생성 방법
-
LILO나 구버전
GRUB이나 구버전 리눅스 커널에서는 부트로더가 btrfs 파티션을 읽지 못하는 문제가 종종 있다.
btrfsprog
를 설치하고 initramfs를 다시 생성해도 안되는 경우 적절한 용량[4]의 파티션을 하나 파서/boot
로 할당해 FAT32(vfat
)로 포맷하고 여기다가 부트로더를 물려주면 해결된다./boot
디렉토리 파일들을 새로 판 파티션에 옮기는거 까먹으면 대략 낭패다. 잊지 말자!어차피 UEFI 쓰면 ESP 잡느라 FAT32 파티션 하나 파야 하는거 처음부터 UEFI로 설치하자 - 특이사항으로 레드햇 엔터프라이즈 리눅스 계열 배포판 ( CentOS 등)의 경우, RHEL 7에서 실험적으로 지원하기 시작하였으나 얼마 지나지 않은 RHEL 7.4부터 deprecated되었고 RHEL 8부터는 지원이 아예 제거되었다. 레드햇은 Btrfs 대신 Stratis와 XFS 조합을 밀고 싶어하는 모양새.
4. 기타
- B-tree 기반이기에 B-tree filesystem의 줄임말이지만 농담삼아 Butter filesystem의 줄임말이라 하기도 한다. 친근한 어감 때문인지 영미권 개발자들 사이에선 아예 버터FS가 B-Tree보다 더 많이 언급될만큼 완전한 별명으로 굳어가고 있다. 혹은 그것보다는 더 드물게 Better filesystem이라고 하기도 한다. 이는 ext4를 대체할 파일 시스템으로 Btrfs를 주장하는 사람들이 미는 별명이기도 하다.
- Ohad Rodeh가 USENIX 2007의 발표에서 제안하였다.
- 넷기어, 시놀로지, EFM 네트웍스[5] 등 NAS 제조사에서도 도입하였다.
- 리눅스 커널 4.9에서의 mount 옵션별 벤치마크
-
농담 반 진담 반으로 리눅스와
윈도 사이의 듀얼부팅에 최고의 파일 시스템이라고 불리기도 한다. 리눅스에서야 당연히 네이티브 파일 시스템이라 최고의 궁합을 자랑하는데, 여기에 윈도를 위해서
데이터 드라이브로 실사용이 가능할 정도의 Btrfs 드라이버를 만든 용자가 있어서 리눅스에서
NTFS 쓰기보다 훨씬 경제적이기 때문이다.[6]
[1]
자동으로 밸런싱이 가능한 데이터 정리 알고리즘. Binary tree 와는 다르다.
[2]
쉽게 말해 파일을 복사해 동일한 파일을 만들 경우, 실제로는 새 파일을 만들지 않고 원래 파일을 그대로 사용한다. 파일을 수정할때 비로소 새 파일을 만들어서 쓰기 시작하며 그래서 이름이 copy, on write 이다. 사용 시나리오가 맞는다면 저장 공간과 복사용 디스크 IO시간을 크게 아낄 수 있다.
[3]
mount 옵션에도 TRIM 활성화인
discard
와 별개로 SSD 최적화 알고리즘 활성화를 위한 ssd
옵션이 있다.
[4]
일반적으로 256MB 정도가 좋다.
[5]
흔히 ipTIME으로 알려져 있다.
[6]
여담으로 이 기여자는 여기에 그치지 않고
Btrfs를 지원하는 Windows 부트로더를 만들었지만, 안타깝게도 윈도의 내부 코드가 계속 헤집어지고 있기에 WinBtrfs와 달리 시간이 지날수록 원숙도가 떨어지고 있다.