본문으로 이동

Bcachefs

위키백과, 우리 모두의 백과사전.
Bcachefs
개발사켄트 오버스트리트
도입2015년 8월 21일(10년 전)(2015-08-21)
구조
디렉터리 내용하이브리드 B+ 트리
파일 할당Extents
불량 블록기록 없음
기능
날짜 사용 권한수정 (mtime), 속성 수정 (ctime), 접근 (atime), 생성 (crtime)
특성확장 속성
파일 시스템 권한POSIX (+ xattrs의 ACL)
투명한 압축
투명한 암호화
카피 온 라이트
기타
지원 운영 체제리눅스
웹사이트bcachefs.org

Bcachefs리눅스 기반 운영체제를 위한 카피 온 라이트(COW) 파일 시스템이다. 주요 개발자인 켄트 오버스트리트가 2015년에 처음 발표했으며, 리눅스 커널 6.7부터 리눅스 커널에 추가되었다.[1][2] 이는 ZFS 또는 Btrfs의 최신 기능과 경쟁하기 위해 만들어졌다. 2025년 6월, 리누스 토르발스는 커널 개발 가이드라인을 반복적으로 위반한 결과 bcachefs가 커널에서 제거될 것이라고 발표했다.[3][4] 2025년 8월, bcachefs의 상태는 '지원됨'에서 '외부에서 유지 관리됨'으로 변경되었다.[5]

2025년 9월 말, 리누스 토르발스는 리눅스 커널 버전 6.17부터 모든 Bcachefs 코드를 제거했다.[6] 이제 외부 모듈로 사용할 수 있다.

특징

[편집]

Bcachefs는 리눅스 기반 운영체제를 위한 카피 온 라이트(COW) 파일 시스템이다.[7] 특징으로는 캐싱,[8] ChaCha20Poly1305 알고리즘을 사용한 완전한 파일 시스템 암호화,[9] LZ4, gzip[10]Zstandard를 통한 기본 데이터 압축,[8] 스냅샷,[8] CRC-32C 및 64비트 체크섬 기능이 있다.[7] RAID 구성을 포함하여 블록 장치에 걸쳐 있을 수 있다.[9]

초기 Bcachefs 버전은 리눅스용 블록 계층 캐시 시스템인 Bcache의 모든 기능을 제공했으며, Bcachefs는 Bcache와 코드의 약 80%를 공유한다.[11] 2021년 12월 현재 블록 계층 캐시 기능은 제거되었다.[12]

데이터 구조 수준에서 bcachefs는 다른 많은 최신 파일 시스템처럼 B 트리를 사용하지만, 기본값이 256KiB로 비정상적으로 큰 노드 크기를 가진다. 이 노드들은 내부적으로 로그 구조화되어 하이브리드 데이터 구조를 형성하며, 업데이트 시 노드를 다시 쓰는 필요성을 줄인다.[13] 스냅샷은 COW 트리를 복제하여 구현되지 않고, 파일 시스템 객체에 버전 번호를 추가하여 구현된다.[14]

COW 기능과 버킷 할당기는 쓰기 홀이나 IO 조각화 문제로 고통받지 않는다고 주장되는 RAID 구현을 가능하게 한다. 반면에 버킷 할당기는 대부분 비어있는 버킷을 처리하기 위해 복사 가비지 컬렉터의 사용을 필요로 한다.[12]

안정성

[편집]

Bcachefs는 스스로를 "작동하고 안정적이며, 소수의 사용자 커뮤니티를 가지고 있다"고 설명한다.[15] 2024년 4월 7일 리눅스 6.9-rc3에 대해 논의하면서 리누스 토르발스는 bcachefs의 안정성에 대해 언급하며 "bcachefs가 이미 안정적이라고 생각했다면, 내가 당신에게 팔 다리가 있다"고 말했다.[16] 그리고 2024년 8월에는 "제정신인 사람은 아무도 bcachefs를 사용하고 안정적일 것이라고 기대하지 않는다"고 말했다.[17]

2024년 8월, "사용자 공간 도구 및 문서"를 제공하는 패키지인 bcachefs-tools의 데비안 유지 관리자는 패키지를 고아로 지정하며 장기 지원 가능성에 의문을 제기했다.[18] 유지 관리자는 블로그 게시물에서 "가까운 미래에 어떤 종류의 프로덕션 용도로든 bcachefs를 사용할 것을 고려한다면, 먼저 장기적으로 얼마나 지원 가능한지, 그리고 그것을 안정적으로 지원하는 데 성공한 사람이 정말 아무도 없는지 고려해야 한다"고 덧붙였다.[19]

