世界を動かす技術を、日本語で。

Bcachefsがメインラインカーネルから削除されました

2025年9月30日原文(lwn.net)

概要

  • bcachefs はLinux 6.18で 完全削除
  • DKMSモジュール として外部管理へ移行
  • バージョン混乱回避 のための決定
  • Linus Torvalds による削除判断
  • 議論と賛否両論 が存在

bcachefsのLinuxカーネルからの削除

  • Linux 6.17bcachefs は「外部管理」扱いに指定
  • Linux 6.18 でLinus Torvaldsが bcachefsを完全削除
  • 理由は DKMSモジュール として外部提供され、 カーネル内コードが陳腐化 するため
  • バージョンの混乱回避 とコード保守性向上を目的とした判断
  • bcachefsは今後、 カーネル外での独立管理 体制へ移行

削除決定のプロセス

  • Linus Torvalds には カーネルからの削除権限 が存在
  • 決定は Linus単独 ではなく、 長期的な公開・非公開議論 を経て実施
  • 公開ディスカッション関係者間の調整 を重視
  • 他のカーネルへのセキュリティ修正のバックポート問題 も指摘
    • サードパーティ製カーネルでは 修正漏れや脆弱性残存 リスク

コミュニティの反応と評価

  • 多くのユーザーや開発者が 「正しい判断」 と評価
  • バージョン管理の明確化保守負担軽減 を歓迎
  • 一方で、 Phoronix のような場では 議論の難しさ も指摘
  • セキュリティや品質の観点 からも、 外部管理のメリット が強調

bcachefsの今後

  • DKMSモジュール としての提供継続
  • カーネル本体との独立性 が高まり、 開発の柔軟性 向上
  • ユーザーは 外部リポジトリ経由で最新バージョンを利用 可能
  • カーネル本体との連携・互換性 に注意が必要

Hackerたちの意見

最終的にはポジティブな結果になってるよ。メインラインに提出する前は、Bcachefsは他のサブシステムの変更に依存してたからDKMSできなかったんだ。単なる追加じゃなくてね。だから、自分でカーネルをコンパイルしなきゃいけなかった。今は、最近のサードパーティ製カーネル用にモジュールとしてコンパイルできるようになったんだ。

…今のところね。Linuxの方針は、外部モジュールやドライバーには全く関心がないから、もしbcachefsが必要とするものを削除し始めたら、また痛い目に戻ることになるよ。(例外を作ることがあれば別だけど、ZFSにはそんな例外はないし。)

でも、DKMSの使用を妨げる変更が合理的だったら、bcachefsとは無関係にマージされてたんじゃないかな?もっとドラマや混乱も少なかったかもね?雲の中に銀の裏地がないとは言わないけど、結果が関わってる誰にとっても中立(ましてやポジティブ)とは思えないよ。

これがメインラインから削除された理由なの?

もっと安定したら、また戻ってきてほしいな。ZFSの代わりにカーネル内で使える選択肢があれば最高だよ。

不安定だから削除されたわけじゃなくて、メンテナが他人が定めたガイドラインを尊重できなかったからだよ。これが問題になったのは初めてじゃないし、そのメンテナは以前から行動を変える意志を見せてないし。

何と比べてもっと安定してるの?俺は古いHDDとちょっと怪しいPCI-SATA拡張カードで構成されたマルチデバイスファイルシステムを使ってるんだ。これ、2019年に組み立てたもので、書き込み不可の時期もあったけど、今も動いてるしデータも失ってないよ。5年以上経って、いろんなFSのバージョンアップやデバイスの交換もあったけど、データの避難や再複製もしたんだ。[1] 技術的には、壊れかけのデバイスがゴミを書き込むようになって、我慢できずに破壊的なfsck(fix_errors付き)を実行した時にいくつか失ったけどね。ほかのソリューションと比べるつもりはないけど、これだけでもすごいと思うよ。

