在Ceph中适配SSD,一种常见的使用方法就是将其作为日志盘,以对写操作进行加速。那么问题来了,SSD与机械硬盘的配比多少合适呢?我们在小集群上执行了如下测试。
测试环境与节点规划
测试环境使用4台机器组成一个集群,操作系统为Centos 7.2,硬件配置为:Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz,256GB内存,480GB SSD若干,2TB SAS盘8块。
集群网络配置为4张万兆网卡组两组Bond4,分别承载业务网与存储网。节点规划上,4个节点配置相同并均为OSD节点,其中3个节点混合部署Monitor。
集群部署采用Ceph Jewel版本(10.2.5-3)。Ceph配置中日志盘大小设为20GB,其余均采用默认配置。测试用存储池PG数为1024.
测试方案
拟对1:2~1:6的日志比进行测试。由于机器和磁盘数量较少,且考虑到不同日志比在进行测试和比较时,需要保持OSD数目一致,故而在设计时,将1:2,1:3,1:6编为一组,在每个节点上使用6块SAS盘作为OSD执行测试。1:2,1:4编为一组,在每个节点上使用8块SAS盘作为OSD执行测试。1:5受硬盘数量所限,不进行测试。
此外,在测试前对硬盘进行一次测试,作为对比基准:dd if=/dev/zero of=/dev/sda bs=1M count=8000 oflag=direct,sync,得到SAS盘性能为141MB/s,SSD盘性能为418MB/s。
在测试步骤上,遵照如下步骤执行。
1. 按照指定比例构建OSD并清缓存;
2. 使用4个rados bench客户端执行10分钟写4MB对象测试,单客户端32并发;
3. 一组测试完成后,清除数据。
4. 重复步骤1-3;
测试结果与结论
从测试过程来看,测试压力足够(PG数目高的热点盘会产生集中慢请求),性能表现稳定。我们以纯SAS盘无SSD日志测试作为基准,将不同日志比的测试结果相对基准数据进行百分比换算,最终测试结果如下。






从上述测试结果来看,在集群未做任何调优的前提下,添加SSD作为Journal对写性能的提升还是很明显的。例如,对于4M大小的对象来说,吞吐量能够提升近80%,同时时延还能降低近50%。
在1:2,1:3,1:6测试组中,总体性能上1:2与1:3处于同一水平线上,而1:6偏差。观察硬盘利用率(实际速度与最大速度比)可以看到,1:6的比例瓶颈点在于SSD,1:2的硬盘利用率偏低,1:3是比较合适的,故而总体来说,1:3的比例表现最好。若在1:3的比例下加以其它调优手段,如日志下刷间隔优化与PG重均衡,这样整体表现就会更为理想,硬盘利用也会更为充分。
在1:2,1:4测试组中,总体性能上1:2与1:4基本没有区别,但从硬盘利用率上看,1:2的比例下硬盘利用率明显不充分。1:4的比例下,SSD盘与SAS盘的利用率是较为和谐的,可以推算出在经过一定调优后,两者应会同时触及瓶颈点。而对于1:3的比例,可以推算出当SAS盘达到瓶颈时,SSD盘离瓶颈还有一定差距。
故综合考虑,1:4的日志比例应是最为合理的。
测试的不足与未来工作
由于环境原因,1:5的比例没能测试(至少也得10块盘,与1:2做对比),也没有能够把其它比例合成一组进行测试(需要单服务器上具备12块盘),这是可以补充测试的一个点。此外,还可以针对不同的硬盘型号进行补充测试,也可以在前端进行补充测试。上述测试结果仅供参考。
SSD做日志的方式还涉及到更为复杂的换盘操作,这也是应用时需要考虑和测试的。
附:100%基准数据(无SSD日志,节点均值)