역사

[편집]

주요 개발은 Bcachefs의 아이디어의 "프로토타입"이라고 설명하는 Bcache의 개발자인 켄트 오버스트리트에 의해 이루어졌다. 오버스트리트는 Bcachefs가 Bcache를 대체할 의도였다.[11] 오버스트리트는 Bcachefs 개발이 Bcache 개발자들이 코드베이스가 "...완전히 성장한 범용 POSIX 파일 시스템으로 진화하고 있다"는 것을 깨달았을 때 시작되었으며, 그 방향으로 나아간다면 "정말 깨끗하고 우아한 디자인"이 그 안에 있을 것이라고 말했다. 2013년 Bcache가 주류 리눅스 커널에 병합된 후 얼마 지나지 않아 오버스트리트는 구글에서 직장을 떠나 Bcachefs에 전념하기 시작했다.[7]

수년간의 무자금 개발 후, 오버스트리트는 2015년에 Bcachefs를 발표했으며, 당시 그는 코드를 "거의 기능이 완성되었다"고 부르며 테스터와 기여자들을 모집했다. 그는 ext4XFS와 같은 파일 시스템의 속도와 성능을 가지면서 ZFS 또는 Btrfs와 같은 스냅샷, 압축캐싱과 같은 최신 기능을 갖춘 고급 파일 시스템이 되기를 의도했다.[20][7] 2017년 현재 오버스트리트는 Patreon을 통해 Bcachefs 개발을 위한 재정 지원을 받고 있었다.[9]

2018년 중반 현재, 디스크 상의 형식은 정착되었다.[11] Bcachefs를 주류 리눅스 커널에 포함시키기 위한 패치가 검토를 위해 제출되었다.[8]

2019년 중반까지 Bcachefs의 원하는 기능이 완성되었고, LKML에 관련 패치가 동료 검토를 위해 제출되었다.[21][22] 2023년 10월 Bcachefs는 리눅스 6.7 커널에 병합되었고,[23] 이는 2024년 1월에 출시되었다.[2]

2024년 11월, 켄트 오버스트리트는 "다른 커뮤니티 구성원에 대한 서면 남용"과 "개인적인 공격에 대한 두려움 없이 생산적인 기술적 논의를 할 수 있는 커뮤니티의 신뢰를 회복하기 위한 불충분한 조치"로 인해 리눅스 행동 강령 위원회로부터 리눅스 6.13 커널 개발 주기 동안 기여를 보내는 것이 제한되었다.[24][25] 패치는 나중에 리눅스 6.14 커널 개발 동안 문제없이 수락되었다.[26]

2025년 6월, 리누스 토르발스는 bcachefs가 리눅스 커널에서 제거될 것이라고 발표했다. 리누스는 다음과 같이 설명했다.[3][4]

[...] 6.17 병합 창에서 우리가 헤어질 것이라고 생각한다.

나는 어떤 버그 수정도 질문할 수 없고 모든 것을 그냥 끌어와야 한다고 당신이 분명히 했다.

솔직히 그 시점에서 나는 전혀 관여하는 것이 불편하고, 우리가 그 논의에서 정말로 근본적으로 동의한 유일한 것은 "우리는 끝났다"는 것이었다.

2025년 8월, 리눅스 6.17에 대한 bcachefs 업데이트를 병합하지 않은 후, 토르발스는 리눅스 커널에서 bcachefs를 "외부에서 유지 관리됨"으로 표시했다.[27] 2025년 9월, 오버스트리트는 bcachefs가 DKMS 모듈로 배포될 것이라고 발표했다.[28]

각주