もっと安定したら、また戻ってきてほしいな。うん、俺もそう思う。 > ZFSの代わりにカーネル内で使える選択肢があれば最高だね。そうだね。 > パリティRAID用に。いや、それは違うよ。パレートの法則を考えてみて。80%の人は機能の20%しか使わないんだ。でも、みんなが同じ20%を使うわけじゃないから、全体としては80%の機能が必要なんだよ…それ以上もね。ZFSはその競合の一つだし、Btrfsもそう。Stratisも、HAMMER2も、MDRAIDも、LVMもそう。みんなその20%の一部または全部を提供していて、長所と短所がある。要するに、ZFSはRAIDに優れていて、MDRAIDや他のものよりずっと簡単なんだ。Btrfsもそれができるけど、ZFSとBtrfsはCOWスナップショットもできる。それも重要なんだ。OpenSUSEやGaruda Linux、siductionなどはBtrfsのCOWに依存してる。まあ、いいけど、君の使い方はRAIDなんだね。俺もそれを使うよ。いいね。でもCOWも同じくらい重要なんだ。整合性も同じくらい重要で、Btrfsはそれに失敗してる。それがBcachefsのスローガン「データを食べないCOWファイルシステム」なんだ。Btrfsは4年間で年に2〜3回、俺のデータを食べた。称賛する人がどれだけいても、重要なのは失敗した被害者たちなんだ。彼らがそれが失敗することを証明してる。ポイントは「mdraidでext4を使える」とか「LVM2でできる」とか「Btrfsは俺には問題ない」じゃなくて、_これらすべて_をできて、_より良く_できるものなんだ。ここでの「より良く」は「より簡単に」という意味も含む。ここでの簡単さは「設定が簡単」だけでなく、「実装が簡単」という意味もあるんだ(例えば、LVM2上のBtrfsやmdraid上のBtrfs、mdraid上のLVM、RAID上のLVMのext4などと比べて)。全体のスタックの層を取り除いて同じ機能を残せるものは価値がある。設定ステップの90%を取り除いて同じ機能を残せるものは重要なんだ…だって、いろんな人がそのステップを違う順番でやったり、いくつかをスキップしたりするから、それを文書化する必要があるんだけど、誰も十分に文書化してないからね。RAID上のLVMのリカバリステップは、LVM上のRAIDとは全然違う。mdraid上のBtrfsのリカバリは、ただのBtrfs RAIDとは全然違う。だから、これを排除するツールが重要なんだ。1 - 2 - 3 - 4 - 5と1 - 2 - 4 - 3 - 5のどちらが重要かが問題になるから。ここでのゴルディウスの結び目を切る剣は、1-5を一度のステップで実行できるツールなんだ。たとえ1と5、または2と3だけを使っても、4だけをやっても、それはまだ重要なんだ。

俺も戻ってくることを願ってるけど、ケントがリードデベロッパーじゃないことを願ってる。

bcachefsには期待してるんだけど、今のところベンチマークはちょっと残念な結果だね。色んなことをやるからオーバーヘッドがあるのは分かるけど、btrfsやzfsに近いパフォーマンスを期待してたんだ。なのに、ずっとひどい結果が続いてる(zfsも時々そうなるけど)。

あのベンチマークはおかしかったね。bcachefsだけが512bのブロックサイズを使ってるのに気づいた?それがオーバーヘッドを大きくしちゃうんだよ。

あのベンチマークを真剣に受け止めるのは難しいね。ZFSやbtrfs、そして多分bcachefs(使ったことないから意見はないけど)は、XFSやEXT4ができないことをやってるんだ。ZFSについては他より詳しいけど、ここではZFSがashift=9か12かは指定されてなかった。自動検出を試みるけど、それがうまくいかないこともある。ashift=9だと、ZFSは512バイトで物理I/Oを行っていることになるから、nvmeのエミュレーションモードになる。もしかしたらashift=12かもしれないけど、分からない。次に、ZFSはデフォルトで128kのレコードサイズを持ってる。大きなファイルを書いたら、128kサイズの「チャンク」で書かれるんだ。それから4kのブロックサイズでランダムな読み書きI/Oベンチマークを実行すると、ZFSは毎回4kのI/Oに対して128kを読み書きすることになる。これは大きな増幅係数だよ。もしZFSをランダムブロックI/Oに似た負荷で使うなら、アプリのI/Oに合わせてrecordsizeを調整した方がいい。ZFSはこれを簡単にしてくれるし、子ファイルシステムの作成は非常に安価で、ファイルシステムごとにrecordsizeを調整できるんだ。それに、ZFSがやることはXFSやEXT4ができないこともある。例えば、5分ごとにスナップショットを取ること(ほぼ無料)、ストリーミング増分スナップショットバックアップ、スナップショットのクローン作成など、RAIDの柔軟性に入る前に。

Hacker Newsで議論の続きを見る