Btrfsは,米Oracle社のChris Mason氏が中心に開発するCopy on write型のファイル・システムです。2009年5月現在,Linuxの次世代ファイル・システムとしてもっとも期待されている存在で,積極的に開発が進められています。2009年3月23日にリリースされたカーネル2.6.29に取り込まれました。

 Btrfsは仕組みや機能的には,米Sun Microsystems社のUNIX OS「Solaris」に実装された「ZFS」と似ています。ZFSは2004年の登場以来,その先進性から,Linuxカーネル開発者の間でも度々話題に上るほどのインパクトを与えました。ZFSは2005年にオープンソースで公開され,MacOS XやFreeBSDなど他のOSにも移植されています。

 しかしLinuxカーネルが採用する「GNU GPL」とライセンスが適合せず,Linuxカーネルには移植できません。ユーザー空間で稼働する移植版はありますが,それでは性能が出ません。そこで新規開発され,ライセンスにGNU GPLを採用するBtrfsがクローズアップされたのです。ただしBtrfsには,ZFSが持つ「ストレージ・プール」という概念が(まだ)無く,ボリューム管理機能の面では大幅に見劣りします。

データの安全性に配慮

 Btrfsに注目が集まる理由の1つが,データの安全性に配慮した仕組みを採用することです。BtrfsをはじめとするCopy on write型のファイル・システムでは,データを書き換える際,元データをいったん別の記録エリアにコピーし,そのコピーに対して書き換えを実施します。ファイル・システム管理用のメタデータは,この書き換えが完了してから更新されます。そのため,どの段階で処理が中断してもファイル・システムの不整合やデータ破損が発生しません(古い状態を保つか,更新済みのどちらかの状態になります)。

 これまで一般に利用されてきた「ジャーナル・ファイル・システム」では,ほとんどの場合,メタデータしか保護しません。これに対し,Btrfsではデータも保護されますので,より安全性が高いと言えます。

 Btrfsはこれに加え,すべてのデータに内容の検証用の「チェックサム」データを付加したり,標準でメタデータをミラーリングすることで,データ破損の検出と復元をリアルタイムに実施できるようにしています。メディアの劣化などでデータが破損した場合にも,「変質したデータのまま処理を進める」という最悪の事態を回避できます。また,チェックサムの付加により,ファイル・システムをチェックする「fsck」処理が大幅に高速化したのも利点の1つです。

 ファイル・システム管理も手軽です。fsck処理やデフラグ処理などの管理操作は,ほとんどの場合,オンライン状態(ファイル・システムをマウントして使用中の状態)で実施できます。管理のためにサービスを停止させる必要はありません。

RAIDをサポートするなど多機能

 また,Btrfsは機能が豊富なことも特徴です。例えば,ある時点でのファイル・システム情報を保持し続ける「スナップショット」機能や,複数のディスクを組み合わせて入出力性能や容量を向上させる「RAID」(Redundant Arrays of Inexpensive/Independent Disks)機能をサポートしています。Linuxでは従来,これらの機能は,「md」(multiple devices)や「dm」(device mapper)といった仕組みで実現されていました。ファイル・システムとは別のレイヤーで実現されていたため,設定や管理を別個に行う必要がありましたが,Btrfsではこれを単体で手軽に実現できます。

 そのほか,データを透過的に圧縮/伸長する機能も備えています。圧縮伸長アルゴリズムには,zipやgzipなどで使われている「Deflate」(LZ77の変種)を利用します。最近はディスク容量が増加しているため記録領域の節約という意味での意義は小さいですが,入出力速度の向上が期待できます。

 SSD(Solid State Drive)向けの最適化機能も備えています。現在SSDに使われることが多いフラッシュ・メモリーには,データ書き換え回数に制限があり,同一部分に書き込みが集中するのは好ましくありません。BtrfsのSSD最適化機能は,メディアの広い領域に書き込みを分散させることでメディアの寿命低下を防止します。