Bcachefs

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

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

特徴

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]

脚注

  1. ^ kernel/git/torvalds/linux.git - Linux kernel source tree”. git.kernel.org. 2023年10月31日閲覧。
  2. ^ bcachefs”. bcachefs.org. 2023年12月3日閲覧。
  3. ^ a b c d 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日閲覧。
  4. ^ a b c d Larabel, Michael (2018年5月9日). “Bcachefs File-System Is Working On Going Upstream In The Linux Kernel”. Phoronix. 2018年7月9日時点のオリジナルよりアーカイブ。2018年11月22日閲覧。
  5. ^ a b c Baader, Hans-Joachim (2017年3月17日). “Neue Version von Bcachefs bringt Verschlüsselung” [New version of bcachefs brings encryption] (ドイツ語). Pro-Linux. 2018年11月23日閲覧。
  6. ^ Options — bcachefs documentation”. 2023年12月3日閲覧。
  7. ^ a b c bcachefs: Principles of Operation” (18 Dec 2021). 10 May 2023閲覧。
  8. ^ a b c Edge, Jake (2018年5月23日). “An update on bcachefs”. LWN.net. 2018年6月1日時点のオリジナルよりアーカイブ。2018年11月22日閲覧。
  9. ^ Architecture”. bcachefs.org. 2023年12月3日閲覧。
  10. ^ Snapshots”. bcachefs.org. 2023年12月3日閲覧。
  11. ^ Jackson, Joab (2015年8月21日). “Former Google engineer revs up a new Linux filesystem”. PC World. 2018年11月22日閲覧。
  12. ^ LKML (2021年11月4日). “bcachefs status update - current and future work”. Linux Kernel Mailing List. 2021年12月2日閲覧。
  13. ^ LKML (2022年2月16日). “bcachefs”. Linux Kernel Mailing List. 2022年9月14日閲覧。
  14. ^ Bcachefs Merged Into Linux-Next” (英語). www.phoronix.com. 2023年9月12日閲覧。
  15. ^ Bcachefs Merged Into The Linux 6.7 Kernel” (英語). www.phoronix.com. 2023年10月31日閲覧。

外部リンク