星辰天合专利小文件归并技术提升存储效率和性能

海量小文件挑战

面对海量数据场景,对象存储以其易用性与几乎无限的扁平扩展性获得了广泛地应用,其中,小文件存储的需求越发凸显。受限于存储后端空间的分配粒度,海量小文件直接存储会导致巨大的空间浪费。同时,由于 HDD IOPS 性能瓶颈,小文件写入 HDD 时性能比较低。

业界比较常用的优化方式是对小文件进行异步归并处理,即先把小文件写入到高速缓存池(SSD)中,记录日志,后台归并模块扫描日志,聚集一批小文件之后再读取出来组成一个大文件写入后端数据池(HDD)。使用归并的方法,海量小文件业务空间浪费问题和存储性能问题都能得到较为明显的改善。然而,这种后台归并的方式存在如下缺点:

每个上传的小文件都会经过一次读、两次写,相当于每次IO都额外产生了一次读。

对于缓存池(SSD),进行后台归并时会产生大量的读IO,影响前端写入性能。

使用扫描日志的方式异步归并,如果归并不及时,会导致大量数据积压在缓存池(SSD)中,甚至占满缓存空间的情况。

由于后台归并独立于前端IO进行,对前端IO不能有很好的反馈调节作用。

XSKY星辰天合,作为国内对象存储的领头羊 ,在小文件归并领域有多个相关专利,小文件归并的模式也从异步归并升级到在线归并,存储的效率和性能得到进一步的提升。

XSKY星辰天合小文件归并机制

早在2019年,星辰天合便凭借着对海量小文件问题的深入研究,自研小文件归并机制,获得了国家知识产权局发明专利授权。通过使用少量高性能存储介质组成高速缓存池,将小文件先写入缓存池,充分发挥缓存池的高性能优势,再将小文件归并成大文件顺序写入 HDD 的 EC 池,发挥 HDD 的顺序写特性,降低由于磁盘最小分配单元以及 EC 纠删码写放大带来的空间浪费,提升存储空间利用率。

但是,这种异步归并的方法还是有一定的局限性,因此在下一代对象存储产品中,针对小文件归并存在的挑战,XSKY星辰天合再次剖析问题,发明解决了小文件归并方法需要写入缓存池,再从缓存池中读取归并效率低的技术问题,实现了在线归并。该技术当前已经申请了国家知识产权局发明专利,正处于实质审查阶段。

星辰天合下一代对象存储产品XEOS V6中,海量小文件归并管理方案有了全新的升级,从异步归并升级到在线归并,将带给用户更良好的体验。下面讲述下一代对象中的小文件在线归并使用到的几个关键技术。

多级缓存

从成本角度考虑,高性能 SSD 盘通常配置较少,难以应对突发小文件流量压力;对于 1MB 以上的小文件,直接写入 HDD 介质会更加高效。不同于以往采用单一缓存池承载小文件,XEOS 设计了多级缓存池机制,存储不同大小的数据。采用 SSD 构建高速缓存池, HDD 构建普通EC数据池,复用已有 HDD 硬件资源部署中速缓存副本池。文件上传后,系统自动识别文件大小,1MB以内的小文件写入高速缓存池,1~4MB文件写入中速缓存池,大于4MB的文件透传至普通数据池。

引入中速缓存池可以在保证文件访问性能的基础上,减少1~4MB范围大小文件对于高速缓存空间的占用,同时提高缓存池的可靠性。在高速缓存池写满后,系统自动启用中速缓存池继续写入小文件数据,保证了业务的连续性,当高速缓存池的数据被归并而释放缓存空间后,恢复使用高速缓存池写入小文件数据。

高效归并

小文件归并存储可以降低小文件写入的随机性,提高存储效率,减少写放大带来的空间浪费。XEOS V6同时支持在线归并、离线归并,归并策略自动切换。

默认情况下执行在线归并策略。网关内预留一定的内存,在接收小文件数据并写入缓存池的同时,以追加的方式在内存中缓存,缓存达到某个阈值后写入普通数据池,更新元数据,删除缓存池中的数据。

采用在线归并,不再需要从缓存池中读取数据,大大减小了缓存池的压力,同时归并性能不受集群规模影响,并且由于在线归并直接在前端IO上下文进行处理,因此可以对前端IO起到很好的反馈作用,防止前端业务压力太大导致业务不可写。

当小文件写入流量大,或存储平台短时间内故障,在线归并可能会将预留的内存全部消耗完,无法继续执行,此刻,网关自动转入离线归并策略,及时释放缓存池的空间。

空洞回收

当频繁进行小文件删除时,归并对象将产生大量的空洞,占用一定的存储资源。为了能够释放该部分空间,XEOS 支持二次归并机制。二次归并将空洞率超过回收阈值的归并对象中剩余的有效对象进行重新归并 ,归并成新的归并对象后删除原有归并对象,使得磁盘空间得以释放。

总结

通过多年的努力,XSKY星辰天合在小文件处理机制上长期处于领先地位,并且不断地完成自我超越。下一代对象存储海量小文件管理的实际表现如何,让我们拭目以待。

XSKY星辰天合的下一代对象存储产品XEOS即将在7月20日举办线上发布会,

可以扫描二维码

或者点击链接均可报名:https://d.looks.wang/CEOcV