提示

《杉岩两语》企业级Ceph之路(—):iSCSI优化与实践

发布于2019-09-03

  • iSCSI优化与实践

从开源到商用,一款企业级产品需要走过的路和踩过的坑还有很多很多,有些人过来了,有些人还在路上,而有些人则陷入了坑里……本文为杉岩数据CTO邱尚高在ceph中国行•深圳站上的分享,旨在为每一位在Ceph之路上前行的企业或个人提供一些有益的借鉴。


一 、为什么需要iSCSI



CEPH提供了对象、块、CEPHFS,块接口主要通过librbd或者KRBD支持,librbd是应用态接口,普通应用不能直接使用,krbd只能部署在linux高内核版本系统。但是企业环境里面常用到的VMWare EXSi、Windows/Solaris操作系统是无法直接使用librbd,而krbd也无法运行在这些系统中。所以一个标准的iSCSI接口就成为这些系统使用CEPH的最优方案。



二 、Ceph提供iSCSI接口需要面临的问题


杉岩团队在实际考虑iSCSI时,期望目标是分布式无状态的控制器集群,部署在所有的存储服务器上,分布式可扩展的,而且每个iSCSI Target都是Active的,所有target都可以处理请求,没有单点性能瓶颈的。


另外,考虑到未来全用户态软件栈的发展,我们也希望iSCSI Target是用户态的。



2013年时我们考虑了开源TGT+librbd 的方案,这个方案的优点在与配置简单,网上的指导文档也很多。但随着研究的深入,我们却发现了一个很大的问题: 因为TGT单实例设计的,无法实现多个TGT之间的交互,所以导致了如下问题:

  • 因为无法实现分布式锁,只能做成单Active target或者1主+多备的模式

  • CEPH是分布式的,而iSCSI只有一个Active 实例,性能将会成为瓶颈

  • 在一主多备模式下,主结点故障所带来的切换时间开销会非常大

  • TGT本身的性能也非常差,主要原因包括单线程设计、tgt与librbd之间的内存拷贝、资源消耗过大

  • 不能支持SCSI-2 和 SCSI-3的锁机制,VMFS或者MSCS故障转移集群无法使用




另外,对于实现一个企业级产品,还有些特有的问题,比如:

  • Tgt有自身的管理命令,CEPH也有管理命令,如何整合?

  • Rbd 与 target映射关系、鉴权等配置信息,如何持久化、如何保证多个TGT之间的一致性和同步?

  • MPIO/ALUA的支持,TGT没有实现。

  • 对于VMWare的VAAI支持很差,并未将操作下压到CEPH处理。



问题既已提出,那么接下来就是如何去解决这些问题了,以下,就是杉岩数据针对这些问题的具体解决方法:


三 、杉岩的具体实践


首先,我们重新编写了新的iSCSI Target,模块名称为STGT。STGT实现了分布式锁机制,从而解决了多个Active target之间支持release/reserve和 Persistent Reservation的问题。同时,将LUN映射信息存储在RADOS集群中,同时在STGT中缓存所有的元数据以加快访问速度。

当LUN映射信息发生变更时,会通知所有STGT的缓存进行变更。




其次,在性能方面,我们通过多线程池提高IO的并发度。


再次,由于是重新开发的软件栈,STGT网络接收到iSCSI数据时,就是用buffer_list保存数据,之后不再需要任何拷贝就通过librados发送给OSD了,从而避免了两个不同开源模块之间的内存拷贝。优化后,单个STGT我们相对于开源TGT的性能,在并发IO下提升超过10倍的性能。



杉岩完美的支持VAAI所有接口,对于XCOPY,将虚拟机拷贝下压到存储,并利用多个OSD并发拷贝,克隆性能超过TGT数10倍。



对于Windows/Hyper-V,则支持ODX特性,在拷贝大文件以及虚拟机克隆时,也可以将拷贝动作offload到存储,可以大大减少业务主机测得网络开销。



此外,很好的支持了MPIO、CHAP、ALUA等高级特性,在复杂业务场景下,更好的支撑传统的企业应用。




总的来说,杉岩的STGT相对于开源TGT有如下好处:

  • 扩展性:支持1024个target集群

  • 性  能:单个杉岩STGT 10倍于开源TGT的并发处理能力。性能可以线性扩展。

  • 集群支持:支持Active/Active 集群支持

  • MPIO支持:杉岩STGT支持,开源TGT不支持

  • VAAI性能:数10倍于开源TGT

  • ODX 支持:杉岩STGT支持,开源TGT不支持

  • 配置可靠性和一致性:杉岩STGT可以更好保证一致性, 开源TGT需要人工保证

  • 配置方便性: 杉岩STGT通过统一工具配置, 开源TGT需要 tgtadm + ceph tool配合完成



当然,如果使用杉岩的管理系统,配置就更加方便了!(笑脸)。



以上,就是杉岩数据在企业级Ceph之路上的具体实践。依托技术团队在Ceph和云平台上丰富的积累和经验,杉岩还为运营商、金融等大客户提供基于开源Ceph软件构筑OpenStack云平台的专业咨询、培训、运维等增值服务。未来的路还有很长,关注杉岩,我们和你一同经历。


名词解释:


《杉岩两语》是杉岩数据正在酝酿的一本书的名字,我们会把在工作中的总结、感悟、实践……汇聚为一本书(看,这正是分布式的具体实践之一),希望可以为读者提供一些有益的帮助。同时,为了保证内容的质量,我们会精心打磨,也希望得到您的指正。如此,则甚好。



分享至:

联系

我们

400-838-3331

在线

客服