适用于分布式对象存储的全局数据去重方法与系统与流程

文档序号:37727379发布日期:2024-04-23 12:09阅读:10来源:国知局
适用于分布式对象存储的全局数据去重方法与系统与流程

本发明涉及适用于分布式对象存储的全局数据去重方法与系统,属于计算机存储领域。


背景技术:

1、分布式对象存储,通常作为私有部署的存储系统,可提供兼容aws(amazon simplestorage service)s3接口的对象存储服务,是一种高度可扩展的存储系统,已被广泛应用于存储和检索大规模数据。ceph是分布式存储的代表,它提供统一的块、文件以及s3对象存储服务。

2、据估计,在应用系统所保存的数据中,高达60%的数据是冗余的,在虚拟化、数据库中,高达80%的数据时冗余的;且随着时间推移,冗余数据的比例也将上升。如何提升存储使用效率已成为一个非常重要的研究课题,而重复数据删除(deduplication)与数据压缩(compression)技术是其中一种容量优化技术,它通过消除存储系统中重复的数据,缩减系统中实际存储的数据。数据去重是存储管理中一项非常重要的技术,特别是在面对日益增长的数据量和对高效存储的需求时。通过智能地识别和消除冗余数据,它有助于实现更高效和成本效益的存储解决方案。

3、数据去重通过识别和消除重复数据来减少存储空间的使用,可以在多种级别上进行,包括文件级、块级或字节级。其基本工作原理如下:首先需要将数据分割成更小的单位。在文件级去重中,这些单位是整个文件;而在块级去重中,数据被分割成固定或变长的数据块。对每个数据单位(文件或块)进行哈希运算,生成一个唯一的哈希值(或“指纹”)。这个哈希值通常比原始数据小得多。系统将每个数据单位的哈希值与已存储的数据的哈希值进行比较。如果发现匹配,即表明该数据单位是重复的。如果数据单位是重复的,系统将不再存储它的另一个副本。相反,系统仅保存对原始数据的引用。在块级去重中,这意味着只保存一个数据块的副本,无论这个块在多少个文件中重复出现。系统维护一个索引或引用表,以追踪每个唯一数据块的位置和所有引用它的文件。

4、数据去重已经在备份与归档软件、以及相应的存储系统中得到的广泛的应用,主要用于单台服务器上,或单套磁盘阵列上。针对分布式对象存储而言,目前还缺乏有效的技术手段来实现全局的数据去重。


技术实现思路

1、发明目的:针对上述现有技术存在的问题,本发明目的在于提供一种适用于分布式对象存储的全局数据去重方法与系统,通过在业务负载较低的时候,执行一个或多个进程对分布式存储中的数据进行扫描与分析,实现全局的数据去重。

2、技术方案:为实现上述发明目的,本发明采用如下技术方案:

3、适用于分布式对象存储的全局数据去重方法,包括如下步骤:

4、在分布式存储系统的工作负载满足离线去重阈值条件时启动离线去重;

5、根据元数据池中对象的去重标记从数据池中读取一个尚未去重的对象a,将对象数据分块,计算每个数据块的指纹,获得指纹键值对;所述元数据池用于存储对象的元数据,所述数据池用于存储对象数据;

6、逐个检测指纹键值对是否已经存在,如果存在,则只更新指纹元数据池;否则,将其作为指纹对象保存在指纹数据池中,并更新指纹元数据池;所述指纹数据池用于存储对象的数据块,所述指纹元数据池用于存储指纹的元数据,包括使用指纹的对象;

7、更新对象a的元数据:在元数据池中记录对象a的指纹集;修改对象a的去重标记为已去重;在数据池中删除对象a的数据。

8、作为优选,在计算指纹过程中,使用可变长度块分割方法对对象数据切割,并识别数据流中的自然边界,创建不同长度的数据块。

9、作为优选,数据去重所使用的指纹数据池和指纹元数据池构建在分布式对象存储服务rados之上,以对象的形式将数据分发到存储集群内的所有节点;

10、支持去重后,对象c的读取操作包括:

