Bcachefs

ボリューム管理、キャッシュ、チェックサム、スナップショットをサポートするLinuxのファイルシステム

Bcachefsは、Linuxベースのオペレーティングシステム向けのコピーオンライト(COW)のファイルシステムである。Bcachefsは主要開発者のケント・オーバーストリート(英語: Kent Overstreet)によって2015年に初めて発表され、Linuxカーネルのバージョン6.7から追加される予定である[1]。BcachefsはZFSBtrfsの現代的な機能と、ext4XFSの速度とパフォーマンスの両方に匹敵することを目的としている。2022年12月の時点で、Bcachefsは「安定している」と自称している[2]

Bcachefs
開発者ケント・オーバーストリート
導入2015年8月21日 (8年前) (2015-08-21) ()
構造
ディレクトリハイブリッドB+木
領域管理エクステント英語版
不良ブロックなし
限度
特徴
タイムスタンプ
  • 変更(mtime)
  • 属性の変更(ctime)
  • アクセス(atime)
  • 作成(crtime)
属性拡張ファイル属性
パーミッション
透過的圧縮あり
透過的暗号化あり
対応OSLinux
テンプレートを表示

特徴

Bcachefsは、Linuxベースのオペレーティングシステム向けのコピーオンライト(COW)のファイルシステムである[3]。特徴としては、キャッシュ[4]ChaCha20Poly1305アルゴリズムを使用した完全なファイルシステム暗号化[5]LZ4gzip[6]Zstandard[7]による透過的圧縮[4]スナップショット[4]CRC-32Cと64ビットチェックサムが含まれている[3]。Bcachefsは、RAID構成を含めて、ブロックデバイスに跨ることができる[5]

Bcachefsの初期のバージョンでは、そのコードのうち約80%がLinux向けのブロック層キャッシュシステムのBcache英語版のコードと共通であり、Bcacheの全ての機能を提供していた[8]。2021年12月以降、ブロック層キャッシュ機能は削除された[7]

データ構造レベルでは、Bcachefsは他の多くの現代的なファイルシステムと同様にB木を使用するが、既定値が256 KiBという非常に大きなノードを使用する。これらのノードは内部でログ構造化英語版され、ハイブリッドデータ構造を形成し、更新時にノードを書き換える必要性を減らしている[9]。スナップショットはコピーオンライト木を複製することによって実装されるのではなく、ファイルシステムオブジェクトにバージョン番号を追加することによって実装されている[10]。コピーオンライト機能とバケット・アロケータによりライトホールや入出力断片化のないRAID実装が可能になっている[7]

歴史

Bcachefsの開発は、Bcache英語版の開発者であるケント・オーバーストリートが中心になって行われており、彼はBcacheをBcachefsとなった着想の「プロトタイプ」であると説明している。オーバーストリートは、BcacheをBcachefsに置き換えることを意図している[8]。Bcachefsの開発は、Bcacheの開発者がそのコードベースが「本格的な汎用POSIXファイルシステムに進化しつつある」ことに気が付き、「その設計が本当に綺麗で簡潔」であり、実際に試したところとても良かったことに始まるとオーバーストリートは述べている。2013年にBcacheがメインラインLinuxカーネルにマージされてからしばらくして、オーバーストリートはGoogleを退職し、Bcachefsの開発をフルタイムで行った[3]

融資を受けずに数年間開発を続けた後、2015年にオーバーストリートはBcachefsを発表し、その時点で彼はコードを「殆どの機能が完成した」と判断し、テスターと貢献者を募集した。彼はBcachefsをZFSやBtrfsのような現代的な機能を備えながら[11]、ext4やXFSのような速度とパフォーマンスを実現する先進的なファイルシステムにすることを意図していた[3]。2017年の時点で、オーバーストリートはPatreonを通じてBcachefsを開発するための資金援助を受けていた[5]

2018年中頃の以降、オンディスク形式は安定している[8]。BcachefsをメインラインLinuxカーネルに含めるためのパッチがレビューのために投稿されたが、2018年中頃の時点ではまだ受け入れられなかった[4]

2019年中頃までに、Bcachefsの望まれる機能は実装し終わり、関連するパッチがピア・レビューのためにLKMLに投稿された[12][13]

2023年9月、BcachefsはメインラインLinuxカーネルに組み込む前に新機能をテストするLinuxカーネルの開発ツリーであるlinux-nextにマージされた[14]

2023年10月、BcachefsはLinuxカーネルのバージョン6.7にマージされた[15]

脚注

外部リンク