CN109240941B - 一种存储系统的垃圾回收方法及相关装置 - Google Patents
一种存储系统的垃圾回收方法及相关装置 Download PDFInfo
- Publication number
- CN109240941B CN109240941B CN201811109643.4A CN201811109643A CN109240941B CN 109240941 B CN109240941 B CN 109240941B CN 201811109643 A CN201811109643 A CN 201811109643A CN 109240941 B CN109240941 B CN 109240941B
- Authority
- CN
- China
- Prior art keywords
- host
- timestamp
- setting
- nth
- count value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000011084 recovery Methods 0.000 title claims abstract description 41
- 238000004590 computer program Methods 0.000 claims description 10
- 230000005012 migration Effects 0.000 claims description 8
- 238000013508 migration Methods 0.000 claims description 8
- 230000007717 exclusion Effects 0.000 abstract description 15
- 238000004064 recycling Methods 0.000 abstract description 11
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000010076 replication Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本申请公开了一种存储系统的垃圾回收方法,包括:设置第N时间戳,将第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对最新时间戳对应的计数值加一;当主机IO返回时,将主机IO对应的时间戳的计数值减一;将垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;当有效数据复制结束时,设置第N+1时间戳;当第N时间戳的计数值为预设数值时,将待回收大块空间进行释放,以便完成垃圾回收操作。通过当时间戳的计数值为0时,对待回收大块空间进行释放,实现了将主机IO和垃圾回收进行相互排斥,避免了性能降低。本申请还公开了一种存储系统服务器、服务器以及计算机可读存储介质,具有以上有益效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种存储系统的垃圾回收方法、存储系统服务器、服务器以及计算机可读存储介质。
背景技术
随着存储技术的不断发展,由于SSD盘的特点和传统机械硬盘的区别,各个厂商均研发了适用于AFA的存储软件,以便提高AFA的存储效率,更充分的利用SSD的存储资源。该存储软件一般包括两个主要方面,一个方面,对所有主机写请求都凑成大块数据,然后从硬盘上分配新的空间将该大块数据写入,另一个方面是,对于已经写过并且都是无效数据的空间,对其进行垃圾回收处理,以便回收相应的大块空间。
其中,对于AFA进行垃圾回收的通常做法是:在已分配的空间中,查找有效空间低于阈值的大块,将上面的有效空间搬移到新的空间,然后再将这个大块的空间释放。
但是,现有技术中进行垃圾回收的缺点:在搬移大块空间的有效数据的时候,主机请求可能正在访问这个空间,比如主机可能正在读这个空间,或者DDP正在访问这个空间,因此为了实现互斥技术,也就是保证垃圾回收之后发出的主机IO与垃圾回收流程之间不出现冲突,必须在主机访问和垃圾回收搬移空间的时候加保护锁互斥。但是在主机请求的关键路径上加保护锁,会严重降低主机的性能,尤其是读请求的性能。
因此,如何在保证主机IO与垃圾回收流程不出现冲突的情况下避免互斥技术降低主机性能,是本领域技术人员关注的重点问题。
发明内容
本申请的目的是提供一种存储系统的垃圾回收方法、存储系统服务器、服务器以及计算机可读存储介质,通过设置的时间戳的计数值,判断该垃圾回收流程中的主机IO是否处理完成,当计数值为预设数值时即可对大块空间进行释放,也就是通过计数值的加减操作实现了主机IO与垃圾回收的相互排斥操作,减少了性能消耗。
为解决上述技术问题,本申请提供一种存储系统的垃圾回收方法,包括:
设置第N时间戳,将所述第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对最新时间戳对应的计数值加一,设置所述主机IO与所述最新时间戳的对应关系;当所述主机IO返回时,将所述主机IO对应的时间戳的计数值减一;
当接收到垃圾回收请求,将所述垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;
当所述有效数据复制结束时,设置第N+1时间戳;
当所述第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作。
可选的,设置第N时间戳,包括:
当所述存储系统对多个线程下发主机IO时,对所有下发主机IO的线程均设置第N时间戳;
相应的,当所述有效数据复制结束时,设置第N+1时间戳,包括:
当所述有效数据复制结束时,对所有下发主机IO的线程均设置第N+1时间戳。
可选的,当所述第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作,包括:
当所有线程的第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作。
可选的,设置第N时间戳,包括:
当所述存储系统对多个控制器下发主机IO时,对所有下发主机IO的控制器均设置第N时间戳;
相应的,当所述有效数据复制结束时,设置第N+1时间戳,包括:
当所述有效数据复制结束时,对所有下发主机IO的控制器均设置第N+1时间戳。
可选的,当所述第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作,包括:
当所有控制器的第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作。
本申请还提供一种存储系统服务器,包括:
第N时间戳设置模块,用于设置第N时间戳,将所述第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对最新时间戳对应的计数值加一,设置所述主机IO与所述最新时间戳的对应关系;当所述主机IO返回时,将所述主机IO对应的时间戳的计数值减一;
有效数据迁移模块,用于当接收到垃圾回收请求,将所述垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;
第N+1时间戳设置模块,用于当所述有效数据复制结束时,设置第N+1时间戳;
大块空间释放模块,用于当所述第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作。
可选的,所述第N时间戳设置模块,还用于当所述存储系统对多个线程下发主机IO时,对所有下发主机IO的线程均设置第N时间戳。
可选的,所述第N时间戳设置模块,还用于当所述存储系统对多个控制器下发主机IO时,对所有下发主机IO的控制器均设置第N时间戳。
本申请还提供一种服务器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的垃圾回收方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的垃圾回收方法的步骤。
本申请所提供的一种存储系统的垃圾回收方法,包括:设置第N时间戳,将所述第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对最新时间戳对应的计数值加一,设置所述主机IO与所述最新时间戳的对应关系;当所述主机IO返回时,将所述主机IO对应的时间戳的计数值减一;当接收到垃圾回收请求,将所述垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;当所述有效数据复制结束时,设置第N+1时间戳;当所述第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作。
通过设置的时间戳中的计数值,该技术值记录了每两次有效数据复制结束之间的未处理结束的主机IO数量,当该计数值为预设数值时,就代表该时段之间的主机IO全部处理完毕,也就是此时在该待回收大块空间上没有进行处理的主机IO,就可以对待回收大块空间进行释放,进而避免对未处理结束的待回收大块空间进行释放而造成的主机IO失败的情况,实现主机IO和垃圾回收操作间的相互排斥,并且不降低主机的性能,提高垃圾回收操作的适用性。
本申请还提供一种存储系统服务器、服务器以及计算机可读存储介质,具有以上有益效果,在此不做赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种存储系统的垃圾回收方法的流程图;
图2为本申请实施例所提供的另一种存储系统的垃圾回收方法的流程图;
图3为本申请实施例所提供的还一种存储系统的垃圾回收方法的流程图;
图4为本申请实施例所提供的一种存储系统服务器的结构示意图。
具体实施方式
本申请的核心是提供一种存储系统的垃圾回收方法、存储系统服务器、服务器以及计算机可读存储介质,通过设置的时间戳的计数值,判断该垃圾回收流程中的主机IO是否处理完成,当计数值为预设数值时即可对大块空间进行释放,也就是通过计数值的加减操作实现了主机IO与垃圾回收的相互排斥操作,减少了性能消耗。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前在存储系统的垃圾回收过程中容易出现正在执行垃圾回收的操作和对数据的读取操作出现冲突的情况,可能是垃圾回收时对还未处理完毕的待回收大块空间的数据进行读写操作,还有可能是在对待回收大块空间的数据进行读写时执行了垃圾回收操作,以上这些情况都会造成数据读写或垃圾回收的失败、出错的情况,严重的造成数据丢失,磁盘功能紊乱。
现有技术对此提供了一种互斥技术,在主机访问IO也就是读写操作时和垃圾回收操作加保护锁,形成读写操作和垃圾回收之间的互斥,两者操作之间相互排斥,避免两个操作之间相互影响。但是,现有技术会在主机进行请求的关键路径上添加保护锁,添加的保护锁会严重降低主机的性能,尤其是读取数据的性能。
而在实际运行中,对于大块空间的垃圾回收操作主要是两个阶段,第一个阶段是发现待回收大块空间,对待回收大块空间的有效数据进行迁移,第二阶段是对有效数据迁移后的大块空间进行空间释放。如果此时还存在数据读取操作,一般是在对大块空间进行释放时,会出现数据错误,因为此时主机IO还未处理结束相关的IO请求,而此时正在请求的对象就是释放前的大块空间,但是此时有效数据迁移后,立即释放大块空间会造成主机IO请求的对象丢失,直接造成主机IO失败,或者是当主机IO是在写数据时,会造成数据丢失的情况。
因此,本实施例提供一种存储系统的垃圾回收方法,通过设置的时间戳中的计数值,该技术值记录了每两次有效数据复制结束之间的未处理结束的主机IO数量,当该计数值为预设数值时,就代表该时段之间的主机IO全部处理完毕,也就是此时在该待回收大块空间上没有进行处理的主机IO,就可以对待回收大块空间进行释放,进而避免对未处理结束的待回收大块空间进行释放而造成的主机IO失败的情况,实现主机IO和垃圾回收操作间的相互排斥,并且不降低主机的性能,提高垃圾回收操作的适用性。
请参考图1,图1为本申请实施例所提供的一种存储系统的垃圾回收方法的流程图。
本实施例中预设数值为0,在一般应用情况下也可以设置为其他标准数值,还可以根据不同的个性化需求设置为其他数值,在此不做具体限定。
该方法可以包括:
S101,设置第N时间戳,将第N时间戳对应的计数值设置为0;其中,当下发主机IO时,对最新时间戳对应的计数值加一,设置主机IO与最新时间戳的对应关系;当主机IO返回时,将主机IO对应的时间戳的计数值减一;
本步骤旨在设置第N时间戳。本步骤中第N时间戳可以在任何时间进行设置,一般是在垃圾回收操作之前进行设置,为了保证本实施例的效果,可以在系统启动之后设置第N时间戳,也可以是在上一次垃圾回收操作将有效数据复制之后设置第N时间戳,主要是保证该时间戳对应的主机IO包括对待回收大块空间进行操作的主机IO,因此,第N时间戳的设置时机并不唯一,在此不做具体限定。
在本实施例中,除了设置相关的时间戳,还需要在主机IO下发时对此时最新的时间戳的机数值进行操作,简单地说就是当下发主机IO时对对应的计数值加一,当该主机IO处理完毕时将对应的计数值减一。
当主机IO下发时,会查找到最新的时间戳,并将该时间戳对应的计数值加一。查找最新的时间戳是为了保持每个时间戳所记录的主机IO均是该时间戳设置时间之后与下一时间戳之前的主机IO,也就是保证时间戳记录的准确性,而不是记录在非主机IO下发时间时的时间戳内,避免时间戳的管理混乱。每个时间戳都会对应一个计数值,当该时间段内的主机IO下发时计数值加一,主机IO处理完成返回时计数值减一,因此,计数值代表了该时间戳以内的未处理结束的主机IO的数量。进一步的,当该计数值为开始的值时,也就是为0时,表示该时间戳以内的主机IO全部处理完成了。因此,在垃圾处理流程中可以通过时间戳的计数值判断该大块空间的主机IO是否处理完毕,进而确定是否执行后续的步骤。
例如,此时设置第9时间戳,也就是最新的时间戳就是第9时间戳。当主机IO下发时,会查找此时系统中的最新的时间戳,也就是第9时间戳。将该第9时间戳对应的计数值加一。并且还将第9时间戳与该主机IO设置为对应的状态,可以是在主机IO中加入第9时间戳的属性,也可以是在表中记录主机IO与时间戳的对应关系,还可以根据主机IO下发的时间和时间戳的时间之间进行相互匹配,因此,本步骤中时间戳与主机IO的对应关系设置方式并不唯一,在此不做具体限定。当该主机IO处理结束后,根据对应关系查找到对应的时间戳,此时有可能该对应的时间戳仍为最新的时间戳,还有可能最新时间戳已经是第20时间戳,无论如何查找的都是该主机IO对应的时间戳,也就是第9时间戳,将该时间戳对应的计数值减一。
需要说明的是,本步骤中的加一和减一的主要作用是每次对计数值变化相同的量,也就是说只要是相同的变化量,具体变化多少可以不做限定。可以是加三和减三,也可以是加20和减20,还可以是其他进制的变化量,例如加b和减b。因此,本实施例主要是以加一和减一进行说明,其他方式大同小异,只要可以变化相同的量,变化的方式并不唯一,在此不做具体限定。
本实施例中所指的主机IO就是系统对存储装置的读写请求或读写操作。
S102,当接收到垃圾回收请求,将垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;
在上一步骤的基础上,本步骤旨在当接收到垃圾回收请求,将该垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中。本步骤也是一般情况中对于垃圾回收的操作,将待回收大块空间中的有效数据迁移到新大块空间中,迁移之后直接释放待回收大块空间。但是在迁移的过程中和迁移之前甚至会出现主机IO对该待回收大块空间进行操作的情况,当该主机IO未处理完成后就进行释放,会导致主机IO出错。因此,本实施例中在有效数据迁移之后不直接进行释放操作。具体的请参考下一步骤。
其中,本步骤中的复制与通常垃圾回收操作中的迁移所指的是同一操作。
S103,当有效数据复制结束时,设置第N+1时间戳;
在上一步骤的基础上,本步骤旨在当有效数据复制结束时,设置第N+1时间戳。也就是设置第N+1时间戳之后到下一个时间戳之间的主机IO均对第N+1时间戳的计数值进行加一和减一的操作。也就是,每次主机IO下发时都是在查找最新的时间戳进行操作,也即第N+1时间戳比第N时间戳更新。
本步骤也可以看作是当所有有效数据复制结束时,对时间戳进行更新,也就是设置第N+1时间戳。
S104,当第N时间戳的计数值为0时,将待回收大块空间进行释放,以便完成垃圾回收操作。
在上一步骤的基础上,本步骤旨在当第N时间戳的计数值为0时,将待回收大块空间进行释放,以便完成垃圾回收操作。也就是在第N时间戳到第N+1时间戳之间的主机IO全部处理结束后,对对应的待回收大块空间进行释放操作。
还需要说明的是,本实施例中的第N时间戳是和本实施例中的垃圾回收操作相对应的。以每次垃圾回收操作将有效数据复制结束作为时间戳的间隔点,表明了第N时间戳与第N+1时间戳之间的时间段,第N时间戳的计数值也就是记录了该时间段内的未处理完的主机IO数量。还应当强调的是该时间段对应了本实施例中的垃圾回收操作,也就是第N时间戳对应了该垃圾回收操作。下一次进行垃圾回收操作对应了下一个时间段,也即下一个时间戳。某一时间戳的计数值为0时,就代表该时间戳对应的垃圾回收操作中的待回收大块空间已经没有主机IO进行处理了,可以将该待回收大块空间进行释放操作。
总的来说,本实施例中通过对计数值的加减操作实现将主机IO和垃圾回收操作之间的相互排斥,只需要对计数值进行操作,避免了现有技术中对线程进行加锁互斥的操作,提升了性能。但是,本实施例中会加长垃圾回收操作的整体时长,这是毋容置疑的。然而垃圾回收操作是后台任务不影响主机IO,而且整个等待时长,也即等待计数值为0的时长会占整个垃圾回收时长的比例较少,因此也不会影响存储系统中对于大块空间的垃圾回收操作的速度。同时,在执行垃圾回收操作时也可以将多个待回收大块空间同时进行待回收操作,也就是同时等待同一个时间戳的计数值为0,也即同时等待这个时间段的主机IO完成操作,避免了大量频繁的通知操作,提高了后台处理的效率。
因此,本实施例通过设置的时间戳中的计数值,该技术值记录了每两次有效数据复制结束之间的未处理结束的主机IO数量,当该计数值为预设数值时,就代表该时段之间的主机IO全部处理完毕,也就是此时在该待回收大块空间上没有进行处理的主机IO,就可以对待回收大块空间进行释放,进而避免对未处理结束的待回收大块空间进行释放而造成的主机IO失败的情况,实现主机IO和垃圾回收操作间的相互排斥,并且不降低主机的性能,提高垃圾回收操作的适用性。
上一实施例中主要是在存储系统中简单说明了单一情况下的垃圾回收操作,在更具体的环境中还应该考虑到多线程和多控制器的情况,以便在每种情况下都可以更加高效,更加合理化的实施本申请中的技术方案。
因此,在上一实施例的基础上,本实施例是在多线程的情况下提供一种存储系统的垃圾回收方法。实现了多线程并发的对主机IO与垃圾回收操作进行互斥处理。
请参考图2,图2为本申请实施例所提供的另一种存储系统的垃圾回收方法的流程图。
该方法可以包括:
S201,当存储系统对多个线程下发主机IO时,对所有下发主机IO的线程均设置第N时间戳,将所有第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对对应线程中的最新时间戳对应的计数值加一,设置主机IO与最新时间戳的对应关系;当主机IO返回时,将主机IO对应的时间戳的计数值减一;
S202,当接收到垃圾回收请求,将垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;
S203,当有效数据复制结束时,对所有下发主机IO的线程均设置第N+1时间戳;
S204,当所有线程的第N时间戳的计数值为预设数值时,将待回收大块空间进行释放,以便完成垃圾回收操作。
本实施例主要介绍一种在多线程的情况下的垃圾回收操作,也就是一个大块空间被多个线程进行访问,还就是存储系统对多个线程下发对同一大块空间进行访问的主机IO。垃圾回收操作接收每个线程对其反馈的时间戳计数值的情况,当对应的所有时间戳的计数值为0时,也就是每个线程的对应时间点的主机IO都处理完成之后,对待回收大块空间进行垃圾回收操作。因此,实现了将垃圾回收操作应用在多线程的环境中,提高了垃圾回收操作的使用范围,同时该垃圾回收方法可以将主机IO与垃圾回收相互排斥,提高垃圾回收操作的性能。
此外,在第一实施例的基础上,本实施例是在多控制器的情况下提供一种存储系统的垃圾回收方法。实现了多控制器并发的对主机IO与垃圾回收操作进行互斥处理。
请参考图3,图3为本申请实施例所提供的还一种存储系统的垃圾回收方法的流程图。
该方法可以包括:
S301,当存储系统对多个控制器下发主机IO时,对所有下发主机IO的控制器均设置第N时间戳,将所有第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对对应控制器中的最新时间戳对应的计数值加一,设置主机IO与最新时间戳的对应关系;当主机IO返回时,将主机IO对应的时间戳的计数值减一;
S302,当接收到垃圾回收请求,将垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;
S303,当有效数据复制结束时,对所有下发主机IO的控制器均设置第N+1时间戳;
S304,当所有控制器的第N时间戳的计数值为预设数值时,将待回收大块空间进行释放,以便完成垃圾回收操作。
本实施例主要是介绍在多控制器的情况下对大块空间进行垃圾回收操作的方法,也就是某一大块空间被存储系统下发的多个控制器同时进行访问。需要在每个控制器中设置相应的时间戳,以及该时间戳对应的计数值。在垃圾回收的处理流程中,当所有控制器的时间戳均为0后,就代表每个控制器对该垃圾回收流程中的待回收大块空间的主机访问请求全部处理完成,可以对该待回收大块空间进行释放,以避免出现错误。
本实施例通过在每个控制器中均设置相应的时间戳,使得可以在多控制器的环境中实施该垃圾回收操作,提高了垃圾回收操作的适用范围,实现了主机IO与垃圾回收之间的相互排斥,提高了性能。
下面对本申请实施例提供的一种存储系统服务器进行介绍,下文描述的一种存储系统服务器与上文描述的一种存储系统的垃圾回收方法可相互对应参照。
请参考图4,图4为本申请实施例所提供的一种存储系统服务器的结构示意图。
该服务器可以包括:
第N时间戳设置模块100,用于设置第N时间戳,将第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对最新时间戳对应的计数值加一,设置主机IO与最新时间戳的对应关系;当主机IO返回时,将主机IO对应的时间戳的计数值减一;
有效数据迁移模块200,用于当接收到垃圾回收请求,将垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;
第N+1时间戳设置模块300,用于当有效数据复制结束时,设置第N+1时间戳;
大块空间释放模块400,用于当第N时间戳的计数值为预设数值时,将待回收大块空间进行释放,以便完成垃圾回收操作。
可选的,该第N时间戳设置模块100,还可以用于当存储系统对多个线程下发主机IO时,对所有下发主机IO的线程均设置第N时间戳。
可选的,该第N时间戳设置模块100,还可以用于当存储系统对多个控制器下发主机IO时,对所有下发主机IO的控制器均设置第N时间戳。
本申请实施例还提供一种服务器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如以上实施例所述的垃圾回收方法的步骤。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如以上实施例所述的垃圾回收方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种存储系统的垃圾回收方法、存储系统服务器、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (6)
1.一种存储系统的垃圾回收方法,其特征在于,包括:
当存储系统对多个线程下发主机IO时,对所有下发主机IO的线程均设置第N时间戳,将所述第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对最新时间戳对应的计数值加一,设置所述主机IO与所述最新时间戳的对应关系;当所述主机IO返回时,将所述主机IO对应的时间戳的计数值减一;
当接收到垃圾回收请求,将所述垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;
当所述有效数据复制结束时,对所有下发主机IO的线程均设置第N+1时间戳;
当所有线程的第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作。
2.根据权利要求1所述的垃圾回收方法,其特征在于,设置第N时间戳,包括:
当所述存储系统对多个控制器下发主机IO时,对所有下发主机IO的控制器均设置第N时间戳;
相应的,当所述有效数据复制结束时,设置第N+1时间戳,包括:
当所述有效数据复制结束时,对所有下发主机IO的控制器均设置第N+1时间戳。
3.根据权利要求2所述的垃圾回收方法,其特征在于,当所述第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作,包括:
当所有控制器的第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作。
4.一种存储系统服务器,其特征在于,包括:
第N时间戳设置模块,用于当存储系统对多个线程下发主机IO时,对所有下发主机IO的线程均设置第N时间戳,将所述第N时间戳对应的计数值设置为预设数值;其中,当下发主机IO时,对最新时间戳对应的计数值加一,设置所述主机IO与所述最新时间戳的对应关系;当所述主机IO返回时,将所述主机IO对应的时间戳的计数值减一;当所述存储系统对多个控制器下发主机IO时,对所有下发主机IO的控制器均设置第N时间戳;
有效数据迁移模块,用于当接收到垃圾回收请求,将所述垃圾回收请求对应的待回收大块空间的有效数据复制到新大块空间中;
第N+1时间戳设置模块,用于当所述有效数据复制结束时,设置第N+1时间戳;
大块空间释放模块,用于当所有线程的第N时间戳的计数值为所述预设数值时,将所述待回收大块空间进行释放,以便完成垃圾回收操作。
5.一种服务器,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至3任一项所述的垃圾回收方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的垃圾回收方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811109643.4A CN109240941B (zh) | 2018-09-21 | 2018-09-21 | 一种存储系统的垃圾回收方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811109643.4A CN109240941B (zh) | 2018-09-21 | 2018-09-21 | 一种存储系统的垃圾回收方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109240941A CN109240941A (zh) | 2019-01-18 |
CN109240941B true CN109240941B (zh) | 2021-12-03 |
Family
ID=65056525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811109643.4A Active CN109240941B (zh) | 2018-09-21 | 2018-09-21 | 一种存储系统的垃圾回收方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109240941B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813344B (zh) * | 2020-07-16 | 2022-06-17 | 济南浪潮数据技术有限公司 | 一种远程复制中io的处理方法、装置、设备及存储介质 |
CN113419844A (zh) * | 2020-07-27 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 空间回收方法、装置、电子设备及计算机存储介质 |
CN114840450B (zh) * | 2022-07-04 | 2022-11-18 | 荣耀终端有限公司 | 一种存储空间整理方法及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209016A (zh) * | 2010-03-29 | 2011-10-05 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和数据处理系统 |
CN105204783A (zh) * | 2015-10-13 | 2015-12-30 | 华中科技大学 | 一种基于数据生存期的固态盘垃圾回收方法 |
CN106528438A (zh) * | 2016-10-08 | 2017-03-22 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN106681660A (zh) * | 2016-12-17 | 2017-05-17 | 郑州云海信息技术有限公司 | Io调度方法及io调度装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10180948B2 (en) * | 2013-11-07 | 2019-01-15 | Datrium, Inc. | Data storage with a distributed virtual array |
US10229049B2 (en) * | 2015-12-17 | 2019-03-12 | Toshiba Memory Corporation | Storage system that performs host-initiated garbage collection |
-
2018
- 2018-09-21 CN CN201811109643.4A patent/CN109240941B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209016A (zh) * | 2010-03-29 | 2011-10-05 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和数据处理系统 |
CN105204783A (zh) * | 2015-10-13 | 2015-12-30 | 华中科技大学 | 一种基于数据生存期的固态盘垃圾回收方法 |
CN106528438A (zh) * | 2016-10-08 | 2017-03-22 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN106681660A (zh) * | 2016-12-17 | 2017-05-17 | 郑州云海信息技术有限公司 | Io调度方法及io调度装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109240941A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9846645B1 (en) | Managing objects stored in memory | |
US9069790B2 (en) | Multi-threaded message passing journal | |
US7716249B2 (en) | Transaction and task scheduler | |
US8881153B2 (en) | Speculative thread execution with hardware transactional memory | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN109240941B (zh) | 一种存储系统的垃圾回收方法及相关装置 | |
CN110609807B (zh) | 用于删除快照数据的方法、设备和计算机可读存储介质 | |
JP2000284995A (ja) | データ処理装置及び記録媒体 | |
CN111125040B (zh) | 管理重做日志的方法、装置及存储介质 | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
US11243808B2 (en) | Information processing apparatus and storage medium storing execution control program | |
EP3301577B1 (en) | Fault tolerance in shared memory | |
CN115145697A (zh) | 数据库事务的处理方法、装置及电子设备 | |
CN110515705B (zh) | 可扩展的持久性事务内存及其工作方法 | |
CN109726264B (zh) | 用于索引信息更新的方法、装置、设备和介质 | |
CN113220490A (zh) | 异步写回持久化内存的事务持久化方法及系统 | |
US10282371B1 (en) | Object storage device with probabilistic data structure | |
US20170344595A1 (en) | Commit coalescing for micro-journal based transaction logging | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN104866388B (zh) | 数据处理方法及装置 | |
US20120059997A1 (en) | Apparatus and method for detecting data race | |
CN109710698B (zh) | 一种数据汇聚方法、装置、电子设备及介质 | |
JP2005258789A (ja) | ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法 | |
US10073874B1 (en) | Updating inverted indices | |
CN115640238A (zh) | 针对持久化内存的可靠内存映射i/o实现方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |