首页 / 专利库 / 机车车辆 / 缓冲器 / 存储控制装置、存储控制方法和计算机可读记录介质

存储控制装置、存储控制方法和计算机可读记录介质

阅读:803发布:2023-03-11

专利汇可以提供存储控制装置、存储控制方法和计算机可读记录介质专利检索,专利查询,专利分析的服务。并且公开了一种控制采用具有写入次数限制的存储介质的 存储器 的存储控制装置。存储控制装置包括第一 缓冲器 和垃圾回收(GC)单元。第一缓冲器存储布置有多个数据 块 的组写入区域。多个数据块中的每个数据块包括报头区域和有效 载荷 区域。GC单元从存储介质中读出组写入区域,并将组写入区域存储在第一缓冲器中。GC单元针对布置在存储于第一缓冲器中的组写入区域中的每个数据块,释放有效载荷区域的一部分。该一部分存储无效数据。GC单元通过执行数据重新填充来执行垃圾回收。数据重新填充通过以下步骤执行:移动存储在有效载荷区域中的有效数据以通过使用释放的部分来填充前部,并且在报头区域中更新与移动的有效数据相对应的偏移。,下面是存储控制装置、存储控制方法和计算机可读记录介质专利的具体信息内容。

1.一种用于控制存储器的存储控制装置,所述存储器采用具有写入次数限制的存储介质,所述存储控制装置包括:
第一缓冲器,用于存储布置有多个数据的组写入区域,其中,所述组写入区域是垃圾回收的目标,所述多个数据块中的每个数据块包括报头区域和有效载荷区域,所述报头区域存储针对在所述数据块中存储的每个数据单元的报头数据,所述报头数据包括所述数据单元的偏移和长度,并且所述有效载荷区域将所述数据单元存储在由所述偏移指示的位置处;以及
垃圾回收单元,被配置成:
从所述存储介质中读出组写入区域;
将所述组写入区域存储在所述第一缓冲器中;以及
针对布置在存储于所述第一缓冲器中的所述组写入区域中的每个数据块,释放所述有效载荷区域的一部分,其中,所述一部分存储无效数据;以及
通过执行数据重新填充来执行所述垃圾回收,其中,所述数据重新填充通过以下步骤执行:
移动存储在所述有效载荷区域中的有效数据以通过使用释放的部分来填充前部;并且在所述报头区域中更新与移动的有效数据相对应的偏移。
2.根据权利要求1所述的存储控制装置,还包括:
第二缓冲器,用于存储要由使用所述存储器的信息处理设备写入所述存储介质的数据,其中,要写入的数据被分配给各个数据块;以及
写入处理单元,被配置成通过利用所述第二缓冲器对所述存储介质执行写入操作,其中,
所述垃圾回收单元还被配置成在对所述第一缓冲器中的所有数据块执行所述数据重新填充之后,将所述第一缓冲器设置为要由所述写入处理单元优先使用的所述第二缓冲器。
3.根据权利要求2所述的存储控制装置,其中:
所述垃圾回收单元还被配置成:
甚至在将所述第一缓冲器设置为要由所述写入处理单元优先使用的所述第二缓冲器之后经过预定时间之后,当存储在所述第一缓冲器中的数据未被写入所述存储介质时,强制将存储在所述第一缓冲器中的数据写入所述存储介质。
4.根据权利要求1所述的存储控制装置,其中:
所述垃圾回收单元还被配置成:
执行对从所述存储介质读出具有等于或大于预定阈值的无效数据率的组写入区域以及将读取的组写入区域存储在所述第一缓冲器中的控制;以及
执行基于所述存储介质的剩余容量来改变所述预定阈值的控制。
5.根据权利要求1所述的存储控制装置,其中:
所述垃圾回收单元还被配置成:
基于所述存储器的剩余容量控制所述存储器的输入/输出处理的延迟;
控制指示所述垃圾回收的并行执行的数目的重数;以及
基于所述存储器的剩余容量控制用于所述垃圾回收的中央处理单元CPU核的数目。
6.根据权利要求1至5中任一项所述的存储控制装置,其中,
所述报头区域将报头数据存储在与存储于所述数据块中的数据单元相对应的索引信息指示的位置处,以及
所述垃圾回收单元还被配置成在不改变由与所述移动的有效数据相对应的索引信息指示的位置的情况下,更新在存储于所述报头区域中的在由与所述移动的有效数据相对应的索引信息指示的位置处的报头中包括的所述偏移。
7.一种用于控制存储器的存储控制方法,所述存储器采用具有写入次数限制的存储介质,其中,所述存储介质存储布置有多个数据块的组写入区域,所述多个数据块中的每个数据块包括报头区域和有效载荷区域,所述报头区域存储针对在所述数据块中存储的每个数据单元的报头数据,所述报头数据包括所述数据单元的偏移和长度,并且所述有效载荷区域将所述数据单元存储在由所述偏移指示的位置处,所述存储控制方法包括:
通过计算机从所述存储介质中读出组写入区域;
将所述组写入区域作为垃圾回收的目标存储在第一缓冲器中;以及
针对布置在存储于所述第一缓冲器中的所述组写入区域中的每个数据块,释放所述有效载荷区域的一部分,其中所述一部分存储无效数据;以及
通过执行数据重新填充来执行所述垃圾回收,其中,所述数据重新填充通过以下步骤执行:
移动存储在所述有效载荷区域中的有效数据以通过使用释放的部分来填充前部;并且在所述报头区域中更新与移动的有效数据相对应的偏移。
8.根据权利要求7所述的存储控制方法,其中,
所述报头区域将报头数据存储在与存储于所述数据块中的数据单元相对应的索引信息指示的位置处,以及
在所述更新中,所述计算机在不改变与所述移动的有效数据相对应的索引信息所指示的位置的情况下,更新在存储于所述报头区域中的在由与所述移动的有效数据相对应的索引信息指示的位置处的报头中包括的所述偏移。
9.一种存储有使计算机执行如下处理的程序的非暂态计算机可读记录介质,其中,所述计算机控制采用具有写入次数限制的存储介质的存储器,所述存储介质存储布置有多个数据块的组写入区域,所述多个数据块中的每个数据块包括报头区域和有效载荷区域,所述报头区域存储针对在数据块中存储的每个数据单元的报头数据,所述报头数据包括所述数据单元的偏移和长度,并且所述有效载荷区域将所述数据单元存储在由所述偏移指示的位置处,所述处理包括:
从所述存储介质中读出组写入区域;
将所述组写入区域作为要由计算机执行的垃圾回收的目标存储在第一缓冲器中;以及针对布置在存储于所述第一缓冲器中的所述组写入区域中的每个数据块,释放所述有效载荷区域的一部分,其中,所述一部分存储无效数据;以及
通过执行数据重新填充来执行所述垃圾回收,其中,所述数据重新填充通过以下步骤执行:
移动存储在所述有效载荷区域中的有效数据以通过使用释放的部分来填充前部;并且在所述报头区域中更新与所移动的有效数据相对应的偏移。
10.根据权利要求9所述的非暂态计算机可读记录介质,其中,
所述报头区域将报头数据存储在与存储于所述数据块中的数据单元相对应的索引信息指示的位置处,以及
在所述更新中,使计算机在不改变由与所述移动的有效数据相对应的索引信息指示的位置的情况下,更新在存储于所述报头区域中的在由与所述移动的有效数据相对应的索引信息指示的位置处的报头中包括的所述偏移。

