随着互联网、大数据、人工智能等技术高速发展,数据呈指数级增长。面对海量的数据,除了提供巨大的存储空间以外,如何更好地存储海量小文件(简称 LOSF,lots of small files)成为了业界公认的难题。
海量小文件挑战
海量小文件的存储和管理之所以困难,主要在于存储成本和访问性能两个方面的矛盾冲突:
1、从存储成本上考虑,采用 HDD 存储海量小文件比较经济,但会对 HDD盘产生大量随机小 IO 访问,性能非常低;
2、从性能上考虑,可以用 SSD 盘存储小文件,发挥 SSD 盘随机小 IO 高性能优势,但海量小文件需要大量 SSD 存储空间,存储成本太高。
为了平衡成本和性能,达到双收益,业界通常采用“大小 IO 自适应,小文件归并”技术解决 LOSF 问题。早在 2016 年,XSKY星辰天合便率先研究出了小文件归并机制:系统将写入的大文件透传到 HDD 数据池,小文件在缓存池归并成大对象后再写入数据池中。
随着技术的不断应用,我们发现既有的机制仍然存在一些问题:
1、元数据处理 IO 流程长,有效磁盘服务时间低;
2、小文件归并时,需要从缓存池读出数据再写入,归并过程会对前端业务写入性能产生较大影响;
3、异步归并机制,有可能导致数据积压,甚至缓存空间被占满;
4、对于 1~4MB 范围大小的文件,写入缓存池会占用大量的高性能存储空间,成本高,而如果选择直接透传到数据池,延时高,无法满足业务性能需求;
5、小文件归并后,若存在删除请求,会造成存储空洞,占用一定的存储资源。
基于此,在下一代对象存储 XEOS V6 中,我们进行了全新升级,进一步攻克小文件管理难题。
高效元数据管理
通常一个对象的访问包括对元数据和数据的访问。对象数据容量越小,元数据访问在整个对象访问中的占比就越高。所以对于海量小文件管理,元数据访问的高效性非常关键。
XEOS V6 引入了分布式统一元数据集群,采用少量的 SSD盘部署元数据分区,不仅能够提供海量对象元数据信息的存储,而且元数据存储性能大幅提升。下图为同等硬件情况下,XEOS V6 版本相较于V5 版本的 OPS 请求情况,小文件写入性能平均提升了 65%。
灵活数据布局
拥有高效的元数据管理机制能够有效提升小文件的存储性能,但是低效的数据布局仍然会造成访问性能的下降,并且导致大量的磁盘空间被浪费。随着 XEOS V6 版本的发布,小文件归并机制也迎来了重磅升级。
在线归并
首先,以往的异步归并方式升级为了在线实时归并。在线归并更为及时,且不再需要从缓存池中读取数据,减小了缓存池的压力,同时归并性能不受集群规模影响,并且由于在线归并直接在前端 IO 上下文进行处理,因此可以对前端 IO 起到很好的反馈作用,防止前端业务压力太大导致业务不可写。
多级缓存
其次,XEOS V6 实现了中速缓存策略。用户可以复用数据池中 HDD 硬件资源,部署中速缓存副本池,将 1~4MB(可配)文件写入中速缓存池,减少此范围大小的文件对于高速缓存空间的占用,降低成本。同时它可以应对突发小文件流量带来的压力,在高速缓存池写满后,自动启用中速缓存池继续写入小文件数据,提高缓存池的可靠性,保证业务的连续性。
空洞回收
面对小文件频繁删除,归并对象产生大量空洞的场景,XEOS V6 支持二次归并机制,将空洞率超过回收阈值的归并对象重新归并,使得磁盘空间得以释放。
总结
XEOS V6 的小文件管理机制能够加快小文件的存储效率,将不同大小的数据写入合适的资源池中,发挥各类硬件优势,数据布局灵活。同时,借助 EC 冗余机制、空洞回收能力,可以进一步提高存储空间利用率,节省存储成本!
了解更多软件定义存储及对象存储知识,请访问www.xsky.com,或者拨打电话:400-016-6101