[편집]
  1. “kernel/git/torvalds/linux.git - Linux kernel source tree”. 《git.kernel.org》. 2023년 11월 8일에 원본 문서에서 보존된 문서. 2023년 10월 31일에 확인함. 
  2. Larabel, Michael (2024년 1월 7일). “Linux 6.7 Released With Bcachefs, Intel Meteor Lake In Good Shape & Nouveau GSP Support” (영어). 《phoronix.com》. 2024년 1월 7일에 확인함. 
  3. Torvalds, Linus (2025년 6월 26일). “Re: [GIT PULL] bcachefs fixes for 6.16-rc4”. 《Linux Kernel Archives》. 2025년 6월 28일에 확인함. 
  4. Rudra, Sourav (2025년 6월 27일). “New Linux Kernel Drama: Torvalds Drops Bcachefs Support After Clash” (영어). 《It's FOSS News》. 2025년 6월 28일에 확인함. 
  5. “MAINTAINERS: mark bcachefs externally maintained”. 《git.kernel.org》. 2025년 9월 12일에 확인함. 
  6. “Linus Torvalds Removes The Bcachefs Code From The Linux Kernel” (영어). 《www.phoronix.com》. 2025년 9월 30일에 확인함. 
  7. Larabel 2015.
  8. Larabel 2018.
  9. Baader 2017.
  10. “Options — bcachefs documentation”. 2023년 6월 20일에 원본 문서에서 보존된 문서. 2023년 6월 20일에 확인함. 
  11. Edge 2018.
  12. Overstreet, Kent (2021년 12월 18일). “bcachefs: Principles of Operation” (PDF). 2023년 8월 26일에 원본 문서 (PDF)에서 보존된 문서. 2023년 5월 10일에 확인함. 
  13. “Architecture”. 《bcachefs.org》. 2023년 10월 31일에 원본 문서에서 보존된 문서. 2023년 5월 26일에 확인함. 
  14. “Snapshots”. 《bcachefs.org》. 2023년 11월 6일에 원본 문서에서 보존된 문서. 2023년 5월 26일에 확인함. 
  15. “bcachefs.org”. 2024년 4월 3일에 원본 문서에서 보존된 문서. 
  16. Torvalds, Linus (2024년 4월 7일). “Linux 6.9-rc3” (메일링 리스트). 《Linux kernel mailing list》. 2024년 4월 22일에 원본 문서에서 보존된 문서. 2024년 4월 22일에 확인함. 
  17. “Linux kernel mailing list”. 2024년 8월 24일에 원본 문서에서 보존된 문서. 
  18. “Debian Orphans Bcachefs-Tools: "Impossible to Maintain in Debian Stable". 2024년 9월 28일에 원본 문서에서 보존된 문서. 2024년 8월 30일에 확인함. 
  19. “Orphaning bcachefs-tools in Debian”. August 2024. 2024년 8월 31일에 원본 문서에서 보존된 문서. 
  20. Jackson 2015.
  21. LKML 2021.
  22. LKML 2022.
  23. Larabel, Michael. “Bcachefs Merged Into The Linux 6.7 Kernel” (영어). 《Phoronix》. 2023년 10월 31일에 원본 문서에서 보존된 문서. 2023년 10월 31일에 확인함. 
  24. Williams, Dan (2024년 11월 22일). “Re: [PATCH 1/2 v2] bcachefs: do not use PF_MEMALLOC_NORECLAIM” (영어) (메일링 리스트). 《linux-kernel@vger.kernel.org》. 2024년 11월 27일에 원본 문서에서 보존된 문서. 2024년 12월 17일에 확인함. - Scope: Decline all pull requests from Kent Overstreet during the Linux 6.13 kernel development cycle. 
  25. Larabel, Michael (2024년 11월 20일). “Bcachefs Changes Rejected Reportedly Due To CoC, Kernel Future 'Uncertain' (영어). 《Phoronix》. 2025년 3월 18일에 원본 문서에서 보존된 문서. 2025년 3월 14일에 확인함. 
  26. Larabel, Michael (2025년 1월 21일). “Bcachefs Changes Merged Without Issue For The Linux 6.14 Kernel”. 《Phoronix》. 2025년 3월 18일에 원본 문서에서 보존된 문서. 2025년 3월 14일에 확인함. 
  27. Larabel, Michael (2025년 8월 29일). “Linus Torvalds Marks Bcachefs As Now "Externally Maintained" (영어). 《Phoronix》. 2025년 8월 29일에 원본 문서에서 보존된 문서. 2025년 9월 13일에 확인함. 
  28. Larabel, Michael (2025년 9월 11일). “Bcachefs Outlines Plans For Shipping As A DKMS Out-Of-Tree Kernel Module” (영어). 《Phoronix》. 2025년 9월 12일에 원본 문서에서 보존된 문서. 2025년 9월 13일에 확인함. 

참고 문헌

[편집]

외부 링크

[편집]