说明书全文

存储控制装置、存储控制方法和计算机可读记录介质

技术领域

[0001] 本发明涉及存储控制装置、存储控制方法和其中存储有程序的非暂态计算机可读记录介质。

背景技术

[0002] 近年来,存储装置的存储介质已经从HDD(硬盘驱动器)转移到具有相对较高访问速度的诸如SSD(固态驱动器)的闪存。在SSD中,不直接执行对内存单元的重写,而是,例如,在以1MB(兆字节)大小的为单元擦除数据之后执行数据写入。
[0003] 为此,当更新块中的数据的一部分时,需要保存块中的其他数据,对块进行擦除,然后写入所保存的数据和经更新的数据。结果,用于更新小于块大小的数据的处理较慢。另外,SSD在写入次数上具有上限。因此,在SSD中,期望尽可能避免更新小于块的大小的数据。因此,当更新块中的数据的一部分时,将块中的其他数据和所更新的数据写入新块中。
[0004] 另外,存在一种半导体存储装置,其防止CPU或闪存对主内存的访问由于在一定时间内执行压缩搜索的集中而受到干扰。该半导体存储装置包括:主内存,其用于存储用于确定非易失性存储器的压缩候选的候选信息;以及请求发出机构,其用于发出对主内存的候选信息的访问请求。该半导体存储装置还包括:延迟机构,其用于将由请求发出机构发出的访问请求延迟预定时间;以及访问机构,其用于基于由延迟机构延迟的访问请求来访问主内存的候选信息。
[0005] 另外,存在一种数据存储装置,其可以通过实现搜索有效压缩目标块的处理来提高压缩处理的效率。该数据存储装置包括:闪存,其具有作为数据擦除单元的块;以及控制器。控制器对闪存执行压缩处理,并基于可用块的数目和块中有效数据的量来动态地设置压缩处理目标范围。此外,控制器包括压缩模块,该压缩模块用于从压缩处理目标范围中搜索具有相对少量有效数据的块作为压缩处理的目标块。
[0006] [引用列表]
[0007] [专利文献]
[0008] [专利文献1]日本公开特许公报号2011-159069,
[0009] [专利文献2]日本公开特许公报号2016-207195,以及
[0010] [专利文献3]日本公开特许公报号2013-030081。

发明内容

[0011] [发明要解决的问题]
[0012] 当更新块中的数据的一部分时,SSD将块中的其他数据和经更新的数据写入新块中,结果,不使用更新前的块。因此,垃圾回收(GC:垃圾回收)功能对于使用SSD的存储装置是必不可少的。但是,无条件执行GC可能会导致要写入的数据的量增加以及SSD的寿命缩短的问题。
[0013] 在一个方面,本发明的目的是提供减少要写入的数据的量的GC。
[0014] [解决问题的手段]
[0015] 根据本发明的一个方面,存储控制装置控制采用具有写入次数限制的存储介质的存储器。存储控制装置包括第一缓冲器和垃圾回收(GC)单元。第一缓冲器存储布置有多个数据块的组写入区域。组写入区域是垃圾回收的目标。多个数据块中的每个数据块都包括报头区域和有效载荷区域。报头区域存储关于在数据块中存储的每个数据单元的报头数据。报头数据包括数据单元的偏移和长度。有效载荷区域将数据单元存储在由偏移指示的位置处。GC单元从存储介质中读出组写入区域,并将组写入区域存储在第一缓冲器中。GC单元针对布置在存储于第一缓冲器中的组写入区域中的每个数据块,释放有效载荷区域的一部分。该一部分存储无效数据。GC单元通过执行数据重新填充来执行垃圾回收。数据重新填充通过以下步骤执行:移动存储在有效载荷区域中的有效数据以通过使用释放的部分来填充前部,并在报头区域中更新与移动的有效数据相对应的偏移。
[0016] [发明的有益效果]
[0017] 根据本发明的方面,可以减少要写入的数据的量。附图说明
[0018] 图1是示出根据实施方式的存储装置的存储配置的图;
[0019] 图2是用于说明根据实施方式的存储控制装置使用的元数据的图;
[0020] 图3是用于说明数据块的图;
[0021] 图4是用于说明数据块映射的图;
[0022] 图5是用于说明物理区域的图;
[0023] 图6A是用于说明RAID单元的附加写入的图;
[0024] 图6B是图6A中的数据块的放大视图;
[0025] 图7是用于说明RAID单元的组写入的图;
[0026] 图8A是示出逻辑物理元的格式的图;
[0027] 图8B是示出数据单元报头的格式的图;
[0028] 图8C是示出数据块报头的格式的图;
[0029] 图9是示出根据实施方式的信息处理系统的配置的图;
[0030] 图10A是示出在执行GC之前的逻辑物理元、数据单元报头、RAID单元和参考信息的示例的图;
[0031] 图10B是示出执行GC之后的RAID单元和数据单元报头的图;
[0032] 图10C是示出执行GC之后的附加写入的图;
[0033] 图11是用于说明GC循环处理的图;
[0034] 图12是示出池的剩余容量与无效数据率的阈值之间的关系的示例的图;
[0035] 图13是示出功能部分相对于GC的关系的图;
[0036] 图14是示出GC单元的功能结构的图;
[0037] 图15是示出GC激活的顺序的图;
[0038] 图16是示出GC循环监测的顺序的图;
[0039] 图17是示出数据重新填充处理的顺序的图;
[0040] 图18是示出数据重新填充处理的流程的流程图
[0041] 图19是示出I/O接收控制处理的顺序的图;
[0042] 图20是示出强制的WB处理的顺序的图;
[0043] 图21是示出强制的WB处理的流程的流程图;
[0044] 图22是示出延迟控制和重数改变的处理的顺序的图;
[0045] 图23是示出延迟控制和重数改变的示例的图;以及
[0046] 图24是示出根据实施方式的执行存储控制程序的存储控制装置的硬件配置的图。

具体实施方式

