Linuxファイルシステムベンチマーク第1回 ext2,ext3,JFS,ReiserFS,XFS,NTFS

ext3ファイルシステムは、機能面・信頼性・性能面で非常にバランスの取れたファイルシステムであり、多数のディストリビューションで「標準のファイルシステム」として採用・サポートされてきました。現時点(2009年時点)では事実上、「Linux標準ファイルシステム」の地位を築いていると言っても過言ではありません。
しかしながら、Linux標準ファイルシステムのext3だけではなく、他ファイルシステムへの対応やサポートを売りにするディストリビューションも数多く登場しています。また、ext4やbtrfs等、次のLinux標準ファイルシステムと目されるファイルシステムも、現在、非常に活発に開発が進められています。
このような状況の中、ext3から他のファイルシステムに乗り換える価値、他のファイルシステムを採用する価値はどの程度あるのでしょうか。ファイルシステムのベンチマークツール「bonnie++」を用いて性能ベンチマークを行い、複数のファイルシステムを性能面から比較してみました。
要旨
- Windowsではファイルシステムの現実的な選択肢はNTFSかFATのみである。これに対して、Linuxでは複数のファイルシステムの中から用途に応じたファイルシステムを選択することができる。
 - Linuxではファイルシステムを選択可能であるにも関わらず、ファイルシステムの選定基準として公開されている情報は少ない。
 - ファイルシステムのベンチマークツール「bonnie++」を用いて、6つのファイルシステム(ext2, ext3, JFS, ReiserFS, XFS, NTFS)の性能ベンチマークを行い、ベンチマーク結果を数値 及び グラフで公開する。
 - シーケンシャルアクセスの性能比較では、XFS、ReiserFSの性能の高さが目立つ結果となった。シーケンシャルアクセスや連続ブロック単位のI/Oを多発するソフトウェア、例えば、OracleやPostgreSQL等のデータベース(DBMS)では、XFS、ReiserFSの採用によってパフォーマンスの向上を期待できる可能性がある。
 - ランダムアクセス 及び メタデータ操作(ファイル削除)の性能比較では、ReiserFSの性能の高さが目立つ結果となった。ランダムアクセスや小さなファイルのI/Oを多発するソフトウェア、例えば、Postfixやqmail等のメールサーバ(MTA)では、ReiserFSの採用によってパフォーマンスの向上を期待できる可能性がある。
 
