存储控制装置、存储控制方法和记录介质与流程

文档序号:18464397发布日期:2019-08-17 02:19阅读:212来源:国知局
存储控制装置、存储控制方法和记录介质与流程

本文讨论的实施方式涉及存储控制装置、存储控制方法和存储控制程序。



背景技术:

近来,存储装置的存储介质已经从硬盘驱动器(hdd)转变为具有更高访问速度的诸如固态驱动器(ssd)的闪存。ssd使得不可能直接在存储单元上执行重写,以及例如,使得在以1兆字节(mb)大小块为单位擦除数据之后来写入数据。

因此,在更新块中的部分数据的情况下,保存块中的其他数据,擦除块,并且然后写入保存的数据和更新数据。因此,更新与块的大小相比的小的数据的处理较慢。ssd在写入次数上具有上限。因此,ssd期望尽可能地避免更新与块的大小相比的小的数据。因此,在更新块中的部分数据的情况下,块中的其他数据和更新数据被写入新块中。

在日本公开特许公报no.2016-21246和国际公布手册no.wo2016/185573中公开了相关技术。

在更新块中的部分数据的情况下,使用ssd的存储装置需要以下的数据结构,该数据结构不仅能够通过将块中其他数据以及更新数据写入新块中来减少写入的次数,而且还能进一步减少写入的次数。

可以提供能够减少写入的次数的数据结构。



技术实现要素:

根据实施方式的一方面,一种存储控制装置包括存储器和处理器。存储器被配置成存储元信息和映射信息,其中,元信息将逻辑地址与数据块标识符和索引相关联,逻辑地址用于标识来自使用存储装置的信息处理装置的数据,数据块标识符用于标识数据块,索引指示数据在数据块中的附加写入的顺序,数据块用于数据在存储装置上的布置,并且数据块包括报头区域和有效载荷区域,报头区域具有用于存储与对应于多个索引的数据有关的报头信息的容量,有效载荷区域具有用于存储对应于所述多个索引的数据的容量,其中,映射信息将数据块标识符与指示数据块在存储装置上的物理位置的物理标识符相关联。处理器被配置成:基于数据块的物理标识符和索引来指定数据块和数据块的有效载荷区域中的写入位置;将数据写入所指定的数据块中;以及执行写入控制,写入控制用于在报头区域中的索引所指定的位置处写入数据单元报头,数据单元报头包括指示在数据块中的写入位置的偏移和指示数据的长度的数据长度。

根据实施方式的另一方面,一种存储控制方法,包括:在存储器中存储元信息,元信息将逻辑地址与数据块标识符和索引相关联,逻辑地址用于标识来自使用存储装置的信息处理装置的数据,数据块标识符用于标识数据块,索引指示数据在数据块中的附加写入的顺序,数据块用于数据在存储装置上的布置,并且数据块包括报头区域和有效载荷区域,报头区域具有用于存储与对应于多个索引的数据有关的报头信息的容量,有效载荷区域具有用于存储对应于所述多个索引的数据的容量;在存储器中存储映射信息,映射信息将数据块标识符与指示数据块在存储装置上的物理位置的物理标识符相关联;基于数据块的物理标识符和索引来指定数据块和在数据块的有效载荷区域中的写入位置;将数据写入所指定的数据块中;以及执行写入控制,写入控制用于在报头区域中的索引所指定的位置处写入数据单元报头,数据单元报头包括指示在数据块中的写入位置的偏移和指示数据的长度的数据长度。

根据实施方式的又一方面,一种记录有存储控制程序的非暂态计算机可读记录介质,存储控制程序用于使计算机执行处理,该处理包括:在存储器中存储元信息,元信息将逻辑地址与数据块标识符和索引相关联,逻辑地址用于标识来自使用存储装置的信息处理装置的数据,数据块标识符用于标识数据块,索引指示数据在数据块中的附加写入的顺序,数据块用于数据在存储装置上的布置,并且数据块包括报头区域和有效载荷区域,报头区域具有用于存储与对应于多个索引的数据有关的报头信息的容量,有效载荷区域具有用于存储对应于所述多个索引的数据的容量;在存储器中存储映射信息,映射信息将数据块标识符与指示数据块在存储装置上的物理位置的物理标识符相关联;基于数据块的物理标识符和索引来指定数据块和在数据块的有效载荷区域中的写入位置;将数据写入所指定的数据块中;以及执行写入控制,写入控制用于在报头区域中的索引所指定的位置处写入数据单元报头,数据单元报头包括指示在数据块中的写入位置的偏移和指示数据的长度的数据长度。

