Ubuntu 12.04時代のファイルシステムの選び方 ext4でいいじゃん編

※2013年1月3日、ext2/3/4を更新。

※2012年11月14日、NTFSの欠点を追加。



行っとけ! Ubuntu道場! ― 第55回 〜師範、Ubuntu 12.04の特徴を教えてください!〜

↑の記事の3ページ目にXFSのことが書いてあった。

hito:むしろXFSが安心して使えるようになることの方が大きいかなぁ。 

hito:XFSって、わりとメモリ食うんですよ。
      で、システム内のメモリがなくなってきたりするとですね……。
      Linux全般でどんな挙動になるでしょう、そこのやまねさん。 

やまね:キャッシュやバッファを始末するために、
        メモリ上に貯めてるものを「追い出す」動作がかかるね。 

hito:で、その「追い出す」先がXFSだったりするわけですね。 

hito:そうすると何が起こるかっつーと、
      「メモリが足りない→XFS領域にデータを書きだそうとする→XFSがメモリを要求する」という……。 

hito:で、そういう挙動はダメだよねーっていう修正がやっと入った。6〜7年ぐらいかかってると思う。
      まあXFSにはもっと前にスタック使い尽くす問題とかもあったんで、
      やっとこさヘビーな使い方ができるかなーという感じ。 

XFSの問題点の話になると、xfs stack overflowが引き合いに出されていたような気がするが、このバグがマシになったという事なのだろうか。

この記事を読んで、Linuxファイルシステムはどれを使えばいいのかを改めて考えてみた。ファイルシステムに関する詳しい知識が無い私の、現時点での印象を纏めると以下のような感じになる。

名前 印象 利点 欠点
Btrfs

開発中

不安定

遅い

ext2

古い

速い

Ext2Fsdを使えばWindowsからアクセスできる

削除したファイルを復元できる(R-Linux

古い

fallocate非対応

ext3

枯れてる

速度はそこそこ

Ext2Fsdを使えばWindowsからアクセスできる

削除したファイルを復元できる(Ext4magicR-Linuxextundelete

fsckが遅い

fallocate非対応

ext4

全体的に結構速そう

バグ多そう

Ext2Fsdを使えばWindowsからアクセスできる

削除したファイルを復元できる(Ext4magicR-Linuxextundelete

色んなディストリのデフォルトファイルシステムなので安心感がある

サイズの小さいファイルは結構断片化しにくい

fallocate対応

デフラグツールがある

ext3よりfsckが速くなっているが、それでも容量が増えると時間がかかる

128MBを超えるような大きなファイルを対象としたfallocateの性能がイマイチで断片化しまくり

遅延確保の性能がイマイチなので大きなファイルは断片化しまくり

JFS
NTFS

共有用

倉庫用

Linuxからも読み込めるし、書き込める

Linuxから書き込むのは今でも何かちょっと不安

Linuxからだと読み書きの速度がちょっと遅い

ReiserFS 枯れてる サイズの小さいファイルに強いらしい? 今あえてコレを選ぶ理由が分からない
Reiser4 ext3よりは速いらしい
XFS

倉庫用

バグ多そう

サイズの大きなファイルに強い

シーケンシャルアクセスが速い

ファイルが断片化しにくい

fallocate対応かつ精度が高い

デフラグツールがある

ダイレクトI/Oの性能が良い

削除したファイルは復元不可能らしい

ランダムアクセスが遅いらしい

ファイルやフォルダの作成/削除が遅いらしい

nfsと組み合わせると駄目とかいうのどこかで見た気がする。もう直ってるかもしれないが。

クラッシュ時の復旧が難しそう

削除したファイルは復元不可能らしい

で、どんな人がどのファイルシステムを使うべきなのか考えるとこうなる。

対象 ファイルシステム
新しもの好き Btrfs
安定志向 ext2ext3
デフォルトのでいいじゃん派 ext4
マルチブート派 NTFS
断片化嫌い
デフラグ好き
128MBよりも大きなファイルを沢山持っている人
XFS
上級者 Btrfs/JFS/NTFS/ReiserFS/Reiser4/XFS

やっぱext4は最強だわ。私は/とバックアップ用外付けHDDはext4、ローカルのデータ置き場はXFSにしようと思う。ってかしてる。あとタイトルは釣り。