一种存储空间回收的方法及存储系统的制作方法

文档序号:9417116阅读:255来源:国知局
一种存储空间回收的方法及存储系统的制作方法
【技术领域】
[0001]本申请涉及计算机存储技术领域,尤其涉及一种存储空间回收的方法及存储系统。
【背景技术】
[0002]当前,在很多的分布式的存储系统中,为了较快的读取文件,会首先建立一个较大的存储空间,比如说50G或者是100G的存储空间,然后将实际的用户文件顺序的放置在该较大的存储空间中。
[0003]所以目前的存储系统是在一大块连续的存储空间上按顺序存储着各个文件,对外则是以偏移量参数作为索引键值来读取到相应的文件,即:通过offset参数来读取到对应位置上的文件。
[0004]但是,目前的存储系统,通常在存入新文件或数据时,并不是将新文件或数据的信息写入已被删除的文件所在的磁盘位置处,而是在存储空间的剩余空间上顺序写入,导致已经被删除的文件所在位置的存储空间浪费,大大降低存储空间的利用率。
[0005]而且,当部分文件被删除之后,剩余在存储系统的文件处于不连续的物理存储位置,当磁头读写文件的时候,需要不断地寻找文件位置,从而导致访问或读取文件的速度大幅下降。

【发明内容】

[0006]本发明实施例提供了一种存储空间回收的方法及存储系统,用以解决现有技术中存储系统中的存储空间浪费,并且利用率也较低的问题,并大幅提高访问或读取文件的速度。
[0007]其具体的技术方案如下:
一种存储空间回收的方法,所述方法包括:
对存储系统中的第一存储空间进行检测,获取所述第一存储空间对应的闲置比例,其中,所述闲置比例为第一存储空间中被删除的文件所闲置的存储空间与第一存储空间的总存储空间的比值;
判定所述第一存储空间的闲置比例是否大于等于预设阈值;
在第一存储空间对应的闲置比例大于等于预设阈值时,则配置第二存储空间,将所述第一存储空间中未被删除的文件顺序的存储于所述第二存储空间中。
[0008]可选的,对存储系统中的第一存储空间进行检测,获取所述第一存储空间对应的闲置比例,具体为:
按照设定检测周期,周期性的对所述存储系统中的第一存储空间进行检测,获取所述第一存储空间对应的闲置比例。
[0009]可选的,在配置第二存储空间,将所述第一存储空间中未被删除的文件连续的存储于所述第二存储空间中之后,还包括: 生成第一索引表以及第二索引表;
在所述第一索引表中配置M个位置,并在所述第二索引表中配置M个子表,其中,每个子表中包含了 X*Ni个槽位,所述第一索引表中的一个位置指示所述第二索引表中的一个子表,其中,M为大于等于2的正整数,Ni为第一索引表中的第i位置存放的符合11% M =i条件的有效文件数量,i为第一索引表中第i个位置,在I到M之间,N1+N2+...+Nm =第一存储空间文件总数。X为大于等于I的正整数;
在所述第一索引表的一个位置中存储一个子表地址的指针,并在所述第二索引表中存储原偏移量参数与新偏移量参数之间的对应关系。
[0010]可选的,在所述第一索引表中的配置M个位置,包括:
获取特定的原偏移量参数,并获取各个原偏移量参数的哈希值h,在所述第一索引表中配置M个位置。
[0011]可选的,在所述第二索引表中存储原偏移量参数与新偏移量参数之间的对应关系,包括:基于所述哈希值h,在所述第一索引表中确定出第h%M个位置,并在所述第h % M个位置确定出指针;
在所述第二索引表中确定出所述指针对应的子表;
从子表的第(h>>8) % (X*Ni)开始,如果M = 256,则右移8位;如M = 128则右移7位等;X为1,2,3...根据实际需要确定系数。然后依次向后遍历(遇到末尾就回到头),找到第一个空槽,存入(offset, newOffset)关系(也就是说,如果第一个不是空槽,则往该槽的下一个槽寻找,这是处理哈希冲突的线性探查法),所述新偏移量参数指示了存储在所述第二存储空间中的文件的地址。
[0012]可选的,在配置第二存储空间,将所述第一存储空间中未被删除的文件顺序的存储于所述第二存储空间中之后,还包括:
获取一偏移量参数,确定所述偏移量参数对应的哈希值h ;
根据所述哈希值h,在所述第一索引表中根据h% M确定出哈希值h对应的位置中的指针;
在所述第二索引表中确定出对应所述指针的子表;
从子表的第(h>>8) % (X*Ni)开始,其中M = 256时则右移8位,M = 128时则右移7位;X =1,2,3...根据实际情况定。依次向后遍历(遇到末尾就回到头)。对于每个槽位,读取其中的(offset,newOffset)关系,在存在相同的所述偏移量参数时,则获取所述偏移量参数对应的新偏移量参数;如果遇到空槽,表示此offset不在索引中。
[0013]—种存储系统,包括:
检测模块,用于对存储系统中的第一存储空间进行检测,获取所述第一存储空间对应的闲置比例,其中,所述闲置比例为第一存储空间中的被删除的文件所闲置的存储空间与第一存储空间的总存储空间的比值;
判定模块,用于判定所述第一存储空间的闲置比例是否大于等于预设阈值;
处理模块,用于在第一存储空间对应的闲置比例大于等于预设阈值时,则配置第二存储空间,将所述第一存储空间中未被删除的文件顺序的存储于所述第二存储空间中。
[0014]可选的,所述检测模块,用于按照设定检测周期,周期性的对所述存储系统中的第一存储空间进行检测,获取所述第一存储空间对应的闲置比例。
[0015]可选的,所述处理模块,还用于生成第一索引表以及第二索引表;在所述第一索引表中配置M个位置,并在所述第二索引表中配置M个子表,在所述第一索引表的一个位置中存储一个子表地址的指针,并在所述第二索引表中存储原偏移量参数与新偏移量参数之间的对应关系,其中,每个子表中包含了 X*Ni个槽位,所述第一索引表中的一个位置指示所述第二索引表中的一个子表,M为大于等于2的正整数,Ni为第一索引表中的第i位置存放的符合11% M = i条件的有效文件数量,i为第一索引表中第i个位置,在I到M之间,N1+N2+...+Nm =第一存储空间文件总数。X为大于等于I的正整数。
[0016]可选的,所述处理模块,具体用于获取特定的原偏移量参数,并获取各个原偏移量参数的哈希值h,在所述第一索引表中配置M个位置。
[0017]可选的,所述处理模块,具体用于基于所述哈希值h,在所述第一索引表中确定出第h% M个位置,并在所述第h% M个位置确定出指针在所述第二索引表中确定出所述指针对应的子表;从子表的第(h>>8) % (X*Ni)开始,如果M = 256,则右移8位;如M = 128则右移7位等;X为1,2,3...根据实际需要确定系数。然后依次向后遍历(遇到末尾就回到头),找到第一个空槽,存入(offset, newOffset)关系(也就是说,如果第一个不是空槽,贝Ij往该槽的下一个槽寻找,这是处理哈希冲突的线性探查法),所述新偏移量参数指示了存储在所述第二存储空间中的文件的地址。
[0018]可选的,所述处理模块,还用于获取一偏移量参数,确定所述偏移量参数对应的哈希值h ;根据所述哈希值h,在所述第一索引表中确
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1