附图说明

图1是示出根据实施方式的存储装置的存储配置的图;

图2是用于说明根据实施方式的由存储控制装置使用的元数据的图;

图3是用于说明数据块的图;

图4是用于说明数据块映射的图;

图5是用于说明物理区域的图;

图6是用于说明raid单元的附加写入的图;

图7是用于说明raid单元的全体(collective)写入的图;

图8a是示出逻辑物理元的格式的图;

图8b是示出数据单元报头的格式的图;

图8c是示出数据块报头的格式的图;

图9是示出逻辑物理元、数据单元报头和引用信息之间的关系的图;

图10a和图10b是用于说明容量效率的改进的图;

图11是示出根据实施方式的信息处理系统的配置的图;

图12是示出写入没有重复(duplication)的数据的处理序列的图;

图13是示出用于确定附加写入位置的处理流程的流程图;

图14是示出更新数据单元报头和数据块报头的处理流程的流程图;

图15是示出写入具有重复的数据的处理序列的图;

图16是示出读取处理序列的图;以及

图17是示出根据实施方式的执行存储控制程序的存储控制装置的硬件配置的图。

具体实施方式

在下文中,将参照附图详细描述本申请所公开的存储控制装置、存储控制方法和存储控制程序的实施方式。实施方式不限制所公开的技术。

[实施方式]

首先,将描述根据实施方式的存储装置的存储配置。图1是示出根据实施方式的存储装置的存储配置的图。如图1所示,根据实施方式的存储装置使用多个ssd3d来基于廉价磁盘冗余阵列(raid)管理池3a。根据实施方式的存储装置包括多个池3a。

池3a包括虚拟池和分层池。虚拟池包括一个层(tier)3b,而分层池包括两个或更多个层3b。层3b包括一个或更多个驱动器组3c。驱动器组3c中的每一个是一组ssd3d并且包括6到24个ssd3d。例如,存储一个条带(stripe)的六个ssd3d中的三个用于存储用户数据(下文中简称为“数据”),两个用于奇偶校验存储,以及一个用于热备用。驱动器组3c中的每一个可以包括25个或更多个ssd3d。

接下来,将描述由根据实施方式的存储控制装置使用的元数据。此处,元数据是由存储控制装置使用以管理存储装置中存储的数据的数据。

图2是用于说明根据实施方式的由存储控制装置使用的元数据的图。如图2所示,元数据包括逻辑物理元、数据块映射和引用信息。

逻辑物理元是将逻辑号与数据块号和索引相关联的信息。逻辑号是用于由使用存储装置的信息处理装置识别数据的逻辑地址,并且逻辑号是逻辑单元号(lun)和逻辑块地址(lba)的组合。逻辑块的大小为8kb(千字节),其是去重(deduplication)的单位大小。由从信息处理装置(主机)到存储装置的命令进行的处理是以512字节为单位。因此,在本实施方式中,为了使去重更有效率,此处假设对应于512字节的整数倍的一组8kb(8192字节)块是一个逻辑块。数据块号是用于标识存储由逻辑号标识的8kb数据的数据块的号。索引是数据块中的数据号。

