Btrfs(B-tree file system)は、Oracleが開発しGPLライセンスの下で公開されている、
Linux向けの高度なコピーオンライト
ファイルシステムです。2007年に発表され、ZFS
ファイルシステムの影響を受けて設計されました。コピーオンライト機能やスナップショット機能を備え、従来の
Linuxファイルシステムの制約を克服することを目指して開発されました。
開発の経緯と現状
Btrfsの開発には、ext3/ext4
ファイルシステムの開発者であるセオドア・ツォー氏も関わっており、reiser3/4と共通する設計思想がいくつか見られます。開発を主導したOracleは、
サン・マイクロシステムズを買収したことで、社内競合技術であるZFSとの関係に悩まされました。
当初は試験的な位置づけでしたが、2009年1月に
Linuxカーネル2.6.29-rc1にマージされました。その後、後方互換性を保ちながら継続的に改良が加えられ、2015年にはSUSE
Linux Enterprise Server 12のデフォルト
ファイルシステムとして採用されるなど、広く利用されるようになりました。一方、Red Hat Enterprise
LinuxではRHEL 6で技術プレビューとしてサポートされましたが、RHEL 8以降はサポートが終了しています。現在も開発が続けられており、ReactOSなど他のOSへの対応も進んでいます。
Btrfsの特徴
Btrfsは、耐障害性、修復機能、管理の容易さに重点を置いて設計されています。主な特徴は以下のとおりです。
高い空間効率: 小さなファイルやインデックス付きディレクトリを効率的に格納します。
動的なinode割り当て:
ファイルシステム作成時にファイル数の最大値が制限されないため、柔軟な拡張性を持ちます。
書き込み可能なスナップショット: スナップショットの作成と、そのスナップショットからのさらなるスナップショット作成が可能です。
サブボリューム: 複数の内部的なルートディレクトリを作成できます。
データとメタデータのチェックサム: データの完全性を保証します。
圧縮: gzip、LZO、Zstdなどの圧縮アルゴリズムに対応しています。
コピーオンライトロギング: すべてのデータとメタデータにコピーオンライト方式のロギングが適用されます。
RAID対応: RAID-0、RAID-1、RAID-5、RAID-6、RAID-10などのRAIDアルゴリズムをサポートし、デバイスマッパーとの統合も強化されています。
効率的な増分バックアップ: send/receive機能による効率的な増分バックアップが可能です。
ファイルシステムのアップグレードとダウングレード: ext3、ext4からのアップグレードと、アップグレード時点への逆変換が可能です。
SSD最適化モード: マウントオプションでSSD最適化モードを有効化できます。
オンラインデフラグメンテーション: オンラインでデフラグメンテーションを実行できます。
オンラインバランシング、ボリューム拡張・縮小、デバイスの追加・削除: これらの操作をオンラインで実行できます。
サブボリュームクオータ: サブボリュームごとにクオータを設定できます。
開発中の機能
さらに、以下の機能が開発中または開発予定です。
高速なオフラインファイルシステムチェック
オブジェクトレベルの
ミラーリングとストライピング
その他のチェックサムアルゴリズム
オンライン
ファイルシステムチェック
効率的なインクリメンタルファイルシステムミラーリング
オンライン重複排除
スワップ
暗号化
Btrfs自体は分散
ファイルシステムではありませんが、OracleはBtrfs向けに最適化されたネットワーク
ファイルシステムプロトコルであるCRFS (Coherent Remote File System) の開発も進めています。
まとめ
Btrfsは、高度な機能と柔軟性を備えた強力な
ファイルシステムです。
Linuxシステムにおける大容量ストレージの管理や、高い信頼性と可用性が求められる環境に適しています。しかし、ディストリビューションによるサポート状況の違いには注意が必要です。今後の開発にも注目が必要です。