写点什么

SDS 离全面 EC(纠删码) 还有多远?

发布于: 2021 年 02 月 05 日

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

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

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

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


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

第一段路,先把 EC 用起来

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

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

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


【小文件归并架构图】

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

第二段路,混合存储也能用 EC

在 2019 年,我们就推出了 Boost 存储池功能,目标是让混合(SSD+HDD)块存储也能用上 EC。

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

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

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

第三段路,“永远”写不爆的 Cache

对存储系统的优化没有止境,当 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 代表:“永远”加速。


【XSKY XSpeed 架构示意图】

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

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


【LogAppend 模块示意图】

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

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

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



【XSpeed 功能 Demo】

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

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

2、使用 EC,获得高得盘率

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

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


用户头像

还未添加个人签名 2020.05.28 加入

还未添加个人简介

评论

发布
暂无评论
SDS离全面EC(纠删码)还有多远?