本发明属于分布式存储,尤其涉及一种基于分布式海量小文件聚合的垃圾回收方法及装置。
背景技术:
1、在分布式系统中,海量小文件聚合是一种优化策略,用于解决大量小文件在存储和管理上带来的挑战,在许多大规模存储系统中,海量小文件数量众多,占用了大量的存储空间。
2、基于分布式海量小文件聚合的垃圾回收是一种专门针对分布式存储系统中大量小文件的回收技术,在这些系统中,小文件不仅消耗大量的存储空间,还会对文件系统的性能产生负面影响,通过这种垃圾回收方法智能地聚合这些小文件,并在适当的时候将它们回收,有效提高了存储利用率和系统性能,提高存储效率,存储空间得到有效释放。
3、然而现有的海量小文件聚合在写业务时,符合聚合策略的小文件不再写入其所对应的obj,而是以紧密排列方式(obj对齐)写入到一类特殊的文件(后文称聚合大文件),读文件时也不再读取源文件obj,而是从聚合大文件的obj中读取聚合小文件数据,每个聚合大文件最多存放5120个小文件且聚合大文件大小最大为512m,但是聚合大文件删除小文件后,聚合大文件无法及时有效的释放删除的小文件占用的空间,造成空间资源浪费,无法有效利用存储空间。
技术实现思路
1、鉴于以上现有技术的不足,发明的目的在于提供一种基于分布式海量小文件聚合的垃圾回收方法及装置,可以有效提升存储空间的利用率和系统性能,提高存储效率,使存储空间得到有效释放,减少存储空间管理复杂性。
2、本发明的第一方面,提出了一种基于分布式海量小文件聚合的垃圾回收方法,方法包括:
3、s1,获取多个待删除聚合大文件;
4、s2,将各个待删除聚合大文件中满足预判条件的小文件作为同一周期小文件进行提取;
5、s3,按第一预设存储空间将同一生命周期小文件聚合为同周期聚合大文件;
6、s4,判断提取后的待删除聚合大文件的存储空间是否存在小于第二预设存储空间的待删除聚合大文件,若存在,将小于第二预设存储空间待删除聚合大文件标记为待合并聚合大文件,进入步骤s5,否则,将提取后的待删除聚合大文件作为目标聚合大文件输出,进入步骤s6;
7、s5,以小于第一预设存储空间为约束,结合二分适应合并算法和贪心算法对待合并聚合大文件进行合并,得到目标聚合大文件;
8、s6,将同周期聚合大文件和目标聚合大文件删除至垃圾回收站,释放同周期聚合大文件和目标聚合大文件的存储空间。
9、进一步地,预判条件包括同一创建人、同一创建时间段、同一写频率、同一读频率和同一存放硬盘类型。
10、进一步地,将小于第二预设存储空间待删除聚合大文件标记为待合并聚合大文件,具体为:
11、在元数据中将小于第二预设存储空间待删除聚合大文件的标记修改为flag=1,以将小于第二预设存储空间待删除聚合大文件标记为待合并聚合大文件。
12、进一步地,s5具体包括:
13、s501,获取待合并聚合大文件的存储空间:
14、s=[s1,s2,s3,...,sn]
15、其中,s表示待合并聚合大文件的存储空间,si表示第i个待合并聚合大文件的存储空间大小,n表示待合并聚合大文件的总数,其中,i=1…n;
16、s502,计算各个待合并聚合大文件的占用空间相对于第一预设存储空间的剩余空间:
17、ri=512-si
18、其中,ri表示第i个待合并聚合大文件相对于第一预设存储空间的剩余空间;
19、s503,以剩余空间最小为目标,结合二分适应合并算法和贪心算法建立合并目标函数,合并目标函数具体为:
20、
21、其中,sj表示第j个待合并聚合大文件的存储空间大小,||表示绝对值符号,∑表示求和符号,min表示取最小值;
22、s504,结合目标函数,通过动态规划算法确定需要合并的待合并聚合大文件的最优组合,输出代表最优组合的待合并聚合大文件合并指示变量;
23、s505,根据待合并聚合大文件合并指示变量对待合并聚合大文件进行合并,得到目标聚合大文件。
24、进一步地,s504具体为:
25、通过下式求解待合并聚合大文件合并指示变量:
26、dp[z]=max(dp[z],dp[z-si]+si)
27、
28、其中,dp表示动态规划数组,xi,j表示待合并聚合大文件合并指示变量,max表示取最大值,当xi,j=1时表示合并sj和si,xi,j=0时表示不合并sj和si,z表示总剩余空间。
29、本发明的第二方面,提出了一种基于分布式海量小文件聚合的垃圾回收装置,用于实现第一方面任一项的基于分布式海量小文件聚合的垃圾回收方法,装置包括:
30、获取模块,用于获取多个待删除聚合大文件;
31、提取模块,用于将各个待删除聚合大文件中满足预判条件的小文件作为同一周期小文件进行提取;
32、聚合模块,用于按第一预设存储空间将同一生命周期小文件聚合为同周期聚合大文件;
33、判断模块,用于判断提取后的待删除聚合大文件的存储空间是否存在小于第二预设存储空间的待删除聚合大文件,若存在,将小于第二预设存储空间待删除聚合大文件标记为待合并聚合大文件,进入合并模块,否则,将提取后的待删除聚合大文件作为目标聚合大文件输出,进入删除模块;
34、合并模块,用于以小于第一预设存储空间为约束,结合二分适应合并算法和贪心算法对待合并聚合大文件进行合并,得到目标聚合大文件;
35、删除模块,用于将同周期聚合大文件和目标聚合大文件删除至垃圾回收站,释放同周期聚合大文件和目标聚合大文件的存储空间。
36、进一步地,预判条件包括同一创建人、同一创建时间段、同一写频率、同一读频率和同一存放硬盘类型。
37、进一步地,将小于第二预设存储空间待删除聚合大文件标记为待合并聚合大文件,具体为:
38、在元数据中将小于第二预设存储空间待删除聚合大文件的标记修改为flag=1,以将小于第二预设存储空间待删除聚合大文件标记为待合并聚合大文件。
39、进一步地,合并模块具体用于:
40、获取待合并聚合大文件的存储空间:
41、s=[s1,s2,s3,...,sn]
42、其中,s表示待合并聚合大文件的存储空间,si表示第i个待合并聚合大文件的存储空间大小,n表示待合并聚合大文件的总数,其中,i=1…n;
43、计算各个待合并聚合大文件的占用空间相对于第一预设存储空间的剩余空间:
44、ri=512-si
45、其中,ri表示第i个待合并聚合大文件相对于第一预设存储空间的剩余空间;
46、以剩余空间最小为目标,结合二分适应合并算法和贪心算法建立合并目标函数,合并目标函数具体为:
47、
48、其中,sj表示第j个待合并聚合大文件的存储空间大小,||表示绝对值符号,∑表示求和符号,min表示取最小值;
49、结合目标函数,通过动态规划算法确定需要合并的待合并聚合大文件的最优组合,输出代表最优组合的待合并聚合大文件合并指示变量;
50、根据待合并聚合大文件合并指示变量对待合并聚合大文件进行合并,得到目标聚合大文件。
51、进一步地,结合目标函数,通过动态规划算法确定需要合并的待合并聚合大文件的最优组合,输出代表最优组合的待合并聚合大文件合并指示变量具体为:
52、通过下式求解待合并聚合大文件合并指示变量:
53、dp[z]=max(dp[z],dp[z-si]+si)
54、
55、其中,dp表示动态规划数组,xi,j表示待合并聚合大文件合并指示变量,max表示取最大值,当xi,j=1时表示合并sj和si,xi,j=0时表示不合并sj和si,z表示总剩余空间。
56、本发明的第三方面,提出了一种基于分布式海量小文件聚合的垃圾回收系统,包括:存储器和一个或多个处理器。
57、存储器中存储有一个或多个应用程序,一个或多个应用程序适于由一个或多个处理器执行以实现第一方面的基于分布式海量小文件聚合的垃圾回收方法。
58、本发明的第四方面,提出了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序能够被处理器加载和执行以第一方面的基于分布式海量小文件聚合的垃圾回收方法。
59、本发明有益效果如下:
60、在本发明实施例中,首先获取多个待删除聚合大文件并根据预判条件预判小文件生命周期,接着对同一生命周期聚合成的聚合大文件进行判断,判断提取后的待删除聚合大文件的存储空间是否存在小于第二预设存储空间的待删除聚合大文件,若存在,将小于第二预设存储空间待删除聚合大文件标记为待合并聚合大文件,否则,将提取后的待删除聚合大文件作为目标聚合大文件输出,并结合二分适应合并算法和贪心算法对所述待合并聚合大文件进行合并策略优化,合并后的聚合大文件满足条件后进行删除,可快速计算和评估可释放的占用空间,避免多个待删除聚合大文件在删除小文件后无法及时释放占用空间的问题,实现了高效的存储空间配置,通过将同周期聚合大文件和目标聚合大文件删除至垃圾回收站,在删除文件后可快速及时的释放存储资源,使整个系统的运行更加高效和经济,从而有效提高了存储利用率和系统性能,提高存储效率。