SSD硬盘配置最佳实践

企业动态
服务器升级SSD后,速度和性能没有得到应有的提升,原因是没有正确使用SSD,主要是raid、linux、mysql数据库等相关参数没有正确的配置,本文对SSD的相关参数进行了对比性能测试,根据相关资料以及测试结果得出相关结论,了解实用场景以及对应优势。

[[185657]]

一、测试背景

服务器升级SSD后,速度和性能没有得到应有的提升,原因是没有正确使用SSD,主要是raid、linux、mysql数据库等相关参数没有正确的配置,本文对SSD的相关参数进行了对比性能测试,根据相关资料以及测试结果得出相关结论,了解实用场景以及对应优势。

二、测试环境

  • 主机:172.20.166.52
  • Cpu:32 * Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
  • 内存:129G
  • 操作系统:CentOS release 6.6
  • Sysbench:Sysbench 0.5
  • SSD硬盘:800G*6 raid5
  • 主机:172.20.166.23
  • Cpu:32 * Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
  • 内存:129G
  • 操作系统:CentOS release 6.6
  • Sysbench:Sysbench 0.5
  • SSD硬盘:800G*6 raid10 /raid0

三、测试工具及内容

使用Sysbench对相同硬件、软件环境的raid、linux、mysql等相关参数进行io性能测试、mysql性能测试,对比io性能。

IO性能测试Sysbench参数:

MySQL性能测试Sysbench参数:

四、测试结果

1、Linux系统参数测试结果

Linux对比测试参数如下:

对Linux操作系统测试了5组参数,分别如上图表所示,由测试数据可得出如下结论:

  1. 关闭NUMA,对SSD硬盘性能提高较大;
  2. O调度算法采用Deadline和Noop性能差距不大,Noop调度算法性能略高于Deadline;
  3. rotational、read_ahead_kb、rq_affinity参数的调整对SSD硬盘性能几乎没有影响,建议使用默认配置。

2、Raid参数测试结果

Raid对比测试参数如下:

BGI(Background initialization):

开启BGI,创建好Raid阵列后不必等待初始化完成就可以开始使用,比如分区和格式化,但是系统仍然在后台检查磁盘。

对Raid配置测试了4组参数,分别如上图表所示,由测试数据可得出如下结论:

  1. Raid的Write Policy设置为WriteBack,硬盘性能有很大提高,而且性能比较稳定;
  2. Raid的Read Policy设置为ReadAdaptive,硬盘性能略高于Normal;
  3. Raid的IO Policy设置为Direct,性能明显高于Cached;
  4. BGI采用默认配置的30%或者关闭BGI,性能几乎没有变化,建议使用默认配置。

3、Raid0的OP测试结果

OP配置对比如下:

对比测试了不设置OP和设置15%的OP,如上图表所示,由测试数据可得出如下结论:

  1. io测试时线程数小于128时,15%的OP的性能明显高于不设置OP的性能,随着线程数的增加,15%的OP的性能优势逐渐减少,到1024线程时,两者性能很接近。
  2. mysql测试时15%的OP的性能略高于不设置OP的性能,两者性能很接近。

4、MySQL参数测试结果

MySQL对比测试参数如下:

对MySQL测试了5组参数,分别如上图表所示,由测试数据可得出如下结论:

  1. innodb_write_io_threads/ innodb_read_io_threads设置为8性能比较理想;
  2. innodb_log_file_size设置为1536M或者2048M,性能差别不大;
  3. nnodb_io_capacity测试了从500到12000的参数,性能差别不大,设置为3000时出现测试数据的***值,从测试数据观察,该参数设置在2000-8000范围内性能相对理想;
  4. innodb_max_dirty_pages_pct设置为75性能较为理想。

五、LINUX参数测试数据对比

对Linux操作系统测试了5组参数,分别如上图表所示,由测试数据可得出如下结论:

  1. 关闭NUMA,对SSD硬盘性能提高较大;
  2. IO调度算法采用Deadline和Noop性能差距不大,Noop调度算法性能略高于Deadline;
  3. rotational、read_ahead_kb、rq_affinity参数的调整对SSD硬盘性能几乎没有影响。

1、NUMA测试数据对比

1.IO性能测试

