Linuxファイルシステムをまとめてみました

2014/8/14のファイルシステム動向をまとめてみました。

| ファイルシステム |最大ファイルサイズ|最大ボリュームサイズ|説明|
|:-----------:|:------------:|:------------:|:------------|
|ext2|2TiB|16TiB|元祖。<br>fsckがクソ遅い|
|ext3|16GiB~2TiB|2TiB~32TiB|<dl><dt>【ext2からの追加機能】</dt><li>ジャーナリング</li><li>複数のブロックにまたがるディレクトリに対してのツリーベースのディレクトリインデックス</li><li>オンラインファイルシステムリサイズ（拡張のみ） </li></dl><dl><dt>【デメリット】</dt><li>2038年1月18日以降の日付に対応していない。</li><li>fsckがクソ遅い</li></dl>|
|ext4|16TiB|1EiB|皆さんご存知、CentOS6でデフォルトで使われていたext4。<b>安定しているのが良い。</b><dl><dt>【ext3からの追加機能】</dt><li>最大サブディレクトリ数が32000から無制限に</li><li>ファイルのデータ参照方法がブロックマッピングからエクステントに</li><li>fsckが20倍の早さに。（だが遅い）</li><li>ジャーナルにチェックサムを付け信頼向上などなど</li><li>2514年の日付までサポート</li></dl>
|vfat|2GiB|2TiB|FATのファイル名が最大11文字である制約を緩和して、最大255（ext2とかと同じ）にした。<br>WindowsNT/95で採用。USBとかでよく見るよね！|
|msdos|2GiB|4GiB|FAT16ってやつです。<br>vfatと違ってロングファイルネームが使えません。（8文字+拡張子の３文字 = 11文字まで）<br>windowsです。|
|cramfs|16MiB|256MiB|読み込み専用のLinux ファイルシステム<br>initrdイメージやインストールイメージに使われてる。|
|minix|64MiB|???|「実用を目的としない」がポリシー。OSの教材用に設計されたもの。 <br>使う人はいないだろう。。|
|xfs|8EiB|8EiB|<b>CentOS7のデフォルトのファイルシステム。</b><br>ext3、ext4からフォーマットせずにxfsへは移行出来ないので、バックアップからリストア必須。<br> 高性能ジャーナリングファイルシステム。<br><b>seq read/writeが速い。</b><dl><dt>【メリット】</dt><li>割とメモリを食うが、そのメモリを多く消費する事でパフォーマンスを出している</li><li>ファイルの読み書きが速い</li><li>SSDやioDriveとの相性がよい</li></dl><br><dl><dt>【デメリット】</dt><li>ディスク上の空き容量を検索するのにファイル削除に時間がかかる</li>なので小さなファイルが多いと遅い。</li><li>rmで削除したファイルは復元不可能</li><li>ファイル作成、削除がクソクソ遅い</li><li>ジャーナリングしてるくせに電源落とすと壊れたりするという噂</li><li>メモリを消費するファイルシステムなので、fsck時に1TBにつき1GB必要。<br>（修正されたという情報もあります。）<br>http://xfs.org/index.php/XFS_status_update_for_2010#XFS_status_update_for_January_2010）</li></dl>|
|btrfs|16EiB|16EiB| 特徴は<b>「Btrfsは耐障害性、修復機能や容易な管理に焦点を合わせている」</b><br>だが良く落ちると噂のファイルシステム。オラクル製。<br>そして<b>速いという記事はどこにも書いてないのが不安。</b>遅いという記事はよく見る。<br>起動が遅いとか、シャットダウンが遅いとか、インストールが遅いとかはよく見かけます。<br><br>しかし進歩の期待度が高いので、将来デフォルトになるかもしれないので注目してます。<dl><dt>【メリット】</dt><li>オンライン（マウントしたまま）でファイルシステムをチェック検査出来る</li><li>全てのファイルをエクステント（論理アドレス）でアクセスすることにより、１回の処理でアクセス出来るようになった</li><li>今までは複数のデータブロックのポインターを辿らなければならず、データが大きいと処理が遅かった。</li><li>スナップショットの取得機能</li><li>LVMで搭載されてた増分、差分のバックアップ機能</li><li>ext3,ext4からbtrfsへの変換と逆変換機能</li><li>SSDへの最適化</li><li>RAID機能（今まではmd mdadmなどのデバイスマッパーでしか出来なかった。）</li></dl><br><dl><dt>【デメリット】</dt><li>チェック検査出来るが、エラー訂正機能は保持してない。</li><li>ミラーされたデータが無い場合は入出力エラーとなるので、ファイルシステムの一貫性が微妙。</li><li>ドキュメントが少ない</li>スナップショットがサブボリューム単位でしか作成できない。</li><li>サブボリューム毎のディスク使用量が分からない</li><li>SSDをHDDのキャッシュデバイスとして構成出来ない</li><li>良く落ちる。不安定。</li><li>運用実績が少ない。</li><li>修復ツールのfsckがない。</li><li>RAID5,0の対応はまだない。</li></dl>|
|zfs|16EiB|16EiB|Sun製。ZFSはBtrfsの機能に似ている。<li>Linux ＝ GPLライセンス</li><li>ZFS =  CDDLライセンス</li>なので、ライセンス的に矛盾し、GPLのLinuxにはリンクできない。が、KQ Infotechが工夫して、LinuxでネイティブにZFSを利用出来るようにした。<dl><dt>【btrfsとの違い(メリット)】</dt><li>ドキュメントがある。<br>http://jp.fujitsu.com/platform/server/sparcenterprise/technical/document/#zfs<br>http://docs.oracle.com/cd/E24845_01/html/819-6260/</li><li>L2ARCやSLOG機能を使う事でSSDをHDDのキャッシュでバイスとして構成出来る。</li><li>ストレージプールを利用することで、ストレージの管理簡易化</li><li>RAID5,6,Z,Z2が組める</li>64bitで保護されたチェックサムは100%の確率で訂正してくれる</li><li>重複ファイル節約機能dedupがある</li><li>同じpool内ならいくつコピーしても元のファイル分しか消費しない。</li><li>全てのブロックのハッシュをメモリ上に持っていて、そこから同じファイルか判断している。</li></dl><br><dl><dt>【btrfsとの違い(デメリット)】</dt><li>導入実績が少ない。</li><li>あとメモリを食うという噂。</li><li>ストレージプールに一旦追加した物理デバイスは削除できない。ストレージプールの作り直しになる。<br>（ただしホットスペアおよびミラーにアタッチした冗長分のデバイスを除く）</li><li>ストレージの残容量が減ると性能が悪化する。kernelアップデートのたびにdkmsでビルドしなおし。</li>|


#fioでベンチマーク
こちらをご参考ください。ext4,xfs,btrfs,zfsでベンチマークしてます。
http://qiita.com/sion_cojp/items/bef955bba3dbf9d603f8