パフォーマンス評価
今回のBonnie++(翻訳記事)を使ったSSDのパフォーマンス測定では、XFSとext3の両方のファイルシステムを利用した。比較対象としては、750GB HDDによるシングルドライブ構成と、同じドライブ6台によるパリティ方式のRAID構成の測定結果を用いた。これらのテストは2.2GHzのAMD Athlon X2プロセッサ搭載マシンで実施し、SSDは外付けの筐体に収めてeSATAインタフェースを介してこのマシンに接続した。
Bonnie++でのテストには、mkfs.ext3にパラメータを追加せず、マウントパラメータも指定しないext3ファイルシステム(ext3default)を利用した。また、ファイルシステムのパラメータはデフォルトのままだがマウント時に「data=writeback,nobh」オプションを指定した条件(ext3wbnobh)も用意した。このwritebackオプションは、電源が突然絶たれた場合のデータ保全を犠牲にしてスループットをわずかに向上させる。データのジャーナリングモードはデフォルトでorderedになっており、このモードではメタデータが更新される前にファイルデータがメインファイルシステムに書き込まれる。writebackモードを使うと、ファイルシステムへのデータの書き込みがメタデータの更新よりも前になったり後になったりするため、クラッシュや電源故障が発生した場合にはメタデータが最新でもファイルのデータは古いままになってしまう可能性がある。orderedとwritebackのどちらのモードでも、内部ファイルシステムの完全性は保証される。
nobhオプションについては、カーネルに付属するext3.txtファイル内に、バッファの先頭とデータページとの対応付けに関係しているとの説明がある。カーネル側の詳細はさておき、ext3.txtの最後の行には、nobhはwritebackモードでのみサポートされると記されている。よって、今回writebackモードを使用する際には、nobhオプションも合わせて指定している。
XFSファイルシステムでのテストでは、ファイルシステムの作成時に「-l lazy-count=1」というパラメータを使用し、「nobarrier」オプションを指定してマウントを行った。XFSファイルシステムの作成時に「lazy-count」オプションを「1」に設定しておくと、カウンタ情報の一部がスーパーブロックではなくファイルシステム全域に分散して保存される。こうした情報のすべてをスーパーブロック内に置いておくと、スーパーブロック自体のアップデートによってメタデータ操作の速度が低下する可能性がある。
XFSファイルシステムは、ディスクのバリアを使って、トランザクション終了時にファイルシステムのジャーナルをディスクにフラッシュしようとする。そのため、ファイルの作成や削除など、ジャーナルを使用する操作の実行時には、ファイルシステムのパフォーマンスが大きな影響を受ける場合がある。XFSファイルシステムでnobarrierマウントオプションを指定すると、こうしたディスクへのジャーナルの強制フラッシュが無効になる。予期せぬ電源遮断が発生しない環境でXFSファイルシステムを使うのであれば、このnobarrierオプションを指定することによって、ジャーナルの移行が不完全に行われる危険性なしにパフォーマンスを向上させることができる。
試しにバリアを有効にしてベンチマークを実行してみたところ、ファイルのメタデータ操作(作成、削除、statによる情報取得)に関する拡張テストの実行にあまりにも時間がかかるので、途中でベンチマークの実行を中止した。よって、以降ではlazy-countとnobarrierの各オプションを指定したXFS(xfslcnb)でのベンチマーク結果を紹介する。ディスクの動作回数を見るかぎり、XFSでバリアを有効にすると、ファイルのメタデータ操作に関するテストの実行速度は約10分の1になるようだ。
