Bcachefsとは? 何なのか、いつ・どのように使うのか?
Bcachefsとは?
Bcachefs は、Linux 向けに開発された最新かつ高度なファイルシステムで、信頼性 と 堅牢性 を重視しています。Btrfs や ZFS といった既存の先進的なファイルシステムの機能を備えつつ、独自の特徴も持っています。
主な特徴:
- コピーオンライト(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
導入前の重要な注意点
- ファイルシステムはまだ 実験的 です。
2025年7月3日時点で オンディスクフォーマット は確定されており、RAID5/6のみが 未安定とマーク されています。単一のデバイス・パーティション構成であれば、安全に利用可能 です。 - デフォルトの初期化では
512Bブロックサイズが使用されてしまう問題があります:
https://github.com/koverstreet/bcachefs/issues/765 - カーネルは
6.7+が必要です。最新の安定版(現在6.15)を使うのが推奨されます。LTS(6.12)より新しい方が好ましいです:
https://www.kernel.org/category/releases.html -
Linus Torvalds(Linux開発リーダー)と Kent Overstreet(開発者)の間で論争があり、
bcachefsが将来カーネルから削除されるリスクがあります:
https://www.phoronix.com/news/Bcachefs-One-Week-Later-Merge
そうなった場合、ZFSのように DKMSモジュールでの利用が必要になります。
Bcachefsパーティションの作成方法
LiveCD 環境で Linux を bcachefs パーティションにインストールするには、以下の手順を実行します。
# 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