技术领域
本发明的实施方式涉及层级化存储器系统、存储器控制器、以及用于去重(deduplication)及存储器层级化的方法。
背景技术:
近年来,开发出包含存取速度不同的多个存储器装置的存储器系统。在这样的存储器系统中,存储器控制器基于多个存储器装置的存储区域,对利用该存储器系统的主计算机(主机),提供包含虚拟化的存储区域的逻辑盘。逻辑盘还被称作逻辑卷(logical volume)或逻辑单元(logical unit)。
多个存储器装置的存储区域(物理存储区域)为了管理而被分割为特定的单位区域。特定的单位区域通常被称作物理区段(physical extent)。存储器控制器将多个存储器装置内的任意的物理区段以与逻辑盘的大小相当的数量分配给该逻辑盘。由此,存储器控制器构筑逻辑盘。被分配了物理区段的逻辑盘内的区域称作逻辑区段(logical extent)。
这里,假设上述的存储器系统包括第一存储器装置及第二存储器装置。此外,假设第一存储器装置其存取速度高,是固态硬盘(SSD)那样的高速存储器装置。另一方面,假设第二存储器装置其存取速度比第一存储器装置低,是硬盘驱动器(HDD)那样的低速存储器装置。
存储器控制器基于存取速度的差异来区别第一存储器装置及第二存储器装置,将第一存储器装置及第二存储器装置内的物理区段层级性地组合。这样的动作称作存储器层级化,应用该存储器层级化的存储器系统称作层级化存储器系统。在以下的说明中,将第一存储器装置以及第二存储器装 置分别称作高速存储器装置以及低速存储器装置。
在层级化存储器系统中,存储器控制器按每个逻辑区段监视向对应的逻辑区段存取的状况。存储器控制器通常使用存取(输入输出)统计值作为表示该存取的状况的指标。存取统计值例如由每个逻辑区段的存取次数(即,用于读/写的输入输出次数)表示。
存储器控制器根据每个逻辑区段的存取统计值,动态地变更向逻辑区段的物理区段分配。即,存储器控制器在对存取的频率高的逻辑区段分配了低速存储器装置内的物理区段的情况下,将高速存储器装置内的物理区段再分配给该存取的频率高的逻辑区段。同样地,存储器控制器在对存取的频率低的逻辑区段分配了高速存储器装置内的物理区段的情况下,将低速存储器装置内的物理区段再分配给该存取的频率低的逻辑区段。
这样,存储器控制器根据每个逻辑区段的存取统计值,将上位层级的物理区段的数据向下位层级的物理区段动态地再配置,将下位层级的物理区段的数据向上位层级的物理区段动态地再配置。通过该再配置(再分配),存储器控制器能够以有限的存储器资源谋求逻辑盘的性能的优化。
此外,以往,开发出将存储器系统的有限的存储容量有效地利用的技术。作为这样的技术之一,去重技术受到关注。通过去重技术,防止同一内容的数据被重复保存在存储器系统中。通常,例如以称作区块(chunk)的小区域为单位,来判断该数据的重复。区块的大小通常小于区段的大小(区段大小)。
近年来,在上述那样的层级化存储器系统中也要求去重的应用。但是,应用去重的以往的存储器系统中,通常以大小比区段小的区块为单位进行去重。因此,为了在层级化存储器系统中应用去重,优选取得逻辑盘内的各个逻辑区块的存取统计值来代替取得逻辑盘内的各个逻辑区段的存取统计值。
于是,在应用了去重的情况下,高速存储器装置或低速存储器装置内的特定的区块(物理区块)的数据被用作逻辑盘内的多个区块(逻辑区块)的数据的可能性较高。该情况下,即使假设取得了逻辑盘内的各个逻辑区块的存取统计值,该存取统计值也不一定表示对应的物理区块的存取统计值。因而,即使根据这样的每个逻辑区块的存取统计值将物理区块的数据 再配置,也不一定算作反映出向物理区块存取的状况的再配置,因而难以谋求逻辑盘的性能的优化。
技术实现要素:
本发明要解决的课题在于,提供一种以逻辑区块为单位进行数据的去重并且能够通过反映出向物理区块存取的状况的数据的再配置来优化逻辑盘的性能的、层级化存储器系统、存储器控制器、以及用于去重及存储器层级化的方法。
根据实施方式,层级化存储器系统具备第一存储器装置、第二存储器装置以及存储器控制器。上述第一存储器装置包含由多个物理区块构成的存储区域。上述第二存储器装置包含由多个物理区块构成的存储区域,并且与上述第一存储器装置相比存取速度较低。上述存储器控制器控制对上述第一存储器装置及第二存储器装置的存取,并具备结构管理部、输入输出控制部、去重控制部、输入输出管理部以及层级化控制部。上述结构管理部,根据上述第一存储器装置及第二存储器装置各自的上述存储区域,构筑包含由多个逻辑区块构成的虚拟化的存储区域的逻辑盘,并将上述逻辑盘提供给利用上述层级化存储器系统的主计算机。上述输入输出控制部,按照来自上述主计算机的存取请求,从上述第一存储器装置或第二存储器装置读取数据,或者向上述第一存储器装置或第二存储器装置写入数据。上述去重控制部,在按照上述存取请求而第一数据被虚拟地写入第一逻辑区块的情况下,判断与上述第一数据同一内容的第二数据是否保存在上述第一存储器装置及第二存储器装置的某个中。在上述第二数据保存在上述第一存储器装置及第二存储器装置的某个中的、至少被分配给第二逻辑区块的第一物理区块中的第一情况下,为了去重,上述去重控制部将上述第一物理区块也分配给上述第一逻辑区块并且抑制上述第一数据的实际写入。在上述第二数据没有保存在上述第一存储器装置及第二存储器装置的某个中的第二情况下,上述去重控制部将上述第一存储器装置及第二存储器装置的某一方中的空的第二物理区块分配给上述第一逻辑区块,通过上述输入输出控制部,使上述第一数据写入上述第二物理区块。上述输入输出管理部取得输入输出统计值,该输入输出统计值表示向上述多个逻辑区 块的每个逻辑区块存取的状况。上述层级化控制部根据上述多个逻辑区块各自的输入输出统计值,取得被分配给上述多个逻辑区块的某个逻辑区块的物理区块各自的输入输出统计值。上述层级化控制部还基于上述物理区块各自的输入输出统计值执行第一再配置动作以及第二再配置动作的至少一方,上述第一再配置动作用于将分配给第三逻辑区块的上述第二存储器装置内的第三物理区块的数据再配置给上述第一存储器装置内的第四物理区块,上述第二再配置动作用于将分配给第四逻辑区块的上述第一存储器装置内的第五物理区块的数据再配置给上述第二存储器装置内的第六物理区块。
根据上述结构的层级化存储器系统,能够优化逻辑盘的性能。
附图说明
图1是表示一个实施方式的包含层级化存储器系统的计算机系统的典型的硬件结构的框图。
图2是主要表示图1所示的存储器控制器的典型的功能结构的框图。
图3是表示该实施方式中的物理区段与物理区块的典型关系、以及该物理区块与逻辑区块的典型关系的图。
图4是表示图2所示的地址变换表的数据结构例的图。
图5是表示图2所示的重复管理表的数据结构例的图。
图6是表示图2所示的输入输出(IO)统计表的数据结构例的图。
图7是表示该实施方式中的去重的例子的图。
图8是表示该实施方式中的写处理的典型顺序的流程图。
图9是表示图8所示的写处理中的新区块选择处理的典型顺序的流程图。
图10是用于说明新区块选择处理中所选择的物理区块被分配给指定了数据写入的逻辑区块的情况下的IO计数的典型接管(takeover)的图。
图11是用于说明为了去重而抑制向物理区块的数据写入的情况下的IO计数的典型接管的图。
图12是表示该实施方式中的读处理的典型顺序的流程图。
图13是表示该实施方式中的再配置处理的典型处理顺序的流程图。
图14是表示图13所示的再配置处理中的第一再配置动作的典型顺序的流程图。
图15是表示图13所示的再配置处理中的第二再配置动作的典型顺序的流程图。
图16是表示图13所示的再配置处理中的第三再配置动作的典型顺序的流程图。
图17是表示该实施方式的第一变形例中的再配置处理的典型处理顺序的流程图
图18是表示该第一变形例中的第一再配置动作的典型顺序的流程图。
图19是表示该第一变形例中的第二再配置动作的典型顺序的流程图。
图20是表示该第一变形例中的第三再配置动作的典型顺序的流程图。
图21是表示该第一变形例中的再配置的第一例的图。
图22是表示该第一变形例中的再配置的第二例的图。
图23是表示该第一变形例中的再配置的第三例的图。
图24是表示该第一变形例中的再配置的第四例的图。
图25是表示该实施方式的第二变形例中的再配置的例子的图。
图26是表示该实施方式的第三变形例中的再配置的例子的图。
符号说明
10…层级化存储器系统
11…高速存储器装置(第一存储器装置)
12…低速存储器装置(第二存储器装置)
13…存储器控制器
20…主机(主计算机)
137,138…逻辑盘
1331…地址变换表
1332…重复管理表
1333…IO(输入输出)统计表
1361…结构管理部
1362…IO控制部
1363…去重控制部
1364…IO管理部
1365…层级化控制部。
具体实施方式
以下,对于实施方式,参照附图进行说明。
图1是表示一个实施方式的包含层级化存储器系统的计算机系统的典型的硬件结构的框图。图1所示的计算机系统由层级化存储器系统10以及主计算机(以下,称作主机)20构成。即,计算机系统具备单一的主机。但是,计算机系统也可以具备多个主机。
主机20将层级化存储器系统10提供的逻辑盘用作自身的外部存储器装置。主机20例如经由主机接口总线30而与层级化存储器系统10(更详细地讲,是层级化存储器系统10的存储器控制器13)连接。本实施方式中,主机接口总线30是光纤通道(FC)。但是,主机接口总线30也可以是小型计算机系统接口(SCSI)、串行连接SCSI(SAS)、因特网SCSI(iSCSI)、以太网(注册商标)或串行高级技术附件(SATA)那样的、FC以外的接口总线。此外,主机20也可以经由存储区域网络(SAN)、因特网或内联网那样的网络而与层级化存储器系统10连接。
主机20是服务器或者客户端个人计算机(客户端PC)那样的物理计算机。在主机20内,用于对层级化存储器系统10提供的逻辑盘内的数据进行存取的应用程序进行动作。按照该应用程序,主机20经由主机接口总线30利用层级化存储器系统10。
层级化存储器系统10具备高速存储器装置(第一存储器装置)11、低速存储器装置(第二存储器装置)12和存储器控制器13。高速存储器装置11以及低速存储器装置12经由存储器接口总线14而与存储器控制器13连接。本实施方式中,存储器接口总线14是FC(光纤通道)。但是,存储器接口总线14也可以与主机接口总线30同样地是FC以外的接口总线。
高速存储器装置11例如由具有与硬盘驱动器(HDD)之间的互换性并且存取速度比HDD高速(即存取性能好)的单一的固态硬盘(SSD)构成。另一方面,低速存储器装置12例如由单一的HDD构成。
因而,在本实施方式中,低速存储器装置12相比于高速存储器装置11 存取速度低(即存取性能差)。相对于此,低速存储器装置12的存储容量设为比高速存储器装置11的存储容量大。本实施方式中,高速存储器装置11被用作上位层级(高速层级、第一层级)的存储器装置,低速存储器装置12被用作下位层级(低速层级、第二层级)的存储器装置。另外,层级化存储器系统10也可以具备比低速存储器装置12更加低速(低层级)的存储器装置(第三层级的存储器装置)。
另外,不同于本实施方式,高速存储器装置11也可以是搭载有闪存的闪存阵列(flash array)存储器装置或被称作全闪存阵列的存储器装置。同样,低速存储器装置12也可以是由多个HDD构成的阵列结构的存储器装置。
此外,也可以是,高速存储器装置11由FC用的HDD那样的高速HDD构成,低速存储器装置12也可以由SATA用的HDD那样的低速HDD构成。此外,低速存储器装置12也可以是蓝光光盘(注册商标)驱动器或DVD(注册商标)驱动器那样的光学式盘驱动器、或者磁带装置。此外,在将磁带装置用作低速存储器装置12的情况下,也可以将光学式盘驱动器用作高速存储器装置11。
存储器控制器13接收从主机20提供的、利用逻辑地址的存取(读存取或写存取)的请求(输入输出请求),并执行所请求的输入输出。该输入输出的执行时,存储器控制器13利用公知的地址变换功能,将逻辑地址变换为物理地址。逻辑地址表示逻辑盘内的地址。物理地址表示包含在高速存储器装置11或低速存储器装置12中并且与逻辑地址建立了对应的存储区域的物理位置。存储器控制器13根据物理地址,对高速存储器装置11或低速存储器装置12进行存取。
存储器控制器13具备主机接口控制器(以下称作HIF控制器)131、存储器接口控制器(以下称作SIF控制器)132、内存(memory)133、本地HDD 134、以及CPU 135。
HIF控制器131控制该HIF控制器131与主机20之间的数据传送(数据传送协议)。HIF控制器131接收来自主机的输入输出请求(读请求或写请求),并返回对该输入输出请求的应答。该输入输出(IO)请求指定从逻辑盘读取数据、或向该逻辑盘写入数据(即,向逻辑盘的存取)。HIF 控制器131当从主机20接收到IO(存取)请求时,将该IO请求向CPU 135传递。接受到IO请求的CPU 135对该IO请求进行处理。
SIF控制器132从CPU 135接收与CPU 135接收到的来自主机20的IO请求相对应的存取请求(更详细地讲,是对高速存储器装置11或低速存储器装置12的读请求或写请求)。SIF控制器132按照接收到的存取请求,执行向高速存储器装置11或低速存储器装置12的存取。
内存133是DRAM那样的可改写的易失性内存。内存133的存储区域的一部分用于保存从本地HDD 134载入的控制程序(例如固件程序)。内存133的存储区域的一部分用于保存从本地HDD 134载入的地址变换表1331、重复管理表1332以及输入输出(IO)统计表1333(图2)。
本地HDD 134中,保存有固件(FW)程序。CPU 135在存储器控制器13启动时执行初始程序载入(IPL),从而将本地HDD 134中保存的FW程序的至少一部分载入内存133。IPL保存在ROM或闪式ROM(FROM)那样的非易失性内存中。
CPU 135按照被载入到内存133中的FW程序,作为结构管理部1361、输入输出(IO)控制部1362、去重控制部1363、输入输出(IO)管理部1364以及层级化控制部1365(图2)发挥功能。即,CPU 135通过执行在内存133中保存的FW程序,对层级化存储器系统10整体进行控制。
本实施方式中,如图1所示,独立于主机20而具备存储器控制器13。但是,存储器控制器13也可以内置于内存20。该情况下,存储器控制器13(更详细地讲,是存储器控制器13的功能)也可以利用主机20具有的操作系统(OS)的功能的一部分来实现。
此外,存储器控制器13也可以设置在主机20的卡槽上安装而使用的卡中。此外,也可以是,存储器控制器13的一部分内置于主机20,该存储器控制器13的其余部分设置在卡中。此外,主机20、存储器控制器13、高速存储器装置11以及低速存储器装置12的一部分或全部也可以收纳在1个壳体中。
图2是主要表示图1所示的存储器控制器13的典型功能结构的框图。存储器控制器13具备固件(FW)136。通过CPU 135执行FW程序而实现FW 136。FW 136包括结构管理部1361、IO控制部1362、去重控制部1363、 IO管理部1364以及层级化控制部1365。结构管理部1361、IO控制部1362、去重控制部1363、IO管理部1364以及层级化控制部1365的至少1个也可以通过硬件实现。
结构管理部1361对层级化存储器系统10的存储器结构进行管理。该结构管理包括:根据高速存储器装置11以及低速存储器装置12的存储区域,构筑包含虚拟化的存储区域(即逻辑存储区域)的逻辑盘,并将该逻辑盘提供给主机20。
本实施方式中,为了逻辑盘的构筑(以及管理),该逻辑盘的存储区域(逻辑存储区域)被分割为称作逻辑区块的一定大小的小区域。同样,高速存储器装置11以及低速存储器装置12的存储区域(物理存储区域)被分割为称作物理区段的、大小比逻辑区块大的区域。各物理区段进一步被分割为称作物理区块的、与逻辑区块大小相同的小区域。即,各物理区段由一定数量的连续的物理区块构成。
物理区段的大小(即区段大小)例如是8兆字节(MB),即8,388,608字节(B)。另一方面,逻辑区块以及物理区块的大小(即区块大小)例如是4千字节(KB),即4,096字节(B)。但是,区段大小以及区块大小分别不限于8MB以及4KB。
结构管理还包括:将高速存储器装置11以及低速存储器装置12的存储区域内的物理区块分配给逻辑盘的存储区域内的逻辑区块,以及对该分配的状态进行管理。该分配的状态的管理中使用地址变换表1331。
IO控制部1362按照来自主机20的用于数据读取的IO请求(存取),从高速存储器装置11或低速存储器装置12读取数据。此外,IO控制部1362按照来自主机20的用于数据写入的IO请求,向高速存储器装置11或低速存储器装置12写入数据。
去重控制部1363以物理区块为单位,去除在多个物理区块中保存同一内容的数据的情况,即所谓的数据重复。为此,在数据(第一数据)被虚拟地写入某逻辑区块(第一逻辑区块)的情况下,去重控制部1363判断与该数据同一内容的数据是否已经保存在高速存储器装置11或低速存储器装置12中。该判断被称作重复判断,例如,通过将第一数据的散列值与在高速存储器装置11以及低速存储器装置12内的各个物理区块中保存的数据 的散列值进行比较,来进行该判断。利用重复管理表1332管理在各个物理区块中保存的数据的散列值。
这里,假设高速存储器装置11或低速存储器装置12内的某数据(第二数据)的散列值与第一数据的散列值一致,并且第二数据保存在分配给与第一逻辑区块不同的至少1个逻辑区块(例如第二逻辑区块)的第一物理区块中。该情况下,去重控制部1363将第1物理区块也分配给第一逻辑区块,并且抑制将第一数据向高速存储器装置11或低速存储器装置12实际地写入。向第一逻辑区块的存取通过物理地存取第1物理区块而实现。向第二逻辑区块的存取也通过物理地存取第1物理区块而实现。
IO管理部1364管理与来自主机20的IO请求对应的IO。该IO管理例如包括取得IO(存取)统计值(以下称作IO计数),该IO(存取)统计值表示一定期间中向各逻辑区块的存取的状况。利用IO统计表1333管理每个逻辑区块的IO计数。
层级化控制部1365将低速存储器装置12内的存取频率较高的物理区块的数据再配置给高速存储器装置11内的物理区块。此外,层级化控制部1365将高速存储器装置11内的存取频率较低的物理区块的数据再配置给低速存储器装置12内的物理区块。为了进行该再配置,层级化控制部1365根据每个逻辑区块的IO计数,取得每个物理区块的IO计数。特别是,在为了去重而将单一的物理区块分配为多个逻辑区块的情况下,层级化控制部1365取得该多个逻辑区块的IO计数的合计值作为该单一的物理区块的IO计数。单一的物理区块被分配给多个逻辑区块也称作单一的物理区块被多个逻辑区块参照。
图3是表示本实施方式中的物理区段与物理区块的典型关系、以及该物理区块与逻辑区块的典型关系。如图3所示,高速存储器装置11的存储区域被分割为包含物理区段PE0_i的m个物理区段PE0_0~PE0_m-1。此外,低速存储器装置12的存储区域被分割为包含物理区段PE1_j的n个物理区段PE1_0~PE1_n-1。即,高速存储器装置11以及低速存储器装置12分别具备物理区段PE0_0~PE0_m-1以及物理区段PE1_0~PE1_n-1。
物理区段PE0_i例如由存储器标识符(ID)(=SID=SID0=0)和区 段(物理区段)ID(=PEID=PEIDi)表示。SID=SID0=0表示高速存储器装置11。PEID=PEIDi是SID=SID0=0所示的存储器装置(即高速存储器装置11)内的唯一(unique)ID,表示该存储器装置内的第i个物理区段。
物理区段PE1_j例如由存储器ID(=SID=SID1=1)和区段ID(=PEID=PEIDj)表示。SID=SID1=1表示低速存储器装置12。PEID=PEIDj是SID=SID1=1所示的存储器装置(即低速存储器装置12)内的唯一ID,表示该存储器装置内的第j个物理区段。
物理区段PE0_i被分割为包含物理区块PCi_x的p个物理区块PCi_0~PCi_p-1,物理区段PE1_j被分割为包含物理区块PCj_y的p个物理区块PCj_0~PCj_p-1。即,物理区段PE0_i以及PE1_j分别具备物理区块PCi_0~PCi_p-1以及PCj_0~PCj_p-1。
物理区段PE0_i中的物理区块PCi_0~PCi_p-1的位置(即相对位置)由物理区段PE0_i内的偏移OFST0~OFSTp-1表示。同样,物理区段PE1_j中的物理区块PCj_0~PCj_p-1的位置(相对位置)由物理区段PE1_j内的偏移OFST0~OFSTp-1表示。
因而,例如,物理区块PCi_x由存储器ID(=SID=SID0=0)、区段ID(=PEID=PEIDi)和偏移OFSTx表示。同样,物理区块PCj_y由存储器ID(=SID=SID1=1)、区段ID(=PEID=PEIDj)和偏移OFSTy表示。即,存储器ID、区段ID和偏移的组表示物理地址。本实施方式中,物理区块PCi_x以及PCj_y分别还由层级化存储器系统10内的唯一物理区块ID(PCIDα以及PCIDβ)表示。
图3中还示出2个逻辑盘137及138。逻辑盘137及138由存储器控制器13内的结构管理部1361构筑,并被提供给主机20。逻辑盘137的存储区域被分割为包含逻辑区块LC0_u的多个逻辑区块,逻辑盘138的存储区域被分割为包含逻辑区块LC1_v的多个逻辑区块。
逻辑区块LC0_u由逻辑盘ID(=LDID=LDID0=0)和逻辑块(logical block)地址(LBA=LBAr)表示,逻辑区块LC1_v由逻辑盘ID(=LDID=LDID1=1)和逻辑块地址(LBA=LBAs)表示。LDID=LDID0=0表示逻辑盘137,LDID=LDID1=1表示逻辑盘138。LBA=LBAr表示逻辑盘 137中的逻辑区块LC0_u的开头位置的逻辑块地址,LBA=LBAs表示逻辑盘138中的逻辑区块LC1_v的开头位置的逻辑块地址。即,逻辑盘ID(LDID)和逻辑块地址(LBA)的组表示逻辑地址。
图3的例子中,物理区块PCi_x如箭头301所示那样被分配给逻辑区块LC1_v。此外,物理区块PCj_y如箭头302所示那样被分配给逻辑区块LC0_u。
图4表示图2所示的地址变换表1331的数据结构例。地址变换表1331由2个表1331a及1331b构成。表1331a的各条目具有逻辑盘ID字段(field)、LBA字段以及物理区块ID字段,用于保持逻辑盘ID(LDID)、LBA以及物理区块ID(PCID)的组。即,表1331a的各条目中,逻辑盘ID以及LBA的组与物理区块ID建立了对应。
图4中,在表1331a的开头的条目的逻辑盘ID字段、LBA字段以及物理区块ID字段中保持有LDID0、LBA0以及PCID0。该情况下,表1331a的开头的条目表示对LDID0及LBA0所示的逻辑盘137内的逻辑区块分配了PCID0所示的物理区块。在表1331a的第2个条目的逻辑盘ID字段、LBA字段以及物理区块ID字段中,保持有LDID0、LBA1以及无效值。图4中,无效值用记号“-”表示,表示对应的有效的信息(这里是PCID)为未设定。该情况下,表1331a的第2个条目表示对LDID0及LBA1所示的逻辑盘137内的逻辑区块没有分配物理区块。另外,为了表示有效的信息(PCID)为未设定,也可以将对应的字段(物理区块ID字段)设定为空栏。
表1331b的各条目具有物理区块ID字段、存储器ID字段、区段ID字段以及偏移字段,用于保持物理区块ID(PCID)、存储器ID(SID)、区段ID(PEID)以及偏移(OFST)的组。即,表1331b的各条目中,物理区块ID与存储器ID、区段ID以及偏移的组建立了对应。
图4中,在表1331b的开头的条目的物理区块ID字段、存储器ID字段、区段ID字段以及偏移字段中,保持有PCID0、SID0、PEID0以及OFST0。该情况下,表1331b的开头的条目表示由PCID0所示的物理区块是由SID0、PEID0以及OFST0所示的高速存储器装置11内的物理区块。从上述的地址变换表1331的数据结构可以明确,地址变换表1331用于将由逻辑盘ID 以及LBA的组表示的逻辑区块的地址(逻辑地址)变换为由存储器ID、区段ID以及偏移的组表示的物理区块的地址(物理地址)。
图5表示图2所示的重复管理表1332的数据结构例。重复管理表1332的各条目具有物理区块ID字段、散列值字段以及重复计数字段,用于保持物理区块ID(PCID)、散列值(H)以及重复计数(DCNT)的组。H表示由PCID所示的物理区块的数据的散列值。即,本实施方式中,物理区块的数据的散列值作为用来确定该数据的内容的代表值来使用。此外,在散列值的计算中,使用如SHA-256那样的公知的散列函数。
图5中,在重复管理表1332的开头条目的物理区块ID字段、散列值字段以及重复计数字段中,保持有PCID0、Ha以及DCNTc。该情况下,重复管理表1332的开头的条目表示,PCID0所示的物理区块的数据的散列值为Ha,该数据的重复计数(即重复数)为DCNTc。重复计数=DCNTc表示由PCID0所示的物理区块被分配给DCNTc个逻辑区块,即被DCNTc个逻辑区块参照。
重复管理表1332的第2个条目的物理区块ID字段、散列值字段以及重复计数字段中,保持有PCID1、无效值(H=“-”)以及0(DCNT=0)。该情况下,重复管理表1332的第2个条目表示,PCID1所示的物理区块中不存在有效的数据,即PCID1所示的物理区块为空区块。
图6表示图2所示的IO统计表1333的数据结构例。IO统计表1333的各条目具有逻辑盘ID字段、LBA字段以及IO计数字段,用于保持逻辑盘ID(LDID)、LBA以及IO计数的组。IO计数表示对由LDID及LBA的组所示的逻辑区块存取的次数。IO统计表1333例如在用于由层级化控制部1365进行的数据再配置的处理(再配置处理)中使用。
本实施方式中,在再配置处理中使用的IO统计表1333的内容直到下一再配置处理开始为止被作为旧IO统计表例如保存在本地HDD 134中。但是,在IO统计表1333的各条目中也可以追加旧IO计数字段。该旧IO计数字段用于将最新的再配置处理结束时的IO计数作为旧IO计数进行保持。
图7表示本实施方式的去重的例子。图7中,在层级化存储器系统10的高速存储器装置11以及低速存储器装置12内,多个矩形框用实线表示。 用实线表示的矩形框表示物理区块,该矩形框内的字符表示由该矩形框所示的物理区块中保存的数据。图7中,还示出逻辑盘137及138。在逻辑盘137及138内,多个矩形框用虚线表示。用虚线表示的矩形框表示逻辑区块,该矩形框内的字符表示由该矩形框所示的逻辑区块中虚拟地保存的数据。图7的例子中,在高速存储器装置11中保存有数据A的物理区块如虚线的箭头所示那样,被分配给逻辑盘137内的1个逻辑区块和逻辑盘138内的2个逻辑区块。由此,防止数据A重复保存在高速存储器装置11或低速存储器装置12中的情况。
接着,对本实施方式的动作进行说明。首先,参照图8说明存储器控制器13的HIF控制器131接收到来自主机20的写入命令WC的情况下执行的写入处理。图8是表示本实施方式的写入处理的典型顺序的流程图。
通常,写入命令WC(以及后述的读取命令的每一个)包含逻辑盘ID(=LDID=LDIDa)、LBA(=LBAb)以及数据传送大小,以具有区块(chunk)大小的整数倍大小的块(block)为单位来表示数据传送大小。本实施方式中为了说明的简略化,假设块大小等于区块大小,并且数据传送大小等于1块的大小(即1区块的大小)。
存储器控制器13的去重控制部1363计算按照写入命令WC而应写入的写入数据WD的散列值Hc(步骤S1)。接着,去重控制部1363基于散列值Hc来参照重复管理表1332,从而执行用于从重复管理表1332中搜索包含与散列值Hc相等的散列值的条目(目标条目)的动作(步骤S2)。并且,去重控制部1363判断是否搜索到目标条目(步骤S3)。
如果没有搜索到目标条目(步骤S3的否),则去重控制部1363判断为,与写入数据WD同一内容的数据不存在于高速存储器装置11以及低速存储器装置12的任一个的物理区块中,因而不需要进行与写入数据WD相关的去重。该情况下,去重控制部1363如以下那样执行用于确定对写入数据WD应被虚拟地写入的逻辑区块LCc(即被指定了数据写入的逻辑区块LCc)分配的物理区块的动作(步骤S4)。逻辑区块LCc由写入命令WC中包含的(写入命令WC指定的)LDIDa以及LBAb的组(逻辑地址)指定。
首先,去重控制部1363基于上述的LDIDa以及LBAb的组,参照地 址变换表1331内的表1331a。并且,去重控制部1363从表1331a中搜索与LDIDa及LBAb的组建立了对应的有效的物理区块ID,从而确定对由LDIDa及LBAb的组指定的逻辑区块LCc分配的物理区块。
接着,去重控制部1363如以下那样判断是否确定出被分配给逻辑区块LCc的物理区块(步骤S5)。首先,如果没有搜索出与LDIDa及LBAb的组建立了对应的有效的物理区块ID,则去重控制部1363判断为对逻辑区块LCc没有分配有物理区块。该情况下,去重控制部1363判断为无法确定被分配给逻辑区块LCc的物理区块(步骤S5的否)。
相对于此,如果搜索到有效的物理区块ID,则去重控制部1363基于搜索到的物理区块ID,对地址变换表1331内的表1331b进行参照。由此,去重控制部1363取得与搜索到的物理区块ID建立了对应的存储器ID、区段ID以及偏移的组。即,去重控制部1363将LDIDa以及LBAb的组(逻辑地址)变换为存储器ID、区段ID以及偏移的组(物理地址)。存储器ID、区段ID以及偏移的组表示被分配给由LDIDa以及LBAb的组指定的逻辑区块LCc的物理区块PCd。该情况下,去重控制部1363判断为确定出被分配给逻辑区块LCc的物理区块(这里是物理区块PCd)(步骤S5的是)。
去重控制部1363在确定出物理区块PCd的情况下(步骤S5的是),在重复管理表1332中,参照与该确定出的物理区块PCd的物理区块ID建立了对应的条目中的重复计数DCNTd(步骤S6)。在物理区块PCd至少被分配给逻辑区块LCc的情况下,重复计数DCNTd为1以上。
接着,去重控制部1363判断重复计数DCNTd是否为1(步骤S7)。如果重复计数DCNTd为1(步骤S7的是),则去重控制部1363判断为所确定的物理区块PCd仅被分配给逻辑区块LCc。即,去重控制部1363判断为,当前保存在物理区块PCd中的数据不被逻辑区块LCc以外的逻辑区块参照,与逻辑区块LCc以外的逻辑区块中虚拟地保存着的数据不同。该情况下,去重控制部1363通过IO控制部1362使写入数据WD写入所确定的物理区块PCd中(步骤S8)。于是,IO管理部1364将IO统计表1333中与逻辑区块LCc(更详细地讲,是表示逻辑区块LCc的LDIDa以及LBAb的组)建立了对应的条目(即,包含LDIDa以及LBAb的组的条目)中的IO计数递增1(步骤S9)。由此,写入处理结束。
相对于此,若重复计数DCNTd不为1(步骤S7的否),即重复计数DCNTd超过1,则去重控制部1363判断为所确定的物理区块PCd还被分配给逻辑区块LCc以外的至少1个逻辑区块。即,去重控制部1363判断为,当前保存在物理区块PCd中的数据还被逻辑区块LCc以外的至少1个逻辑区块参照。该情况下,去重控制部1363判断为,写入数据WD应被写入与物理区块PCd不同的空的物理区块。
因此,去重控制部1363将重复计数DCNTd递减1(步骤S10)。并且,去重控制部1363执行用于从高速存储器装置11以及低速存储器装置12的某一个中选择新分配给逻辑区块LCc的空物理区块的新区块选择处理(步骤S11)。本实施方式中,假设选择了物理区块PCe。此时,重复管理表1332中与物理区块PCe的物理区块ID建立了对应的条目的散列值字段以及重复计数字段的内容分别为无效值(“-”)以及0、即初始值。
去重控制部1363通过IO控制部1362使写入数据WD写入所选择的物理区块PCe中(步骤S12)。并且,去重控制部1363对在重复管理表1332中与物理区块PCe(新区块)的物理区块ID建立了对应的条目的散列值字段以及重复计数字段,分别设定所计算出的散列值(即写入数据WD的散列值)Hc以及1(步骤S13)。即,去重控制部1363将重复管理表1332中与新区块建立了对应的条目中的散列值以及重复计数分别从无效值(“-”)以及0更新为Hc以及1。
接着,去重控制部1363更新与逻辑区块LCc建立了对应的地址变换表1331内条目的内容(步骤S14)。即,去重控制部1363在地址变换表1331的表1331a中将包含表示逻辑区块LCc的LDIDa及LBAb的组在内的条目中的物理区块ID从物理区块PCd的物理区块ID更新为物理区块PCe的物理区块ID。于是,IO管理部1364将IO统计表1333中与逻辑区块LCc建立了对应的条目中的IO计数递增1(步骤S9)。
另一方面,如果搜索到目标条目(步骤S3的是),则去重控制部1363判断为,与写入数据WD同一内容的数据已经存在于高速存储器装置11以及低速存储器装置12的某个的物理区块中,因而需要进行与写入数据WD相关的去重。该例中,假设与写入数据WD同一内容的数据已经存在于物理区块PCf中。
该情况下,去重控制部1363为了进行去重而抑制由IO控制部1362进行的写入数据WD向新物理区块的写入。并且,去重控制部1363将从重复管理表1332中搜索出的条目(即与物理区块PCf建立了对应的条目)中的重复计数递增1(步骤S15)。
去重控制部1363若执行步骤S15,则向步骤S14前进。在步骤S14中,去重控制部1363更新与逻辑区块LCc建立了对应的地址变换表1331内条目的内容。即,去重控制部1363在地址变换表1331的表1331a中,对包含表示逻辑区块LCc的LDIDa以及LBAb的组在内的条目的物理区块ID字段,设定物理区块PCf的物理区块ID。这样,物理区块PCf被新分配给逻辑区块LCc,其结果,被分配了物理区块PCf的(即参照物理区块PCf的)逻辑区块的数量递增1。若通过去重控制部1363执行步骤S14,则IO管理部1364将IO统计表1333中与逻辑区块LCc建立了对应的条目中的IO计数递增1(步骤S9)。
这里,假设在步骤S3的判断为是从而如上述那样执行步骤S15以及S14的情况下,与物理区块PCf不同的物理区块例如物理区块PCd已经被分配给逻辑区块LCc。该情况下,去重控制部1363在步骤S14中除了上述的将地址变换表1331进行更新的处理以外,还如以下那样执行以下的将重复管理表1332进行更新的处理。
首先,将与物理区块PCd建立了对应的重复管理表1332内条目称作特定条目。由于在步骤S15及S14即将被执行时物理区块PCd被分配给逻辑区块LCc,从而特定条目中的重复计数为1以上。如果特定条目中的重复计数为1,则去重控制部1363将该特定条目中的散列值以及重复计数分别更新为无效值(“-”)以及0。相对于此,如果特定条目中的重复计数超过1,则去重控制部1363将该重复计数递减1。
接着,假设去重控制部1363无法确定出被分配给逻辑区块LCc的物理区块(步骤S5的否)。该情况下,去重控制部1363判断为没有对逻辑区块LCc分配有效的物理区块。因此,去重控制部1363选择应向逻辑区块LCc新分配的空的物理区块(新区块)(步骤S16)。本实施方式中,将低速存储器装置12内的空的物理区块选择为新区块。但是,也可以将高速存储器装置11内的空的物理区块选择为新区块。此外,这样的选择规则例如 也可以由用户经由主机20预先指定。本实施方式中,假设选择了物理区块PCg。
去重控制部1363通过IO控制部1362使写入数据WD写入所选择的物理区块PCg中(步骤S12)。并且,去重控制部1363对在重复管理表1332中与物理区块PCg(新区块)的物理区块ID建立了对应的条目的散列值字段以及重复计数字段,分别设定所计算出的散列值Hc以及1(步骤S13)。
并且,去重控制部1363更新与逻辑区块LCc建立了对应的地址变换表1331内条目的内容(步骤S14)。即,去重控制部1363在地址变换表1331的表1331a中,将包含表示逻辑区块LCc的LDIDa及LBAb的组的条目中的物理区块ID(=“-”)更新为物理区块PCg的物理区块ID。于是,IO管理部1364将IO统计表1333中与逻辑区块LCc建立了对应的条目中的IO计数递增1(步骤S9)。
接着,对于图8所示的写入处理中的新区块选择处理(步骤S11),参照图9进行说明。图9是表示新区块选择处理的典型顺序的流程图。
首先,去重控制部1363在IO统计表1333中取得与表示逻辑区块LCc(即被指定了数据写入的逻辑区块LCc)的LDIDa及LBAb的组建立了对应的条目中的输入输出计数(=IOCNTnew)(步骤S21)。接着,去重控制部1363从最新的再配置处理结束时的、低速存储器装置12内的物理区块的IO计数之中选择最大的IO计数(=IOCNTmax)(步骤S22)。去重控制部1363通过计算低速存储器装置12内的每个物理区块被分配的全部逻辑区块的IO计数的合计值,来取得该每个物理区块的IO计数。去重控制部1363在合计值的计算中使用最新的再配置处理结束时的IO统计表1333即旧IO统计表。
接着,去重控制部1363比较IOCNTnew以及IOCNTmax的大小,例如判断IOCNTnew是否比IOCNTmax大(步骤S23)。如果IOCNTnew比IOCNTmax大(步骤S23的是),则去重控制部1363判断为对逻辑区块LCc的存取频率足够高。该情况下,去重控制部1363将高速存储器装置11内的空的物理区块选择为新区块(步骤S24)。并且,去重控制部1363结束新区块选择处理(图8的步骤S11)。
相对于此,如果IOCNTnew不比IOCNTmax大(步骤S23的否),则 去重控制部1363判断为对逻辑区块LCc的存取频率低。该情况下,去重控制部1363将低速存储器装置12内的空的物理区块选择为新区块(步骤S25)。并且,去重控制部1363结束新区块选择处理(图8的步骤S11)。
接着,参照图10,说明去重控制部1363将新区块选择处理(图8的步骤S11)中选择为新区块的物理区块分配给被指定了数据写入的逻辑区块的情况下的IO计数的典型接管。图10中,物理区块PCa如箭头101、102以及103所示那样,被分配给逻辑区块LCa、LCb以及LCc。物理区块PCa中保存有数据A。该情况下,逻辑区块LCa、LCb以及LCc中虚拟地保存有数据A。
本实施方式中,物理区块PCa的IOCNT由被分配了该物理区块PCa的逻辑区块LCa、LCb以及LCc的IOCNT的合计值表示。图10中,逻辑区块LCa、LCb以及LCc的IO计数(IOCNT)分别为3、1以及2。因而,物理区块PCa的IOCNT为6。
在这样的状态下,假设数据B向逻辑区块LCc的写入如箭头104所示那样被请求。并且,图9的流程图所示的新区块选择处理中,假设物理区块PCb被选择为应向逻辑区块LCc分配的新区块。该情况下,物理区块PCa的分配目的地如箭头105所示那样减少为逻辑区块LCa以及LCb这2个。并且,对于逻辑区块LCc,取代物理区块PCa而将物理区块PCb如箭头106所示那样分配逻辑区块LCc。
物理区块PCb中被写入数据B。因而数据B被虚拟地写入逻辑区块LCc。由此,逻辑区块LCc的IOCNT从2递增为3。该情况下,层级化控制部1365将该逻辑区块LCc的递增后的IOCNT(=3)接管作为物理区块PCb的IOCNT。即,物理区块PCb的IOCNT接管逻辑区块LCc的递增后的IOCNT(=3)。另一方面,物理区块PCa的IOCNT减少为逻辑区块LCa及LCb的IOCNT(3及1)的合计值(=4)。
接着,参照图11来说明为了去重而抑制向物理区块的数据写入的情况、即对物理区块分配的逻辑区块的数量递增1的情况下的IO计数的典型接管。图11中,假设物理区块PCb处于图10中的数据B的写入后的状态。该状态下,物理区块PCa如箭头101及102所示那样被分配给逻辑区块LCa及LCb,物理区块PCb如箭头106所示那样被分配给逻辑区块LCc。在物 理区块PCa中保存有数据A,在物理区块PCb中保存有数据B。该情况下,在逻辑区块LCa及LCb中虚拟地保存有数据A,在逻辑区块LCc中虚拟地保存有数据B。物理区块PCa的IOCNT由被分配了该物理区块PCa的逻辑区块LCa及LCb的IOCNT(3及1)的合计值(4)表示。另一方面,物理区块PCc的IOCNT由被分配了该物理区块PCc的逻辑区块LCc的IOCNT(3)表示。
在这样的状态下,假设数据A向逻辑区块LCc的写入如箭头107所示那样被请求。数据A已经存在于物理区块PCa中。因此,去重控制部1363为了去重而抑制向当前被分配给逻辑区块LCc的物理区块PCb的数据A的写入。该情况下,物理区块PCa的分配目的地如箭头108所示那样增加为逻辑区块LCa、LCb以及LCc这3个。即,物理区块PCa如箭头109所示那样还被分配给逻辑区块LCc。由此,数据A虽不被写入新的物理区块,但被虚拟地写入逻辑区块LCc。因而,逻辑区块LCc的IOCNT从3递增为4。该情况下,层级化控制部1365将对请求写入数据A之前的物理区块PCa的IOCNT(4)加上逻辑区块LCc的递增后的IOCNT(4)而得到的值(8)接管作为该物理区块PCa的IOCNT。即,物理区块PCa的IOCNT接管请求写入数据A之前的值(4)与逻辑区块LCc的递增后的IOCNT(4)的合计值(8)。由此,物理区块PCa的IOCNT增加逻辑区块LCc的递增后的IOCNT的值(4)。
接着,参照图12说明在本实施方式中HIF控制器131接收到来自主机20的读取命令RC的情况下执行的读取处理。图12是表示本实施方式的读取处理的典型顺序的流程图。
首先,假设读取命令RC指定了来自逻辑区块LCh的数据读取(虚拟的数据读取)。该情况下,存储器控制器13的IO控制部1362,与在上述的写入处理中由去重控制部1363执行的步骤S4(图8)同样地确定被分配给逻辑区块LCh的物理区块(步骤S31)。
接着,IO控制部1362从所确定的物理区块中读取数据(步骤S32)。被读取的数据通过HIF控制器131传送至主机20。于是,IO管理部1364将IO统计表1333中与逻辑区块LCh建立了对应的条目中的IO计数递增1(步骤S33)。由此,读取处理结束。
接着,参照图13说明在本实施方式中用于将物理区块的数据进行再配置的再配置处理。图13是表示本实施方式中的再配置处理的典型处理顺序的流程图。该再配置处理按预先决定的调度(schedule)(例如定期地)执行。但是,再配置处理也可以在例如由用户经由主机20指定的定时执行。
下面,假设应执行再配置处理的定时到来。于是,层级化控制部1365如以下那样执行再配置处理。首先,层级化控制部1365将全部的有效物理区块以被分配了该物理区块的逻辑区块的IO计数(IOCNT)的合计值的降序排序(步骤S41)。这里,关于用于取得IO计数的合计值的方法,以物理区块为PCa、物理区块PCa的物理区块ID为PCIDa的情况为例进行说明。
首先,层级化控制部1365从重复管理表1332中与物理区块ID=PCIDa建立了对应的条目取得重复计数DCNTa。这里,假设重复计数DCNTa超过1。层级化控制部1365在地址变换表1331的表1331a中参照与物理区块ID=PCIDa建立了对应的全部条目。与物理区块ID=PCIDa建立了对应的条目的数量与重复计数DCNTa一致。
层级化控制部1365从与物理区块ID=PCIDa建立了对应的全部条目(DCNTa个条目)中,取得被分配了物理区块PCa的全部逻辑区块(DCNTa个逻辑区块)的逻辑盘ID及LBA的组。层级化控制部1365在IO统计表1333中,从与取得的全部逻辑区块的逻辑盘ID及LBA的组分别建立了对应的条目中取得IO计数。并且,层级化控制部1365计算所取得的IO计数的合计值,作为物理区块PCa的IO计数。另外,重复计数DCNTa为1的情况下,地址变换表1331内的仅1条目与物理区块ID=PCIDa建立了对应。该情况下,层级化控制部1365取得IO统计表1333中对与上述的1条目中的逻辑盘ID及LBA的组建立了对应的条目设定的IO计数,作为物理区块PCa的IO计数。
层级化控制部1365若执行步骤S41,则将实际使用量Cau与许可量Cpu进行比较(步骤S42)。实际使用量Cau是指高速存储器装置11中实际被使用的(即被分配给逻辑区块的群的物理区块的群的)容量(第一容量)。许可量Cpu是指高速存储器装置11中许可使用的(上限的)容量(第二容量)。
接着,层级化控制部1365基于上述的比较结果,判断实际使用量Cau是否等于许可量Cpu(步骤S43)。如果实际使用量Cau不等于许可量Cpu(步骤S43的否),则层级化控制部1365判断实际使用量Cau是否小于许可量Cpu(步骤S44)。
如果实际使用量Cau小于许可量Cpu(步骤S44的是),则层级化控制部1365重复第一再配置动作(步骤S46)直到第一条件成立(步骤S45)。接着,层级化控制部1365结束再配置处理。第一条件是,未达到许可量Cpu的使用量Cau变得与该许可量Cpu相等。关于第一再配置动作在后面叙述。
相对于此,如果实际使用量Cau不是小于许可量Cpu(步骤S44的否)从而实际使用量Cau超过许可量Cpu,则层级化控制部1365重复第二再配置动作(步骤S48)直到第二条件成立(步骤S47)。接着,层级化控制部1365结束再配置处理。第二条件是,超过许可量Cpu的使用量Cau变得与该许可量Cpu相等。关于第二再配置动作在后面叙述。
另一方面,如果使用量Cau等于许可量Cpu(步骤S43的是),则层级化控制部1365重复第三再配置动作(步骤S50)直到第三条件成立(步骤S49)。接着,层级化控制部1365结束再配置处理。第三条件是,高速存储器装置11内的有效物理区块的IO计数中的最小的IO计数成为低速存储器装置12内的有效物理区块的IO计数中的最大的IO计数以上。有效物理区块是指被分配给逻辑区块的物理区块即非空的物理区块。关于第三再配置动作在后面叙述。
接着,参照图14说明图13所示的再配置处理中的第一再配置动作(步骤S46)。图14是表示第一再配置动作的典型顺序的流程图。首先,层级化控制部1365根据上述的排序处理(图13的步骤S41)的结果,从低速存储器装置12内的未选择的物理区块的群中,选择IO计数为最大的物理区块(步骤S51)。
接着,层级化控制部1365将所选择的物理区块内的数据向高速存储器装置11内的空的物理区块进行拷贝(再配置)(步骤S52)。这里,假设拷贝源的物理区块(即所选择的物理区块)的物理区块ID为PCIDcs,拷贝目的地的物理区块的物理区块ID为PCIDcd。此外,假设拷贝目的地的 物理区块被分配给逻辑区块LCu_w。该情况下,地址变换表1331的表1331a中与逻辑区块LCu_w(表示逻辑区块LCu_w的逻辑盘ID及LBA的组)建立了对应的条目的物理区块ID字段中设定有PCIDcd。
层级化控制部1365若执行步骤S52,则将地址变换表1331中的、与拷贝源的物理区块(即所选择的物理区块)建立了对应的条目的内容如以下那样更新(步骤S53)。首先,层级化控制部1365确定地址变换表1331内的表1331a中的、与拷贝源的物理区块建立了对应的条目(即设定有PCIDcs的条目)。并且,层级化控制部1365将所确定的条目中的物理区块ID字段的内容从PCIDcs变更为PCIDcd。由此,被分配给逻辑区块LCu_w的物理区块从拷贝源的物理区块变更为拷贝目的地的物理区块。
此外,层级化控制部1365通过去重控制部1363更新重复管理表1332中的、与拷贝源的物理区块以及拷贝目的地的物理区块建立了对应的条目的内容(步骤S54)。即,去重控制部1363将重复管理表1332中的、与拷贝源的物理区块建立了对应的条目的散列值字段以及重复计数字段的内容交换为重复管理表1332中的、与拷贝目的地的物理区块建立了对应的条目的散列值字段以及重复计数字段的内容(无效值以及0)。这样,层级化控制部1365结束第一再配置动作(图13的步骤S46)。另外,步骤S54也可以在步骤S53之前执行。
接着,参照图15说明图13所示的再配置处理中的第二再配置动作(步骤S48)。图15是表示第二再配置动作的典型顺序的流程图。首先,层级化控制部1365根据上述的排序处理的结果,从高速存储器装置11内的未选择的物理区块的群中,选择IO计数为最小的物理区块(步骤S61)。
接着,层级化控制部1365将所选择的物理区块内的数据向低速存储器装置12内的空的物理区块进行拷贝(步骤S62)。接着,层级化控制部1365与上述的步骤S53(图14)同样地更新地址变换表1331中的、与拷贝源的物理区块建立了对应的条目的内容(步骤S63)。
接着,层级化控制部1365使重复管理表1332中的、与拷贝源的物理区块以及拷贝目的地的物理区块建立了对应的条目的内容,通过去重控制部1363而与上述的步骤S54(图14)同样地更新(步骤S64)。这样,层级化控制部1365结束第二再配置动作(图13的步骤S48)。
接着,参照图16说明图13所示的再配置处理中的第三再配置动作(步骤S50)。图16是表示第三再配置动作的典型顺序的流程图。第三再配置动作由与第一再配置动作及第二再配置动作相当的2个再配置动作构成。
首先,层级化控制部1365执行与第一再配置动作(图14的步骤S51~S54)相当的再配置动作(步骤S71~S74)。如有必要,在关于上述的第一再配置动作的说明中,希望将步骤S51~S54替换为步骤S71~S74。接着,层级化控制部1365执行与第二再配置动作(图15的步骤S61~S64)相当的再配置动作(步骤S75~S78)。如有必要,在关于上述的第二再配置动作的说明中,希望将步骤S61~S64替换为步骤S75~S78。
如上述那样,根据本实施方式,去重控制部1363以逻辑区块为单位将数据的重复排除。另一方面,层级化控制部1365根据由IO管理部1364取得的多个逻辑区块各自的IO计数,取得被分配给多个逻辑区块的某个逻辑区块的物理区块各自的IO计数。并且,层级化控制部1365根据物理区块各自的IO计数(即向物理区块存取的状况),以物理区块为单位来执行高速存储器装置11以及低速存储器装置12之间(即层级间)的数据的再配置。由此,本实施方式能够以逻辑区块为单位将数据的重复排除,并且能够实现反映出向物理区块存取的状况的数据的再配置。由此,根据本实施方式,能够优化逻辑盘的性能。
另外,步骤S75~S78也可以在步骤S71~S74之前执行。此外,也可以是,取代上述的2个拷贝处理(步骤S72及S76),层级化控制部1365例如在步骤S75之后执行将在步骤S71中选择出的物理区块内的数据和在步骤S75中选择出的物理区块内的数据进行交换的处理。
此外,也可以在图11所示那样的、伴随被分配给物理区块的逻辑区块的数量递增1而进行的IO计数的接管时,执行与上述的第一再配置动作相当的再配置动作。图11的例子假定与物理区块PCa中保存的数据A同一内容的数据被虚拟地写入逻辑区块LCc的情况。该情况下,为了去重,抑制向物理区块新写入与数据A同一内容的数据,物理区块PCa也被分配给逻辑区块LCc。图11的例子中,通过该分配,被分配了物理区块PCa的逻辑区块的数量从2递增为3。由此,物理区块PCa的IOCNT也从4增加为8。此时,假设物理区块PCa是低速存储器装置12内的物理区块。该情况 下,层级化控制部1365从最新的再配置处理结束时的、高速存储器装置112内的物理区块的IO计数中,选择最小的IO计数(=IOCNTmin)。并且,如果物理区块PCa的IOCNT超过IOCNTmin,则层级化控制部1365判断为物理区块PCa的存取频率上升。因此,层级化控制部1365将物理区块PCa的数据,与第一再配置动作同样地再配置给高速存储器装置11内的空的物理区块。
同样,也可以在图10所示那样的、伴随向特定的逻辑区块分配新区块(物理区块)而进行的向该新区块的IO计数的接管时,执行与上述的第二再配置动作相当的再配置动作。图10的例子中,向逻辑区块LCc新分配物理区块Pcb的结果是,被分配了物理区块PCa的逻辑区块的数量从3减少为2。由此,物理区块PCa的IOCNT也从6减少为4。此时,假设物理区块PCa是高速存储器装置11内的物理区块。该情况下,层级化控制部1365从最新的再配置处理结束时的、低速存储器装置12内的物理区块的IO计数之中,选择最大的IO计数(=IOCNTmax)。并且,如果物理区块PCa的IOCNT小于IOCNTmax,则层级化控制部1365判断为物理区块PCa的存取频率下降。因此,与第二再配置动作同样地,层级化控制部1365将物理区块PCa的数据再配置给低速存储器装置12内的空的物理区块。
<第一变形例>
接着,说明上述实施方式的第一变形例。第一变形例的特征在于,应用基于区段执行的再配置处理。以下,参照图17说明第一变形例的再配置处理。图17是表示第一变形例的再配置处理的典型处理顺序的流程图。以下的说明中,将高速存储器装置11内的物理区段称作高速区段,将低速存储器装置12内的物理区段称作低速区段。
下面,假设应执行再配置处理的定时到来。于是,层级化控制部1365如以下那样执行再配置处理。首先,层级化控制部1365执行与上述实施方式中的再配置处理的步骤S41~S43(图13)相当的步骤S81~S83。如有必要,在关于上述实施方式的再配置处理的说明中,希望将步骤S41~S43替换为步骤S81~S83。
层级化控制部1365在步骤S83中判断实际使用量Cau是否等于许可量Cpu。如果实际使用量Cau不等于许可量Cpu(步骤S83的否),则层级化 控制部1365判断实际使用量Cau是否小于许可量Cpu(步骤S84)。
如果实际使用量Cau小于许可量Cpu(步骤S84的是),则层级化控制部1365重复第一再配置动作(步骤S86)直到上述的第一条件成立(步骤S85)。如后述那样基于区段执行第一再配置动作(步骤S86)这一点,与上述实施方式的第一再配置动作(图13的步骤S46)不同。
相对于此,如果实际使用量Cau不小于许可量Cpu(步骤S84的否),则层级化控制部1365重复第二再配置动作(步骤S88)直到上述的第二条件成立(步骤S87)。如后述那样基于区段执行第二再配置动作(步骤S88)这一点,与上述实施方式的第二再配置动作(图13的步骤S48)不同。
另一方面,如果使用量Cau等于许可量Cpu(步骤S83的是),则层级化控制部1365重复第三再配置动作(步骤S90)直到上述的第三条件成立(步骤S89)。如后述那样基于区段执行第三再配置动作(步骤S90)这一点,与上述实施方式的第三再配置动作(图13的步骤S50)不同。
接着,参照图18说明图17所示的再配置处理中的第一再配置动作(步骤S86)。图18是表示第一变形例的第一再配置动作的典型顺序的流程图。首先,层级化控制部1365如以下那样寻找包含至少1个空区块的使用中的高速区段(步骤S91)。
第一变形例中,空区块的物理区块ID在重复管理表1332中由包含设定有无效值(“-”)的散列值字段的条目的物理区块字段来表示。另外,空区块的物理区块ID也可以由空区块列表来表示。这里,假设空区块为PCfc,空区块PCfc的物理区块ID为PCIDfc。此外,假设包含空区块PCfc的物理区段的区段ID为PEIDfc。该情况下,层级化控制部1365在地址变换表1331的表1331b中取得对包含SID0以及PEIDfc的全部条目的物理区块字段所设定的物理区块ID。
层级化控制部1365根据所取得的物理区块ID参照重复管理表1332进行,从而寻找该取得的物理区块ID的至少1个物理区块ID与有效散列值建立了对应的条目。如果找到这样的条目,则层级化控制部1365判断为,由PEIDfc所示的物理区段是包含空区块的使用中的高速区段。
另外,存储器控制器13也可以具备用于管理高速存储器装置11以及低速存储器装置12内的各个物理区段的状态的区段管理表。假设该区段管 理表具有与各个物理区段建立了对应的条目,并包含对应的物理区段中的使用中的物理区块的列表和空的物理区块的列表的至少一方、以及表示对应的物理区段是使用中或空的某个的标志。该情况下,层级化控制部1365根据该管理表,能够简单地寻找包含空区块的使用中的高速区段(或低速区段)。此外,层级化控制部1365根据该管理表,还能够寻找空的高速区段(或低速区段)。
此外,层级化控制部1365若执行步骤S91,则判断是否找到目标的高速区段(即包含空区块的使用中的高速区段)(步骤S92)。如果没能找到目标的高速区段(步骤S92的否),则层级化控制部1365选择空的高速区段(步骤S93)。接着,层级化控制部1365将物理区段中的物理区块的数量p设定给变量t(步骤S94)。接着,层级化控制部1365前进至步骤S98。
相对于此,如果找到目标的高速区段(步骤S92的是),则层级化控制部1365选择该目标的高速区段(步骤S95)。接着,层级化控制部1365检测所选择的高速区段内的空区块的数量q(步骤S96),将检测出的数量q设定给变量t(步骤S97)。接着,层级化控制部1365前进至步骤S98。明显地,q为1以上且小于p。
步骤S98中,层级化控制部1365从低速存储器装置12(低速区段的群)内的未选择的区块的群之中,选择IO计数为上位的t个区块。接着,层级化控制部1365将所选择的t个区块内的数据拷贝到(再配置到)所选择的高速区段内的t个空区块(步骤S99)。如果拷贝目的地的t个区块是步骤S95所选择的使用中的高速区段内的空区块的情况下,该使用中的高速区段的部分空状态(所谓的虫蛀状态)通过步骤S99的拷贝而被解除。
接着,层级化控制部1365更新地址变换表1331中的、与拷贝源的t个区块建立了对应的条目的内容(步骤S100)。即,层级化控制部1365将地址变换表1331中的、与拷贝源的t个区块建立了对应的t个条目中的物理区块ID字段的内容,变更为拷贝目的地的t个区块的物理区块ID。
此外,层级化控制部1365通过去重控制部1363来更新重复管理表1332中的、与拷贝源的t个区块以及拷贝目的地的t个区块建立了对应的条目的内容(步骤S101)。即,去重控制部1363将重复管理表1332中的、与拷 贝源的t个区块建立了对应的条目的散列值字段以及重复计数字段的内容交换为重复管理表1332中的、与拷贝目的地的t个区块建立了对应的条目的散列值字段以及重复计数字段的内容(无效值以及0)。于是,层级化控制部1365结束第一再配置动作(图17的步骤S86)。另外,步骤S101也可以在步骤S100之前执行。
接着,参照图19说明图17所示的再配置处理中的第二再配置动作(步骤S88)。图19是表示第一变形例的第二再配置动作的典型顺序的流程图。首先,层级化控制部1365寻找包含至少1个空区块的使用中的低速区段(步骤S111)。这里,假设空区块是PCfd,空区块PCfd的物理区块ID是PCIDfd。此外,假设包含空区块PCfd的物理区段的区段ID是PEIDfd。该情况下,层级化控制部1365在地址变换表1331的表1331b中取得对包含SID1及PEIDfd的全部条目的物理区块字段所设定的物理区块ID。
层级化控制部1365基于所取得的物理区块ID对重复管理表1332进行参照,从而寻找该取得的物理区块ID的至少1个物理区块ID与有效散列值建立了对应的条目。如果找到这样的条目,则层级化控制部1365判断为,由PEIDfd所示的物理区段是包含空区块的使用中的低速区段。
此外,层级化控制部1365若执行步骤S111,则判断是否找到目标的低速区段(即包含空区块的使用中的低速区段)(步骤S112)。如果没能找到目标的低速区段(步骤S112的否),则层级化控制部1365选择空的低速区段(步骤S113)。接着,与上述的步骤S93(图18)同样地,层级化控制部1365将物理区段中的物理区块的数量p设定给变量t(步骤S114)。接着,层级化控制部1365向步骤S118前进。
相对于此,如果找到目标的低速区段(步骤S112的是),则层级化控制部1365选择该目标的低速区段(步骤S115)。接着,层级化控制部1365检测所选择的低速区段内的空区块的数量q(步骤S116),与上述的步骤S97(图18)同样地将检测出的数量q设定给变量t(步骤S117)。接着,层级化控制部1365向步骤S118前进。
在步骤S118中,层级化控制部1365从高速存储器装置11(高速区段的群)内的未选择的区块的群之中,选择IO计数为下位的t个区块。接着,层级化控制部1365将所选择的t个区块内的数据拷贝到(再配置到)所选 择的低速区段内的t个空区块(步骤S119)。如果,在拷贝目的地的t个区块是在步骤S115中选择的使用中的低速区段内的空的区块的情况下,该使用中的低速区段的部分空状态通过步骤S119的拷贝而被解除。
接着,层级化控制部1365与上述的步骤S100(图18)同样地更新地址变换表1331中的、与拷贝源的t个区块建立了对应的条目的内容(步骤S120)。此外,层级化控制部1365通过去重控制部1363而与上述的步骤S101(图18)同样地更新重复管理表1332中的、与拷贝源的t个区块以及拷贝目的地的t个区块建立了对应的条目的内容(步骤S121)。这样,层级化控制部1365结束第二再配置动作(图17的步骤S88)。另外,步骤S121也可以在步骤S120之前执行。
接着,参照图20说明图17所示的再配置处理中的第三再配置动作(步骤S90)。图20是表示第一变形例的第三再配置动作的典型顺序的流程图。首先,层级化控制部1365从低速区段的群内的未选择的区块的群之中,选择IO计数为上位的p个区块(即构成1个物理区段的数量的区块)(步骤S131)。并且,层级化控制部1365将所选择的p个区块内的数据拷贝到(再配置到)空的高速区段内的p个区块(步骤S132)。
接着,层级化控制部1365更新地址变换表1331中的、与拷贝源的p个区块建立了对应的条目的内容(步骤S133)。即,层级化控制部1365将地址变换表1331中的、与拷贝源的p个区块建立了对应的p个条目中的物理区块ID字段的内容,变更为拷贝目的地的高速区段内的p个区块的物理区块ID。
此外,层级化控制部1365通过去重控制部1363而更新重复管理表1332中的、与拷贝源的p个区块以及拷贝目的地的高速区段内的p个区块建立了对应的条目的内容(步骤S134)。即,去重控制部1363将重复管理表1332中的、与拷贝源的p个区块建立了对应的条目的散列值字段以及重复计数字段的内容,交换为重复管理表1332中的、与拷贝目的地的p个区块建立了对应的条目的散列值字段以及重复计数字段的内容(无效值以及0)。
步骤S131~S134相当于在图18所示的第一再配置动作中S92的判断为否的情况下执行的处理。另外,步骤S134也可以在步骤S133之前执行。
接着,层级化控制部1365从高速区段的群内的未选择的区块的群之中, 选择IO计数为下位的p个区块(步骤S135)。并且,层级化控制部1365将所选择的p个区块内的数据拷贝到(再配置到)空的低速区段内的p个区块(步骤S136)。
接着,层级化控制部1365更新地址变换表1331中的、与拷贝源的p个区块建立了对应的条目的内容(步骤S137)。即,层级化控制部1365将地址变换表1331中的、与拷贝源的p个区块建立了对应的p个条目中的物理区块ID字段的内容,变更为拷贝目的地的低速区段内的p个区块的物理区块ID。
此外,层级化控制部1365通过去重控制部1363来更新重复管理表1332中的、与拷贝源的p个区块以及拷贝目的地的低速区段内的p个区块建立了对应的条目的内容(步骤S138)。即,去重控制部1363将重复管理表1332中的、与拷贝源的p个区块建立了对应的条目的散列值字段以及重复计数字段的内容,交换为重复管理表1332中的、与拷贝目的地的p个区块建立了对应的条目的散列值字段以及重复计数字段的内容(无效值以及0)。这样,层级化控制部1365结束第三再配置动作(图17的步骤S90)。
步骤S135~S138相当于在图19所示的第二再配置动作中S112的判断为否的情况下执行的处理。另外,步骤S138也可以在步骤S137之前执行。此外,步骤S135~S138也可以在步骤S131~S134之前执行。
接着,参照图21~24说明第一变形例的再配置的例子。图21表示再配置的第一例。第一例是指在图18所示的第一再配置动作中S92的判断为否的情况下的再配置(步骤S99)、或者图20所示的第三再配置动作中的再配置(步骤S132)的例子。图21中,高速存储器装置11包含空的物理(高速)区段110,低速存储器装置12包含使用中的物理(低速)区段121、122以及123。
低速区段121、122以及123分别包含保存有数据A、B以及C的物理区块。假设分别保存有数据A、B以及C的3个物理区块是在步骤S98(图18)或S131(图20)中选择的p(t=p)个物理区块的一部分。图21的例子中,在步骤S98或S131中选择的p个物理区块的数据(即包含数据A、B以及C的p个数据)被再配置于高速存储器装置11内的空的高速区段110。
图22表示第一变形例的再配置的第二例。第二例是指在图18所示的第一再配置动作中S92的判断为是的情况下的再配置(步骤S99)的例子。图22中,高速存储器装置11包含使用中的高速区段111以及112,低速存储器装置12与图21的例子同样地包含使用中的低速区段121、122以及123。假设高速区段111以及112分别包含q1个以及q2个空的物理区块。
如上述那样,低速区段121、122以及123分别包含保存有数据A、B以及C的物理区块。假设分别保存有数据A及B的2个物理区块是在最初的步骤S98(图18)中选择的q1(t=q=q1)个物理区块的一部分,保存有数据C的物理区块是在第2次的步骤S98中选择的q2(t=q=q2)个物理区块的一部分。图22的例子中,在最初的步骤S98中选择的q1个物理区块的数据(即包含数据A及B的q1个数据)被再配置于高速存储器装置11内的高速区段111中包含的q1个空的物理区块。同样,在第2次的步骤S98中选择的q2个物理区块的数据(即包含数据C的q2个数据)被再配置于高速存储器装置11内的高速区段112中包含的q2个空的物理区块。
图23表示第一变形例的再配置的第三例。第三例是指在图19所示的第二再配置动作中S112的判断为否的情况下的再配置(步骤S119)、或者图20所示的第三再配置动作中的再配置(步骤S136)的例子。图23中,高速存储器装置11包含使用中的高速区段113、114以及115,低速存储器装置12包含空的低速区段120。
高速区段113、114以及115分别包含保存有数据R、S以及T的物理区块。假设分别保存有数据R、S以及T的3个物理区块是在步骤S118(图19)或S135(图20)中选择的p(t=p)个物理区块的一部分。图23的例子中,在步骤S118或S135中选择的p个物理区块的数据(即包含数据R、S以及T的p个数据)被再配置于低速存储器装置12内的空的低速区段120。
图24表示第一变形例的再配置的第四例。第四例是指在图19所示的第二再配置动作中S112的判断为是的情况下的再配置(步骤S119)的例子。图24中,与图23的例子同样,高速存储器装置11包含使用中的高速区段113、114以及115,低速存储器装置12包含使用中的低速区段124以及125。假设低速区段124以及125分别包含q3个以及q4个空的物理区 块。
如上述那样,高速区段113、114以及115分别包含保存有数据R、S以及T的物理区块。假设保存有数据R的物理区块是在最初的步骤S118(图19)中选择的q3(t=q=q3)个物理区块的一部分,分别保存有数据S以及T的2个物理区块是在第2次的步骤S118中选择的q4(t=q=q4)个物理区块的一部分。图24的例子中,在最初的步骤S118中选择的q3个物理区块的数据(即包含数据R的q3个数据)被再配置于低速存储器装置12内的低速区段124中包含的q3个空的物理区块。同样,在第2次的步骤S118中选择的q4个物理区块的数据(即包含数据S以及T的q4个数据)被再配置于低速存储器装置12内的低速区段125中包含的q4个空的物理区块。
<第二变形例>
接着,说明上述实施方式的第二变形例。第一变形例的再配置处理中,以物理区块为单位选择拷贝源。因此在第一变形例中,每当执行再配置处理时,会在包含拷贝源的物理区块的物理区段中发生分片化(fragmentation),在某个时刻需要进行碎片整理(defragmentation)处理。因此,第二变形例的特征在于,为了降低物理区段(特别是低速区段)的分片化,当从低速存储器装置12向高速存储器装置11再配置数据时,以物理区段为单位来选择拷贝源。因此,在第二变形例中,物理区段内的所有物理区块的IO计数的例如合计值(或平均值)被用作该物理区段的IO计数。
以下,对于第二变形例,以与第一变形例不同的点为中心进行说明。第二变形例中,层级化控制部1365例如通过与第一变形例的第三再配置动作中的步骤S131(图20)相当的处理,从未选择的低速区段群之中选择IO计数为最上位的低速区段作为拷贝源。此外,层级化控制部1365为了确保所选择的低速区段内的p个物理区块的数据的拷贝(再配置)目的地,从高速区段群之中选择多个使用中的高速区段作为拷贝目的地。多个使用中的高速区段的每一个包含至少1个空的物理区块,并且多个使用中的高速区段中分别包含的空的物理区块的合计为p以上。并且,层级化控制部1365将所选择的低速区段内的p个物理区块的数据再配置给所选择的多个高速 区段内的p个空的物理区块。
图25表示第二变形例的上述的再配置的例子。图25中,高速存储器装置11包含使用中的高速区段116、117以及118。高速区段116、117以及118分别包含至少1个空的物理区块,并且高速区段116、117以及118中分别包含的空的物理区块的合计为p以上。低速存储器装置12包含使用中的低速区段126。低速区段126的p个物理区块为使用中,在该p个物理区块中,保存有包含数据A、B以及C的p个数据。
图25中,假设低速区段126被选择为拷贝源,高速区段116、117以及118被选择为拷贝目的地。该情况下,层级化控制部1365将低速区段126的p个物理区块中保存的包含数据A、B以及C的p个数据,拷贝到(再配置到)高速区段116、117以及118内的p个空的物理区块。由此,低速区段126能够作为空区段进行利用。
根据第二变形例,能够防止在拷贝源的(包含物理区块的)低速区段中由于再配置动作而产生分片化。此外,拷贝目的地的(包含物理区块的)多个高速区段中的分片化通过再配置动作而降低。特别是,如果拷贝目的地的多个高速区段中包含的空的物理区块的合计与p一致,则该多个高速区段中的分片化被解除。另外,第二变形例中的上述的再配置动作也可以替代为第一变形例中的第一再配置动作而执行。
<第三变形例>
接着,说明上述实施方式的第三变形例。第三变形例的特征在于,为了降低在第一变形例中产生的那样的物理区段(特别是高速区段)的分片化,在与第二变形例相反地从高速存储器装置11向低速存储器装置12再配置数据时,以物理区段为单位来选择拷贝源。
以下,对于第三变形例,以与第一及第二变形例不同的点为中心进行说明。第三变形例中,层级化控制部1365例如通过与第一变形例的第三再配置动作中的步骤S135(图20)相当的处理,从未选择的高速区段群之中选择IO计数为最下位的高速区段作为拷贝源。此外,层级化控制部1365为了确保所选择的高速区段内的p个物理区块的数据的拷贝(再配置)目的地,从低速区段群之中选择多个使用中的低速区段作为拷贝目的地。多个使用中的低速区段的每一个包含至少1个空的物理区块,并且多个使用 中的低速区段中分别包含的空的物理区块的合计为p以上。并且,层级化控制部1365将所选择的高速区段内的p个物理区块的数据再配置给所选择的多个低速区段内的p个空的物理区块。
图26表示第三变形例中的上述的再配置的例子。图26中,高速存储器装置11包含使用中的高速区段119。高速区段119的p个物理区块为使用中,该p个物理区块中,保存有包含数据R、S以及T的p个数据。低速存储器装置12包含使用中的低速区段127以及128。低速区段127以及128分别包含至少1个空的物理区块,并且低速区段127以及128中分别包含的空的物理区块的合计为p以上。
图26中,假设高速区段119被选择为拷贝源,低速区段127以及128被选择为拷贝目的地。该情况下,层级化控制部1365将高速区段119的p个物理区块中保存的包含数据R、S以及T的p个数据,拷贝到(再配置到)低速区段127以及128内的p个空的物理区块。由此,高速区段119能够作为空区段进行利用。
根据第三变形例,能够防止在拷贝源的(包含物理区块的)高速区段中由于再配置动作而发生分片化。此外,拷贝目的地的(包含物理区块的)多个低速区段中的分片化通过再配置动作而降低。特别是,如果拷贝目的地的多个低速区段中包含的空的物理区块的合计与p一致,则该多个高速区段的分片化被解除。另外,第三变形例中的上述的再配置动作也可以替代为第一变形例中的第二再配置动作而执行。
根据以上说明的至少1个实施方式,以逻辑区块为单位将数据的重复排除,并且通过反映出向物理区块存取的状况的数据的再配置,能够优化逻辑盘的性能。
对本发明的几个实施方式进行了说明,但这些实施方式是作为例子提示的,并不意欲限定发明的范围。这些新的实施方式能够以其他各种各样的方式实施,在不脱离发明主旨的范围内,能够进行各种省略、替换、变更。这些实施方式及其变形包含在发明的范围及主旨中,并且包含在权利要求所记载的发明及其同等范围内。