정의


Btrfs(B-tree file system)는, 오픈소스 커뮤니티에서 개발하는 유닉스/리눅스용 파일 시스템이다.

특징


  • 빈 공간 캐시, 동적 inode 할당
  • 가볍다.
  • 기록 가능 스냅샷, 스냅샷에 대한 스냅샷
  • B-Tree 기반
  • Copy-On-Write
  • 하위 볼륨
  • 오브젝트 차원에서의 미러링 및 스트리핑
  • zlib, LZO, z-standard 압축 알고리즘 지원
  • 온라인 및 오프라인 파일 시스템 검사
  • ext3 ↔ btrfs 상호간 변환
  • SSD 최적화 (Trim과는 별개)
  • 자동 조각모음
  • 시드 디바이스
  • 스냅샷 관리
  • 파티션 테이블이 없는 BtrFS 디스크
  • 데이터 중복제거(Data deduplication)
inode란? : 아이노드는, UFS와 같은 전통적인 유닉스 계통 파일 시스템에서 사용하는 자료구조이다. 아이노드는 정규 파일, 디렉터리 등 파일시스템에 관한 정보를 가지고 있다. 
zlib란? : zlib는 C로 작성된 데이터 압축 라이브러리의 일종이다.❔
조각모음 이란? : 조각모음은, 기억장치 위의 파일시스템의 단편화된 양을 줄이는 작업을 말한다. 물리적으로 디스크의 내용을 다시 정리하여 각 파일을 연속적으로 붙이면서 이러한 작업을 수행할 수 있다. 
B-Tree란? : B-Tree는, 자동으로 밸런싱이 가능한 데이터 정리 알고리즘이다. (Binary Tree와는 다르다. )-Tree란? : B-Tree는, 자동으로 밸런싱이 가능한 데이터 정리 알고리즘이다. (Binary Tree와는 다르다. )
Copy-OnWirte란? : 쉽게 말해 파일을 복사해 동일한 파일을 만들 경우, 실제로는 새 파일을 만들지 않고 원래 파일을 그대로 사용한다. 파일을 수정할때 비로소 새 파일을 만들어서 쓰기 시작하며 그래서 이름이 copy, on write 이다. 사용 시나리오가 맞는다면 저장 공간과 복사용 디스크 IO시간을 크게 아낄 수 있다.

주의사항


  • 4K로 정렬된 디스크에서 최적의 속도를 발휘한다. MBR 디스크는 섹터 정렬에 주의해야 한다.
  • swap 파일 기능은 리눅스 5.0 이상부터 사용이 가능하며, swap 파일의 Copy-On-Write를 비활성화해야 한다.
  • LILO나 구버전 GRUB이나 구버전 리눅스 커널에서는 부트로더가 btrfs 파티션을 읽지 못하는 문제가 종종 있다. btrfsprog를 설치하고 initramfs를 다시 생성해도 안되는 경우 적절한 용량의 파티션을 하나 파서 /boot로 할당해 FAT32(vfat)로 포맷하고 여기다가 부트로더를 물려주면 해결된다.
  • 특이사항으로 레드햇 엔터프라이즈 리눅스 계열 배포판 (Cent OS 등)의 경우, RHEL 7에서 실험적으로 지원하기 시작하였으나 얼마 지나지 않은 RHEL 7.4부터 deprecated되었고 RHEL 8부터는 지원이 아예 제거되었다. 레드햇은 Btrfs 대신 Stratis와 XFS 조합을 밀고 싶어하는 모양새.
  • 반면 RHEL의 업스트림인 페도라에서는 2020년의 페도라 33부터 Btrfs가 파일시스템 기본값이 되었다.
  • 오라클의 RHEL 클론 배포판인 오라클리눅스 8 이상에서는 레드햇 호환 커널이 아닌 자체 커널(UEK)에서만 Btrfs를 지원한다.

  • Ref.

https://btrfs.readthedocs.io/en/latest/

https://marc.merlins.org/linux/talks/Btrfs-LC2014-JP/Btrfs.pdf