Bcachefs
| 개발사 | 켄트 오버스트리트 |
|---|---|
| 도입 | 2015년 8월 21일 |
| 구조 | |
| 디렉터리 내용 | 하이브리드 B+ 트리 |
| 파일 할당 | Extents |
| 불량 블록 | 기록 없음 |
| 기능 | |
| 날짜 사용 권한 | 수정 (mtime), 속성 수정 (ctime), 접근 (atime), 생성 (crtime) |
| 특성 | 확장 속성 |
| 파일 시스템 권한 | POSIX (+ xattrs의 ACL) |
| 투명한 압축 | 예 |
| 투명한 암호화 | 예 |
| 카피 온 라이트 | 예 |
| 기타 | |
| 지원 운영 체제 | 리눅스 |
| 웹사이트 | bcachefs |
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]
각주
[편집]- ↑ “kernel/git/torvalds/linux.git - Linux kernel source tree”. 《git.kernel.org》. 2023년 11월 8일에 원본 문서에서 보존된 문서. 2023년 10월 31일에 확인함.
- ↑ 가 나 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일에 확인함.
- ↑ 가 나 Torvalds, Linus (2025년 6월 26일). “Re: [GIT PULL] bcachefs fixes for 6.16-rc4”. 《Linux Kernel Archives》. 2025년 6월 28일에 확인함.
- ↑ 가 나 Rudra, Sourav (2025년 6월 27일). “New Linux Kernel Drama: Torvalds Drops Bcachefs Support After Clash” (영어). 《It's FOSS News》. 2025년 6월 28일에 확인함.
- ↑ “MAINTAINERS: mark bcachefs externally maintained”. 《git.kernel.org》. 2025년 9월 12일에 확인함.
- ↑ “Linus Torvalds Removes The Bcachefs Code From The Linux Kernel” (영어). 《www.phoronix.com》. 2025년 9월 30일에 확인함.
- ↑ 가 나 다 라 Larabel 2015.
- ↑ 가 나 다 라 Larabel 2018.
- ↑ 가 나 다 Baader 2017.
- ↑ “Options — bcachefs documentation”. 2023년 6월 20일에 원본 문서에서 보존된 문서. 2023년 6월 20일에 확인함.
- ↑ 가 나 다 Edge 2018.
- ↑ 가 나 Overstreet, Kent (2021년 12월 18일). “bcachefs: Principles of Operation” (PDF). 2023년 8월 26일에 원본 문서 (PDF)에서 보존된 문서. 2023년 5월 10일에 확인함.
- ↑ “Architecture”. 《bcachefs.org》. 2023년 10월 31일에 원본 문서에서 보존된 문서. 2023년 5월 26일에 확인함.
- ↑ “Snapshots”. 《bcachefs.org》. 2023년 11월 6일에 원본 문서에서 보존된 문서. 2023년 5월 26일에 확인함.
- ↑ “bcachefs.org”. 2024년 4월 3일에 원본 문서에서 보존된 문서.
- ↑ Torvalds, Linus (2024년 4월 7일). “Linux 6.9-rc3” (메일링 리스트). 《Linux kernel mailing list》. 2024년 4월 22일에 원본 문서에서 보존된 문서. 2024년 4월 22일에 확인함.
- ↑ “Linux kernel mailing list”. 2024년 8월 24일에 원본 문서에서 보존된 문서.
- ↑ “Debian Orphans Bcachefs-Tools: "Impossible to Maintain in Debian Stable"”. 2024년 9월 28일에 원본 문서에서 보존된 문서. 2024년 8월 30일에 확인함.
- ↑ “Orphaning bcachefs-tools in Debian”. August 2024. 2024년 8월 31일에 원본 문서에서 보존된 문서.
- ↑ Jackson 2015.
- ↑ LKML 2021.
- ↑ LKML 2022.
- ↑ Larabel, Michael. “Bcachefs Merged Into The Linux 6.7 Kernel” (영어). 《Phoronix》. 2023년 10월 31일에 원본 문서에서 보존된 문서. 2023년 10월 31일에 확인함.
- ↑ 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.
- ↑ Larabel, Michael (2024년 11월 20일). “Bcachefs Changes Rejected Reportedly Due To CoC, Kernel Future 'Uncertain'” (영어). 《Phoronix》. 2025년 3월 18일에 원본 문서에서 보존된 문서. 2025년 3월 14일에 확인함.
- ↑ Larabel, Michael (2025년 1월 21일). “Bcachefs Changes Merged Without Issue For The Linux 6.14 Kernel”. 《Phoronix》. 2025년 3월 18일에 원본 문서에서 보존된 문서. 2025년 3월 14일에 확인함.
- ↑ Larabel, Michael (2025년 8월 29일). “Linus Torvalds Marks Bcachefs As Now "Externally Maintained"” (영어). 《Phoronix》. 2025년 8월 29일에 원본 문서에서 보존된 문서. 2025년 9월 13일에 확인함.
- ↑ 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일에 확인함.
참고 문헌
[편집]- Baader, Hans-Joachim (2017년 3월 17일). “Neue Version von Bcachefs bringt Verschlüsselung” [New version of bcachefs brings encryption] (독일어). 《Pro-Linux》. 2018년 11월 23일에 원본 문서에서 보존된 문서. 2018년 11월 23일에 확인함.
|work=에 라인 피드 문자가 있음(위치 145) (도움말) - Edge, Jake (2018년 5월 23일). “An update on bcachefs”. 《LWN.net》. 2018년 6월 1일에 원본 문서에서 보존된 문서. 2018년 11월 22일에 확인함.
- Jackson, Joab (2015년 8월 21일). “Former Google engineer revs up a new Linux filesystem”. 《PC 월드》. 2020년 12월 5일에 원본 문서에서 보존된 문서. 2018년 11월 22일에 확인함.
- Larabel, Michael (2015년 8월 21일). “A New Linux File-System Aims For Speed While Having ZFS/Btrfs-Like Features”. 《Phoronix》. 2015년 8월 23일에 원본 문서에서 보존된 문서. 2018년 11월 22일에 확인함.
- Larabel, Michael (2018년 5월 9일). “Bcachefs File-System Is Working On Going Upstream In The Linux Kernel”. 《Phoronix》. 2018년 7월 9일에 원본 문서에서 보존된 문서. 2018년 11월 22일에 확인함.
- LKML (2019년 6월 10일). “bcachefs status update (it's done cooking; let's get this sucker merged)”. 《Linux Kernel Mailing List》.
- LKML (2021년 11월 4일). “bcachefs status update - current and future work”. 《Linux Kernel Mailing List》. 2021년 12월 2일에 확인함.
- LKML (2022년 2월 16일). “bcachefs”. 《Linux Kernel Mailing List》. 2022년 9월 14일에 확인함.
외부 링크
[편집]- Bcachefs - 공식 웹사이트