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

  • 560
    いいね
  • 8
    コメント
この記事は最終更新日から1年以上が経過しています。

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

ファイルシステム 最大ファイルサイズ 最大ボリュームサイズ 説明
ext2 2TiB 16TiB 元祖。
fsckがクソ遅い
ext3 16GiB~2TiB 2TiB~32TiB
【ext2からの追加機能】
ジャーナリング複数のブロックにまたがるディレクトリに対してのツリーベースのディレクトリインデックスオンラインファイルシステムリサイズ(拡張のみ)
【デメリット】
2038年1月18日以降の日付に対応していない。fsckがクソ遅い
ext4 16TiB 1EiB 皆さんご存知、CentOS6でデフォルトで使われていたext4。安定しているのが良い。
【ext3からの追加機能】
最大サブディレクトリ数が32000から無制限にファイルのデータ参照方法がブロックマッピングからエクステントにfsckが20倍の早さに。(だが遅い)ジャーナルにチェックサムを付け信頼向上などなど2514年の日付までサポート
vfat 2GiB 2TiB FATのファイル名が最大11文字である制約を緩和して、最大255(ext2とかと同じ)にした。
WindowsNT/95で採用。USBとかでよく見るよね!
msdos 2GiB 4GiB FAT16ってやつです。
vfatと違ってロングファイルネームが使えません。(8文字+拡張子の3文字 = 11文字まで)
windowsです。
cramfs 16MiB 256MiB 読み込み専用のLinux ファイルシステム
initrdイメージやインストールイメージに使われてる。
minix 64MiB ??? 「実用を目的としない」がポリシー。OSの教材用に設計されたもの。
使う人はいないだろう。。
xfs 8EiB 8EiB CentOS7のデフォルトのファイルシステム。
ext3、ext4からフォーマットせずにxfsへは移行出来ないので、バックアップからリストア必須。
高性能ジャーナリングファイルシステム。
seq read/writeが速い。
【メリット】
割とメモリを食うが、そのメモリを多く消費する事でパフォーマンスを出しているファイルの読み書きが速いSSDやioDriveとの相性がよい
【デメリット】
ディスク上の空き容量を検索するのにファイル削除に時間がかかるなので小さなファイルが多いと遅い。rmで削除したファイルは復元不可能ファイル作成、削除がクソクソ遅いジャーナリングしてるくせに電源落とすと壊れたりするという噂メモリを消費するファイルシステムなので、fsck時に1TBにつき1GB必要。
(修正されたという情報もあります。)
http://xfs.org/index.php/XFS_status_update_for_2010#XFS_status_update_for_January_2010)
btrfs 16EiB 16EiB 特徴は「Btrfsは耐障害性、修復機能や容易な管理に焦点を合わせている」
だが良く落ちると噂のファイルシステム。オラクル製。
そして速いという記事はどこにも書いてないのが不安。遅いという記事はよく見る。
起動が遅いとか、シャットダウンが遅いとか、インストールが遅いとかはよく見かけます。

しかし進歩の期待度が高いので、将来デフォルトになるかもしれないので注目してます。
【メリット】
オンライン(マウントしたまま)でファイルシステムをチェック検査出来る全てのファイルをエクステント(論理アドレス)でアクセスすることにより、1回の処理でアクセス出来るようになった今までは複数のデータブロックのポインターを辿らなければならず、データが大きいと処理が遅かった。スナップショットの取得機能LVMで搭載されてた増分、差分のバックアップ機能ext3,ext4からbtrfsへの変換と逆変換機能SSDへの最適化RAID機能(今まではmd mdadmなどのデバイスマッパーでしか出来なかった。)
【デメリット】
チェック検査出来るが、エラー訂正機能は保持してない。ミラーされたデータが無い場合は入出力エラーとなるので、ファイルシステムの一貫性が微妙。ドキュメントが少ないスナップショットがサブボリューム単位でしか作成できない。サブボリューム毎のディスク使用量が分からないSSDをHDDのキャッシュデバイスとして構成出来ない良く落ちる。不安定。運用実績が少ない。修復ツールのfsckがない。RAID5,0の対応はまだない。
zfs 16EiB 16EiB Sun製。ZFSはBtrfsの機能に似ている。Linux = GPLライセンスZFS = CDDLライセンスなので、ライセンス的に矛盾し、GPLのLinuxにはリンクできない。が、KQ Infotechが工夫して、LinuxでネイティブにZFSを利用出来るようにした。
【btrfsとの違い(メリット)】
ドキュメントがある。
http://jp.fujitsu.com/platform/server/sparcenterprise/technical/document/#zfs
http://docs.oracle.com/cd/E24845_01/html/819-6260/L2ARCやSLOG機能を使う事でSSDをHDDのキャッシュでバイスとして構成出来る。ストレージプールを利用することで、ストレージの管理簡易化RAID5,6,Z,Z2が組める64bitで保護されたチェックサムは100%の確率で訂正してくれる重複ファイル節約機能dedupがある同じpool内ならいくつコピーしても元のファイル分しか消費しない。全てのブロックのハッシュをメモリ上に持っていて、そこから同じファイルか判断している。
【btrfsとの違い(デメリット)】
導入実績が少ない。あとメモリを食うという噂。ストレージプールに一旦追加した物理デバイスは削除できない。ストレージプールの作り直しになる。
(ただしホットスペアおよびミラーにアタッチした冗長分のデバイスを除く)ストレージの残容量が減ると性能が悪化する。kernelアップデートのたびにdkmsでビルドしなおし。

fioでベンチマーク

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