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

Bcachefsが「外部管理」に移行

概要

Debianにおけるbcachefs-toolsのパッケージング問題と、その周辺で発生したRust依存関係やバージョン管理の課題を整理。 Debianの安定版モデルとbcachefs-toolsの開発サイクルとのミスマッチが議論の中心。 複数の関係者がパッケージの改善や調整に尽力し、上流・Debian双方で協力が進んだ経緯。 Rust依存の扱いや、異なるディストリビューション間での一貫性確保の難しさが浮き彫りに。 最終的に、Debianとbcachefs-toolsの双方にとって前向きな成果も生まれた事例。

Debianにおけるbcachefs-toolsパッケージング問題の整理

  • Debian での bcachefs-tools パッケージングを巡る議論

    • バージョン依存性 の問題(古すぎる/新しすぎるRustパッケージ)
    • 将来的な安定版での保守性 への懸念
    • 例外取得プロセス (carve-outs/exceptions)の存在
  • 依存パッケージのバージョン問題

    • bindgen 0.69.4が必要だが、Debian unstableは0.66.1を提供
    • rust-errno 0.2.xが必要だが、Debian unstableは0.3.8を提供
    • 他にもspurious/cruftな依存が存在
  • Debianの安定版モデルとのミスマッチ

    • bcachefs-toolsの開発サイクルは 2年間のハードフリーズ に適合しない可能性
    • ユーザーが新しいカーネルを外部から導入するケースが多い
    • カーネルとユーザーランドの同期性 が重要
  • パッケージメンテナンスの経緯

    • 元々C実装でJonathan CarterがDebianで保守
    • Rust依存が増え、メンテナンスが困難に
    • paravoid氏らがDebian BTSやupstreamと連携し、Rust依存解消やパッチ適用を推進
    • bindgenのfork問題も、Debianとupstreamで協力しRust本家に受け入れられる形に修正
  • 異なるディストリビューション間の一貫性問題

    • Fedoraはバンドル解除を行わない方針
    • Debianが独自にRust依存を外すと、他ディストリとバージョン不整合が発生
    • bindgenのようなFFIツールは、バージョン違いで深刻なバグ(heisenbug)を生むリスク
  • ディストリビューション独自変更のリスク

    • ArchのLTO有効化で不具合発生(QA不足が原因)
    • こうした変更は upstreamへ還元 し、広範なテスト・QAを受けるべき
  • 協力的な開発の成果

    • Debian・upstream双方でコミュニケーションを重ね、パッケージ品質向上
    • bcachefs-toolsだけでなく、Debian全体のRustパッケージエコシステムも改善
    • 結果として、Debian Trixieで最新状態かつ安定したパッケージ提供が可能に

bcachefs-toolsとDebian安定版の今後

  • bcachefs-tools の現状

    • まだ安定版に含めるには早い段階
    • 今後のbackport方針や安定性検証が必要
    • 実験的段階ではアップグレード・ダウングレードの互換性重視
  • Debianユーザーへの影響

    • 安定版にbcachefs-toolsを導入するには、カーネル・ユーザーランド両方の管理が必要
    • 現状は、外部リポジトリや独自ビルドでの運用が現実的
  • 今後の課題

    • Rust依存のパッケージを安定的に管理する体制構築
    • 複数ディストリビューション間での依存性整合性維持
    • upstreamとの更なる協力による品質・互換性向上

まとめ

  • bcachefs-tools のDebianパッケージ化は、多くの技術的・運用的課題をはらむ
  • Rust依存管理ディストリビューション間の調整 が重要課題
  • Debianコミュニティupstream が連携し、問題解決とエコシステム全体の改善を実現
  • 今後も安定性・互換性確保に向けた継続的な協力と議論が必要

Hackerたちの意見

うわ、ZFSやDKMSの面倒から解放されて楽しんでたのに、今度はbcachefsも同じ状況になりそうだね。DKMSのトラブルや時々の不具合に対処するか、どんどん古くなるカーネルバージョンに留まるかって感じ。

うわ、ZFSやDKMSの面倒から解放されて楽しんでたのに、今度はbcachefsも同じ状況になりそうだね。DKMSのトラブルや時々の不具合に対処するか、どんどん古くなるカーネルバージョンに留まるかって感じ。 君のディストロは、希望があればbcachefsを簡単に含められるんじゃない?ZFSとLinuxの状況はほとんどLinuxの宗教的なこだわりが暴走してると思うけど、その特有の問題はbcachefsにはないんじゃない?bcachefsの問題はbtrfsの問題でもある。結局、bcachefsはZFSがすでに解決している問題を解決するためにはほとんど機能していないんだよね。

