Linuxの次期デフォルトファイルシステム? btrfs

hdd

btrfs ファイルシステム

以前に書いた 「Fedora17のリリースノートから」 にも少し取り上げた btrfs について。

先に話しておくが、私はまだ btrfsファイルシステム を導入したことがない。 そのことを踏まえて書いてみたいと思う。

ファイルシステムはOS(オペレーション・システム)の基幹的なもので、どのようなファイルシステムであるかによってシステムの特徴があらわれる。

まず今のサーバ・OSでは、ジャーナル機能があるファイルシステムは当たり前である。Linuxの初期段階で採用されていたファイルシステムは ext2 で、このext2ファイルシステムには「ジャーナル機能」がなかった。WindowsのサーバOSである WindowsNTでも「ジャーナル機能」がなかった気がする。たしかWindows2000からだったように記憶している。(間違っていたらごめんなさい)

ファイルシステム ジャーナル機能とは ( wikipedia より )

重要なデータを扱うシステムにおいて、細分化されたファイルや大規模なファイルなどの更新を行う際、ファイルシステムのメタデータ書き換え処理において比較的長い時間が必要となり、その書き換え中に電源断や処理中断が発生した場合、ファイル構成情報に矛盾が発生し、最悪データへのアクセスが不可能となってしまう。 このような状況を避けるため、UNIXでいうinode情報やWindowsのSuperBlock、FNODEといったファイルシステム上のメタデータを書き換え処理(トランザクション)単位で管理・保持する事ができる機能を持ったファイルシステムのことである。

現状 Linuxのファイルシステム

いまのLinuxシステムの中心のファイルシステムは、ext3, ext4, ReiserFS, XFS となていて、それぞれ 「ジャーナル機能」を持ち合わせている。Linuxシステムでは、いろいろなファイルシステムを選択・組み合わせできる。これはLinuxカーネルが様々なファイルシステムをサポートしているからである。

それに対してWindowsシステムではジャーナル機能あり NTFS のみである。Windowsはこの10数年間、ファイルシステムはほとんど進化していない状況だ。(少しづつ機能追加はある)これだけ普及・販売されているWindowsなのに、最大手のマイクロソフトなのに、なぜファイルシステムが進化しないのか? つまりそれだけ ファイルシステムを開発することはメチャ大変ということなのだ。

現在のLinuxシステムの標準的なファイルシステムは、ext3 ext4であり、私の関わるサーバ・システムもほぼこれである。 ReiserFS や XFS を使ったケース・案件もあったが、何せファイル管理ツール・修復ツール(コマンド)が今一であるし、ext3, ext4 のジャーナルはほとんど管理不要な状況だ。たぶんこれが普及の要因ではないかと思う。ReiserFS では電源をダウンして起動すると、あれやこれやと大変だった経験がある。

しかし、その ext3, ext4 ファイルシステムにも不満点がいくつかある。大きなものとして、ファイルシステム・チェック(ファイルの整合性などの検査 fsck)で時間がかかること、その検査時間はファイル格納容量・ディスク容量に応じて、時間が増加する。また、このfsckは、マウント状態(オンライン)では完全に実行できないこと。つまり私自身これが不満である。

btrfs ファイルシステムとは?

さてやっと本題の「btrfs ファイルシステム」についてである。

Btrfs について、いろいろ文献を探ってみると、大きな特徴として 「 Btrfsは耐障害性、修復機能や容易な管理に焦点を合わせている 」 ということである。以下に実装済みな機能及び開発中(開発予定含む)の特徴を抜粋してみる。

  • オンラインであるファイルシステム上でチェック検査できる
    つまりマウントしている状態で検査できる。しかもデータとメタデータのチェックサム(整合性)が強力とのこと。
  • メタデータやデータを直接上書きしないコピーオンライト
    通常ファイルの保存は、同じ場所(ブロック)に上書き保存します。これだとイザと言うときの配慮がむずかしく、私もケースバイケースでデータ保存に気を使っていました。(理由は長くなるので省略)いままで、cpコマンドやrsyncコマンド、そしてソフトウェア(例えばエディタの保存)によっては、ファイルデータを保存場所(ブロック)を上書きしない方法がありましたが、ファイルシステムが管理してくれればオペレータや管理者が気にする必要なし。
  • スナップショットの取得機能 (スナップショットからのスナップショットも可能)
    オンラインまたは書き込み動作の状態で、ある一定時点でのスナップショットをとれるのはいい。
  • インクリメンタル的なミラーリングやコピー
    増分・差分のバックアップ機能で、LVMでも実現されているが、ファイルシステム自体にあると魅力的。
  • ext3, ext4 からBtrfsへの変換と、アップグレード時点への逆変換
    まあ、移行しやすいのと、NGならまた元のext3, ext4へもどせるは現実的。
  • SSD(ソリッドステートドライブ)の最適モード
    Linuxカーネルでは、より高速なストレージコントローラやSDDを使うにあたって、デフォルトでは最適になっていない。でもWindowsよりデフォルトでも断然いいですよ。
  • いくつかのRAID構成をサポート(RAID-0, RAID-1, RAID-10 などの構成ができる)
    いままではLinuxカーネルのmd(デバイス・マッパー)で実現していたが、ファイルシステム内で実現すると楽だよね。
  • inodeを固定的に事前につくらない
    つまりフォーマット時に作成するでなく、動的に作成し最大ファイル数の制限がなくなる。

btrfs は オラクルが開発している

上記であげた機能は btrfs 特徴の一部で、まだまだ優位な機能があります。 btrfsは、オラクルが開発している 「本採用する前段階」 としているようです。 このような高機能かつ安全重視なファイルシステムがOSS(オープン・ソース・ソフトウェア)で利用できるのは素晴らしいことです。

近い将来 btrfs は Linuxのデフォルトファイルシステムになる可能性が高いと考えています。(これは私の希望であると言った方が正しいかな) しかし、いままでいくつものファイルシステム開発プロジェクトがポシャった事を思えば、実際はどうなるかわからないですよね。

 

関連したページ

nexia access map
x