图3是用于说明数据块的图。在图3中,数据块号(db#)是“101”。如图3所示,数据块的大小是384kb。数据块的报头区域是8kb并且有效载荷区域是376kb。有效载荷区域具有作为用于存储压缩数据的区域的数据单元。该数据单元被附加地写入有效载荷区域中。

报头区域包括192字节的数据块报头以及200个或更少的40字节的数据单元报头。数据块报头是用于存储关于数据块的信息的区域。例如,数据块报头包括关于是否可以进行数据单元的附加写入的信息、被附加地写入的数据单元的数目、以及接下来要被附加写入数据单元的位置。

数据单元报头对应于有效载荷区域中包括的数据单元。数据单元报头处于与相应数据单元中存储的数据的索引对应的位置处。数据单元报头包括偏移、长度和循环冗余校验(crc)。偏移指示相应数据单元的数据块中的写入起始位置(头部位置)。长度指示相应数据单元的长度。crc是在相应数据单元的压缩之前的错误检测码。

在图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”相关联。

数据块映射是用于将数据块号与物理号相关联的表。物理号是用于标识驱动器组(dg)3c的dg号(dg#)、用于标识raid单元(ru)的ru号(ru#)和用于标识槽(槽#)的槽号的组合。raid单元(全体写入单元区域)是在将数据写入存储装置的情况下在主存储器上缓冲的全体写入单元区域,并且可以将多个数据块布置在raid单元中。以raid单元为单位收集数据并且将数据附加地写入存储装置中。例如,raid单元的大小为24兆字节(mb)。在raid单元中,使用槽(slot)来管理每个数据块。

图4是用于说明数据块映射的图。图4示出了关于具有dg号“1”(dg#1)和ru号“1”(ru#1)的raid单元的数据块映射。如图4所示,raid单元的大小为24mb,数据块的大小为384kb。因此,槽的数目是64。

图4示出了按照数据块的地址的升序将数据块分配给每个槽的示例。数据块#101存储在槽#1中,数据块#102存储在槽#2中,...,并且数据块#164存储在槽#64中。

例如,在图2的数据块映射中,数据块号“b1”与物理号“1-1-1”相关联。数据块号为“b1”的数据被压缩和存储在以下的槽中:该槽为池3a的驱动器组#1中的具有ru号“1”的raid单元中的具有槽号“1”的槽。在图2的池3a中,省略了层3b及其槽。

引用信息将索引、物理号和引用计数器彼此相关联。引用计数器是由索引和物理号标识的数据的重复的数目。在图2中,索引可以被包括在物理号中。

图5是用于说明物理区域的图。如图5所示,逻辑物理元存储在主存储器和存储装置中。仅部分逻辑物理元存储在主存储器中。对于逻辑物理元,针对主存储器中的每个lun仅存储一页(4kb)。在与lun和lba的组合对应的页不在主存储器上的情况下,将lun的页进行页出,并且将与lun和lba的组合对应的页从存储装置读取到主存储器中。

在存储装置中,对于每个4太字节(tb)的卷,存储32gb的逻辑物理元区域(存储逻辑物理元的区域)3e。逻辑物理元区域3e是从动态区域分配的,并且在创建lun时变成固定区域。此处,动态区域是从池3a动态分配的区域。逻辑物理元区域3e不经历垃圾收集(gc)。当在存储装置中附加地写入数据时,从动态区域分配raid单元。实际上,在将数据附加地写入写入缓冲区(writebuffer)中时分配raid单元,其中写入缓冲区在将数据写入存储装置之前临时存储数据。存储raid单元的数据单元区域3f经历gc。

图6是用于说明raid单元的附加写入的图。如图6所示,当在lun#1中接收到8kb的写入i/o(存储装置中写入数据的指令)时,数据单元报头被写入写入缓冲区上的数据块的报头区域中,数据被压缩并且被写入有效载荷区域中,并且数据块报头被更新。此后,当在lun#2中接收到8kb的写入i/o时,在图6的示例中,数据单元报头被附加地写入同一数据块的报头区域中,数据被压缩并且被附加地写入有效载荷中,并且数据块报头被更新。

然后,在与写入缓冲区中保护的数据块的容量对应的存储区域中,当数据块中的报头区域或有效载荷区域变满(不存在可用的空区域)时,此后数据不会被附加地写入数据块中。然后,当写入缓冲区中的raid单元的所有数据块变满(不存在可用的空区域)时,写入缓冲区的内容被写入存储装置中。此后,释放分配给raid单元的写入缓冲区的存储区域。在

图6中,dg#1和ru#15的raid单元是从动态区域分配的。

至lun#1的写入i/o反映在与逻辑物理元的lun#1对应的区域上,并且至lun#2的写入i/o反映在与逻辑物理元的lun#2对应的区域上。更新关于写入i/o的数据的引用计数,并且将写入i/o反映在引用信息上。

更新关于ru#15的ru信息#15中包括的总数据单元计数(tduc)和gc数据单元计数(gduc),并且将写入i/o反映在垃圾计上。此处,垃圾计是ru信息中包括的gc相关信息。tduc是ru中的数据单元的总数目,并在写入数据单元时更新tduc。gduc是ru中无效数据单元的数目,并在更新引用计数器时更新gduc。

在数据块映射中,dg#1、ru#15和槽#1与db#101相关联,并且写入i/o被反映在数据块映射上。

图7是用于说明raid单元的全体写入的图。如图7所示,数据块被缓冲在写入缓冲区中,以raid单元为单位被收集,并且被写入存储装置中。例如,数据块#1被写入存储一个条带的六个ssd3d中。在图7中,p和q各表示奇偶校验,而h表示热备用。对于每128个字节,数据块#1被写入图7中的“0”、“1”、...和“14”的区域中。

图8a是示出逻辑物理元的格式的图。如图8a所示,32字节的逻辑物理元包括1字节的状态、1字节的数据单元索引、2字节的校验和、2字节的节点编号和6字节的bid。32字节的逻辑物理元还包括8字节的数据块编号。

状态指示逻辑物理元的状态。存在有效状态和无效状态。有效状态意味着逻辑物理元已经被分配给相应的lba。无效状态意味着逻辑物理元尚未被分配给相应的lba。数据单元索引是索引。校验和是相应数据的错误码检测值。节点编号是用于标识存储装置(节点)的号。bid是块id(位置信息),即lba。数据块编号是数据块号。保留指示对于未来的扩展所有位都为0。

图8b是示出数据单元报头的格式的图。如图8b所示,40字节的数据单元报头包括1字节的数据单元状态、2字节的校验和、以及2字节的偏移块计数。40字节的数据单元报头还包括2字节的压缩字节大小和32字节的crc。

数据单元状态指示是否可以进行数据单元的附加写入。在不存在对应于数据单元报头的数据单元的情况下,可以进行附加写入。在存在对应于数据单元报头的数据单元的情况下,不可以进行附加写入。校验和是相应数据单元的错误码检测值。

偏移块计数是距相应数据单元的有效载荷区域的头部的偏移。偏移块计数由块的数目来表示。然而,此处的块不是ssd的擦除单元的块,而是512字节的块。在下文中,将512字节的块称为小块,以便将512字节的块与ssd的擦除单元的块区分开。压缩字节大小是压缩后相应数据的大小。crc是相应数据单元的错误检测码。

图8c是示出数据块报头的格式的图。如图8c所示,192字节的数据块报头包括1字节的数据块满标志和1字节的写入数据单元计数。192字节的数据块报头包括1字节的下一数据单元报头索引、8字节的下一写入块偏移和8字节的数据块编号。

数据块满标志是指示是否可以进行数据单元的附加写入的标志。在数据块的剩余写入容量是阈值或更大并且存在足够的空容量用于附加地写入数据单元的情况下,可以进行数据单元的附加写入。同时,在数据块的剩余写入容量小于阈值并且不存在足够的空容量用于附加地写入数据单元的情况下,不可以进行数据单元的附加写入。

写入数据单元计数是已经附加地写入数据块的数据单元的数目。下一数据单元报头索引是接下来要写入的数据单元报头的索引。下一写入块偏移是距接下来要写入的数据单元的有效载荷区域的头部的偏移位置。单位是小块的数目。数据块编号是分配给槽(slot)的数据块号。

图9、图10a和图10b是用于说明根据实施方式的元数据系统的特性的图。图9是示出逻辑物理元、数据单元报头和引用信息之间的关系的图。如图9所示,在根据实施方式的元数据系统中,使用逻辑物理元、数据单元报头和引用信息。数据单元报头的存储位置由逻辑物理元的db#和索引来指定。数据块中的数据单元的位置根据数据单元报头的偏移和长度被指定。

在逻辑物理元中存储多个相同数据片的情况下,通过去重功能将所述多个相同数据片收集到一个中,并且将重复数目计为引用计数器(rc)。在图9中,从两个位置引用存储在dg#1的ru#2中的db#102的索引“1”和索引“2”中每一个的数据。此时,索引“1”和索引“2”中每一个的引用计数器是“2”。索引“1”和索引“2”的数据是有效数据。由于具有引用计数器“0”,所以索引“3”和索引“4”的数据是无效数据。

图10a和图10b是用于说明容量效率的改进的图。图10a和10b示出了在不进行压缩的情况下写入8kb数据的情况。由lun/lba指定的数据以小块为单位被写入数据单元中。因此,图10a示出了非压缩数据和crc被打包在有效载荷区域中并且16个小块被打包在数据单元中的情况。数据单元报头不包括crc,因此大小为32字节。整个数据块的存储容量为384kb,报头区域为2kb,并且有效载荷区域为382kb。

在这种情况下,在非压缩的情况下有效载荷区域的使用容量是512字节×由lun/lba指定的16个小块+crc32字节=8224字节。然而,用于ssd的命令是由512字节的1整数倍或更大整数倍来指定的。因此,用于读出8224字节的命令是512字节×17小块=8704字节。一个数据单元的有效载荷区域最大设置为8704字节。也就是说,例如,未使用并且浪费了8704-8224=480字节的存储区域。随着非压缩数据单元的数目的增加,浪费了480字节的整数倍的存储区域。

同时,如图10b所示,如果crc被包括在数据单元报头中,则512字节×16小块=8192字节的数据被布置在有效载荷区域中。即,例如,一个数据单元的有效载荷区域可以最大被设置为8192个字节。因此,可以避免上述480字节的浪费。另外,可以减少对第17小块的不必要的写入,这可以促成减少写入次数的效果。由于整个数据块的384kb的存储容量是固定的,因此报头区域是8kb,而有效载荷区域是376kb。因此,即使在非压缩的情况下,根据实施方式的元数据系统也可以充分利用有效载荷区域。另外,可以有效地打包非压缩数据和压缩数据。

接下来,将描述根据实施方式的信息处理系统的配置。图11是示出根据实施方式的信息处理系统的配置的图。如图11所示,根据实施方式的信息处理系统1包括存储装置1a和服务器1b。存储装置1a存储由服务器1b使用的数据。服务器1b是执行诸如信息处理的处理的信息处理装置。存储装置1a和服务器1b通过光纤通道(fc)和因特网小型计算机系统接口(iscsi)彼此连接。

存储装置1a包括控制存储装置1a的存储控制装置2和存储数据的存储器(存储装置)3。此处,存储装置3是一组多个ssd3d。

在图11中,存储装置1a包括由存储控制装置#0和存储控制装置#1表示的两个存储控制装置2。然而,存储装置1a可以包括三个或更多个存储控制装置2。在图11中,信息处理系统1包括一个服务器1b。然而,信息处理系统1可以包括两个或更多个服务器1b。

存储控制装置2共享和管理存储装置3并且对一个或更多个池3a负责。存储控制装置2包括上连接单元21、缓存管理单元22、重复管理单元23、元管理单元24、附加写入单元25和io单元26。

上连接单元21在fc驱动器和iscsi驱动器中的每一个与缓存管理单元22之间交换信息。缓存管理单元22管理缓存存储器上的数据。重复管理单元23通过控制数据去重/数据恢复来管理存储装置1a中存储的独特数据。

元管理单元24管理逻辑物理元、数据块映射和引用计数。另外,元管理单元24使用逻辑物理元数据和数据块映射来转换用于标识虚拟卷中的数据的逻辑地址和指示ssd3d中的数据存储于的位置的物理地址。此处,物理地址是数据块号和索引的组合。

元管理单元24包括逻辑物理元存储单元24a、dbm存储单元24b和引用存储单元24c。逻辑物理元存储单元24a存储逻辑物理元。dbm存储单元24b存储数据块映射。引用存储单元24c存储引用信息。

附加写入单元25利用连续数据单元来管理数据,并且以raid单元为单位将数据附加地且全体地写入ssd3d中。附加写入单元25压缩和解压缩数据。附加写入单元25将写入数据累积在作为主存储器上的缓冲区的写入缓冲区中,并且每当将写入数据写入写入缓冲区中时判断写入缓冲区的空区域是否已经变成特定阈值或更小。然后,当写入缓冲区的空区域变成特定阈值或更小时,附加写入单元25对ssd3d中的写入缓冲区进行写入。附加写入单元25管理池3a的物理空间并且布置raid单元。io单元26对存储装置3中的raid单元进行写入。

上连接单元21控制数据去重/数据恢复,以及附加写入单元25压缩和解压缩数据。因此,存储控制装置2可以减少写入数据,并且可以进一步减少写入的次数。

接下来,将描述写入处理序列。图12是示出写入没有重复的数据的处理序列的图。图15是示出写入具有重复的数据的处理序列的图。

在写入没有重复的数据的处理中,如图12所示,缓存管理单元22请求重复管理单元23写回数据(t1)。然后,重复管理单元23进行数据的重复判断并且不存在重复(t2)。因此,重复管理单元23请求附加写入单元25写入新数据单元(t3)。

然后,附加写入单元25获取写入缓冲区(t4),并且当ru#未被分配给写入缓冲区时请求io单元26分配ru#(t5)。然后,附加写入单元25接收由io单元26分配的ru#(t6)。当ru#被分配给写入缓冲区时,省略对t5和t6的处理。

然后,附加写入单元25确定附加写入位置(t7)、压缩数据并且附加地写入数据(t8)。然后,附加写入单元25更新数据单元报头和数据块报头(t9),并且进行全体写入判断(t10)。然后,当附加写入单元25判断写入缓冲区已满并且全体写入是可取的时,附加写入单元25请求io单元26对写入缓冲区进行全体写入。然后,附加写入单元25向重复管理单元23发送完成响应(t11)。

然后,重复管理单元23请求元管理单元24更新引用计数器(t12),并且元管理单元24更新引用计数器(t13)。具体地,例如,元管理单元24使被写数据的引用计数器递增。当数据被重写时,元管理单元24使重写之前的数据的引用计数器递减。

然后,元管理单元24向重复管理单元23发送更新完成响应(t14),并且请求io单元26更新数据片(piecesofdata)的有效数目(t15)。此处,数据片的有效数目是指tdlc和gdlc。io单元26使被写数据的tdlc递增。在重写数据的情况下,当重写之前的数据的rc变为0时,io单元26使其中存储了重写之前的数据的ru的gldc递减。然后,io单元26向元管理单元24发送数据片的有效数目的更新完成响应(t16)。

然后,重复管理单元23请求元管理单元24更新逻辑物理元(t17)。然后,元管理单元24更新逻辑物理元(t18),并且向重复管理单元23发送更新完成响应(t19)。然后,重复管理单元23向缓存管理单元22发送写回完成响应(t20)。缓存管理单元22释放写缓冲区。

以这种方式,附加写入单元25确定附加写入位置、压缩数据并且将数据附加地写入数据块中、以及更新数据单元报头和数据块报头。因此,可以在存储装置3中写入没有重复的数据。对数据的压缩/非压缩的切换是可能的,并且可以在附加写入单元25中被选择性地设置。

图13是示出用于确定附加写入位置的处理流程的流程图。图13中所示的处理对应于图12中的t7的处理。如图13所示,附加写入单元25从写入缓冲区的头部处的数据块顺序地判断数据块中是否可以进行附加写入(步骤s1)。附加写入单元25检查数据块报头的数据块满标志,以判断数据块中是否可以进行附加写入。当在写入缓冲区中不可以进行附加写入时,准备新的写入缓冲区。因此,可以在写入缓冲区中找到其中可以进行附加写入的数据块。

然后,当找到其中可以进行附加写入的数据块时,附加写入单元25判断是否未分配数据块号(步骤s2)。如果未分配数据块号,则附加写入单元25请求元管理单元24分配数据块号(步骤s3)。元管理单元24分配数据块号并且在数据块映射中将物理号与数据块号相互关联。

然后,附加写入单元25使用下一数据单元报头索引来指定数据单元报头的索引(步骤s4),并且将数据块号和数据单元报头的索引确定为附加写入位置。

以这种方式,附加写入单元25可以使用数据块报头和数据单元报头来确定数据的附加写入位置。

图14是示出更新数据单元报头和数据块报头的处理流程的流程图。图14中所示的处理对应于图12中的t9的处理。如图14所示,附加写入单元25更新与被写数据对应的数据单元报头(步骤s11)。具体地,例如,附加写入单元25更新数据单元状态,使得不可以进行附加写入。

然后,附加写入单元25更新其中写入数据的数据块的数据块报头(步骤s12)。具体地,例如,附加写入单元25更新写入数据单元计数、下一数据单元报头索引和下一写入块偏移。

然后,附加写入单元25判断数据块中是否仍可以进行附加写入(步骤s13)。附加写入单元25基于下一写入块偏移是否是阈值或更小来判断是否可以进行附加写入。有效载荷区域的大小是376kb,并且在非压缩的情况下,8kb的空区域对于附加写入会是可取的。因此,如果满足376kb-8kb=368kb≈736个小块(736×512字节)并且满足下一写入块偏移>736,则不可以进行附加写入。

然后,如果在数据块中不可以进行附加写入,则附加写入单元25将数据块报头的数据块满标志更新为意味着不可以进行附加写入的值(步骤s14)。

以这种方式,通过在写入数据时更新数据单元报头和数据块报头,附加写入单元25可以在接下来写入数据时使用数据块报头和数据单元报头来确定数据的附加写入位置。

在写入具有重复的数据的处理中,如图15所示,缓存管理单元22请求重复管理单元23写回数据(t31)。然后,重复管理单元23进行数据的重复判断并且存在重复(t32)。因此,重复管理单元23指定用于存储数据的数据块的号及其索引,并且请求元管理单元24执行db→ru转换(t33)。此处,db→ru转换是将数据块号转换为物理号。

然后,元管理单元24执行db→ru转换(t34)并且向重复管理单元23发送物理号响应(t35)。然后,重复管理单元23请求元管理单元24更新与物理号和索引对应的引用计数器(t36),以及元管理单元24更新引用计数器(t37)。

然后,元管理单元24请求io单元26更新数据片的有效数目(t38)。然后,io单元26更新数据片的有效数目,并且向元管理单元24发送数据片的有效数目的更新完成响应(t39)。然后,元管理单元24向重复管理单元23发送引用计数器的更新完成响应(t40)。

然后,重复管理单元23请求元管理单元24更新逻辑物理元(t41)。然后,元管理单元24更新逻辑物理元(t42),并且向重复管理单元23发送更新完成响应(t43)。然后,重复管理单元23向缓存管理单元22发送写回完成响应(t44)。

以这种方式,重复管理单元23可以通过请求元管理单元24更新引用计数器和更新逻辑物理元来执行写入具有重复的数据的处理。

接下来,将描述读取处理序列。图16是示出读取处理序列的图。如图16所示,缓存管理单元22请求重复管理单元23使用逻辑地址来执行数据的暂存(staging)(t51)。然后,重复管理单元23请求元管理单元24获取与逻辑地址对应的逻辑物理元(t52)。

然后,元管理单元24请求io单元26读取逻辑物理元(t53)。如果相应的逻辑物理元不在缓存上,则将缓存上lun和lba指定的页进行页出,并且将与相应的逻辑物理元对应的页进行页入。然后,io单元26向元管理单元24发送读取的逻辑物理元的响应(t54)。元管理单元24向重复管理单元23发送所获取的逻辑物理元的响应(t55)。

然后,重复管理单元23请求元管理单元24对获取的逻辑物理元中包括的数据块号执行db→ru转换(t56)。元管理单元24执行db→ru转换(t57),并且向重复管理单元23发送物理号响应(t58)。然后,重复管理单元23请求附加写入单元25使用所发送的物理号和逻辑物理元中包括的索引来读取数据单元(t59)。

然后,附加写入单元25请求io单元26读取与所请求的数据单元对应的数据单元报头(t60),并且从io单元26接收数据单元报头(t61)。然后,附加写入单元25从所接收的数据单元报头获取数据单元的偏移位置(t62),并且请求io单元26读取所获取的偏移位置处的数据单元(t63)。

然后,附加写入单元25从io单元26接收数据单元(t64)并且对压缩数据进行解压缩(t65)。然后,附加写入单元25向重复管理单元23发送解压缩数据响应(t66)。重复管理单元23接收数据并且向缓存管理单元22发送数据响应(t67)。

以这种方式,重复管理单元23获取与逻辑地址对应的逻辑物理元、将所获取的逻辑物理元中包括的数据块号转换为物理号、指定所获取的逻辑物理元中包括的索引和物理号、以及请求附加写入单元25读取数据单元。因此,重复管理单元23可以从存储装置3读出由缓存管理单元22请求的数据。

如上所述,在实施方式中,逻辑物理元存储单元24a存储逻辑物理元,该逻辑物理元将数据的逻辑地址与用于存储数据的数据块号和指示数据在数据块中的位置的索引相关联。dbm存储单元24b存储数据块映射,该数据块映射将数据块号与指示存储装置3中的数据块的存储位置的物理号相关联。该数据块具有用于存储数据单元报头的报头区域以及用于存储数据的有效载荷区域,该数据单元报头包括指示在数据块中的位置的偏移和要存储在由索引指定的位置处的每片数据的数据长度。因此,通过使用逻辑物理元存储单元24a、dbm存储单元24b和报头区域在有效载荷区域中附加地写入数据,存储控制装置2可以减少在存储装置3中写入的次数。

在实施方式中,以用于作为单位对存储装置3进行读写的单位长度的整数倍的大小来存储数据,并且将数据的crc存储在数据单元报头中。因此,在未压缩数据的情况下,可以有效地使用有效载荷区域。

在实施方式中,引用存储单元24c存储指示与物理号和索引相关联的数据的重复数目的引用计数器。因此,存储控制装置2可以执行去重。

在实施方式中,包括要存储在数据块中的数据片的数目、接下来要被写的数据的索引以及接下来要被写的数据的偏移的数据块报头存储在报头区域中。因此,存储控制装置2可以有效地在有效载荷区域中写入数据。

在实施方式中,存储控制装置2使用驱动器组3c的号、raid单元号的号和槽的号作为物理号,因此可以唯一地指定存储装置3中的数据块的存储位置。

在实施方式中,附加写入单元25与元管理单元24和io单元26协作以在存储装置3中附加地且全体地写入数据。因此,可以减少在存储装置3中写入的次数。

已经在实施方式中描述了存储控制装置2。然而,可以通过利用软件实现存储控制装置2的配置来获得具有类似功能的存储控制程序。因此,将描述执行存储控制程序的存储控制装置2的硬件配置。

图17是示出根据实施方式的执行存储控制程序的存储控制装置2的硬件配置的图。如图17所示,存储控制装置2包括主存储器41、处理器42、主机i/f43、通信i/f44和连接i/f45。

主存储器41是存储程序、执行程序的中间结果等的随机存取存储器(ram)。处理器42是从主存储器41读出程序并且执行该程序的处理装置。

主机i/f43是与服务器1b的接口。通信i/f44是用于与另一存储控制装置2通信的接口。连接i/f45是与存储装置3的接口。

在处理器42中执行的存储控制程序存储在便携式记录介质51中并且读入到主存储器41中。替选地,存储控制程序存储在经由通信i/f44连接的计算机系统的数据库等中,从数据库读出,以及读入主存储器41中。

在实施方式中,已经描述了使用ssd3d作为非易失性存储介质的情况。然而,实施方式不限于此,并且也可以应用于使用像ssd3d那样具有写入次数限制的另一非易失性存储介质的情况。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1