ベンチマーク実行条件
ベンチマーク実行環境
- HP DL360 G4
Xeon 3.0GHz 1MB L2
1GB Memory , PC2700
36GB 15K HDD * 1 , Ultra 320 SCSI (型番:BF03688284) - Ubuntu 9.04 (2.6.28-11-generic #42-Ubuntu SMP)
 - bonnie++ 1.03c
 
対象ファイルシステム
今回の性能ベンチマークでは、次のファイルシステムを対象としました。なお、各ファイルシステムのmount時にマウントオプションは指定せず、デフォルト値でmountしています。(マウントオプションの性能面での最適化は、今後の課題です。)
- ext2
 - ext3
 - ext4 (※ bonnie++ 実行中に毎回OSがフリーズするため中止)
 - JFS
 - ReiserFS
 - XFS
 - NTFS
 
bonnie++ 実行時のコマンド、実行結果の集計方法
- apt-get で bonnie++ をインストール
 
$ sudo apt-get install bonnie++
$ bonnie++ -d /mnt/filesystem/tmp/ -n 256:0:0:1
-nオプションを「-n 256:0:0:1」と指定して、「ファイル数 256*1024、ファイルサイズ 0byte、ディレクトリ数 1」の条件下で、メタデータ操作のベンチマークを実行する。
 (参考 : bonnie++の使用方法 )
合計10回 実行して、最大・最小の結果それぞれ1回分を除く 計8回の平均値を算出する。
ベンチマーク結果
シーケンシャルアクセス

  
ランダムアクセス

  
メタデータ操作 1 (ファイル作成、ファイル削除)

  
メタデータ操作 2 (ファイル情報の取得)

  
集計値
| FileSystem | mount options  | Sequential Output | Sequential Input | Random Seeks  | |||
| Per Chr | Block | Rewrite | Per Chr | Block | |||
| K/sec | K/sec | K/sec | K/sec | K/sec | /sec | ||
| ext2 | - | 43,630 | 74,885 | 31,829 | 43,325 | 66,891 | 597 | 
| ext3 | - | 39,929 | 70,167 | 32,916 | 44,179 | 72,345 | 536 | 
| JFS | - | 42,014 | 83,196 | 41,277 | 44,659 | 89,911 | 514 | 
| ReiserFS | - | 38,262 | 90,913 | 40,582 | 43,567 | 88,775 | 660 | 
| XFS | - | 41,850 | 93,272 | 41,646 | 44,463 | 91,186 | 619 | 
| NTFS | - | 19,381 | 35,454 | 20,675 | 37,864 | 75,044 | 325 | 
| FileSystem | mount options  | Sequential Create | Random Create | ||||
| Create | Read | Delete | Create | Read | Delete | ||
| /sec | /sec | /sec | /sec | /sec | /sec | ||
| ext2 | - | 188 | >524288 | 141,614 | 190 | 469,041 | 438 | 
| ext3 | - | 35,081 | 348,542 | 2,658 | 23,846 | 470,084 | 1,753 | 
| JFS | - | 1,362 | 455,949 | 456 | 284 | 470,290 | 193 | 
| ReiserFS | - | 7,422 | 404,339 | 6,300 | 6,703 | 466,460 | 2,064 | 
| XFS | - | 1,970 | 498,198 | 4,493 | 1,880 | 432,738 | 699 | 
| NTFS | - | 3,027 | 5,950 | 4,384 | 3,724 | 6,437 | 1,484 | 
ベンチマーク結果考察
- シーケンシャルアクセスの性能比較では、XFS、ReiserFSの性能の高さが目立つ結果となりました。シーケンシャルアクセスや連続ブロック単位のI/Oを多発するワークロードに対しては、XFS、ReiserFSの採用によって性能向上を期待できる可能性があります。
シーケンシャルアクセスや連続ブロック単位のI/Oを多発するソフトウェアの代表格は、OracleやPostgreSQL等のデータベース(DBMS)です。
 - ランダムアクセス 及び メタデータ操作(ファイル削除)の性能比較では、ReiserFSの性能の高さが目立つ結果となりました。ランダムアクセスや小さなファイルのI/Oを多発するワークロードに対しては、ReiserFSの採用によって性能向上を期待できる可能性があります。
ランダムアクセスや小さなファイルのI/Oを多発するソフトウェアの代表格は、Postfixやqmail等のメールサーバ(MTA)です。
 
補記事項
- ext4では、bonnie++で-nオプションを「-n 256:0:0:1」と指定すると、「Create files in sequential order…」のベンチマーク実行中にOSがフリーズしてしまいます。(スローダウンではなく、完全なフリーズが発生します。)
ファイルシステムの再作成を行った上で、計4回繰り返して実行したのですが、OSのフリーズは必ず発生しました。どうやら、1ディレクトリ配下の作成ファイル数が1,900を超えるあたりから、OSのハングアップが発生する可能性があるようです。
 - 本ベンチマークの実行時には、「1日・1ファイルシステム」と「計5回まで」を実行対象の上限に設定しました。そして、間には必ずサーバをシャットダウンした上で、12時間以上のクーリング期間を設けています。これは、HDDが高熱になることによるH/W故障を避けるためと、HDDへの連続した負荷掛けによって次第にHDDが“タレる”(I/O性能が下がる)ことを防ぐためです。
 - 私は経験的に、HDDには「機嫌が良い日/機嫌が悪い日」があることを知っています。環境条件を可能な限り揃えたとしても、ベンチマークの実行結果に±20%程度の誤差が生じることはよくあることです。
本ベンチマークの実施時には、誤差による影響を可能な限り低減しようとしましたが、その苦労にも関わらず、本ベンチマークの実行結果は完全と呼べる代物ではありません。皆様の環境では、たとえそれが本ベンチマークの実行環境に非常に類似した環境であったとしても、異なったベンチマークの実行結果が出る可能性があることに十分留意して下さい。
 - Windows OSからNTFSを扱う場合には、全く異なった性能特性を示す可能性があります。
「Linux 対 Windows」の議論に対して、本ベンチマークの実行結果は意味を持ちません。 
関連記事
Linuxファイルシステムベンチマーク第2回 ext3,ext4,JFS,ReiserFS,XFS,NILFS2
 Linux Tips – bonnie++の使用方法
 HDDベンチマーク手順+性能測定結果一覧 (hdparm,dd,bonnie++)
 Linuxファイルシステム比較 – ディスク容量使用効率編
 RAMディスク(/dev/shm)のIO性能をチューニングに活用する方法
 SSD I/Oブロックサイズの調整によるチューニング効果検証 (DC S3700編)
  
 「Linux」カテゴリーの記事一覧
参考になるサイト
SUSE Linux Enterprise – Linuxファイルシステムの概要
 SUSE Linux Enterpriseでサポートされているファイルシステムに関する説明ページ。
 ext3、ReiserFS、XFS、BtrFS、OCFS2、各ファイルシステムの推奨用途が記載されている。
@IT – Linuxファイルシステム技術解説
 ext3、ReiserFS、JFS、XFS、各ファイルシステムについてそれぞれの特徴を実装面から詳細に解説。
Open Tech Press – Linuxのファイルシステムとファイルの概要
 Linuxで選択可能なファイルシステムの中から、適切なファイルシステムを選択するポイントを解説。
MIRACLE LINUX – XFSとExt3では、実際どれくらいパフォーマンスに差があるのでしょうか?
 XFSとext3のパフォーマンス比較グラフを掲載。ベンチマークツールにbonnie++を使用している。