参考までに、DKMSだけがアウトオブツリーのモジュールを配布する方法じゃないよ。https://github.com/chimera-linux/ckms

記事によると、bcachefsはメインラインカーネルから削除されないみたい。これは主に、Linusや他のカーネル開発者がKentと直接やり取りしなくて済むようにするための対策っぽいね。

こんなに時間がかかるとは驚きだね。

Debianでも孤立してるけど、btrfsに対してどんな大きな利点があるのかはよくわからないな。最近のbtrfsはかなり安定してるし。

btrfsは6.1以前のカーネルではマルチディスク環境では使えなかった。そこからは試してないけど、今のbtrfsはそういう環境で安定してるの?あと、https://www.phoronix.com/news/Josef-Bacik-Leaves-Metaも見てみて。

関連: Linux CoCがKent Overstreet(Bcachefs)に関する決定を発表 (kernel.org) https://news.ycombinator.com/item?id=42221564 - 2024-11-23, コメント103件

最近、いろんな関係者の間で摩擦があったから、この最新のニュースはその決定の直接的な結果じゃないと思うよ。例えば、これを見てみて:https://news.ycombinator.com/item?id=44464396

俺だけかな?Kentが自分の考えるカーネル開発のやり方に自爆的に固執してるように見えるんだけど。どの側もミスはあったと思うけど、外から見るとKentはルールを守りたくないだけに見えるな(何年も我慢してもらってるのに)。

カーネル開発だけじゃないよね。lwnのスレッドでも、Debianの開発者たちとのやり取りが難しいって言ってたし。俺の意見だけど、彼のコミュニケーションからは、他のプロジェクトが彼の仕事を含んでいても、焦点や優先事項、方針が彼のプロジェクトとは違うって認めたくない感じがする。さらに、他のケースでは例外が認められてるから、自分のケースでも例外を期待してるみたい。俺は、彼が発表用のメーリングリストで別に開発した方がいいと思う。緊急の変更があったら、そのリストに送信して、他の関係者がその変更をカーネルやディストリビューションに取り込むプロセスを整理すればいい。もし他の人が配布した古いバージョンからバグレポートを持ってきたら、最新のバージョンを彼のリポジトリからどうやって入手するか教えてあげて、ディストリビューターにも優しく促してあげればいい。そうなると、ユーザーは古いバージョンを使うことになって、修正がすぐには来ないけど、今のやり方だってユーザーにすぐ修正を届けることはできてないからね。

ケントは間違ってると思うけど、リーナス以下のカーネルの人たちが問題を説明できないのは本当に助けにならないよね。代わりに遊び場の罵倒に走っちゃってるし。プロフェッショナルじゃないし、敵対的な作業環境を作るだけで、ケントの行動がなぜ問題なのかを伝えられてないから、彼がそれを信じられないのも少し同情する。

このシーンの外部者として見ると、スレッド全体が全然違って見える。ケントは自分の立場(他の人が彼のコードにバグを入れることから来るフラストレーション)を説明するのにとても忍耐強いし、カーネルやDebianの人たちは、彼が見ているプロセスの本当の問題に対して返答するのではなく、悪口を言ってるだけに見える。ユーザーparavoidが引用してる部分は、俺の意見では文脈を無視してると思う(提供されたリンクを読んで判断した結果)。もっと歴史があるかもしれないけど、そのスレッドを見た限りでは、悪者に見えるのはケントじゃないね。

自閉症は時々、すごく社会的な障害だよね。

彼はユーザーの報告に過剰に反応してると思う。誰かが来ると、データ損失の危機にあるからね。だから、すべてをできるだけバグフリーにしようと必死になってるし、違う視点の人たちが修正を早く広めないことにイライラしてる。ディストロが名前を変えるために軽くフォークして(IceWeaselスタイル)、サポートリクエストが彼に届かないようにするのが助けになるかも…でも、多分無理だろうね。結局、データを取り戻したいからみんなそこに行くし。

悲しいことに、長年の開発にもかかわらず、BTRSはZFSと同等のものにはなれなかった。昨日のニュースでは「長年のBtrfs開発者で、David Sterbaと共にアクティブな共同メンテナーであるJosef BacikがMetaを離れる。さらに、彼は主な仕事としてLinuxカーネル開発からも退く。」ってさ。https://www.phoronix.com/news/Josef-Bacik-Leaves-Meta 現在のLinuxには「現代的な」ZFSのようなファイルシステムは存在しないね。

これはBTRFSじゃないよ。

Suse Linux EnterpriseはまだBtrfsをルートファイルシステムとして使ってるから、そんなに悪くはないんじゃない?クリス・メイソンは最近何をしてるんだろう?ちょっとググってみたけど、「rsched」っていうツールに取り組んでるみたいだね。

