Ext4 已经成为很多新版本 Linux 系统的标配文件系统,很多人问我,在 SSD 上是使用 Ext4 好呢,还是其他文件系统。
一般我们推荐 xfs ,但它牵扯到 ext3 中已有的一些问题:在 O_DIRECT 模式下每个 i 节点序列化问题(请看 Domas’s post)
但我最近做了一个性能测试发现,xfs 已经不再是最佳选择了。尽管这个测试还比较早期,但我希望先跟大家分享下。
我使用 STEC SSD 固态硬盘,容量 200GB SLC SATA
尽管 ext4 在 O_DIRECT 下仍有问题,下面是 O_DIRECT 模式下单个文件传输的速率 (sysbench fileio 16 KiB 块大小,随机写的负载):
ext4 1 thread: 87 MiB/sec
ext4 4 threads: 74 MiB/sec
xfs 4 threads: 97 MiB/sec
上面的结果可以看出 Ext4 下 4 个线程的性能反而下降的问题,因此还是存在争用问题。
据说 ext4 设置了参数 dioread_nolock 能解决这个争用问题,但这个参数在我的 CentOS 6.2 上不可用,因此没法测试。
从这点来看,xfs 的确仍是最佳选择,但你还需要考虑更多方面的情况。
继续我们的测试:
启用 MySQL 5.1 + InnoDB-plugin ,然后是 MySQL 5.5 (或者 Percona Server 5.1 and 5.5), InnoDB 在 Linux 上使用 “asynchronous” IO.
我们用 sysbench 来测试 “async” 模式,然后获得如下数据