https://aijishu.com/a/1060000000124241
本文内容非商业用途可无需授权转载,请务必注明作者及本微信公众号、微博ID:唐僧\_huangliang,以便更好地与读者互动。
我曾经不只一次看到有朋友提出以下问题:
1. SSD做RAID性能如何,RAID卡会成为瓶颈吗?
2. SAS/SATA SSD做RAID,与PCIe/NVMe Flash相比,哪个性能好?
3. SAS SSD是否比SATA SSD性能好,用在服务器上有无必要?
4. SSD做哪种RAID级别最合适,R5/10性能损失是否比HDD更大?
5. RAID卡与SAS HBA(或RAID卡直通模式)相比,性能差多少?
最近看到一份比较全的测试资料,包括RAID和Non-RAID (Pass-Thru)模式、6Gbps SATA SSD(最多12个)和12Gbps SAS SSD(最多8个)的全面性能水平。比较有参考价值。
免责声明:测试平台为戴尔13G服务器和Dell PowerEdge RAID Controller (PERC9) H730p,它使用了LSI 12Gb/s SAS RoC,应该可以代表现在主流的RAID卡。由于测试时间原因,固件和驱动版本都不是最新的,具体的SSD型号我也不注明了,希望不要将这些数字用于竞争 性对比,那样就违背了我分享的初衷。
NVMe来了,SATA、SAS SSD仍将共存很长一段时间
H730P RAID IOPS
(6Gbps SATA SSDs) 随机读写
RAID 0在绝大多数生产环境中都不推荐,在这里列出主要是作为和RAID 1/5的对比,并了解一下RAID卡处理能力的限制。同样512byte数据块大小也只是为了看看极限。
根据上方图表,SATA SSD单盘RAID 0的512B和4KB随机读性能在5-10万IOPS之间,增加SSD个数到2、4、8基本上能获得线性提升,达到40-45万IOPS。进一步加到12个SSD变化则不明显,除非数据块增大到8KB或者更高。35万IOPS@8KB时的带宽已经达到2800MB/s。
RAID 5随机读的表现与RAID 0相当接近,这一点和传统机械硬盘相一致。
使用SATA SSD的RAID 10测试成绩,是本次分享中“稍有些不正常”的,这个可能与当时的Firmware版本和具体使用的SSD有关。简单说就是4块盘的表现和2块盘差不多,而12块盘则接近甚至超过了50万IOPS,比RAID 0和5的表现更好。
RAID 0随机写没有前面性能高,主要是SSD闪存盘自身的写就比读要慢。我们注意到单盘大约在3万IOPS左右,那么8块盘超过20万,12块盘超过30万也是个正常的表现。
为了避免写缓存带来的干扰,测试采用Write-Through的策略。我们知道RAID 5每一次改写操作都会产生2次读和2次写I/O,也就是通常说的写惩罚为4。随机写之所以性能差,就是因为离散的操作不能在Cache中合并形成整条带I/O。
如上方图表,SATA SSD RAID 5随机写在4、8块盘时,性能比RAID 0的1/4要低一些,但也在可以接受的范围内。而12块盘在数据块较小时却无法获得理想的提升,考虑到Rebuild性能和第二块盘故障的风险,我给出如下建议:
1. 多数情况下不建议SSD做RAID 6(这里指传统RAID卡),因为性能损失太大;同样也影响写寿命,得不偿失。
2. RAID 5建议不超过8-9(8+1)块盘,也是在大多数情况下。
扩展阅读
在《存储极客:SPC-1负载分析与AFA寿命评估》一文中,我们简单介绍过不同RAID级别对SSD写寿命的影响;
在《存储极客:从硬盘设计思想到RAID改良之道》一文中,提到了“传统RAID组中磁盘数量越多,Rebuild时要读取的数据量也是成正比的… 在RAID卡固定条带大小的情况下,参与硬盘数量越多Rebuild速度也会越慢。”
SATA SSD RAID 10随机写在不超过8块盘时,基本达到了RAID 0 IOPS的一半;12块盘在512B和4KB数据块无法获得明显提升(原因在后面有对比分析)。由于RAID 10也存在第二块盘故障的风险,因此可以参考上面的建议。
H730P Pass-Thru IOPS
(6Gbps SATA SSDs) 随机读写
1块SSD性能的差别,直通(即SAS HBA模式)与RAID相差不大;而在8块盘以内,上图表中的随机读就是与SSD数量完全成正比提高。12块盘虽然无法保持这个趋势,但512B和4KB的IOPS依然达到了70万和55万,继续往后看您会发现此时RAID/HBA卡还没有到达瓶颈。
直通模式下一个SSD随机写的性能依然在3万IOPS左右,2/4/8块盘也还是理想的线性提升。而12块盘在512B接近60万IOPS的性能有些不正常,猜测是个别测试子项未达到SSD的稳态?
H730P RAID IOPS
(12Gbps SAS SSDs) 随机读写
接下来看SAS SSD的测试结果。上面图表中的RAID 0随机读,单盘4KB、8KB数据块分别达到了15万和10万IOPS,后者的带宽已经达到800MB/s,这一水平只有12Gb/s SAS接口能跑到,6Gb/s SATA是不可能的。
在50万IOPS以内,SSD数量增加带来的提升基本上是线性的。得益于这款SAS SSD的单盘性能,4块RAID 0就能达到50万IOPS,再往上很快就遇到RAID卡的瓶颈了。而且12块与8块SSD的随机读已经拉不开差距。
小记:SAS与SATA SSD的性能
曾经有朋友和我讨论过SAS SSD是否比SATA更快?从接口角度主要是带宽不同,SAS除了有12Gb/s之外还有双端口,后者更多价值在于双控存储。
我们这里只讨论IOPS,比如有些低端企业级的SATA和SAS SSD,它们的闪存控制技术和NAND颗粒配置相差不大,因此性能上没有明显较大差别。而若是性能较高的SSD,比如使用16-18通道控制器,则其随机访问产生的带宽也很可能超出SATA 600MB/s的接口限制,此时只有12Gb/s SAS才合理(注:PCIe/NVMe仅在本文结尾处用于对比)。这也是我基本没有看到过SATA SSD控制器超过8-10通道的原因。
再多透露一点,本文中测试配置的SATA和SAS SSD分别来自Intel和HGST,其实后者的ASIC控制器硬件以及闪存接口技术也是来自Intel,但是定位不同。
RAID 5随机读和RAID 0基本保持一致,这一点与SATA SSD差不多。
SAS SSD RAID 10随机读也不再有遗憾,性能结果与RAID 0非常接近。
再来看看随机写。首先单个SAS SSD大约在4万多IOPS@4KB,一直到8、12块RAID 0保持了比较高度的线性提升。
RAID 5随机写这一项,SAS SSD并没有表现出比SATA的明显优势,45000 IOPS似乎是个瓶颈,也就是说距离上面RAID 0性能的1/4也差了不少。这大概就是RAID卡最大的短板吧,传统RAID算法对SSD优化不够。
因此要看应用场景,像互联网MySQL数据库一主多从中的Slave节点,SATA SSD RAID 5的效果还是不错的。
当数据块大小达到8KB,8块SAS盘RAID 5随机写还比较正常,这样看用Oracle数据库单机也还可以?虽然按照传统思路OLTP推荐RAID 10,但是以这个IOPS水平比本地HDD RAID还是远远胜出的。
RAID 10随机写的表现比RAID 5大约高出一倍,但是最高性能似乎被限制在10万IOPS,所以还是不够理想。当然,在不超过8块SSD,数据块不小于8KB的情况下写惩罚的影响比较符合“2”。
总的来看,比SATA SSD更快的SAS SSD在随机写性能上遇到了RAID卡的瓶颈。尽管RAID 0不是这样,但实际有意义的还是RAID 5和10。
H730P Pass-Thru IOPS
(12Gbps SAS SSDs)
在直通(Non-RAID)模式下,SAS SSD没有让我们失望,除了12块盘仍无法获得线性提升之外,随机读跑到了单块HBA性能极限的100万IOPS。不知大家还记得我在《突破百万IOPS:blk-mq释放SCSI性能》一文中列出的下面这个图吗?
Linux下需要考虑内核&设备驱动的多队列支持,而本文中测试数字是在Widnwos Server 2008 R2下获得的,看来Windows在这方面比较早做好了准备,这大概就是商业操作系统的好处吧。
之前我在《SPC-1 500万IOPS再引争议:请用技术事实说话》中有一段讨论过“Windows做存储真的那么差吗?”的话题,本文也算是增加了一点证据吧。
在没有RAID开销的情况下,随机写基本上就是SAS SSD本身性能的累积。
总结:
面对NVMe,SATA/SAS生命还有多强?
现在可以看下本文开头提出的几个问题是否有答案了,我们主要以服务器上的硬件RAID 5/10的4KB随机读写来评估。
1. SATA/SAS SSD RAID卡随机读IOPS可达3x-5x万IOPS的水平,具体与SSD单盘性能有关;RAID 5随机写测得3.x-4.x万IOPS,RAID 10随机写接近10万。看来有些情况下RAID卡会成为瓶颈。
SATA/SAS SSD RAID个人建议配置不超过8-9个盘。
2. 下面我们用支持NVMe的Dell Express Flash PCIe SSD/闪存卡做下对比参照:
上图是“性能”系列,而下图为“混合用途”,二者的分类方法我们在《存储极客:SSD寿命与闪存阵列选型(上)》一文中曾有讨论,简单说就是写性能和寿命不同。
注:戴尔目前不自己制造服务器上闪存盘组件,这里列出的来自OEM合作伙伴,有的朋友可能看出了供应商是哪一家。
RAID之后的SATA/SAS SSD IOPS性能比单个NVMe/PCIe Flash仍有差距,特别是RAID 5随机写存在比较大的短板。
3. 在大多数场合,服务器上使用SAS SSD做RAID的必要性不大,企业级SATA中也有表现不错的。
4. 尽管RAID 5的写IOPS只有RAID 10的一半不到,但由于闪存成本等方面因素,我了解到大多数人还是选择了RAID 5。而且RAID 10还有镜像盘同时达到写寿命限制的风险,需要更重视磨损监控。对随机写要求高的用户,还是别用传统RAID了。(写到这里我有点同情Ceph的感觉)
5. RAID卡直通/HBA模式的表现则要好得多,由于没有了RAID保护的开销,总随机写性能全面超越单个PCIe Flash,毕竟是多块盘。高速SAS SSD在这种情况下可以更好地发挥。我能想到的应用模式,主要是分布式存储(ServerSAN),当然多个PCIe Flash可能是更受青睐的一种选择。
最后我又想起一点,等支持NVMe的“硬”RAID卡出来,那时候再对比一下估计也是个挺有意思的事情。
推荐阅读