11、查询在元数据池中关于对象c的去重标记值,如果为已去重,则获取同样保存在元数据池中对象c的指纹集合,通过从指纹数据池中读取指纹对象的值读出对象c的数据;如果为未去重,则直接在数据池中读取对象c的数据。

12、作为优选,支持离线与在线同时执行的数据去重,当分布式存储系统的工作负载满足离线与在线同时去重时阈值条件时,对于对写延迟不敏感的应用或用户,进行在线数据去重,包括:

13、对于写入的对象b,将对象数据分块,计算每个数据块的指纹,获得指纹键值对;

14、逐个检测指纹键值对是否已经存在,如果存在,则只更新指纹元数据池;否则,将其作为指纹对象保存在指纹数据池中,并更新指纹元数据池;

15、在元数据池中记录对象a的指纹集,将对象a的去重标记设为已去重。

16、作为优选,根据分布式集群的cpu平均使用率、平均读延迟和平均写延迟指标定级工作负载;计算当前cpu平均使用率、平均读延迟和平均写延迟指标与满负载cpu平均使用率、平均读延迟和平均写延迟的各自的比例,取比例值的最大值作为定级的依据。

17、作为优选,在预设的工作负载等级范围内,随着工作负载等级升高,降低数据去重任务数;设定工作负载等级为10%、20%、30%、40%、50%、60%等级,当存储系统处于10%工作负载时,同时启动n个数据去重任务;当存储系统处于20%工作负载时,将数据去重任务数降低到4n/5;以此类推,当存储系统处于50%工作负载时,将数据去重任务数降低到n/5;当存储系统处于60%工作负载时,停止所有离线和在线数据去重任务。

18、本发明还提供支持全局数据去重的分布式对象存储系统,包括用于存储对象数据的数据池,用于存储对象元数据的元数据池,还包括指纹数据池和指纹元数据池,以及数据去重处理子系统;所述指纹数据池用于存储对象的数据块,所述指纹元数据池用于存储指纹的元数据,包括使用指纹的对象;所述数据去重处理子系统,包括:

19、工作负载监控模块,用于在分布式存储系统的工作负载满足离线去重阈值条件时启动离线去重;

20、以及,离线去重模块,用于根据元数据池中对象的去重标记从数据池中读取一个尚未去重的对象a,将对象数据分块,计算每个数据块的指纹,获得指纹键值对;逐个检测指纹键值对是否已经存在,如果存在,则只更新指纹元数据池;否则,将其作为指纹对象保存在指纹数据池中,并更新指纹元数据池;更新对象a的元数据:在元数据池中记录对象a的指纹集;修改对象a的去重标记为已去重;在数据池中删除对象a的数据。

21、进一步优选,系统还包括在线去重模块;当分布式存储系统的工作负载满足离线与在线同时去重时阈值条件时,对于对写延迟不敏感的应用或用户,进行在线数据去重;所述在线去重模块,用于对于写入的对象b,将对象数据分块,计算每个数据块的指纹,获得指纹键值对;逐个检测指纹键值对是否已经存在,如果存在,则只更新指纹元数据池;否则,将其作为指纹对象保存在指纹数据池中,并更新指纹元数据池;在元数据池中记录对象a的指纹集,将对象a的去重标记设为已去重。

22、有益效果:本发明通过离线执行的一个进程或多个进程对分布式对象存储中的数据进行扫描与分析,采用高效率的数据结构与算法,选择在业务负载较低的时候,启动后台进程执行去重操作。去重操作会产生一个所有去重数据对应的指纹以及其对应的数据集合,这些数据以指纹对象的方式保存在分布式存储中;当新数据写入集群时,可选择首先计算新数据的指纹,并与指纹数据池进行查找比较,如果发现有相同值,即可对新数据执行去重写入。本发明可以支持同时执行在线数据去重与离线去重操作并发执行。与现有技术相比,本发明不仅仅有效实现了全局的数据去重手段,具有较高的数据去重能力,而且进一步采用了高效率的算法监控分布式存储系统中业务负载情况,可以有效利用分布存储各个节点上的空闲cpu资源来进行去重数据的发现与实施,同时对存储系统的性能影响降到最低水平。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1