💿

Bcachefsとは? 何なのか、いつ・どのように使うのか?

に公開

Bcachefsとは?

Bcachefs は、Linux 向けに開発された最新かつ高度なファイルシステムで、信頼性堅牢性 を重視しています。BtrfsZFS といった既存の先進的なファイルシステムの機能を備えつつ、独自の特徴も持っています。

主な特徴:

  • コピーオンライト(COW)
  • データおよびメタデータの完全なチェックサム
  • 複数デバイスのサポート
  • レプリケーション
  • イレイジャーコーディング(未安定
  • キャッシュ・データ配置制御
  • 圧縮
  • 暗号化
  • スナップショット
  • NOCOW モード
  • リフリンク
  • 拡張属性、ACL、クォータのサポート
  • 大規模なスケーラビリティ(100TB以上での動作確認済み)
  • 高性能・低レイテンシ

TLDR: bcachefs は、ZFS の機能性と ext4 のパフォーマンスを兼ね備えることを目指した、Linux用の実験的な最新ファイルシステムです。


他のファイルシステムとの比較

機能 bcachefs btrfs ZFS ext4
コピーオンライト(COW)
チェックサム
複数デバイスのサポート ⚠️ (mdでRAID)
レプリケーション
キャッシュ/データ配置 ✅(bcacheベース) ⚠️(簡易なティアリング) ✅(ARC / L2ARC)
圧縮 ✅(zstd / lz4) ✅(zstd / lzo) ✅(lz4 / gzip / zstd)
暗号化 ✅(ネイティブ) ✅(ネイティブ) ✅(ネイティブ) ✅(fscrypt)
スナップショット
スケーラビリティ ⚠️(メタデータがボトルネック)
高パフォーマンス ⚠️(高RAM使用)
Linuxカーネルへの統合 ❌(DKMS経由)

パフォーマンスベンチマークについては、2025年5月10日付の Phoronix 記事を参照してください:
https://www.phoronix.com/review/linux-615-filesystems

一見すると bcachefs はパフォーマンスが低く見えますが、これは初期設定にバグがあり、512B ブロックサイズが使われているためで、4K に変更することで大幅に改善されます。詳細:
https://www.phoronix.com/forums/forum/software/general-linux-open-source/1545550-bcachefs-btrfs-ext4-f2fs-xfs-file-system-performance-on-linux-6-15?p=1545589#post1545589


導入前の重要な注意点

  1. ファイルシステムはまだ 実験的 です。2025年7月3日 時点で オンディスクフォーマット は確定されており、RAID5/6 のみが 未安定とマーク されています。単一のデバイス・パーティション構成であれば、安全に利用可能 です。
  2. デフォルトの初期化では 512B ブロックサイズが使用されてしまう問題があります:
    https://github.com/koverstreet/bcachefs/issues/765
  3. カーネルは 6.7+ が必要です。最新の安定版(現在 6.15)を使うのが推奨されます。LTS6.12)より新しい方が好ましいです:
    https://www.kernel.org/category/releases.html
  4. Linus Torvalds(Linux開発リーダー)と Kent Overstreet(開発者)の間で論争があり、bcachefs が将来カーネルから削除されるリスクがあります:
    https://www.phoronix.com/news/Bcachefs-One-Week-Later-Merge
    そうなった場合、ZFS のように DKMSモジュールでの利用が必要になります。

Bcachefsパーティションの作成方法

LiveCD 環境で Linuxbcachefs パーティションにインストールするには、以下の手順を実行します。

# Locate the disk for installation
sudo fdisk -l

例として、ディスクが /dev/nvme0n1 だとします。既存のパーティションがある場合、次のステップは省略可能です。

# Create partitions
sudo fdisk /dev/nvme0n1
# Start fresh with GPT
g

# Create boot/EFI partition
n
1
(empty)
+2G
t
1
1

# Create root partition
n
3
(empty)
(empty)

# Write changes
w

# Format the boot/EFI partition
sudo mkfs.vfat -F 32 /dev/nvme0n1p1

次に、bcachefs パーティションをフォーマットします。以下のコマンドでは 4K ブロックサイズ、zstd 圧縮、crc64 チェックサムを有効にしています:

sudo mkfs.bcachefs --block_size 4k --compression=zstd --background_compression=zstd --data_checksum=crc64 --metadata_checksum=crc64 /dev/nvme0n1p2

オプションの詳細:
https://bcachefs-docs.readthedocs.io/en/latest/options.html

⚠️ 重要 Calamares を使用するディストリビューションでは、インストーラーのパーティショニング画面で「Keep」を選択してください。そうしないと、Calamaresがカスタムオプションを無視して再フォーマットしてしまいます。


Bcachefsパーティションの管理

現在のマウントオプションやファイルシステムの情報を確認するには:

sudo bcachefs show-super /dev/nvme0n1p2

フォーマット後にフラグを有効にするには:

# Example: enable compression post-install
sudo bcachefs set-fs-option --compression=zstd --background_compression=zstd

私の環境では、CachyOS をインストール後に zstd 圧縮を有効にしたところ、47GB → 29GB に容量が削減されました。


スナップショット

現在 bcachefs のスナップショットは 手動のみ 対応しています。Timeshift などのGUIツールは未対応です。

例:

sudo mkdir -p /snapshots
# Replace with your preferred timestamp and ID
sudo bcachefs subvolume snapshot / /snapshots/root-20250703100000000-001

参考リンク

ネイバーズ東京

Discussion