본문으로 이동

Bcachefs

위키백과, 우리 모두의 백과사전.
Bcachefs
개발사켄트 오버스트리트
도입2015년 8월 21일(11년 전)(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] ChaCha20 및 Poly1305 알고리즘을 사용한 완전한 파일 시스템 암호화,[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를 발표했으며, 당시 그는 코드를 "거의 기능이 완성되었다"고 부르며 테스터와 기여자들을 모집했다. 그는 ext4 및 XFS와 같은 파일 시스템의 속도와 성능을 가지면서 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. 1 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. 1 2 Torvalds, Linus (2025년 6월 26일). “Re: [GIT PULL] bcachefs fixes for 6.16-rc4”. 《Linux Kernel Archives》. 2025년 6월 28일에 확인함.
  4. 1 2 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. 1 2 3 4 Larabel 2015.
  8. 1 2 3 4 Larabel 2018.
  9. 1 2 3 Baader 2017.
  10. ↑ “Options — bcachefs documentation”. 2023년 6월 20일에 원본 문서에서 보존된 문서. 2023년 6월 20일에 확인함.
  11. 1 2 3 Edge 2018.
  12. 1 2 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일에 확인함.

참고 문헌

[편집]

외부 링크

[편집]