新しいさくらのVPS(v3)でファイルシステムの比較をしてみる

新しくなったさくらのVPS(v3)が欠品を起こすほどに人気で、すごいですね。さくらは安定なので私もよく使います。

CentOSが6になってからext4が標準で入るファイルシステムになりましたが、インストール時にxfsも選択できます。それぞれの特性は仕様から考えることはできますが、仮想環境下ではホストマシンの設定次第でストレージ性能が変わったりするので試してみました。

試験概要:10万個のファイルを作り、「ls」と「ls -l」の速度を確認する

比較対象:ext3、ext4、xfs

結果はext3、ext4はほぼ同じ、xfsがやや優位という感じですが、0.1秒ほどしか変わっていません。もうちょっと差が出ると思ったのですが、やはりやってみないとわからないですね。xfsは故障時の復旧でext4に劣るので、どちらを選択するかは載せるアプリケーション次第になります。

以下は試験内容です。


パーティションはインストール時にそれぞれ切りました。LVM配下になっています。
マウントオプションもインストール時のままとしました。

/dev/mapper/vg_wwwxxxxxx-LogVol04 /opt/ext3               ext3    defaults        1 2
/dev/mapper/vg_wwwxxxxxx-LogVol02 /opt/ext4               ext4    defaults        1 2
/dev/mapper/vg_wwwxxxxxx-LogVol03 /opt/xfs                xfs     defaults        1 2

10万個のファイルを作るスクリプトは次のものになります。0バイトのファイルを作ってもなんなので、1バイト以上入れてみました。

<?php

for ($i = 1; $i <= 100000; $i++) {
`echo $i > $i`;
}

それぞれのパーティションにtestディレクトリを作り、その下で作成しました。ファイル作成時のスピードは次のようになりました。

◆ext3
real    3m17.071s
user    0m52.997s
sys     2m19.586s

◆ext4
real    3m16.484s
user    0m53.057s
sys     2m18.849s

◆xfs
real    3m22.518s
user    0m53.080s
sys     2m25.700s

さて、「ls」と「ls -l」の実行ですが、ネットワーク転送に影響されてはいけないので「time ls > /dev/null」「time ls -l > /dev/null」で実行します。5回実行してrealが1番速いもの、遅いものを無視してのこり3つで平均を取りました。

◆ext3
# time ls > /dev/null
real    0m0.211s
user    0m0.134s
sys     0m0.075s

# time ls -l > /dev/null
real    0m1.269s
user    0m0.481s
sys     0m0.789s

◆ext4
# time ls > /dev/null 
real    0m0.210s
user    0m0.136s
sys     0m0.074s

# time ls -l > /dev/null 
real    0m1.282s
user    0m0.457s
sys     0m0.790s

◆xfs
# time ls > /dev/null 
real    0m0.090s
user    0m0.068s
sys     0m0.021s

# time ls -l > /dev/null 
real    0m1.147s
user    0m0.429s
sys     0m0.717s