2.MySQL性能测试

2、IO调度测试数据对比

1.IO性能测试

2.MySQL性能测试

3.rotational测试数据对比

4.read_ahead_kb测试数据对比

5.rq_affinity测试数据对比

六、RAID参数测试数据对比

涉及到的raid对比测试参数如下:

BGI(Background initialization):

开启BGI,创建好Raid阵列后不必等待初始化完成就可以开始使用,比如分区和格式化,但是系统仍然在后台检查磁盘。

对Raid配置测试了4组参数,分别如上图表所示,由测试数据可得出如下结论:

  1. Raid的Write Policy使用Writeback,硬盘性能有很大提高,而且性能比较稳定;
  2. Raid的Read Policy使用ReadAdaptive,硬盘性能略高于Normal;
  3. Raid的IO Policy使用Direct,性能明显高于Cached;
  4. BGI采用默认配置30%或者关闭BGI,性能几乎没有变化。

1、Write Policy测试数据对比

1.IO性能测试

2.MySQL性能测试

2、Read Policy测试数据对比

1.IO性能测试

2.MySQL性能测试

3.IO Policy测试数据对比

4.BGI测试数据对比

七、Raid0的SSD OP测试数据对比

OP是Over-provisioning(预留空间)的简称,是指用户不可操作的容量,就是留出一部分容量不使用不分区,OP预留的空间一般被用于优化操作。

对比测试了不设置OP和设置15%的OP,分别如上图表所示,由测试数据可得出如下结论:

  1. io测试时线程数小于128时,15%的OP的性能明显高于不设置OP的性能,随着线程数的增加,15%的OP的性能优势逐渐减少,到1024线程时,两者性能很接近。
  2. mysql测试时15%的OP的性能略高于不设置OP的性能,两者性能很接近。

1.IO性能测试

2.MySQL性能测试

八、MySQL参数测试数据对比

涉及到的MySQL对比测试参数如下:

对MySQL测试了5组参数,分别如上图表所示,由测试数据可得出如下结论:

  1. innodb_write_io_threads/ innodb_read_io_threads设置为8性能比较理想;
  2. innodb_log_file_size设置为1536M或者2048M性能较理想,两者性能差别不大;
  3. innodb_io_capacity测试了从500到12000的参数,性能差别不大,设置为3000时出现测试数据的***值,从测试数据观察,该参数设置在2000-8000范围内性能相对理解;
  4. innodb_max_dirty_pages_pct设置为75性能较为理想。

1.innodb_write/read_io_threads测试数据

2.innodb_log_file_size测试数据

3.innodb_io_capacity测试数据

 

4.innodb_max_dirty_pages_pct测试数据

九、相同硬盘数不同raid测试数据对比

使用6块ssd硬盘,分别配置了raid5、raid10、raid0、raid0-15%OP,进行了io混合随机读写性能测试。

Sysbench测试参数:

1、不同Raid对比分析结果

1.硬盘利用率

Raid0的硬盘空间使用率是100%,如果预留15%做OP,空间使用率只有全部硬盘大小的75%;Raid5的空间使用率是(n-1)/n(n是磁盘数量,磁盘数量越多,空间使用率越高);Raid10的硬盘使用率只有50%;硬盘使用率顺序是

  1. Raid0 > raid0-15%OP > Raid5 > Raid10 

2.读写性能

raid0、raid0-15%OP的读写性能明显高于raid5、raid10,raid0-15%OP的性能略高于raid0。

  1. raid0-15%OP > raid0 > raid10 > raid5 

3.稳定安全性

Raid10是最安全稳定的,Raid5提供了一块盘的奇偶检验保证安全,Raid0没有安全保护措施。另外当Raid5一块盘出现故障时候,其性能明显下降。

2、不同Raid测试数据

1.io混合随机读写性能数据

2.一块硬盘故障,raid10和raid5性能变化

十、SSD推荐参数配置

SSD对应linux、raid、mysql推荐参数以及推荐参数设置方法。

1、Linux推荐参数设置

  1. 关闭numa
  2. io调度算法设置为noop
  3. Rotational保持默认值1
  4. read_ahead_kb保持默认值128
  5. rq_affinity保持默认值1

