「星技术」SDS离全面EC(纠删码)还有多远?

2020年12月 · XSKY

微信图片_20201225141238.png

微信图片_20201225141310.png

SDS(软件定义存储)离全协议(块、文件、对象)、全介质(全闪、混合) 、全场景使用EC(纠删码)还有多远?今天我们来寻找答案。

我们XSKY一直在提升SDS的得盘率、性能、扩展性、通用性,以便SDS适合更多场景。

想要在相同可靠性的情况下,得到比三副本更高的得盘率,我们需要使用Erase Code(纠删码,简称EC)。三副本的得盘率是33.3%,EC 4+2的得盘率是66.6%,EC 8+2 的得盘率是 80% 。

虽然EC的优势是高可靠性、高得盘率、大块顺序读写性能高,但缺点是小块随机读写性能较差。

微信图片_20201225141341.png

如何让我们的SDS产品兼具高可靠性、高得盘率、高性能,我们的工程师紧赶慢赶走了三段路。

微信图片_20201225141414.png

在2016年,我们XSKY SDS产品的存储池就开始支持EC,先让我们的用户享受到EC的实惠。

EC存储池,大块顺序读写性能好,但小块随机读写性能较差,因此对于块和文件存储,我们建议在监控和备份场景中使用EC存储池,这是因为监控和备份场景的Workload特征是大块顺序读写。

针对于对象存储的特点,我们开发了对象存储小文件归并功能,使之成为EC的绝配,两者组合不仅带来高可靠性、高得盘率,也带来了高性能的小文件读写能力。

微信图片_20201225141423.png

【小文件归并架构图】

因为这个小文件归并功能是在对象存储网关层开发的,不能用于块存储和文件存储,我们工程师开始赶第二段路。

微信图片_20201225141502.png

在2019年,我们就推出了Boost存储池功能(详见文章 「产品特性」混合闪存存储下,容量和性能兼得的秘诀 ),目标是让混合(SSD+HDD)块存储也能用上EC。

Boost存储池采用全局分层缓存架构,其中数据层可以使用EC,同时Cache层使用三副本提供高性能的读写能力,这使得Boost存储池可以用于块和文件存储的大部分场景。

Boost存储池已在我们的SDS一体机产品中广泛应用,为用户带来低成本大容量、高性能、安全可靠的最佳体验。

微信图片_20201225141511.gif

【Boost 架构图示意】

虽然Boost存储池达到我们的预期目标,但我们工程师没有停止脚步,因为我们还要赶下一段路,要给用户提供“永远”写不爆的SSD Cache。

微信图片_20201225141530.png

对存储系统的优化没有止境,当Boost存储池的Cache层被业务写爆时,需要把Cache层中的脏数据全速回刷到数据层中,回刷速度就决定了此时存储系统的整体性能。

假如脏数据都是随机小块IO,那么在回刷的时候,数据层的HDD承受的压力也是小块随机写IO。大家都知道,HDD的小块随机写性能不高,只有100+的IOPS,所以整体回刷速度不快,瓶颈反向传导,这就导致此时前端业务也只能以相同的速度写新数据到Cache层中。此时:前端业务写性能 == 回刷速度。

这是所有的混合存储在Cache层被写满时都必须面对的情况。虽然大部分场景的负载,不会导致Cache层被写满。

假如是因为前端业务增多导致之前规划设计的SSD Cache容量已经变得不够用了,我们的Boost存储池可以只扩容Cache层,满足业务增长的需求。这是全局分层架构带来的好处。

但是,世界上有没有写不爆的Cache呢?如何才能快速的回刷脏数据,不断腾出Cache空间,减小对前端业务性能的影响呢?

相信你已经发现了问题的关键,假如在回刷脏数据时,我们使用大块顺序往数据层的HDD写,回刷速度一定非常高,因为HDD的大块顺序写带宽能够达到80MB/s以上,能够至少包含20,480个4KB小块数据,回刷速度比之前提高了20+倍。

因此我们的工程师对Boost架构进行扩展,带来了新的XSKY XSpeed架构和功能,XSpeed代表:“永远”加速。

微信图片_20201225141541.png

【XSKY XSpeed架构示意图】

XSKY XSpeed的核心是LogAppend模块,可以把随机小块写IO聚合成大块顺序写,然后再回刷到数据层中。数据层的大块顺序写性能很高,所以可以快速把脏数据回刷到数据层,腾出Cache空间给前端业务使用。

LogAppend模块不仅聚合随机小块,而且还对数据进行压缩和重删,为用户节省更多空间。

微信图片_20201225141547.jpg

【LogAppend模块示意图】

XSpeed的LogAppend模块是在Cache层中实现的,所以块和文件存储都可以使用XSpeed功能。

因此我们的分布式NAS产品XGFS,左手XMDS解决海量小文件的元数据问题,右手XSpeed解决海量小文件的数据读写问题。

下面是我们XSpeed功能实测时的截图,我们使用4KB随机写进行压测,能够看到即使存储池的Cache层水位线达到了100%,存储池的IOPS性能也没有因此而下降。(因为测试过程中用的SSD Cache容量很小,所以水位线增长得很快)。

微信图片_20201225141554.png微信图片_20201225142411.png

【XSpeed功能Demo】

当然我们的路也没有走完。

微信图片_20201225141621.png

最后总结一下,我们使用XSpeed带来的好处是:

“永远”写不爆的SSD Cache,强大的性能保证

–  使用EC,获得高得盘率

–  通过全局压缩、重删,得到更多可用容量

–  解决海量小文件的读写性能问题

XSKY明年发布的SDS V5版本中包含XSpeed功能,So,对于开头问题,我们的答案是:

微信图片_20201225141629.png2021年,高性能全场景EC的时代到来!