固态硬盘上 Ext4 和 xfs 性能比较

红薯 发布于 2012/03/16 10:25
阅读 6K+
收藏 3

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” 模式,然后获得如下数据:

  • ext4 4 threads: 120 MiB/sec
  • xfs 4 threads: 97 MiB/sec

这是在 ext4 和 xfs 上运行 MySQL 性能测试的结果。

实际上,线程数并没有显著的影响测试的结果,这也就解释了我之前的一个疑问:如果我的 MySQL 5.5 启用 async IO,那么 innodb_write_io_threads 参数还重要吗?看起来不重要。在这里我还是使用两个或四个线程来做测试,以避免过度调度的问题。

从结果上看,在固态硬盘上似乎 Ext4 是一个更好的选择,在吞吐量上比 xfs 提升了 20%。

用于测试的脚本:

for size in 100
do

cd /mnt/stec
sysbench --test=fileio --file-num=1 --file-total-size=${size}G prepare
sync
echo 3 > /proc/sys/vm/drop_caches

for numthreads in 4
do
sysbench --test=fileio --file-total-size=${size}G --file-test-mode=rndwr --max-time=3600 --max-requests=0 --num-threads=$numthreads --rand-init=on --file-num=1 --file-extra-flags=direct --file-fsync-freq=0 --file-io-mode=sync --file-block-size=16384 --report-interval=10 run | tee -a run$size.thr$numthreads.txt
done
done

英文原文,OSCHINA原创翻译

加载中
1
C
ChenElton

引用来自“CheckStyle”的答案

引用来自“ZhiWei”的答案

SSD的性能相当的有诱惑力.
但我一直很担心它的寿命问题. 从来不敢推荐生产环境中使用.

如果谁有在生产环境中用过SSD, 快来分享一下经验吧!

没见过哪个企业的关键核心数据放SSD的..

希望有人来分享经验

SSD的企业级应用有好几种类型,
第一种是现在用的比较多的存储分层,在大部分主流存储厂商的产品线上都能找到对应产品,相当于你在控制器数据缓存与硬盘阵列之间多了一层缓存,这个方案已经很成熟也很普及;
第二种是SSD存储磁盘阵列,这种产品尚不多,也不是很普及,个人也比较担心热点写盘之类的问题
第三种是服务器内配置的两种SSD产品,在生产环境内我见过其中一种,因为是走PCIE总线,IOPS高的变态,主要是用于一些数据挖掘类的应用

企业级的SSD产品和民用不同,一般是采用SLC芯片,本身使用寿命就要远高于民用的MLC芯片,而且如果你们有注意,企业级的产品的容量和民用的相比非常奇怪,这是因为有大量的冗余芯片,以保证数据的安全
雷志伟
雷志伟
感谢分享!
0
雷志伟
雷志伟
SSD的性能相当的有诱惑力.
但我一直很担心它的寿命问题. 从来不敢推荐生产环境中使用.

如果谁有在生产环境中用过SSD, 快来分享一下经验吧!
中山野鬼
中山野鬼
加大内存。相对会降低SSD的写入次数。
雷志伟
雷志伟
@lanefox @柴君钧 : 感谢分享!
柴君钧
哪有什么寿命问题,驱动可以解决坏块的问题。从flash卡到ssd,从slc到mlc,用了5年了。而且现在驱动对写做了优化了。一代的slc版本的flash卡一写读就废了。
lanefox
lanefox
VMAX的存储分层,SSD作为前端
0
水果世界
哦!谢谢知道了
0
CheckStyle
CheckStyle

引用来自“ZhiWei”的答案

SSD的性能相当的有诱惑力.
但我一直很担心它的寿命问题. 从来不敢推荐生产环境中使用.

如果谁有在生产环境中用过SSD, 快来分享一下经验吧!

没见过哪个企业的关键核心数据放SSD的..

希望有人来分享经验

0
幻想狂
幻想狂

引用来自“CheckStyle”的答案

引用来自“ZhiWei”的答案

SSD的性能相当的有诱惑力.
但我一直很担心它的寿命问题. 从来不敢推荐生产环境中使用.

如果谁有在生产环境中用过SSD, 快来分享一下经验吧!

没见过哪个企业的关键核心数据放SSD的..

希望有人来分享经验

淘宝有吧
CheckStyle
CheckStyle
核心交易?支付宝这种的也用?God!..
0
星仔小号
星仔小号
淘宝就用的SSD,效果很好的,而且是用在核心系统。
0
BlueStragglers
BlueStragglers
生产环境一般都会组Raid的,成本可以接受的话,问题应该不大
CheckStyle
CheckStyle
@柴君钧 : 恩,有一次维护Team居然忘了电池的事情..写入数据丢失,那真叫悲剧
柴君钧
raid卡的平均故障率太高。现在的趋势是直连。 raid的充放电也有导致服务拒绝的风险
0
皮总
皮总
ssd 拿来做 cache 应该效果很好 ~~
0
宏哥
宏哥
看起来似乎SSD不适合可靠一点的存储.
返回顶部
顶部