发明内容
本发明提供了一种对固态硬盘SSD重定向数据的处理方法及装置,以解决现有技术中基于空间映射表来判断重定向空间数据的处理效率低的问题。
第一方面,本发明提供了一种对固态硬盘SSD重定向数据的处理方法,该方法包括:对固态硬盘SSD设置定长的重定向空间,所述重定向空间设有一个或多个逻辑空间,当所述重定向空间内包括有多个逻辑空间,则每个逻辑空间用以存储不同的数据,并以所占用逻辑空间最大的存储数据为准进行垃圾标记位设置;按照预设周期对被释放的重定向空间进行处理,判断所释放的重定向空间是否存在垃圾标记位,如果是,则进一步判断所述垃圾标记位是否置位,如果置位,则判定所述重定向空间内存储的数据为非垃圾数据;当所述重定向空间没有垃圾标记位,或者所述垃圾标记位未置位,则进一步查询重定向空间ROW映射表,如果所述ROW映射表内存在所述重定向空间,则判断所述重定向空间内存储的数据为非垃圾数据,否则,则判定所述重定向空间内存储的数据为垃圾。
可选地,所述重定向空间设有两个逻辑空间,分别是第一逻辑空间和第二逻辑空间,如果所述第一逻辑空间所占内存大于或者等于所述第二逻辑空间所占内存,则以所述第一逻辑空间内存储的数据为准设置所述垃圾标记位。
可选地,所述方法还包括:为每个重定向空间设置与其唯一对应的垃圾标记位,并通过预设算法使得所述垃圾标记位被所述第一逻辑空间使用。
可选地,当判定所述重定向空间内存储的数据为非垃圾之数据后,所述方法还包括:对所述重定向空间内存储的数据进行搬移处理。
可选地,所述方法还包括:当监测到释放重定向空间后,遍历释放的重定向空间内的各逻辑空间,并进行垃圾标记位设置。
可选地,所述遍历释放的重定向空间内的各逻辑空间,并进行垃圾标记位设置,包括:遍历释放的重定向空间内的各逻辑空间,以所释放的重定向空间内的占用逻辑空间最大的存储数据为准进行垃圾标记位设置。
可选地,当所述重定向空间中各个数据所占用的逻辑空间大小相等,则以第一逻辑空间内的数据为准进行垃圾标记位设置。
第二方面,本发明提供了一种对固态硬盘SSD重定向数据的处理装置,该装置包括:设置单元,用于对固态硬盘SSD设置定长的重定向空间,所述重定向空间设有一个或多个逻辑空间,当所述重定向空间内包括有多个逻辑空间,则每个逻辑空间用以存储不同的数据,并以所占用逻辑空间最大的存储数据为准进行垃圾标记位设置;处理单元,用于按照预设周期对被释放的重定向空间进行处理,判断所释放的重定向空间是否存在垃圾标记位,如果是,则进一步判断所述垃圾标记位是否置位,如果置位,则判定所述重定向空间内存储的数据为非垃圾数据;当所述重定向空间没有垃圾标记位,或者所述垃圾标记位未置位,则进一步查询重定向空间ROW映射表,如果所述ROW映射表内存在所述重定向空间,则判断所述重定向空间内存储的数据为非垃圾数据,否则,则判定所述重定向空间内存储的数据为垃圾。
第三方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有信号映射的计算机程序,所述计算机程序被至少一个处理器执行时,以实现上述任一种所述的对固态硬盘SSD重定向数据的处理方法。
本发明有益效果如下:
本发明通过设置垃圾标记以实现快速查询垃圾状态,并且在垃圾标记掉电丢失等情况下,通过查询重定向空间映射表来确定垃圾状态,所以本发明能够实现对重定向变长逻辑空间的垃圾标记,并结合逻辑空间到重定向空间映射表查询,容忍垃圾标记掉电丢失,也即本发明在保证大多数场景得到加速的同时,又避免了复杂的一致性保证设计,并且本发明提出的垃圾标记位归属策略,保证了在变长非对齐数据存储空间场景下,也能够使用定长拆分策略标记垃圾,解决了变长非对齐数据存储空间垃圾标记难的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
本发明实施例针对现有基于空间映射表来判断重定向空间数据的处理效率低的问题,本发明通过设置垃圾标记以实现快速查询垃圾状态,并且在垃圾标记掉电丢失等情况下,通过查询重定向空间映射表来确定垃圾状态,所以本发明能够实现对重定向变长逻辑空间的垃圾标记,并结合逻辑空间到重定向空间映射表查询,容忍垃圾标记掉电丢失。以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明第一实施例提供了一种对固态硬盘SSD重定向数据的处理方法,参见图1,该方法包括:
S101、对固态硬盘SSD设置定长的重定向空间,所述重定向空间设有一个或多个逻辑空间,当所述重定向空间内包括有多个逻辑空间,则每个逻辑空间用以存储不同的数据,并以所占用逻辑空间最大的存储数据为准进行垃圾标记位设置;
具体实施时,本发明实施例中规定,所述重定向空间可以设有两个逻辑空间,分别是第一逻辑空间和第二逻辑空间,如果所述第一逻辑空间所占内存大于或者等于所述第二逻辑空间所占内存,则以所述第一逻辑空间内存储的数据为准设置所述垃圾标记位。
具体来说,本发明实施例是为每个重定向空间设置与其唯一对应的垃圾标记位,并通过预设算法使得所述垃圾标记位被所述第一逻辑空间使用。
也就是说,为了保证垃圾标记位与重定向空间之间的唯一对应性,本发明实施例规定将同一重定向空间内的占用空间最大的数据对应垃圾标记位,也即,本发明实施例是根据重定向空间内的占用空间最大的数据的状态来设置该重定向空间的垃圾标记位,达到通过垃圾标记来快速查询垃圾状态。
S102、按照预设周期对被释放的重定向空间进行处理,判断所释放的重定向空间是否存在垃圾标记位,如果是,则进一步判断所述垃圾标记位是否置位,如果置位,则判定所述重定向空间内存储的数据为非垃圾数据;
S103、当所述重定向空间没有垃圾标记位,或者所述垃圾标记位未置位,则进一步查询重定向空间ROW映射表,如果所述ROW映射表内存在所述重定向空间,则判断所述重定向空间内存储的数据为非垃圾数据,否则,则判定所述重定向空间内存储的数据为垃圾。
具体实施时,本发明实施例在判定所述重定向空间内存储的数据为非垃圾之数据后,还需要对所述重定向空间内存储的数据进行搬移处理。例如将数据重定向存储到4MB对象为EC,EC条带大小为32KB。在条带内,依次有8KB、4KB、7KB、3.5KB、2KB数据。本方案,将32KB数据拆分为4KB,每个4KB有一个bit位用于标识数据的垃圾状态。
如图2所示,8KB数据占用两个bit位,只使用第一个bit位可标识8KB数据是否为垃圾。在8KB数据后4KB数据对应bit位2。接着7KB数据占用了bit位为3和bit位为4的4KB数据。对于bit位为3的4KB数据被全部使用,对于bit位为4的4KB数据被使用3KB。
通过上述设置能够解决被拆分的一个4KB数据被不完全占用的问题。通常的策略,会采用强制数据对齐,保证一个4KB数据只会被一段逻辑空间占用,从而规避了此问题。但是强制对齐的策略,无疑会导致空间内存在较大的浪费。
为了解决此问题,本发明实施例通过设置,允许多段逻辑空间使用同一个4KB内不同区域,多段逻辑空间中一定只会有一段逻辑空间对4KB的使用超过1半,这一段逻辑空间就是这一个4KB的垃圾标记位的归属。对于其他使用此段4KB区域的逻辑空间,没有垃圾标记,不进行垃圾标记。假如刚好被分成两个一般,那么第一个一半使用垃圾标记位。
也就是说,本发明实施例不要求垃圾标记准确,允许垃圾标记丢失。在进行垃圾回收时,垃圾标记被置位代表对应的归属逻辑空间已经不再使用此重定向空间,垃圾标记没有被置位对应归属逻辑空间可能为垃圾,也可能不为垃圾。所以,在垃圾标记未置位或者没有设置垃圾标记的情况下,就需要对没有置位的归属逻辑空间进行反查映射表,以确定其是否为垃圾。
垃圾标记缓存在内存中,本发明并不会全部缓存所有重定向空间的垃圾标记,每个重定向对象用一页作为bitmap,通过LRU淘汰长时间未修改的bitmap。
参见图3所示,在具体实施时,本发明实施例需要实时监测是否有释放重定向空间,当监测到释放重定向空间后,遍历释放的重定向空间内的各逻辑空间,并进行垃圾标记位设置。
具体本发明实施例是遍历释放的重定向空间内的各逻辑空间,以所释放的重定向空间内的占用逻辑空间最大的存储数据为准进行垃圾标记位设置。当所述重定向空间中各个数据所占用的逻辑空间大小相等,则以第一逻辑空间内的数据为准进行垃圾标记位设置。
参见图4所示,在具体实施时,本发明实施例是先确定是否垃圾标记,如果有,查看该垃圾标记是否置位,如果置位,则不必搬运垃圾数据,当所述重定向空间没有垃圾标记位,或者所述垃圾标记位未置位,则进一步查询重定向空间ROW映射表,如果所述ROW映射表内存在所述重定向空间,则判断所述重定向空间内存储的数据为非垃圾数据,否则,则判定所述重定向空间内存储的数据为垃圾。
本发明实施例通过增加垃圾标记,用于快速查询垃圾状态,又不完全依赖于垃圾标记。在保证大多数场景得到加速的同时,又避免了复杂的一致性保证设计。并且本发明提出垃圾标记位归属策略,保证了在变长非对齐数据存储空间场景下,也能够使用定长拆分策略标记垃圾,解决了变长非对齐数据存储空间垃圾标记难的问题。并且,在具体实施时本发明实施例通过LRU缓存最新修改垃圾标记,以提高垃圾标记命中的概率,降低内存使用。
本发明第二实施例提供了一种对固态硬盘SSD重定向数据的处理装置,参见图5,该装置包括:
设置单元,用于对固态硬盘SSD设置定长的重定向空间,所述重定向空间设有一个或多个逻辑空间,当所述重定向空间内包括有多个逻辑空间,则每个逻辑空间用以存储不同的数据,并以所占用逻辑空间最大的存储数据为准进行垃圾标记位设置;
处理单元,用于按照预设周期对被释放的重定向空间进行处理,判断所释放的重定向空间是否存在垃圾标记位,如果是,则进一步判断所述垃圾标记位是否置位,如果置位,则判定所述重定向空间内存储的数据为非垃圾数据;当所述重定向空间没有垃圾标记位,或者所述垃圾标记位未置位,则进一步查询重定向空间ROW映射表,如果所述ROW映射表内存在所述重定向空间,则判断所述重定向空间内存储的数据为非垃圾数据,否则,则判定所述重定向空间内存储的数据为垃圾。
本发明通过设置垃圾标记以实现快速查询垃圾状态,并且在垃圾标记掉电丢失等情况下,通过查询重定向空间映射表来确定垃圾状态,所以本发明能够实现对重定向变长逻辑空间的垃圾标记,并结合逻辑空间到重定向空间映射表查询,容忍垃圾标记掉电丢失。
本发明实施例的相关内容可参见本发明第一实施例进行理解,在此不做详细论述。
本发明第三实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有信号映射的计算机程序,所述计算机程序被至少一个处理器执行时,以实现本发明第一实施例中任一种所述的对固态硬盘SSD重定向数据的处理方法。
本发明实施例的相关内容可参见本发明第一实施例进行理解,在此不做详细论述。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。