俺はZFS使ってるよ。Canonicalが提供してるし、個人のマシンにはそれで十分だね。

まさにZFS-on-linuxがあって、すごくうまく動いてるよ。LinusがZFSについて何度も間違ったことを言ってるけど、彼がそれを使ったことも、機能や特徴を調べることも全然してないのが明らかだね。 https://zfsonlinux.org/

FreeBSDがセクシーな視線を送ってくる。NASの構築を考えてるところなんだ。

俺もそういう状況だよ。リビングの隅にあるSynologyのユニットを見ながら、これがここにいる最後のユニットになるんだろうなって思ってる。代わりのものがどんな感じになるのか気になる。FreeBSDにはお世話になってるし、そろそろ再会する時期かもね。

やってみて!俺は約10年前に切り替えたけど、全然後悔してないよ。ZFSの統合が一流で、しっかりしてる。データを何度も守ってくれたからね。

ZFSをほぼファーストクラスの市民として扱ってるLinuxディストロもあるよ。NixOSがその一つで、Alpineもそうだと思う。

FreeBSDは、サードパーティのパッケージも含めて、すごく簡単にアップデートできるよ。特別な理由がない限り、LinuxよりFreeBSDを選ぶべきだと思う。

ちなみに、俺はbtrfsでNASを運用してる(mdadm RAIDの上に、btrfs RAIDは完全には信頼してないし、リカバリツールもひどいみたいだから)。今のところうまく動いてるよ。スナップショットを簡単に取れるのが本当にいい。毎時スナップショットを作って最新のN個を保持するスクリプトがあって、これで俺のやらかすペブカックエラーから守ってる。ただ、定期的にbtrfs以外のストレージにバックアップもしてる。結局バックアップは必要だから、リスクを減らす簡単な方法だと思ったんだ。

既存のbcachefsドライバーは削除されないし、問題はbcachefsの開発者がルールに従ってないことだから、誰かがメインラインにbcachefsの変更を取り込む役割を引き受けて、マージウィンドウのルールも守れるといいな。

いや、問題はルールに従わなかったことじゃないよ。今の対立を引き起こしたのは「journal_rewind」パッチで、最近(6.15)最悪のバグが発生したんだ。サブボリュームが全部消えちゃうっていう。3回目の報告で、デバッグに必要なメタデータダンプをもらえて、ほんと助かった。今はこういうバグが二度と起こらないように、かなりの強化をしたよ。それから新しい修復コードを書いて、バグに影響を受けた3人目のユーザーのファイルシステムを完全に復元した(最初の2人はバックアップがあったからね)。そしたらLinusがキレちゃって、プルリクエストに「機能」として載ってたから。元のバグに影響を受けたユーザーが知っておくべきだと思ってそうしただけなのに。データを維持できないのはファイルシステムのバグで、修復コードはバグフィックスだよ。プライベートなメンテナンススレッドでも、公の場でも、LinusとTedが「どのbcachefsパッチが回帰リスクか知ってる」とか言って完全に話が逸れちゃった。Linusが俺の判断を信じてないって1ページ半も愚痴ってたし、もっと色々あった。バグフィックスに関してはこういう議論が何度も繰り返されてる。で、その後、他のサブシステムのプルリクエストを見てみたら、実は俺がクリティカルなバグフィックスを考えるのが他のサブシステムよりも保守的だったみたい。bcachefsで普通じゃないのはバグフィックスの量だけで、これは新しいファイルシステムが急速に安定して、ユーザーのバグ報告を閉じていくのに期待されることだよ。だから、仲介者がいても何も解決しないと思う。

一人の人間が開発してるファイルシステムを誰が使うんだろう?バスファクターが1って、FSとしては受け入れられない気がする。でも、もしかしたら他の開発者がいるのかもしれないし、メインの開発者がカーネルコミュニティと協力できないなら、なぜ彼らがアップストリームを引き継がないのか不思議だね。

それくらい良いよ。

ノートパソコンとRaspberry Piには使ったけど、あんまり気にしてなかったんだ。KentとIRCで問題を解決できたのは良かったし、彼が実際に手伝ってくれるときはすごく助かるけど、bcachefsにはまだまだ課題があるって気づいた。バスファクター1は長期的には避けたいなって思った。

ここにいる「専門家」たちがbcachefsとbtrfsの違いを理解してないのは驚きだね。

みんな自分たちが違うって分かってるけど、もしbcachefsが出たら、btrfsが唯一のモダンなインツリーファイルシステムになるよね。でも、どうやら重要なデータを預けるのは信頼できないみたい。