H3C案例查看:H3C R590G2服务器,P440/P840阵列卡中的smart path功能介绍...
首先先来了解下,什么是smart path
Smart Path的技术介绍:
在传统的IO传递中,一个IO请求需要经过驱动,再经过阵列卡固件控制,通过阵列卡写到硬盘上
SSD Smart Path是一个在SSD上开启优化路径的一种技术,通过绕过Smart Array固件的方式直写硬盘,取代传统的IO传递方式
Smart Path是smart array阵列卡软件堆栈,换句话说就是HPE Smart Array的驱动,部署在直连储存上(direct-attached storage)
SSD Smart Path主要用途是处理小的IO请求,通常来说,小的IO写请求会在任何的RAID level上开启,而小的IO读请求是在RAID0上开启。
相比普通IO path是处理大的IO请求和其他大部分写场景。
- 当一个IO请求通过HPE SSD Smart Path读写时有error,则请求会尝试通过normal IO Path进行读写。
- 当逻辑卷处于扩充、重建、重配或RAID级别迁移时,所有的IO读写请求都将转移到normal IO path处理,而不经过smart path。
开启smart path的前提要求:
1. 要求在HPE ProLiant Gen8以上的类型的服务器上
2. 一定是在SSD硬盘组成的逻辑卷上
3. 最新的Smart Array Controller的固件
4. 最新的Smart Array的驱动
5. Smart Array Controller必须有cache Module缓存模块
开启smart path的方式:
通过使用PE Smart Storage Administrator (SSA)工具进行开启
备注:默认当SSD硬盘组件的logical drive时,其smart path就是开启的。
Smart Path的性能测试对比:
那么接下来的问题,开启smart path和不开启smart path在性能上,到底有什么区别呢?
下面是对smart path的性能测试(测试结果仅供参考):
准备的测试材料:
测试的硬件: R59G2服务器,P840阵列卡,2块480GB SSD硬盘,每块硬盘组成一个RAID0,分别在一个RAID0上开启smart path,在另外一个RAID上禁用smart path。
测试的系统:Red Hat Enterprise 6.8
测试的方式: 如果我们之前所提到的,smart path主要是在小的IO读写上有优势,所以我们主要以4k大小的IO请求为测试元素
整体测试结构如下:
逻辑卷A:1块480G SSD硬盘,RAID0,开启smartpath(默认) - 在系统下识别为sdd
逻辑卷B:1块480G SSD硬盘,RAID0,关闭smartpath(手动) - 在系统下识别为sde
测试一:4k块的小IO随机读请求测试
分别对两块硬盘进行fio 4k块大小的 IO小读请求,命令如下:
fio -name='4K-Random-Read' -filename=/dev/sdd -direct=1 -rw=randread -bs=4k -size=100G -numjobs=2 -runtime=20 -group_reporting
测试结果1: read : io=2008.6MB, bw=102833KB/s, iops=25708, runt= 20001msec
fio -name='4K-Random-Read' -filename=/dev/sde -direct=1 -rw=randread -bs=4k -size=100G -numjobs=2 -runtime=20 -group_reporting
测试结果2: read : io=1658.6MB, bw=84912KB/s, iops=21227, runt= 20001msec
测试一的结论: 从这个结果中,我们可以看出,开启smart path要对比禁用smart path在小IO读请求时,会有一定的提升
测试二:1M块的大IO随机读请求测试
下面是分别对两块硬盘进行fio 1M块大小的 IO小读请求,命令如下:
fio -name='1M-Random-Read' -filename=/dev/sdd -direct=1 -rw=randread -bs=1M -size=100G -numjobs=2 -runtime=20 -group_reporting
测试结果1: read : io=10564MB, bw=540769KB/s, iops=528, runt= 20004msec
fio -name='1M-Random-Read' -filename=/dev/sde -direct=1 -rw=randread -bs=1M -size=100G -numjobs=2 -runtime=20 -group_reporting
测试结果2: read : io=10557MB, bw=540437KB/s, iops=527, runt= 20003msec
测试二的结论:从大块IO读测试中,我们看出smart path并没有生效,两者的测试结果近乎相同。
总结:由此我们验证了,开启和关闭smart path在读写小IO请求的情况下,会有一定的性能提升