本公开的实施例涉及存储器领域,具体地涉及用于管理存储块的方法、设备和计算机程序产品。
背景技术:
存储系统,例如弹性云存储系统(elasticcloudstorage,ecs),可以使用存储块(chunk)来存储数据。所有用户数据都存储在存储块而不是文件系统中,它们对下层硬件是透明的并且存储块是共享的。一个对象通常包括存储到不同存储块的一组数据块并且在一个存储块可以包含多个对象的数据块。在存储系统中可以通过存储块来管理磁盘容量,并以仅附加方式在存储块上存储数据。存储系统可以使用户数据对下层磁盘和文件系统保持透明,并且可以轻松地考虑分布式系统实现数据一致性。然而,在采用存储块的存储系统中还存在许多需要解决的问题。
技术实现要素:
本公开的实施例提供一种用于管理存储块的方法、设备和计算机程序产品。
根据本公开的第一方面,提供了一种用于管理存储块的方法。该方法包括获取与目标存储块有关的写入参数集合和删除参数集合,写入参数集合包括关于已向目标存储块中存储的与至少一个对象相关联的数据的信息,删除参数集合包括关于从目标存储块中删除与至少一个对象相关联的数据的信息。该方法还包括响应于写入参数集合与删除参数集合相匹配,获取针对目标存储块的第一数据长度,第一数据长度是响应于接收到针对目标存储块的写入请求而确定的。该方法还包括基于第一数据长度和删除参数集合,确定关于目标存储块的回收信息。
根据本公开的第二方面,提供了一种用于管理存储块的电子设备。该电子设备包括处理器;以及存储器,存储有计算机程序指令,处理器运行存储器中的计算机程序指令控制电子设备执行动作,该动作包括:获取与目标存储块有关的写入参数集合和删除参数集合,写入参数集合包括关于已向目标存储块中存储的与至少一个对象相关联的数据的信息,删除参数集合包括关于从目标存储块中删除与至少一个对象相关联的数据的信息;响应于写入参数集合与删除参数集合相匹配,获取针对目标存储块的第一数据长度,第一数据长度是响应于接收到针对目标存储块的写入请求而确定的;以及基于第一数据长度和删除参数集合,确定关于目标存储块的回收信息。
根据本公开的第三方面,提供了一种计算机程序产品,该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行本公开的第一方面中的方法的步骤。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1图示了根据本公开的实施例的设备和/或方法可以在其中被实施的存储系统100的示意图;
图2图示了根据本公开的实施例的存储块的结构示意图200;
图3图示了根据本公开的实施例的用于管理存储块的方法300的流程图;
图4图示了根据本公开的实施例的用于确定回收信息的方法400的流程图;
图5图示了适于用来实施本公开内容的实施例的示例设备500的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
存储系统(例如,弹性云存储系统ecs)将所有用户数据存储到固定大小的存储块(例如,chunk)中。每个存储块具有预定的存储空间(例如,128mb),其可以存储多个用户对象的数据块。为了保证高写入性能,存储块被设计为仅附加/一次写入数据结构。当所有对象存储在存储块上的数据不再被使用时,可以回收该存储块。在回收存储块时一般利用引用计数来决定是否可以回收存储块。
在存储系统中,当对象创建时,它将在块和对象之间生成正向引用。当对象删除时,它将生成负向引用。存储系统针对每个存储块将收集所有正向引用和负向引用,并且只要所有正向引用被负向引用抵消,则存储块的引用变为0时被可以被回收。
然而,在分布式对象存储系统中,上述方式并不可靠。在分布式对象存储系统中,在存储单元上创建新对象时会有正向引用,而在删除该对象时会有负引用。例如,第一对象、第二对象、第三对象的用户数据已被写在同一存储块上。为了保证计算的并行性,分布式系统将引入分区的概念。该示例假设有两个分区来处理对象创建/删除的事务,并且收集引用。例如,使用第一分区来创建并删除第一对象,并记录第一对象的相关事务。第二对象无法创建。因此,不会记录其事务。使用第二分区来创建了第三对象,并记录第三对象的事务。
由于分配系统只能保证分区内的顺序,但不能保证不同分区之间的顺序,假设存储系统收集了第一对象的正向引用,则会有两种情况:第一种情况,它首先收集第三对象的正向引用,然后收集第一对象的负向引用。第二种情况,它首先收集第二对象的负向引用,然后收集第三对象的正向引用。
然而,在第二种情况,所有引用都被抵消,这表示存储块是可回收的。分布式存储系统或参考计数系统无法保证何时可以收集第三对象的正向引用。它甚至可能不知道它是否会来。因此,在该窗口内,引用计数结果是不可靠的。这种不可靠的引用计数对于存储系统至关重要,因为它将导致潜在的数据存储问题。
因此,为了解决上述问题,在通过引用确定可以回收存储块之后,它会扫描整个对象表以仔细检查是否有任何对象仍然引用该块。
但是,整个系统扫描的验证过程非常耗时,而且通常是影响存储块回收速度的瓶颈。对于用户而言,这表明着他们的资源未得到有效利用。
为了解决上述问题,本公开提出了一种用于管理存储块的方法。在该方法中,先获取与目标存储块有关的写入参数集合和删除参数集合。在写入参数集合与删除参数集合相匹配时,获取针对目标存储块的第一数据长度。然后,基于第一数据长度和删除参数集合,确定关于目标存储块的回收信息。通过上述方法,可以在确定写入参数集合与删除参数集合相匹配时通过比较数据的长度来确定是否回收存储块,减少了通过扫描整个对象表来确定是否有对象引用该存储块,从而减少了验证过程消耗的时间,提高了存储块的回收速度,并且提高了资源利用率。
图1示出了根据本公开的实施例的设备和/或方法可以在其中被实施的存储系统100的示意图。如图1所示,存储系统100可以包括对象层110,存储块层120。对象层110包括第一分区111-1和第二分区111-2。第一分区111-1内的对象的创建和删除被顺序执行,第二分区111-2内的对象的创建和删除被顺序执行。而第一分区111-1和第二分区111-2内的对象的创建和删除可以并行执行。
在一些实施例中,第一分区111-1和第二分区111-2中的对象可以由不同的计算设备执行。在一些实施例中,第一分区111-1和第二分区111-2的对象可以由不同的进程执行。上述示例仅是用于描述本公开,而非对本公开的具体限定。
在图1中第一分区111-1包括对象112-1。第二分区111-2包括对象112-2。图1中分区中包括的对象的数目仅是示例,而非对本公开的具体限定。分区中可以基于需要包括任意数目的对象。
对象112-1的数据表示为122,对象112-2的数据可以表示为数据123和数据124。存储块层120例如可以包括多个存储块121-1至121-x,x为正整数,为了描述方便,可以统称为存储块121。从图1中可以看出,对象112-1的数据122被存储在存储块121-1中,对象112-2的数据123也被存储在存储块121-1中,而对象112-2的数据124被存储在存储块121-2中。图1中所示的对象包括的数据以及存储块121中包括的数据仅是作为示例,而非对本公开的具体限定。本领域技术人员可以依据需要设置对象包括的数据以及存储块中存储的数据。
备选地或附加地,存储系统100还包括与存储块层120相对应的硬件层,其可以包括可用于存储数据的存储介质,例如多个数据盘。
在图1示出的存储系统100中还具有针对对象112-1、对象112-2的元数据。针对对象112-1、对象112-2的元数据描述对象112-1、对象112-2的数据的大小以及对象112-1、对象112-2的数据被存储于哪个存储块121里。例如,针对对象112-1、对象112-2的元数据包括对象112-1、对象112-2的数据所在的存储块121的标识、在存储块121中的偏移地址和在存储块121中数据的长度。在一些实施例中,对象112-1、对象112-2的元数据存储在对象表中。
在图1示出的存储系统100中,具有针对存储块121的写入参数集合和删除参数集合。写入参数集合包括关于已向存储块121中存储的与至少一个对象(例如对象112-1、对象112-2)相关联的数据的信息,删除参数集合包括关于从目标存储块中删除与至少一个对象相关联的数据的信息。
在一些实施例中,写入参数集合是正向引用,该正向引用包括在存储块121中存储数据的对象的标识、数据在存储块121中的偏移和数据的长度。备选地或附加地,该正向引用包括在上述数据前面加上正号。删除参数集合是负向引用,该负向引用包括在存储块121中存储有数据的对象的标识、数据在存储块121中的偏移和数据的长度。备选地或附加地,该负向引用包括在上述数据前面加上负号。
在一些实施例中,写入参数集合和删除参数集合被存储在引用表中。在存储系统100检查是否回收存储块121时,先检查引用表。如果引用表中针对存储块121的写入参数和删除参数相匹配,例如,正向引用和负向引用相互抵消,则进行进一步的验证以确定是否回收存储块121。如果针对存储块121的写入参数和删除参数不匹配,则不需要进行进一步的验证。
在针对存储块121的写入参数集合和删除参数集合匹配时,在进行二次验证时,为了减少通过在对象中查找是否有对象在存储块121中还存储有数据。存储系统100在存储块121的元数据中还设置有针对存储块的数据长度。
在一些实施例中,该数据长度是响应于接收到针对1存储块121的写入请求而确定的。通常写入请求中包括要写入的数据的长度。在接收到请求时,存储系统100会将该数据的长度与存储块121以前的历史数据长度相加而得到当前的数据长度。
在进行二次验证时,存储系统100会确定删除参数集合中的与多个对象相关联的数据长度之和,然后将数据的当前长度和与多个对象相关联数的据块长度之和进行比较。如果相同,则表明没有对象引用该存储块121,可以回收该存储块121。如图2所示,存储块201中存储有数据202-1、数据202-2、数据202-3、数据202-4和数据202-5。如果与上述数据有关的对象被删除,则会存储与上述数据有关的删除参数集合,该删除参数集合中包括数据202-1的长度、数据202-2的长度、数据202-3的长度、数据202-4的长度和数据202-5的长度。将上述长度累加起来,如果等于存储块201的当前长度,则表明没有对象引用该存储块201。因此,该存储块201可以被回收。
如果当前数据的长度大于累加起来的长度,则需要通过检测对象的元数据据来确定是否有对象引用该存储块201。如果检测到对象的元数据中包括存储块201的标识,表明还有对象引用该存储块201,则不对回收该存储块201。如果没有检测到对象标识符,则表明没有对象引用该存储块201,则回收该存储块201。
上面结合图1和图2描述了根据本公开的实施例的用于管理存储块的存储系统100的示意图。下面结合图3详细描述根据本公开的实施例的用于管理存储块的示例方法300的流程图。例如,方法300可以由如图1所示的存储系统100来执行。以下将结合图1来详细描述方法300的各个动作。应当理解,方法300还可以包括未示出的附加动作和/或可以省略所示出的动作。本公开的范围在此方面不受限制。
在框302处,存储系统100获取与目标存储块有关的写入参数集合和删除参数集合,写入参数集合包括关于已向目标存储块中存储的与至少一个对象相关联的数据的信息,删除参数集合包括关于从目标存储块中删除与至少一个对象相关联的数据的信息。
在一些实施例中,存储系统100具有针对目标存储块的元数据,该元数据内存储有写入参数集合和删除参数集合。获取目标存储块的元数据。在获取到目标存储块的元数据后,存储系统100从元数据中提取写入参数集合和删除参数集合。备选地或附加地,针对目标存储块的写入参数集合和删除参数集合包括在针对目标存储块的引用表中。
在框304处,存储系统100确定写入参数集合是否与删除参数集合相匹配。如果写入参数集合与删除参数集合相匹配,在框306处,存储系统100获取针对目标存储块的第一数据长度,第一数据长度是响应于接收到针对目标存储块的写入请求而确定的。
在一些实施例中,在获取第一数据长度时,存储系统100先获取目标存储块的元数据。然后存储系统100从元数据中提取第二数据长度,第二数据长度是基于先前接收到的写入请求中的数据长度而计算的。在接收到针对目标存储块的写入请求时,存储系统100确定要写入目标存储块的数据长度。然后基于第二数据长度和要写入目标存储块的数据长度,存储系统100确定第一数据长度。
备选地或附加地,存储系统100利用第一数据长度更新目标存储块的元数据。
在框308处,存储系统100基于第一数据长度和删除参数集合,确定关于目标存储块的回收信息。关于确定回收信息的过程将在下面结合图4进行详细描述。
通过上述方法,可以在确定写入参数集合与删除参数集合相匹配时通过比较数据的长度来确定是否回收存储块,减少了通过扫描整个对象表来确定是否有对象引用该块,从而减少了验证过程消耗的时间,提高了存储块的回收速度,从而提高了资源利用率。
上面结合图3描述了根据本公开的实施例的用于管理存储块的方法300的流程图。下面结合图4详细描述图3的框308处用于确定回收信息的过程。图4示出了根据本公开的实施例的用于确定回收信息的方法400的流程图。
在存储系统100中,多个对象(例如对象112-1、对象112-2)在目标存储块中存储有数据。在确定关于目标存储块的回收信息时,在框402处,存储系统100确定删除参数集合中的与多个对象相关联的数据长度之和。
存储系统100获取删除参数集合中的每个删除参数集合中数据的长度,然后将所获得的长度相加来来得数据长度之和
在框404处,存储系统100确定第一数据长度是否等于数据长度之和。在第一数据长度是等于数据长度之和时,在框412处,存储系统100确定目标存储块将被回收。
在确定第一数据长度不等于数据长度之和,在框406处,存储系统100确定第一数据长度是否大于数据长度之和。在确定第一数据长度大于数据长度之和时,在框408处,存储系统100获取多个对象(例如对象112-1、对象112-2)的元数据,该元数据包括每个对象的至少一个关联存储块的标识。由于第一数据长度大于数据长度之后,表明可能存在接收到写入请求后,可能有对象正在目标存储块中写入数据,但是其写入参数还未生成。因此,需要来扫描对象的元数据以确定是否具有正在写入数据的对象。
在框410处,存储系统100确定至少一个关联存储块是否不包括目标存储块。在确定至少一个关联存储块不包括目标存储块时,在框412处,存储系统100确定目标存储块将被回收。此时,表明没有对象使用该目标存储块。因此,可以回收该目标存储块。其中,第一数据长度与数据长度之和不同是由于接收到对象的写入请求,但是由于没有成功创建对象导致的。如果检索到至少一个关联存储块包括目标存储块。则表明有使用该目标存储块的对象正在被创建的过程中。因此,不能回收该存储块。
通过上述方法,可以在确定写入参数集合与删除参数集合相匹配时,通过比较数据长度来快速实现针对一部分存储块的验证,提高了存储块的验证效率,加快了存储块的回收,提高了资源利用率。
图5示出了可以用来实施本公开内容的实施例的示例设备500的示意性框图。例如,如图1所示的存储系统100可以由设备500来实施。如图所示,设备500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(ram)503中的计算机程序指令,来执行各种适当的动作和处理。在ram503中,还可存储设备500操作所需的各种程序和数据。cpu501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300和400可由处理单元501执行。例如,在一些实施例中,方法300和400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序被加载到ram503并由cpu501执行时,可以执行上文描述的方法300和400的一个或多个动作。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
1.一种用于管理存储块的方法,包括:
获取与目标存储块有关的写入参数集合和删除参数集合,所述写入参数集合包括关于已向所述目标存储块中存储的与至少一个对象相关联的数据的信息,所述删除参数集合包括关于从所述目标存储块中删除与所述至少一个对象相关联的数据的信息;
响应于所述写入参数集合与所述删除参数集合相匹配,获取针对所述目标存储块的第一数据长度,所述第一数据长度是响应于接收到针对所述目标存储块的写入请求而确定的;以及
基于所述第一数据长度和所述删除参数集合,确定关于所述目标存储块的回收信息。
2.根据权利要求1所述的方法,其中所述至少一个对象包括多个对象,确定关于所述目标存储块的回收信息包括:
确定所述删除参数集合中的与所述多个对象相关联的数据长度之和;以及
响应于确定所述第一数据长度等于所述数据长度之和,确定所述目标存储块将被回收。
3.根据权利要求2所述的方法,其中确定关于所述目标存储块的回收信息还包括:
响应于确定所述第一数据长度大于所述数据长度之和,获取所述多个对象的元数据,所述元数据包括每个对象的至少一个关联存储块的标识;以及
响应于确定所述至少一个关联存储块不包括所述目标存储块,确定所述目标存储块将被回收。
4.根据权利要求1所述的方法,其中获取所述写入参数集合和所述删除参数集合包括:
获取所述目标存储块的元数据;以及
从所述元数据中提取所述写入参数集合和所述删除参数集合。
5.根据权利要求1所述的方法,其中获取所述第一数据长度包括:
获取所述目标存储块的元数据;
从所述元数据中提取第二数据长度,所述第二数据长度是基于先前接收到的写入请求中的数据长度而计算的;
响应于接收到针对所述目标存储块的写入请求,确定要写入所述目标存储块的数据长度;以及
基于所述第二数据长度和要写入所述目标存储块的数据长度,确定所述第一数据长度。
6.根据权利要求5所述的方法,还包括:
利用所述第一数据长度更新所述目标存储块的元数据。
7.一种用于管理存储块的电子设备,所述电子设备包括:
处理器;以及
存储器,存储有计算机程序指令,处理器运行存储器中的所述计算机程序指令控制所述电子设备执行动作,所述动作包括:
获取与目标存储块有关的写入参数集合和删除参数集合,所述写入参数集合包括关于已向所述目标存储块中存储的与至少一个对象相关联的数据的信息,所述删除参数集合包括关于从所述目标存储块中删除与所述至少一个对象相关联的数据的信息;
响应于所述写入参数集合与所述删除参数集合相匹配,获取针对所述目标存储块的第一数据长度,所述第一数据长度是响应于接收到针对所述目标存储块的写入请求而确定的;以及
基于所述第一数据长度和所述删除参数集合,确定关于所述目标存储块的回收信息。
8.根据权利要求7所述的电子设备,其中所述至少一个对象包括多个对象,确定关于所述目标存储块的回收信息包括:
确定所述删除参数集合中的与所述多个对象相关联的数据长度之和;以及
响应于确定所述第一数据长度等于所述数据长度之和,确定所述存储块将被回收。
9.根据权利要求8所述的电子设备,其中确定关于所述目标存储块的回收信息还包括:
响应于确定所述第一数据长度大于所述数据长度之和,获取所述多个对象的元数据,所述元数据包括每个对象的至少一个关联存储块的标识;以及
响应于确定所述至少一个关联存储块不包括所述目标存储块,确定所述目标存储块将被回收。
10.根据权利要求7所述的电子设备,其中获取所述写入参数集合和所述删除参数集合包括:
获取所述目标存储块的元数据;以及
从所述元数据中提取所述写入参数集合和所述删除参数集合。
11.根据权利要求7所述的电子设备,其中获取所述第一数据长度包括:
获取所述目标存储块的元数据;
从所述元数据中提取第二数据长度,所述第二数据长度是基于先前接收到的写入请求中的数据长度而计算的;
响应于接收到针对所述目标存储块的写入请求,确定要写入所述目标存储块的数据长度;以及
基于所述第二数据长度和要写入所述目标存储块的数据长度,确定所述第一数据长度。
12.根据权利要求11所述的电子设备,所述动作还包括:
利用所述第一数据长度更新所述目标存储块的元数据。
13.一种计算机程序产品,所述计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至6中任一项所述的方法的步骤。
技术总结