2、Linux推荐参数设置方法

1.关闭numa

进入System BIOS设置,选择Memory设置,选择Node Interteaving为Enable进行关闭numa,如下图所示。

执行命令“numactl --hardware”进行检查,输出结果available: 1 nodes (0)时表示关闭成功,如下图。

2.修改io调度算法noop

执行命令:

  1. echo noop > /sys/block/sda/queue/scheduler 

检查命令:

  1. cat /sys/block/sda/queue/scheduler 

3.Rotational值的调整

执行命令:

  1. echo 0 > /sys/block/sda/queue/rotational 

查看命令:

  1. cat /sys/block/sda/queue/rotational 

4.read_ahead_kb值的调整

执行命令:

  1. echo 0 > /sys/block/sda/queue/read_ahead_kb 

查看命令:

  1. cat /sys/block/sda/queue/read_ahead_kb 

5.rq_affinity值的调整

执行命令:

  1. echo 0 > /sys/block/sda/queue/rq_affinity 

查看命令:

  1. cat /sys/block/sda/queue/rq_affinity 

3、Raid推荐参数设置

  1. 1Write Policy设置为WriteBack(WB)
  2. 2Read Policy设置为ReadAdaptive
  3. 3IO Policy设置为Direct
  4. 4BGI(Background initialization)保持默认设置30%

4、Raid推荐参数设置方法

使用MegaCli命令可以修改Raid参数配置,该命名是官方提供的针对MegaRAID卡的设置命令,如果使用不同品牌Raid卡,可以参照官方提供的命令进行设置。

MegaCli查看Raid参数命令:

查看所有Raid:

  1. MegaCli -LDGetProp -Cache -LALL –aALL 

查看其中一个Raid:MegaCli -LDGetProp -Cache -L1 -a0

MegaCli修改Raid参数命令:

  1. MegaCli -LDSetProp WT|WB|NORA|RA|ADRA -L1 -a0 
  2. or 
  3. MegaCli -LDSetProp -Cached|-Direct -L1 -a0 

1.Write Policy设置为WriteBack命令

MegaCli -LDSetProp WB -L1 -a0

2.Read Policy设置为ReadAdaptive命令

MegaCli -LDSetProp ADRA -L1 -a0

3.IO Policy设置为Direct命令

MegaCli -LDSetProp -Direct -L1 -a0

4.BGI调整方法

进入Device Settings,选择Interated RAID Controller,选择Controller Managent,选择Change Controller Properties,可以修改BGI参数,如下图。

5、SSD的OP推荐设置

推荐保留15%的硬盘空间不进行分区,这部分空间即是OP的保留空间。

设置方法:分区时候保留15%的硬盘空间不进行分区。

4、MySQL推荐参数设置

  1. innodb_write_io_threads/ innodb_read_io_threads推荐设置为8
  2. innodb_log_file_size推荐设置为2048M
  3. innodb_io_capacity推荐设置为3000
  4. innodb_max_dirty_pages_pct设置为75

【本文为51CTO专栏作者“王伟”原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2017-10-20 08:28:51

SSDHDD硬盘

2018-07-31 10:50:05

SSD硬盘场合

2013-06-06 09:33:24

云配置云服务配置云配置实践

2024-01-05 00:33:23

2018-03-19 09:35:24

机械硬盘固态硬盘混合硬盘

2018-07-05 08:54:29

SSDHDD硬盘

2021-03-01 11:55:36

硬盘SSDHHD

2009-09-08 08:21:46

Windows 7固态硬盘

2012-10-10 09:44:47

虚拟桌面基础架构VDI

2009-11-26 10:31:55

配置IPS最佳实践

2017-06-15 12:05:18

2019-12-24 15:16:16

SSD固态硬盘CPU

2011-08-18 11:05:21

jQuery

2023-07-21 01:12:30

Reactfalse​变量

2018-09-05 12:10:07

固态硬盘SSD

2012-06-18 10:29:31

英特尔SSD硬盘

2018-09-18 10:29:44

SSD固态硬盘

2012-08-09 09:10:56

代码审查代码

2011-12-21 13:35:39

JavaJFreeChart

2014-08-19 10:06:53

IAP
点赞
收藏

51CTO技术栈公众号