使用软Raid 发挥多块SSD硬盘的性能并提升数据安全性
2014-06-16 17:00
459 查看
磁盘IO的瓶颈已经很多年了,随着SSD硬盘技术日益成熟、成本的逐步下降,越来越多公司开始在服务器上使用SSD硬盘。
自打去年给笔记本加了一块mSata接口的SSD之后,整个系统性能的提升无以言表!
单块SSD的性能已经非常好了,若没有Raid则数据安全性无法保证。但使用普通的Raid卡跑SSD硬盘,瓶颈会压在Raid卡上。既要性能好、又要数据安全,可以选择高大上的:PCIE接口的固态硬盘(SSD)或闪存卡(FlashCard)。
有没一种亲民方案呢?答案就是软Raid,比如Linux下的 mdadm v3.2.5。
下图是在 CentOS 6.4 x86_64 结合 fio v2.1.4-8-g3e26,结出不同Raid结合下的iops测试结果:
结论如下:
1、软Raid可以发挥多个SSD的性能,盘越多性能越好(目前只测试了最多5块盘)
2、Raid0 的性能最佳,但安全性最差
3、Raid5 的写性能较差,导致混合读写时性能被拖跨
4、Raid10 是性能、容量、数据安全 综合最优的方案
测试脚本如下:
#!/bin/bash -x yum -y install fio mdadm xfsprogs mkdir -pv /ssd umount /ssd mdadm -S /dev/md0 yes | mdadm -C /dev/md0 -a yes -l 0 -n 5 --assume-clean /dev/sd{b,c,d,e,f} mkfs.xfs -f /dev/md0 mount /dev/md0 /ssd rm -fv /tmp/fio-*.txt cat /proc/mdstat mdadm -D /dev/md0 fio --bs=512 --ioengine=libaio --userspace_reap --time_based --runtime=600 --group_reporting --buffered=0 --direct=1 --randrepeat=0 --norandommap --ramp_time=6 --iodepth=16 --numjobs=16 --size=100G --directory=/ssd --name=randread --rw=randread --filename=fio-test.file --output=/tmp/fio-r.txt #随机读 fio --bs=512 --ioengine=libaio --userspace_reap --time_based --runtime=600 --group_reporting --buffered=0 --direct=1 --randrepeat=0 --norandommap --ramp_time=6 --iodepth=16 --numjobs=16 --size=100G --directory=/ssd --name=randwrite --rw=randwrite --filename=fio-test.file --output=/tmp/fio-w.txt # 随机写 fio --bs=512 --ioengine=libaio --userspace_reap --time_based --runtime=600 --group_reporting --buffered=0 --direct=1 --randrepeat=0 --norandommap --ramp_time=6 --iodepth=16 --numjobs=16 --size=100G --directory=/ssd --name=randmixed --rwmixwrite=20 --rw=randrw --filename=fio-test.file --output=/tmp/fio-m.txt # 8:2混合读写 grep --color iops /tmp/fio-*.txt
需要注意的是,软Raid默认不会开机自动加载,需要手动生成配置文件。
mdadm --verbose --detail --scan > /etc/mdadm.conf # ARRAY /dev/md0 level=raid0 num-devices=5 metadata=1.2 name=ssd.higkoo.org:0 UUID=0dfa7417:13c1622d:1dca1dfe:12a0e0f4 # devices=/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde,/dev/sdf
"/etc/mdadm.conf"的详细说明可以查看帮助或“rpm -ql mdadm | grep "mdadm.conf"”给的示例文件作参考。
然后将Raid分区写入到 fstab 中,可以使用 /dev/md0 或者 `ls -l /dev/disk/by-uuid` 查看其 uuid。写入一些数据,然后重启、验证。大功告成!
相关文章推荐
- 使用软Raid 发挥多块SSD硬盘的性能并提升数据安全性
- 使用ADO.NET2.0提升数据交互性能(1)
- 使用ADO.NET2.0提升数据交互性能(1)
- 缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能
- 从源码解读Mysql 5.7性能和数据安全性的提升
- 使用ADO.NET2.0提升数据交互性能(1)
- 使用ADO.NET2.0提升数据交互性能 DataSet 数据表
- OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)
- 使用原始的Titanic数据,通过特征筛选,一步步提升性能(特征如何提取)
- 使用ADO.NET2.0提升数据交互性能(2)
- 使用ADO.NET2.0提升数据交互性能 使用SqlBulkCopy批量写入数据库
- 使用ADO.NET2.0提升数据交互性能(5)
- OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)
- [转贴]使用ADO.NET2.0提升数据交互性能(http://dotnet.chinaitlab.com/ADONET/739268.html)
- 使用ADO.NET2.0提升数据交互性能(3)
- Java - 使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?
- 使用ADO.NET2.0提升数据交互性能
- 从源码解读Mysql 5.7性能和数据安全性的提升
- 从源码解读Mysql 5.7性能和数据安全性的提升
- OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)