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

Sort:SDS百问 Release time:2019年12月26日
Share:

从开源到商用,一款企业级产品需要走过的路和踩过的坑还有很多很多,有些人过来了,有些人还在路上,而有些人则陷入了坑里……本文为杉岩数据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云平台的专业咨询、培训、运维等增值服务。未来的路还有很长,关注杉岩,我们和你一同经历。


名词解释:


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



Your privacy is important to us

We use cookies to personalize and enhance your browsing experience on our website. By clicking "Accept all cookies", you agree to the use of cookies. You can read our Cookie Policy for more information.

Phone

Service Hotline

400-838-3331

More contact information

Top

Scan code attention