[0047] 在下文中,将参考附图详细描述存储控制装置、存储控制方法和其中存储有程序的非暂态计算机可读记录介质的实施方式。实施方式不限制所公开的技术。
[0048] [实施方式]
[0049] 首先,将描述根据实施方式的存储装置的存储配置。图1是示出根据实施方式的存储装置的存储配置的图。如图1所示,根据实施方式的存储装置使用多个SSD 3d基于RAID(廉价磁盘的冗余阵列)6来管理池3a。此外,根据该实施方式的存储装置具有多个池3a。
[0050] 池3a包括虚拟池和分级池。虚拟池具有一个层3b,以及分级池具有两个或更多个层3b。层3b具有一个或更多个驱动组3c。每个驱动组3c是一组SSD 3d并且具有6至24个SSD 3d。例如,六个SSD 3d中存储一个条带的三个SSD 3d用于存储用户数据(下文中,简称为“数据”),两个SSD 3d用于存储奇偶校验,以及一个SSD 3d用于热备用。每个驱动组3c可以具有
25个或更多个SSD 3d。
[0051] 接下来,将描述由根据实施方式的存储控制装置使用的元数据。此处,元数据是指存储控制装置用于管理存储在存储装置中的数据的数据。
[0052] 图2是用于说明根据实施方式的存储控制装置使用的元数据的图。如图2所示,元数据包括逻辑物理元、数据块映射和参考信息。
[0053] 逻辑物理元是用于将逻辑号码与数据块号码(块ID)和索引相关联的信息。逻辑号码是用于由信息处理设备利用存储装置识别数据的逻辑地址并且是LUN(逻辑单元号码)和LBA(逻辑块地址)的组合。逻辑块的大小为8KB(千字节),这是重复数据删除的单位大小。在本实施方式中,由于通过从信息处理设备(主机)到存储装置的命令的处理以512字节为单位进行,因此作为512字节的整数倍的8KB(8192字节)的数据被分组为一个逻辑块,用于有效的重复数据删除。数据块号码是用于识别由逻辑号码标识的存储8KB数据的数据块的号码。索引是数据块中的数据号码。
[0054] 图3是用于说明数据块的图。在图3中,数据块号码(DB#)是“101”。如图3所示,数据块的大小为384KB。数据块的报头区域为8KB,并且有效载荷区域为376KB。有效载荷区域具有数据单元,该数据单元是用于存储压缩数据的区域。在有效载荷区域中数据单元被附加地写入。
[0055] 报头区域包括192字节的数据块报头和最多200个40字节的数据单元报头。数据块报头是用于存储关于数据块的信息的区域。数据块报头包括关于是否可以附加写入数据单元的信息、附加写入的数据单元的数目、以及关于接下来要附加写入数据单元的位置的信息。
[0056] 每个数据单元报头对应于有效载荷区域中包括的数据单元。每个数据单元报头位于与存储在相应数据单元中的数据的索引相对应的位置。数据单元报头包括偏移、长度和CRC(循环冗余校验)。偏移指示相应数据单元的数据块内的写入开始位置(头位置)。长度表示相应数据单元的长度。CRC是压缩相应数据单元之前的错误检测码。
[0057] 在图2的逻辑物理元中。例如,逻辑号码为“1-1”的数据存储在数据块号码为“B1”的第一数据块中。此处,“1-1”表示LUN为1且LBA为1。对于相同的数据,由于重复数据删除,数据块号码和索引是相同的。在图2中,由于由“1-2”、“2-1”和“2-4”标识的数据相同,所以“1-2”、“2-1”和“2-4”与数据块号码“B2”和索引“2”相关联。
[0058] 数据块映射是用于将数据块号码和物理号码彼此相互关联的表。物理号码是用于识别驱动组(DG)3c的DG号码(DG#)、用于识别RAID单元(RU)的RU号码(RU#)和用于识别时隙的时隙号码(时隙#)的组合。当在存储装置中写入数据时,RAID单元是在主内存上缓冲的组写入区域,在RAID单元中可以布置多个数据块。为存储装置中的每个RAID单元附加写入数据。例如,RAID单元的大小为24MB(兆字节)。在RAID单元中,使用时隙管理每个数据块。
[0059] 图4是用于说明数据块映射的图。图4示出了与其DG号码为“1”(DG#1)并且其RU号码为“1”(RU#1)的RAID单元有关的数据块映射。如图4所示,由于RAID单元的大小为24MB并且数据块的大小为384KB,因此时隙的数目为64。
[0060] 图4示出了以数据块的地址的升序将数据块分配给各个时隙的示例,其中数据块#101存储在时隙#1中,数据块#102存储在时隙#2中,……,数据块#164存储在时隙#64中。
[0061] 在图2的数据块映射中,例如,数据块号码“B1”与物理号码“1-1-1”相关联。数据块号码“B1”的数据被压缩并存储在RAID单元的时隙#1中,其中池3a的驱动器组#1的RU号码为“1”。在图2的池3a中,省略了层3b及其时隙。
[0062] 参考信息是用于将索引、物理号码和参考计数彼此相关联的信息。参考计数是由索引和物理号码标识的数据的重复数。在图2中,索引可以包括在物理号码中。
[0063] 图5是用于说明物理区域的图。如图5所示,逻辑物理元存储在主内存和存储器中。逻辑物理元的仅一部分存储在主内存中。对于每个LUN,逻辑物理元的仅一页(4KB)存储在主内存中。当主内存上不存在与LUN和LBA的组合对应的页时,LUN的页被页出(paged out),并且与LUN和LBA的组合对应的页从存储器读取到主内存中。
[0064] 针对每个4TB(兆兆字节)的卷在存储器中存储32GB的逻辑物理元区域3e(其中存储逻辑物理元的区域)。逻辑物理元区域3e从动态区域分配,并在生成LUN时成为固定区域。此处,动态区域是指从池3a动态分配的区域。逻辑物理元区域3e不是GC的目标。当数据被附加写入存储器时,从动态区域分配RAID单元。实际上,当数据被附加写入写入缓冲器中时,分配RAID单元,其中在数据被存储在存储器中之前被临时存储在写入缓冲器中。RAID单元被存储在的数据单元区域3f是GC的目标。
[0065] 图6A和图6B是用于说明RAID单元的附加写入的图。如图6A和图6B所示,当在LUN#1中接收到8KB的写入I/O(在存储器中写入数据的命令)时,数据单元报头被写入在写入缓冲器上的数据块的报头区域中,该数据被压缩并被写入有效载荷区域,并且数据块报头被更新。此后,当在LUN#2中接收到8KB的写入I/O时,在图6A和图6B的示例中,数据单元报头被附加写入相同数据块的报头区域中,数据被压缩并被附加写入有效载荷区域,并且数据块报头被更新。
[0066] 然后,在与写入缓冲器中保护的数据块的容量相对应的存储区域中,当数据块中的报头区域或有效载荷区域变满时(当可用空闲区域消失时),此后没有数据被附加写入数据块。然后,当写入缓冲器中的RAID单元的所有数据块变满时(当可用空闲区域消失时),写入缓冲器的内容被写入存储器中。此后,释放写入缓冲器中的分配给RAID单元的存储区域。在图6A和图6B中,从动态区域分配DG#1和RU#15的RAID单元。
[0067] 另外,LUN#1中的写入I/O反映在与逻辑物理元的LUN#1对应的区域中,并且LUN#2中的写入I/O反映在与逻辑物理元的LUN#2对应的区域中。另外,关于写入I/O的数据的参考计数被更新,并且写入I/O被反映在参考信息中。
[0068] 另外,RU信息#15中包括的TDUC(总数据单元计数)和GDUC(GC数据单元计数)被更新,并且写入I/O被反映在垃圾计(garbage meter)中,RU信息#15是关于RU#15的信息。此处,垃圾计是RU信息中包含的GC相关的信息。TDUC是RU中的数据单元的总数,并且在写入数据单元时更新。GDUC是RU中的无效数据单元的数目,并且在更新参考计数时更新。
[0069] 另外,在数据块映射中,DG#1、RU#15和时隙#1与DB#101相关联,并且写入I/O被反映在数据块映射中。
[0070] 图7是用于说明RAID单元的组写入的图。如图7所示,数据块在写入缓冲器中缓冲,以RAID单元为单位分组,并写入存储器。例如,数据块#1被写入存储一个条带的六个SSD 3d中。在图7中,P和Q是奇偶校验,并且H是热备用。数据块#1每128个字节被写入在图7中的“0”、“1”、……、“14”的区域中。
[0071] 图8A是示出逻辑物理元的格式的图。如图8A所示,32字节的逻辑物理元包括1字节的状态、1字节的数据单元索引、2字节的校验和、2字节的节点号和6字节的BID。32字节的逻辑物理元还包括8字节的数据块号。
[0072] 状态指示逻辑物理元的有效/无效状态。有效状态是指逻辑物理元已经分配给相应LBA的状态,并且无效状态是指逻辑物理元尚未分配给相应LBA的状态。数据单元索引是一个索引。校验和是相应数据的错误码检测值。节点号是用于识别存储装置(节点)的号码。BID是块ID(位置信息),即LBA。数据块号是数据块号码。保留指示所有位都为0以供将来扩展。
[0073] 图8B是示出数据单元报头的格式的图。如图8B所示,40字节的数据单元报头包括1字节的数据单元状态、2字节的校验和以及2字节的偏移块计数。40字节的数据单元报头还包括2字节的压缩字节大小和32字节的CRC。
[0074] 数据单元状态指示数据单元是否可以被附加写入。当不存在与数据单元报头相对应的数据单元时,数据单元可以被附加写入。当存在与数据单元报头相对应的数据单元时,数据单元不被附加写入。校验和是相应数据单元的错误码检测值。
[0075] 偏移块计数是从与相应数据单元的有效载荷区域的开始的偏移。偏移块计数由块的数目表示。然而,此处的块是512字节的块,而不是SSD的擦除单元的块。在下文中,为了将512字节的块与SSD的擦除单元的块区分开,将512字节的块称为小块。压缩字节大小是相应数据的压缩大小。CRC是相应数据单元的错误检测码。
[0076] 图8C是示出数据块报头的格式的图。如图8C所示,192字节的数据块报头包括1字节的数据块满标志和1字节的写入数据单元计数。192字节的数据块报头还包括1字节的下一数据单元报头索引、8字节的下一写入块偏移和8字节的数据块号。
[0077] 数据块满标志是指示数据单元是否可以被附加写入的标志。当数据块的写入剩余容量等于或大于阈值并且存在足以用于数据单元的附加写入的空闲容量时,数据单元可以被附加写入。同时,当数据块的写入剩余容量小于阈值并且不存在足以用于数据单元的附加写入的空闲容量时,数据单元不被附加写入。
[0078] 写入数据单元计数是在数据块中被附加写入的数据单元的数目。下一数据单元报头索引是下一个要写入的数据单元报头的索引。下一写入块偏移是从下一个要写入的数据单元的有效载荷区域开始的偏移位置。其单位是小块的数目。数据块号是分配给时隙的数据块号码。
[0079] 接下来,将描述根据实施方式的信息处理系统的配置。图9是示出根据实施方式的信息处理系统的配置的图。如图9所示,根据该实施方式的信息处理系统1包括存储装置1a和服务器1b。存储装置1a是存储由服务器1b使用的数据的装置。服务器1b是执行诸如信息处理的任务的信息处理设备。存储装置1a和服务器1b通过FC(光纤通道)和iSCSI(因特网小型计算机系统接口)彼此耦接。
[0080] 存储装置1a包括控制存储装置1a的存储控制装置2和存储数据的存储器(内存)3。此处,存储器3是一组多个SSD 3d。
[0081] 在图9中,存储装置1a包括由存储控制装置#0和存储控制装置#1表示的两个存储控制装置2。然而,存储装置1a可以包括三个或更多个存储控制装置2。此外,在图9中,信息处理系统1包括一个服务器1b。然而,信息处理系统1可以包括两个或更多个服务器1b。
[0082] 存储控制装置2共享和管理存储器3并且负责一个或多个池3a。每个存储控制装置2包括上级连接单元21、缓存管理单元22、复制管理单元23、元管理单元24、附加写入单元
25、IO单元26以及核控制器27。
[0083] 上级连接单元21在FC驱动器/iSCSI驱动器和缓存管理单元22之间交换信息。缓存管理单元22管理缓存内存上的数据。复制管理单元23通过控制重复数据删除/恢复来管理存储在存储装置1a中的唯一数据。
[0084] 元管理单元24管理逻辑物理元、数据块映射和参考计数。另外,元管理单元24使用逻辑物理元和数据块映射来执行用于识别虚拟卷中的数据的逻辑地址与指示SSD 3d中数据存储的位置的物理地址的转换。此处,物理地址是一组数据块号码和索引。
[0085] 元管理单元24包括逻辑物理元存储单元24a、DBM存储单元24b和参考存储单元24c。逻辑物理元存储单元24a存储逻辑物理元。DBM存储单元24b存储数据块映射。参考存储单元24c存储参考信息。
[0086] 附加写入单元25将数据作为连续数据单元进行管理,并针对每个RAID单元对SSD 3d中的数据执行附加写入或组写入。此外,附加写入单元25对数据进行压缩和解压缩。附加写入单元25将写入数据存储在主内存上的缓冲器中,并且每当写入数据被写入在写入缓冲器中时,确定写入缓冲器的空闲区域是否已经变得等于或小于特定阈值。然后,当写入缓冲器的空闲区域变得等于或小于特定阈值时,附加写入单元25开始将写入缓冲器写入SSD 
3d。附加写入单元25管理池3a的物理空间并布置RAID单元。
[0087] 上级连接单元21控制重复数据删除/恢复,并且附加写入单元25对数据进行压缩和解压缩,使得存储控制装置2可以减少写入数据并进一步减少写入的次数。
[0088] IO单元26将RAID单元写入存储器3中。核控制器27控制线程和核。
[0089] 附加写入单元25包括写入缓冲器25a、GC缓冲器25b、写入处理单元25c以及GC单元25d。而图9示出了一个GC缓冲器25b,附加写入单元25具有多个GC缓冲器25b。
[0090] 写入缓冲器25a是主内存上的以RAID单元的格式存储写入数据的缓冲器。GC缓冲器25b是主内存上存储作为GC的目标的RAID单元的缓冲器。
[0091] 写入处理单元25c使用写入缓冲器25a来执行数据写入处理。如稍后所述,当GC缓冲器25b被设置为处于I/O可接收状态时,写入处理单元25c优先使用设置的GC缓冲器25b来执行数据写入处理。
[0092] GC单元25d针对每个池3a执行GC。GC单元25d将RAID单元从数据单元区域3f读入GC缓冲器25b,并在无效数据率等于或大于预定阈值时使用GC缓冲器25b执行GC。
[0093] 由GC单元25d GC的示例示于图10A至图10C中。图10A是示出在执行GC之前的逻辑物理元、数据单元报头、RAID单元和参考信息的示例的图,图10B是示出执行GC之后的RAID单元和数据单元报头的图,以及图10C是示出在执行GC之后的附加写入的图。图10A至图10C省略了数据单元报头的CRC和参考信息的DB#。
[0094] 如图10A所示,在GC之前,DB#102的具有索引“1”和“3”的数据单元被登记在逻辑物理元中,并且分别与两个LUN/LBA相关联。DB#102的具有索引“2”和“4”的数据单元与任何LUN/LBA不相关联。因此,DB#102的具有索引“1”和“3”的数据单元的RC(参考计数)是“2”,以及DB#102的具有索引“2”和“4”的数据单元的RC是“0”。DB#102的具有索引“2”和“4”的数据单元是GC的目标。
[0095] 如图10B所示,在执行GC之后,移动DB#102的具有索引“3”的数据单元以填充数据块中的前部(该操作被称为前填充)。然后,更新数据单元报头。具体地,DB#102的索引“3”的偏移被更新为“50”。另外,对应于索引“2”和“4”的数据单元报头被更新为未使用(-)。此外,不更新逻辑物理元和参考信息。
[0096] 如图10C所示,压缩长度为“30”和“20”的新数据被附加写入在由DB#102的索引“2”和“4”指示的位置处,以及数据单元报头的索引“2”和“4”被更新。数据单元报头的索引“2”的偏移被更新为“70”,并且其长度被更新为“30”。数据单元报头的索引“4”的偏移被更新为“100”,并且其长度被更新为“20”。也就是说,DB#102的索引“2”和“4”被重新使用。另外,与索引“2”和“4”对应的RC被更新。
[0097] 以这种方式,GC单元25d执行有效载荷区域中的数据单元的前填充。由前填充释放的有效载荷区域被重新使用,以便高效地使用释放的有效载荷区域。因此,GC单元25d的GC具有高容积效率。此外,GC单元25d不对数据单元报头执行前填充。
[0098] 另外,GC单元25d不执行时隙的重新填充。即使当整个时隙空闲时,GC单元25d也不执行下一个时隙的前填充。因此,GC单元25d不需要更新数据块映射。此外,GC单元25d不执行RAID单元之间的数据重新填充。当RAID单元具有空闲空间时,GC单元25d不执行来自下一个RAID单元的数据的前填充。因此,GC单元25d不需要更新数据块映射和参考信息。
[0099] 以这种方式,GC单元25d不需要在GC处理中更新逻辑物理元、数据块映射和参考信息,从而减少了将数据写入存储器3。因此,GC单元25d可以提高处理速度。
[0100] 图11是用于说明GC循环处理的图。此处,GC循环处理是指按照数据重新填充、I/O接收控制和强制的写回的顺序执行的处理。在图11中,分级是指将RAID单元读入GC缓冲器25b。
[0101] 数据重新填充包括图10B中所示的数据单元报头的前填充和更新。尽管为了便于说明在图11中示出了RAID单元中的前填充的图像,但是仅在数据块内执行前填充。
[0102] I/O接收控制是图10C中作为示例示出的附加写入。当在数据重新填充之后GC缓冲器25b的内容被写入存储器3中时,在数据块中存在空闲区域,这导致低存储效率。因此,GC单元25d接收I/O(在存储装置1a中写入数据并从存储装置1a读取数据),并且用接收的I/O填充空闲区域。
[0103] 强制的写回是当GC缓冲器25b未在预定时间内填充时强制写回池3a中的GC缓冲器25b。通过执行强制的写回,即使写入I/O没有到来,GC单元25d也可以提前进行GC循环处理。
另外,当包括强制的写回RAID单元的池3a接下来经受GC时,强制的写回RAID单元优先成为GC目标。
[0104] GC单元25d并行地操作各个过程。此外,数据重新填充以恒定的重数执行。另外,附加写入单元25与I/O处理分开地利用CPU(中央处理单元)核执行GC单元25d的处理。
[0105] 当池3a的剩余容量充足时,GC单元25d有效地确保了空闲容量。与此同时,当池3a的剩余容量小时,空闲区域被全部释放。因此,GC单元25d基于池3a的剩余容量来改变作为GC目标的RAID单元的无效数据率的阈值。
[0106] 图12是示出池3a的剩余容量与无效数据率的阈值之间的关系的示例的图。如图12所示,例如,当池3a的剩余容量为21%至100%时,GC单元25d将具有50%或更高的无效数据率的RAID单元作为GC目标。当池3a的剩余容量为0%至5%时,GC单元25d将具有除0%之外的无效数据率的RAID单元作为GC目标。然而,当池3a的剩余容量等于或小于5%时,GC单元25d优先从具有相对较高的无效数据率的RAID单元执行GC,以便有效地增加空闲容量。
[0107] 图13是示出功能部分相对于GC的关系的图。如图13所示,附加写入单元25对通用GC执行控制。另外,附加写入单元25请求元管理单元24获取参考计数,对参考计数进行更新,以及对数据块映射进行更新。另外,附加写入单元25向复制管理单元23请求I/O延迟。复制管理单元23向上级连接单元21请求I/O延迟,并且上级连接单元21执行I/O延迟控制。
[0108] 另外,附加写入单元25请求IO单元26获取无效数据率并执行驱动读/写。此处,驱动读指示从存储器3读取数据,并且驱动写指示在存储器3中写入数据。另外,附加写入单元25请求核控制器27分配GC专用核和线程。核控制器27可以通过增加GC线程的分配来提高GC的重数。
[0109] 图14是示出GC单元25d的功能配置的图。如图14所示,GC单元25d包括GC循环监测单元31、GC循环处理单元31a和GC加速单元35。GC循环监测单元31控制GC循环处理的执行。
[0110] GC循环处理单元31a执行GC循环处理。GC循环处理单元31a包括重新填充单元32、重新填充处理单元32a、I/O接收控制器33和强制的WB单元34。
[0111] 重新填充单元32控制重新填充处理的执行。重新填充处理单元32a执行重新填充处理。I/O接收控制器33将重新填充的GC缓冲器25b设置为I/O可接收状态。当GC缓冲器25b未在预定时间内填充时,强制的WB单元34强制将GC缓冲器25b写入存储器3中。
[0112] GC加速单元35通过基于池剩余容量执行延迟控制和重数控制来加速GC处理。此处,延迟控制指示在减少的剩余容量的情况下控制I/O到池3a的延迟。重数控制指示控制重新填充处理的重数和控制用于GC的CPU核的数目。
[0113] GC加速单元35请求复制管理单元23在减少的剩余容量的情况下延迟I/O到池3a,并且复制管理单元23确定延迟时间并向上级连接单元21请求具有该延迟时间的延迟。另外,GC加速单元35基于池剩余容量请求核控制器27控制重数和CPU核的数目。
[0114] 例如,当池剩余容量为21%至100%时,核控制器27将重数和CPU核的数目分别确定为4-多路复用和2-CPU核。当池剩余容量为11%至20%时,核控制器27分别将重数和CPU核的数目确定为8-多路复用和4-CPU核。当池剩余容量为6%至10%时,核控制器27分别将重数和CPU核的数目确定为12-多路复用和6-CPU核。当池剩余容量为0%至5%时,核控制器27分别将重数和CPU核的数目确定为16-多路复用和8-CPU核。
[0115] 接下来,将描述GC操作的流程。图15是示出GC激活的顺序的图。如图15所示,附加写入单元25的接收单元从控制整个存储装置1a的系统管理器接收用于请求激活GC的激活通知(t1)并激活GC(t2)。也就是说,接收单元请求GC激活单元来激活GC(t3)。
[0116] 然后,GC激活单元获取用于GC激活的线程(t4)并激活所获取的GC激活线程(t5)。激活的GC激活线程作为GC单元25d操作。然后,GC激活单元用GC激活来响应接收单元(t6),并且接收单元用GC激活来响应系统管理器(t7)。
[0117] GC单元25d获取用于重数监测的线程(t8),并通过激活所获取的重数监测线程来激活重数监测(t9)。然后,GC单元25d获取用于GC循环监测的线程(t10),并通过激活所获取的GC循环监测线程来激活GC循环监测(t11)。GC单元25d执行与池3a的数目一样多的t10和t11的处理。然后,当GC循环监测完成时,GC单元25d释放GC激活线程(t12)。
[0118] 以这种方式,GC单元25d可以通过激活GC循环监测来执行GC。
[0119] 图16是示出GC循环监测的顺序的图。在图16中,GC循环监测单元31是用于GC循环监测的线程。如图16所示,当由GC单元25d激活GC循环监测(t21)时,GC循环监测单元31获取用于GC循环处理的线程(t22)。GC循环处理单元31a是用于GC循环处理的线程。GC循环处理线程包括三个线程:数据重新填充线程、I/O接收控制线程和强制的WB(写回)线程。
[0120] 然后,GC循环监测单元31执行GC缓冲器25b的初始分配(t23),激活数据重新填充线程、I/O接收控制线程和强制的WB线程(t24至t26),并等待完成(t27)。然后,数据重新填充线程执行数据重新填充(t28)。另外,I/O接收控制线程执行I/O接收控制(t29)。另外,强制的WB线程执行强制的WB(t30)。然后,当GC处理完成时,数据重新填充线程、I/O接收控制线程和强制的WB线程利用完成(t31至t33)来响应GC循环监测单元31。
[0121] 然后,GC循环监测单元31执行GC缓冲器25b的分配(t34),激活数据重新填充线程、I/O接收控制线程和强制的WB线程(t35至t37),并等待完成(t38)。然后,数据重新填充线程执行数据重新填充(t39)。另外,I/O接收控制线程执行I/O接收控制(t40)。另外,强制的WB线程执行强制的WB(t41)。
[0122] 然后,当GC处理完成时,数据重新填充线程、I/O接收控制线程和强制的WB线程利用完成(t42至t44)来响应GC循环监测单元31。然后,GC循环监测单元31重复从t34至t44的处理,直到GC单元25d停止。
[0123] 以这种方式,GC单元25d重复GC循环处理,使得存储控制装置2可以在存储器3上执行GC。
[0124] 接下来,将描述数据重新填充处理的顺序。图17是示出数据重新填充处理的顺序的图。在图17中,重新填充单元32是数据重新填充线程,并且重新填充处理单元32a是每个池3a四个的重新填充处理线程。
[0125] 如图17所示,当GC循环监测单元31激活数据重新填充处理(t51)时,重新填充单元32确定无效数据率(t52)。也就是说,重新填充单元32从IO单元26获取无效数据率(t53至t54),并且对所获取的无效数据率进行确定。
[0126] 然后,重新填充单元32通过基于池3a的剩余容量利用具有等于或大于阈值的无效数据率的RU作为目标RU激活重新填充处理线程来激活重新填充处理(t55),并等待完成(t56)。此处,激活四个重新填充处理线程。
[0127] 重新填充处理单元32a读取目标RU(t57)。也就是说,重新填充处理单元32a请求IO单元26进行驱动读取(t58)并通过接收来自IO单元26的响应来读取目标RU(t59)。然后,重新填充处理单元32a获取与数据块中的每个数据单元相对应的参考计数(t60)。也就是说,重新填充处理单元32a请求元管理单元24传送参考计数(t61)并通过从元管理单元24接收响应来获取参考计数(t62)。
[0128] 然后,重新填充处理单元32a基于参考计数指定有效数据并执行有效数据重新填充(t63)。然后,重新填充处理单元32a减去无效数据率(t64)。也就是说,重新填充处理单元32a请求IO单元26更新无效数据率(t65)并通过接收来自IO单元26的响应来减去无效数据率(t66)。
[0129] 然后,重新填充处理单元32a通知吞吐量(t67)。具体地,重新填充处理单元32a向复制管理单元23通知例如池3a的剩余容量(t68),并接收来自复制管理单元23的响应(t69)。然后,重新填充处理单元32a利用重新填充的完成来响应重新填充单元32(t70),并且重新填充单元32向GC循环监测单元31通知数据重新填充的完成(t71)。也就是说,重新填充单元32利用完成来响应GC循环监测单元31(t72)。
[0130] 以这种方式,重新填充处理单元32a可以通过基于参考计数指定有效数据并重新填充指定的有效数据来确保数据块中的空闲区域。
[0131] 图18是示出数据重新填充处理的流程的流程图。如图18所示,GC循环处理单元31a请求IO单元26来获取关于每个RU的无效数据率(步骤S1),并选择具有大于阈值的无效数据率的RU(步骤S2)。然后,GC循环处理单元31a读取目标RU的驱动(步骤S3)。根据来自步骤S3中的处理的重数,对每个RU并行地执行处理。
[0132] 然后,GC循环处理单元31a将读取结果存储在临时缓冲器中(步骤S4),并请求元管理单元24获取关于每个数据单元报头的参考计数(步骤S5)。然后,GC单元25d确定参考计数是否为0(步骤S6)。当确定参考计数不是0时,GC单元25d重复将目标数据单元报头和数据单元从临时缓冲器复制到GC缓冲器25b的过程(步骤S7)。GC循环处理单元31a量重复步骤S6和S7的处理达一个数据块的数据单元的数目乘以数据块的数目。
[0133] 另外,当复制到GC缓冲器25b时,GC循环处理单元31a执行有效载荷区域中的数据单元的前填充,并将数据单元报头复制到相同的位置。然而,数据单元报头的偏移块计数是基于通过前填充将数据单元移动到的位置重新计算的。
[0134] 然后,GC循环处理单元31a更新GC缓冲器25b的数据块报头(步骤S8)。一旦更新,GC单元25d根据重新填充的数据重新计算数据块而不是数据块报头中的数据块号。然后,GC循环处理单元31a请求IO单元26更新有效数据的数目(步骤S9)。此处,有效数据的数目是TDLC和GDLC。
[0135] 以这种方式,GC循环处理单元31a基于参考计数指定有效数据,并将指定的有效数据的数据单元报头和数据单元从临时缓冲器复制到GC缓冲器25b,使得可以在数据块中确保空闲区域。
[0136] 接下来,将描述I/O接收控制处理的顺序。图19是示出I/O接收控制处理的顺序的图。在图19中,I/O接收控制器33是I/O接收控制线程。
[0137] 如图19所示,激活GC循环监测单元31的I/O接收控制处理(t76)。然后,I/O接收控制器33将已经经受重新填充处理的GC缓冲器25b设置为I/O接收可以优先于写入缓冲器25a的状态(t77)。重复t77的处理达已完成数据重新填充的GC缓冲器25b的数目。此外,当对设置为处于可I/O可接收状态的GC缓冲器25b进行填充时,通过组写入将GC缓冲器25b写入存储器3中。然后,I/O接收控制器33向GC循环监测单元31通知I/O接收控制的完成(t78)。
[0138] 以这种方式,I/O接收控制器单元33将GC缓冲器25b设置为I/O接收可以优先于写入缓冲器25a的状态,从而使得可以在数据块中的空闲区域中附加写入数据。
[0139] 接下来,将描述强制的WB处理的顺序。图20是示出强制的WB处理的顺序的图。在图20中,强制的WB单元34是强制的WB线程。如图20所示,GC循环监测单元31从I/O接收目标中删除GC缓冲器25b(t81),并将GC缓冲器25b添加到强制的WB目标(t82)。然后,GC循环监测单元31激活强制的WB(t83)。
[0140] 然后,强制的WB单元34请求写入处理单元25c停止强制的WB目标缓冲器中的I/O接收(t84)。然后,写入处理单元25c从I/O可接收列表中排除强制的WB目标缓冲器(t85),并且用I/O接收停止的完成来响应强制的WB单元34(t86)。
[0141] 然后,强制的WB单元34写回强制的WB目标的GC缓冲器25b(t87)。也就是说,强制的WB单元34请求IO单元26写回强制的WB目标的GC缓冲器25b(t88),并且IO单元26的异步写入单元执行强制的WB目标的GC缓冲器25b的驱动写入(t89)。
[0142] 然后,强制的WB单元34从异步写入单元接收完成通知(t90)。从t87至t90的处理由强制的WB目标的GC缓冲器25b的数目执行。然后,强制的WB单元34利用强制的WB完成通知(t91)来响应GC循环监测单元31。
[0143] 以这种方式,强制的WB单元34可以请求异步写入单元写回强制的WB目标的GC缓冲器25b,使得即使在I/O为小时也可以完成GC循环处理。
[0144] 接下来,将描述强制的WB处理的流程。图21是示出强制的WB处理的流程的流程图。如图21所示,GC单元25d根据I/O接收重复以下步骤S11和S12达GC缓冲器25b的数目。GC单元
25d选择尚未写回在存储器3中的GC缓冲器25b(步骤S11),并将所选择的GC缓冲器25b设置为强制的写回目标缓冲器(步骤S12)。
[0145] 然后,GC单元25d重复以下步骤S13至S15达强制的写回目标缓冲器的数目。GC单元25d请求写入处理单元25c停止强制的写回目标缓冲器中的新的I/O接收(步骤S13),并等待强制的写回目标缓冲器中正在进行的读取处理的完成(步骤S14)。然后,GC单元25d请求IO单元26进行异步写入(步骤S15)。
[0146] 然后,GC单元25d等待强制的写回目标缓冲器的异步写入的完成(步骤S16)。
[0147] 以这种方式,强制的WB单元34请求IO单元26进行强制的写回目标缓冲器的异步写入,使得即使在I/O为小时也可以完成GC循环处理。
[0148] 接下来,将描述用于延迟控制和重数改变的处理的顺序。图22是示出用于延迟控制和重数改变的处理的顺序的图。如图22所示,GC加速单元35检查池剩余容量(t101)。然后,GC加速单元35基于池剩余容量确定延迟等级,并且请求复制管理单元23延迟所确定的延迟等级(t102)。然后,复制管理单元23根据延迟等级来确定延迟时间(t103),并且向上级连接单元21发出具有该延迟时间的I/O延迟请求(t104)。
[0149] 另外,GC加速单元35基于池剩余容量检查是否改变重数(t105)。当确定需要改变重数时,GC加速单元35改变重数(t106)。也就是说,当需要改变重数时,GC加速单元35请求核控制器27获取CPU核并改变重数(t107)。
[0150] 然后,核控制器27获取CPU核并基于池剩余容量改变重数(t108)。然后,核控制器27利用重数改变的完成来响应GC加速单元35(t109)。
[0151] 图23是示出延迟控制和重数改变的示例的图。如图23所示,例如,当池剩余容量从超过20%的状态变为20%或更少的状态时,GC加速单元35将等级#2的减速请求发送到复制管理单元23以请求核控制器27来改变重数。核控制器27将重数从4-多路复用改变为8-多路复用。此外,例如,当池剩余容量从5%或更少的状态变为超过5%的状态时,GC加速单元35将等级#3的减速请求发送到复制管理单元23以请求核控制器27改变重数。核控制器27将重数从32-多路复用改变为16-多路复用。
[0152] 以这种方式,由于GC加速单元35基于池剩余容量执行I/O延迟控制和重数改变控制,因此可以优化池剩余容量与存储装置1a的性能之间的平衡。
[0153] 如上所述,在该实施方式中,重新填充处理单元32a从存储器3中读出GU目标RU,将GC目标RU存储在GC缓冲器25b中,并且针对包括在GC缓冲器25b中的每个数据块在有效载荷区域中执行有效数据单元的前填充。另外,重新填充处理单元32a更新与通过前填充移动的数据单元对应的数据单元报头的偏移。另外,重新填充处理单元32a不重新填充索引。因此,不必更新GC中的逻辑物理元,从而减少GC中写入的量。
[0154] 另外,在本实施方式中,由于I/O接收控制器33将重新填充的GC缓冲器25b设置为优先执行I/O接收的状态,因此可以有效地使用由GC回收的区域。
[0155] 另外,在本实施方式中,当设置为优先执行I/O接收的状态的GC缓冲器25b即使在经过预定时间之后也没有被写回到存储器3中时,因为强制的WB单元34强制写回GC缓冲器25b,因此可以防止GC循环处理的停滞。
[0156] 另外,在本实施方式中,由于重新填充单元32用具有等于或大于预定阈值的无效数据率的RAID单元作为GC目标,基于池剩余容量改变阈值,因此可以优化在确保大量空闲容量和高效GC之间的平衡。
[0157] 另外,在该实施方式中,由于基于池剩余容量执行I/O延迟控制和重数改变控制,因此可以优化池剩余容量与存储装置1a的性能之间的平衡。
[0158] 此外,尽管已经在实施方式中描述了存储控制装置2,但是可以通过利用软件实现存储控制装置2的配置来获得具有同样功能的存储控制程序。下面将描述执行存储控制程序的存储控制装置2的硬件配置。
[0159] 图24是示出根据实施方式的执行存储控制程序的存储控制装置2的硬件配置的图。如图24所示,存储控制装置2包括主内存41、处理器42、主机I/F 43、通信I/F 44和连接I/F 45。
[0160] 主内存41是RAM(随机存取内存),其存储例如程序以及程序的执行的中间结果。处理器42是从主内存41读出程序并执行程序的处理装置。
[0161] 主机I/F 43是与服务器1b的接口。通信I/F 44是用于与另一个存储控制装置2通信的接口。连接I/F 45是与存储器3的接口。
[0162] 在处理器42中执行的存储控制程序存储在便携式记录介质51中并被读入主内存41。可替选地,存储控制程序存储在例如经由通信I/F 44耦接的计算机系统的数据库等中,并且从数据库读取到主内存41中。
[0163] 此外,在实施方式中已经描述了SSD 3d用作非易失性存储介质的情况。然而,本公开内容不限于此,而是可以同样地应用于如在SSD 3d中具有写入次数限制的其他非易失性存储介质。
[0164] 关于实施方式还公开了以下附加项。
[0165] (项1)一种用于控制存储器的存储控制装置,所述存储器采用具有写入次数限制的存储介质,所述存储控制装置包括:
[0166] 第一缓冲器,用于存储布置有多个数据块的组写入区域,其中,所述组写入区域是垃圾回收的目标,所述多个数据块中的每个数据块包括报头区域和有效载荷区域,所述报头区域存储针对在所述数据块中存储的每个数据单元的报头数据,所述报头数据包括所述数据单元的偏移和长度,并且所述有效载荷区域将所述数据单元存储在由所述偏移指示的位置处;以及
[0167] GC单元,被配置成:
[0168] 从所述存储介质中读出组写入区域;
[0169] 将所述组写入区域存储在所述第一缓冲器中;以及
[0170] 针对布置在存储于所述第一缓冲器中的所述组写入区域中的每个数据块,通过释放所述有效载荷区域的一部分并执行数据重新填充来执行所述垃圾回收,其中,所述一部分存储无效数据,以及所述数据重新填充通过以下步骤执行:
[0171] 移动存储在所述有效载荷区域中的有效数据以通过使用释放的部分来填充前部;并且
[0172] 在所述报头区域中更新与移动的有效数据相对应的偏移。
[0173] (项2)根据项1所述的存储控制装置,还包括:
[0174] 第二缓冲器,用于存储要由使用所述存储器的信息处理设备写入所述存储介质的数据,其中,要写入的数据被分配给各个数据块;以及
[0175] 写入处理单元,被配置成通过利用所述第二缓冲器对所述存储介质执行写入操作,
[0176] 其中,
[0177] 所述GC单元还被配置成在对所述第一缓冲器中的所有数据块执行所述数据重新填充之后,将所述第一缓冲器设置为要由所述写入处理单元优先使用的所述第二缓冲器。
[0178] (项3)根据项2所述的存储控制装置,其中,
[0179] 所述GC单元还被配置成:
[0180] 甚至在将所述第一缓冲器设置为要由所述写入处理单元优先使用的所述第二缓冲器之后经过预定时间之后,当存储在所述第一缓冲器中的数据未被写入所述存储介质时,强制将存储在所述第一缓冲器中的数据写入所述存储介质。
[0181] (项4)根据项1所述的存储控制装置,其中,
[0182] 所述GC单元还被配置成:
[0183] 执行对从所述存储介质读出具有等于或大于预定阈值的无效数据率的组写入区域以及将读取的组写入区域存储在所述第一缓冲器中的控制;以及
[0184] 执行基于所述存储介质的剩余容量来改变所述预定阈值的控制。
[0185] (项5)根据项1所述的存储控制装置,其中,
[0186] 所述GC单元还被配置成:
[0187] 基于所述存储器的剩余容量控制所述存储器的输入/输出处理的延迟;
[0188] 控制指示所述垃圾回收的并行执行数目的重数;以及
[0189] 基于所述存储器的剩余容量控制用于所述垃圾回收的中央处理单元(CPU)核的数目。
[0190] (项6)一种用于控制存储器的存储控制方法,所述存储器采用具有写入次数限制的存储介质,其中,所述存储介质存储布置有多个数据块的组写入区域,所述多个数据块中的每个数据块包括报头区域和有效载荷区域,所述报头区域存储关于存储在所述数据块中的每个数据单元的报头数据,所述报头数据包括所述数据单元的偏移和长度,并且所述有效载荷区域将所述数据单元存储在由所述偏移指示的位置处,所述存储控制方法包括:
[0191] 通过计算机从所述存储介质中读出组写入区域;
[0192] 将所述组写入区域作为垃圾回收的目标存储在第一缓冲器中;以及
[0193] 针对布置在存储于所述第一缓冲器中的所述组写入区域中的每个数据块,通过释放所述有效载荷区域的一部分并通过执行数据重新填充来执行所述垃圾回收,其中,所述一部分存储无效数据,以及所述数据重新填充通过以下步骤执行:
[0194] 移动存储在所述有效载荷区域中的有效数据以通过使用释放的部分来填充前部;并且
[0195] 在所述报头区域中更新与所移动的有效数据相对应的偏移。
[0196] (项7)根据项6所述的存储控制方法,还包括:
[0197] 通过将要写入的数据分配给各个数据块,通过使用所述存储器的信息处理装置将要写入所述存储介质的数据存储在第二缓冲器中;以及
[0198] 在对所述第一缓冲器中的所有数据块执行所述数据重新填充之后,将所述第一缓冲器设置为在将数据写入所述存储介质时优先使用的所述第二缓冲器。
[0199] (项8)根据项7所述的存储控制方法,还包括:
[0200] 甚至在将所述第一缓冲器设置为在将数据写入所述存储介质时优先使用的所述第二缓冲器之后经过预定时间之后,当存储在所述第一缓冲器中的数据未被写入所述存储介质时,强制将存储在所述第一缓冲器中的数据写入所述存储介质。
[0201] (项9)一种存储有使计算机执行如下处理的程序的非暂态计算机可读记录介质,其中,所述计算机控制采用具有写入次数限制的存储介质的存储器,所述存储介质存储布置有多个数据块的组写入区域,所述多个数据块中的每个数据块包括报头区域和有效载荷区域,所述报头区域存储关于在数据块中存储的每个数据单元的报头数据,所述报头数据包括所述数据单元的偏移和长度,并且所述有效载荷区域将所述数据单元存储在由所述偏移指示的位置处,所述处理包括:
[0202] 从所述存储介质中读出组写入区域;
[0203] 将所述组写入区域作为要由计算机执行的垃圾回收的目标存储在第一缓冲器中;以及
[0204] 针对布置在存储于所述第一缓冲器中的所述组写入区域中的每个数据块,通过释放所述有效载荷区域的一部分并通过执行数据重新填充来执行所述垃圾回收,其中,所述一部分存储无效数据,以及所述数据重新填充通过以下步骤执行:
[0205] 移动存储在所述有效载荷区域中的有效数据以通过使用释放的部分来填充前部;并且
[0206] 在所述报头区域中更新与所移动的有效数据相对应的偏移。
[0207] (项10)根据项9所述的非暂态计算机可读记录介质,所述处理还包括:
[0208] 通过将要写入的数据分配给各个数据块,通过使用所述存储器的信息处理装置将要写入所述存储介质的数据存储在第二缓冲器中;以及
[0209] 在对所述第一缓冲器中的所有数据块执行所述数据重新填充之后,将所述第一缓冲器设置为在将数据写入所述存储介质时优先使用的所述第二缓冲器。
[0210] (项11)根据项10所述的非暂态计算机可读记录介质,所述处理还包括:
[0211] 甚至在将所述第一缓冲器设置为在将数据写入所述存储介质时优先使用的所述第二缓冲器之后经过预定时间之后,当存储在所述第一缓冲器中的数据未被写入所述存储介质时,强制将存储在所述第一缓冲器中的数据写入所述存储介质。
[0212] [附图标记列表]
[0213] 1 信息处理系统
[0214] 1a 存储装置
[0215] 1b 服务器
[0216] 2 存储控制装置
[0217] 3 存储器
[0218] 3a 池
[0219] 3b 层
[0220] 3c 驱动组
[0221] 3d SSD
[0222] 3e 逻辑物理元区域
[0223] 3f 数据单元区域
[0224] 21 上级连接单元
[0225] 22 缓存管理单元
[0226] 23 复制管理单位
[0227] 24 元管理单元
[0228] 24a 逻辑物理元存储单元
[0229] 24b DBM存储单元
[0230] 24c 参考存储单元
[0231] 25 附加写入单元
[0232] 25a 写入缓冲器
[0233] 25b GC缓冲器
[0234] 25c 写入处理单元
[0235] 25d GC单元
[0236] 26 IO单元
[0237] 27 核控制器
[0238] 31 GC循环监测单元
[0239] 31a GC循环处理单元
[0240] 32 重新填充单元
[0241] 32a 重新填充处理单元
[0242] 33 I/O接收控制器
[0243] 34 强制的WB单元
[0244] 35 GC加速单元
[0245] 41 主内存
[0246] 42 处理器
[0247] 43 主机I/F
[0248] 44 通信I/F 44
[0249] 45 连接I/F
[0250] 51 便携式记录介质
相关专利内容
标题 发布/更新时间 阅读量
缓冲器 2020-05-11 693
缓冲器 2020-05-11 527
缓冲器 2020-05-11 682
缓冲器 2020-05-12 138
缓冲器 2020-05-12 369
缓冲器 2020-05-11 157
缓冲器 2020-05-11 833
缓冲器 2020-05-13 82
缓冲器 2020-05-12 156
一种缓冲器 2020-05-11 643
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