分级存储系统、利用分级存储装置的计算机及校正对文件的访问计数的计算机的制作方法

文档序号:11065134阅读:647来源:国知局
分级存储系统、利用分级存储装置的计算机及校正对文件的访问计数的计算机的制造方法

本发明的实施方式涉及分级存储系统、利用分级存储装置的计算机、及校正对文件的访问计数的方法。



背景技术:

近年来,开发出具备存储速度不同的第1及第2存储装置的存储系统。在此,第1存储装置的访问速度及存储容量是高速且小容量的,第2存储装置的访问速度及存储容量与第1存储装置的访问速度及存储容量相比设为低速且大容量的。存储系统通过分级组合第1存储装置(下面称为高速存储装置)及第2存储装置(下面称为低速存储装置)来实现。因此,这样的存储系统还称为分级存储系统。

在分级存储系统中,使用频度高的数据配置在高速存储装置内的存储区域,使用频度低的数据配置在低速存储装置内的存储区域。通过这种配置(即,分级化),可以同时达到分级存储系统的高性能和低成本。

为了分级化发挥充分的效果,例如需要根据数据的使用频度适当地决定该数据应当被配置的区域(级)。在此,在现有技术中,分级存储系统内的存储控制器利用访问计数表管理各区域(例如,对逻辑区域访问的计数)。存储控制器根据访问计数表分别将访问计数多的逻辑区域的数据重新配置在高速存储装置,将访问计数少的逻辑区域的数据重新配置在低速存储装置。4

现有技术文献

专利文献

专利文献1:(日本)特开平9-44381号公报



技术实现要素:

发明要解决的课题

因此,包括分级存储系统的近年来的存储系统一般具有写时复制(Copy-On-Write)功能。在写时复制功能被设定为有效的状态的分级存储系统中,设定为计算机上工作的应用在第1文件的第1处(更详细地,第1的相对位置)重写新的数据(第2数据)。此外,第1文件的第1处对应于第1逻辑区域,因此设为该第1处的数据(第1数据)被存储在第1逻辑区域。

这时,存储控制器按照来自文件系统的访问请求,从第1逻辑区域(旧域)读取第1数据,将该读取出的第1数据写入与第1逻辑区域不同的空的第2逻辑区域(新区域)(即,复制)。然后,存储控制器在第2逻辑区域(新区域)写入第2数据(重写)。即,存储控制器可以用第2数据来替换第1数据的复制。由以上的读取、写入及写入构成的一连串的动作称为写时复制功能。

应用与写时复制动作无关地识别为在第1文件的第1处的数据(第1数据)上重写(写入)了第2数据。但是,在写时复制动作中,第2数据被写入与第1数据的复制目标即与存储有第1数据的旧区域不同的新区域。这时,在存储控制器中,与对第1文件的第1处的访问相关的访问计数被分散记录为对旧区域的访问计数和对新区域的访问计数。其结果,例如即便根据文件的访问的状况应配置于高速存储装置的数据也有可能配置在低速存储装置,有可能损害用户的便利性。

本发明要解决的课题是提供一种分级存储系统、利用分级存储装置的计算机及校正对文件的访问的计数的方法,在写时复制功能有效的情况下,也可以将存储控制器管理的访问计数校正为与应用识别的文件的访问的状况一致,可以实现有助于提高用户的方便性的分级化。

用于解决课题的手段

根据实施方式,分级存储系统具备分级存储装置、利用上述分级存储装置的计算机。上述分级存储装置具备:访问性能不同的多个存储装置;和控制对上述多个存储装置的访问的存储控制器。上述存储控制器与表示上述多个存储装置的记忆区域按块单位分配的逻辑单元内的逻辑块的逻辑块地址分别建立对应地管理对上述逻辑块访问的计数,并且根据与上述逻辑块地址分别建立了对应的访问计数,将存储于上述逻辑块的数据重新配置在上述多个存储装置中的1个。上述计算机具备文件系统和设备驱动器。上述文件系统按照来自上述计算机上工作的应用的、包括文件名和以该文件名表示的文件内应被访问的块的相对位置信息的访问请求,发出包含与上述应被访问的块对应的逻辑块地址的读请求或写请求。上述设备驱动器将来自上述文件系统的读请求或写请求发送到上述存储控制器,从而访问上述分级存储装置。上述计算机或上述分级存储装置还具备对通过上述存储控制器管理的访问计数的校正进行支援的校正支援部。上述文件系统将从应用请求的文件通过使构成该文件的各块在该文件内的相对位置与存储有构成该文件的块的数据的各逻辑块的逻辑块地址对应来进行管理,当上述访问请求为请求数据的重写的写请求WR时,利用上述设备驱动器执行写时复制动作,该写时复制动作将应重写的数据复制到与存储有该应重写的数据的逻辑块不同的逻辑块之后,用于在该复制目标写入由上述写请求WR指定的数据。上述校正支援部使由上述存储控制器管理并且与上述写时复制动作中的复制源的逻辑块地址对应的访问计数继承为与上述写时复制动作中的复制目标的逻辑块地址对应的访问计数。

附图说明

图1是第1实施方式涉及的分级存储系统的典型的硬件结构的框图。

图2是表示图1所示的分级存储系统的典型的功能构成的框图。

图3是表示图1及图2所示的守护进程的典型的功能构成的框图。

图4是表示图2所示的访问计数表的数据结构例的图。

图5是表示图3所示的数据管理表的数据结构例的图。

图6是表示第1实施方式中的守护进程处理的典型的顺序的流程图。

图7是表示在守护进程处理中追加条目的数据管理表的例子的图。

图8是表示在守护进程处理中条目内容被更新的数据管理表的例子的图。

图9是表示第1实施方式的访问计数表的内容的迁移的例子的图。

图10是表示第2实施方式涉及的分级存储系统的典型的功能构成的框图。

图11是表示图10所示的守护进程的典型的功能构成的框图。

图12是表示图11所示的数据管理表的数据结构例的图。

图13是表示第2实施方式中的守护进程处理的典型的顺序的流程图。

图14是表示图13所示的守护进程处理中包含的条目/追加更新处理的典型的顺序的流程图。

图15是表示图13所示的守护进程处理中包含的条目更新处理的典型的顺序的流程图。

图16是表示图13所示的守护进程处理中追加条目的数据管理表的例子的图。

图17是表示第2实施方式的数据管理表的内容的迁移的例子的图。

图18是表示第3实施方式涉及的分级存储系统的典型的功能构成的框图。

图19是表示图18所示的守护进程的典型的功能构成的框图。

图20是表示图19所示的文件-LBA表的数据结构例的图。

图21是表示图19所示的计数表的数据结构例的图。

图22是表示第3实施方式的第1表管理处理的典型的顺序的流程图。

图23是表示第3实施方式的第2表管理处理的典型的顺序的流程图。

图24是表示第3实施方式的计数校正处理的典型的顺序的流程图。

图25是在第1表管理处理中追加条目的文件-LBA表的例子的图。

图26是表示第2表管理处理中追加条目的计数表的列子的图。

图27是表示第3实施方式的计数表的内容的迁移的例子的图。

图28是表示在第1表管理处理中条目中的逻辑块地址(LBA)列表的内容被更新的文件-LBA表的例子的图。

图29是表示在计数较正处理中制作的计数校正信息的例子的图。

图30是表示第3实施方式的访问计数表的内容的例子的图。

图31是表示第3实施方式的被校正的访问计数表的内容的例子的图。

图32是表示第3实施方式的变形例涉及的分级存储系统的典型的功能构成的框图。

图33是表示图32所示的守护进程的典型的功能构成的框图。

图34是表示图32所示的计数表的数据结构例的图。

图35是表示第3实施方式的变形例的第1快照管理处理的典型的顺序的流程图。

图36是表示第3实施方式的变形例的第2快照管理处理的典型的顺序的流程图。

具体实施方式

下面,对各种实施方式参照附图进行说明。

<第1实施方式>

图1是第1实施方式涉及的分级存储系统的典型的硬件结构的框图。图1所示的分级存储系统包括n台计算机10_1至10_n和分级存储装置20。计算机10_1至10_n具有将分级存储装置作为本身的存储装置使用的主计算机的功能。在图1中,仅示出计算机10_1至10_n中的计算机10_1的结构。但是,包括计算机10_n在内的其它n-1台计算机也具有与计算机10_1相同的结构。

计算机10_1包括CPU11、主存储器12、HDD13、主接口(HI)控制器14。CPU11、主存储器12、HDD13及HI控制器14通过系统总线15连接。并且,为了处理的高速化,计算机10_1也可以包括包含CPU11的多个CPU。

主存储器12用于存储操作系统(OS)121、应用122、设备驱动器123(更详细地为设备驱动控制器)及守护进程124(更详细地为守护进程程序)等。OS121、应用122、设备驱动器123及守护进程124例如存储在HDD13,从该HDD装载到主存储器12使用。

HI控制器14控制计算机10_1和分级存储装置20的存储控制器23之间的数据传送。HI控制器14将基于来自应用122的访问请求的来自设备驱动器123的访问请求发送到存储控制器23。HI控制器14还接收与来自设备驱动器123的访问请求相对的来自存储控制器23的响应(返回值),将该响应返回到设备驱动器123。

分级存储装置20经由主接口总线30与计算机10_1至10_n连接。分级存储装置20也可以经由存储区域网络(SAN)那样的网络与计算机10_1至10_n连接。此外,分级存储装置20也可以仅通过计算机10_1使用。

分级存储装置20包括访问性能不同的多个存储装置,例如高速存储装置21及低速存储装置22、和上述存储控制器23。存储控制器23经由存储接口总线24与高速存储装置21及低速存储装置22连接。

高速存储装置21例如由闪存阵列那样的访问性能优异(即,访问速度为高速)的闪存存储装置构成。闪存存储装置利用多个闪存存储板实现。各闪存存储板包括闪存存储器的集合。在第1实施方式中,假设多个闪存存储板的每个与硬盘驱动器(HDD)之间不具有互换性。但是,代替多个闪存存储板,也可以使用与HDD之间具有互换性的多个固态硬盘驱动器。

另一方面,低速存储装置22例如由与高速存储装置21相比访问性能低(访问速度为低速)的硬盘驱动器(HDD)阵列构成。HDD阵列例如是具备多个HDD的RAID(廉价磁盘冗余阵列(Redundant Arrays of Inexpensive Disks)或独立磁盘冗余阵列(Redundant Arrays of Independent Disks))结构的存储装置。HDD阵列可以由光纤通道(FC)用的HDD那样的高速HDD构成,或者也可以由串行ATA(SATA)用的HDD那样的低速HDD构成。

并且,不需要高速存储装置21及低速存储装置22必须具有阵列结构。此外,也可以高速存储装置21至少由1个高速HDD构成,低速存储装置22至少由1个低速HDD构成。此外,低速存储装置22也可以由蓝光光盘(注册商标)驱动器、或者DVD(注册商标)驱动器那样的光学式光盘驱动器、或者磁带装置构成。此外,低速存储装置22由磁带装置构成时,高速存储装置21可以由光学式光盘驱动器构成。

图2是表示图1所示的分级存储系统的典型的功能构成的框图。如图2所示,OS121接收来自应用122的根据读请求或按照读请求发出的读系统呼叫或写系统呼叫来执行对应的服务。发出这种系统呼叫的机构称为库(库函数)或包装库。OS121具有写时复制(copy-on-write:COW)功能。

OS121包括文件系统1210。文件系统1210使通过包含应用122的应用组利用的文件与构成该文件的一定大小的块组的逻辑空间(下面称为逻辑单元)内的位置相对应。逻辑单元也可以称为逻辑盘或逻辑容量。块的大小被用于文件系统1210管理逻辑单元。即,文件系统1210通过将逻辑单元分割为多个块(逻辑块),以块(块大小)单位管理该逻辑单元的利用状况。此外,文件系统1210管理逻辑单元内的空的块。

在逻辑单元内的块,从开始块依次连续地被分配逻辑块地址。另一方面,在文件内的块,从开始块依次连续地被分配称为偏移(off set)的数值。即,被分配到文件内的块的偏移表示该块在文件内的相对位置。

在此,假设通过应用122利用的文件F由2m个块BLK0至BLK2m-1构成,该块BLK0至BLK2m-1被存储在在逻辑单元内由逻辑块地址LBAa至LBAa+2m-1指定的范围的区域(逻辑区域)。这时,应用122将文件F与该文件F的存储目标无关地,根据该文件F的文件名F1、偏移OFST0及文件大小FS识别。偏移OFST0的值为0,表示文件F的开始块BLK0。文件大小FS表示文件F的块的数2m。

另一方面,文件系统1210通过使文件名F1、块BLK0至BLK2m-1的偏移OFST0(=0)至OFST2m-1(=2m-1)及逻辑块地址LBAa至LBAa+2m-1对应来管理文件F。并且,文件系统1210也可以使文件名F1、偏移OFST0(=0)、文件大小FS(=2m)及开始块BLK0的逻辑块地址LBAa对应来管理文件F。

在此,假设文件F内的m个块BLK0至BLKm-1被存储在逻辑单元内由逻辑块地址LBAa至LBAa+m-1指定的范围的区域。此外,假设文件F内的剩余的m个块BLKm至BLK2m-1存储在逻辑单元内由逻辑块地址LBAb至LBAb+m-1指定的范围的区域。

这时,文件系统1210可以将文件F分为块BLK0至BLKm-1的集合(下面,称为范围EXT0)和块BLKm至BLK2m-1的集合(下面,称为范围EXT1)来管理。即,文件系统1210也可以通过使文件名F1、范围EXT0的开始块BLK0的偏移OFST0(=0)、范围EXT0的大小ES0(=m)、块BLK0的逻辑块地址LBAa对应来管理范围EXT0。同样地,文件系统1210也可以通过使文件名F1、范围EXT1的开始块BLKm的偏移OFSTm(=m)、范围EXT1的大小ES1(=m)、块BLKm的逻辑块地址LBAb对应来管理范围EXT1。

设备驱动器123通过CPU11执行设备驱动程序实现。设备驱动器123在OS121的控制之下执行该OS121和周边装置之间的通信(数据传送)。尤其是,设备驱动器123遵从来自OS121内的文件系统1210的请求,经由图1所示的HI控制器14,通过向分级存储装置20发送读请求或写请求,执行对分级存储装置20访问。在第1实施方式中,假设由读请求或写请求指定的数据的范围为1块。即,在第1实施方式中,设想1块单位的读请求或写请求。

设备驱动器123还将与对分级存储装置20的访问(1块单位访问)有关的输入输出(input and output:IO)信息按照该访问转交给守护进程124。IO信息包括表示IO(访问)类别的IO识别符、访问目标的逻辑块地址(LBA)及哈希值。哈希值根据从访问目标读取出的数据或写入访问目标的数据计算。该哈希值的计算例如适用SHA-256那样的哈希函数。并且,由读请求或写请求指定任意长度的数据时,也可以在IO信息追加表示该数据的长度(块数)的信息。

守护进程124通过图1所示的CPU11执行守护进程程序来实现,具有对通过存储控制器23管理的访问计数的校正进行支援的校正支援部的功能。关于守护进程124的功能后述。

存储控制器23包括访问计数表230。访问计数表230包括对应于逻辑块地址的条目组。该各条目组被用于保存对应于逻辑块地址的计数(访问计数)。计数表示对由对应的逻辑块地址指定的块访问的次数,称为访问频度或访问统计值。

存储控制器23根据保存在访问计数表230的条目组的计数,在由对应于该条目组的逻辑块地址指定的块(逻辑块)分配高速存储装置21或低速存储装置22内的块(物理块)。具体地,存储控制器23在访问次数(计数)多的逻辑单元内的块优先地分配高速存储装置21内的块。访问次数多的块例如是访问次数为上位的一定数的块。并且,若访问次数比基准的次数(即,阈值)多的块未超过一定数,则访问次数多的块可以是访问次数比基准次数多的块。此外,存储控制器23在逻辑单元内的剩余的块(即,访问次数少的块)分配低速存储装置22内的块。

在此,由于逻辑单元内的对第1逻辑块的访问的状况已变化,假设被分配到该第1逻辑块的物理块从高速存储装置21内的第1物理块向低速存储装置22内的空的第2物理块、或者从低速存储装置22内的第3物理块向高速存储装置21内的空的第4物理块变更。这时,存储控制器23进行从第1物理块向第2物理块的数据的重新配置(移动)、或从第3物理块向第4物理块的数据的重新配置。通过该重新配置,分级存储装置20动态地被分级。

图3是表示图1及图2所示的守护进程的典型的功能构成的框图。守护进程124包括数据管理表1241、IO信息处理部1242及条目除部1243。数据管理表1241的条目在从设备驱动器123转交给守护进程124的IO信息中的IO识别符表示读的情况下,通过IO信息处理部1242追加。数据管理表1241物理上保存在可以由守护进程124访问的存储区域。该存储区域可以存在于主存储器12内,或者存在于与主存储器12不同的存储器内。关于数据管理表1241的数据结构后述。

IO信息处理部1242根据从设备驱动器123转出的IO信息,执行数据管理表1241的条目的追加、从数据管理表1241的条目的检索及被检索出的条目信息的更新。被检索出的条目信息的更新不仅包括将旧信息变更为新信息,还包括向检索出的条目的空的域设定(追加)新信息。IO信息处理部1242根据来自设备驱动器123的IO信息及数据管理表1241检测COW。该检测的摘要如下。

首先,在OS121具有的COW功能为有效的状态下,假设从应用122向该OS发出指示在第1文件重写数据D2的写请求WR。这时,OS121为了遵从写请求WR的COW动作,将该写请求WR分解为读请求RR、写请求(第1写请求)WR1及写请求(第2写请求)WR2。

读请求RR指示从第1逻辑区域(旧区域)读取第1文件内的数据的。假设在第1逻辑区域存储有数据D1。这时,写请求WR1指示将从第1逻辑区域读取的数据D1写入(复制)到与第1逻辑区域不同的空的第2逻辑区域(新区域)。写请求WR2指示在第2逻辑区域内的复制重写由写请求WR指定的数据D2。

接着,OS121通过设备驱动器123对分级存储装置20依次执行由读请求RR、第1写请求WR1及第2写请求WR2分别指示的读访问、第1写访问及第2写访问。IO信息处理部1242将这种读取、写入及写入构成的一连串的动作根据来自设备驱动器123的IO信息及数据管理表1241检测,从而检测COW动作。

IO信息处理部1242按照COW动作的检测,将第1及第2逻辑区域的LBA(旧LBA及新LBA)通知到分级存储装置20。将该通知称为COW通知。

条目删除部1243从数据管理表1241删除符合第1及第2条件的任意条件的条目。符合第1条件的条目是指从被追加到数据管理表1241的时刻经过了一定期间的条目。符合第2条件的条目是指从条目内容被更新的时刻经过了一定期间的条目。假设一定期间是例如计算机10_1通过执行用于测定与对分级存储装置20的访问有关的IO响应性能的特定的命令并根据其结果来决定。

图4表示图2所示的访问计数表230的数据结构例。在图4的例子中,访问计数表230包括条目400。包括条目400的访问计数表230的各条目组包括域411及412。

域411是用于保存LBA的LBA域。域412是用于保存对由保存于域411的LBA表示的区域(块)访问的计数的计数域。在图4的例子中,在条目400的域411及412分别保存有1(LBA=1)及100(计数=100)。

图5表示图3所示的数据管理表1241的数据结构例。数据管理表1241的各条目包括域511至513。域511在包含该域511的条目基于IO信息被追加到数据管理表1241的情况下,用于将该IO信息中的LBA作为旧LBA保存的旧LBA域。

域512是用于保存从由保存在域511的旧LBA表示的区域读出的数据的哈希值的哈希值域。域513是用于将从由旧LBA表示的区域读出的数据的复制目标区域的LBA作为新LBA保存的新LBA域。

接着,参照图6说明在第1实施方式中由守护进程124执行的守护进程处理。图6是表示守护进程处理的典型的顺序的流程图。

设备驱动器123按照来自OS121的访问请求(读请求或写请求),向分级存储装置20发送读请求或写请求。并且,设备驱动器123将与对分级存储装置20的读请求或写请求对应的IO信息转交给守护进程124。

这样,守护进程124的信息处理部1242接收来自设备驱动器123的IO信息(步骤S1)。IO信息包括IO识别符、逻辑块地址(LBA)及哈希值。即,IO信息处理部1242接收IO识别符、LBA及哈希值。

接着,IO信息处理部1242判断领取IO识别符是否表示读(步骤S2)。如果领取IO识别符表示读(步骤S2的是),则IO信息处理部1242前进到步骤S3。

在步骤S3中,IO信息处理部1242在数据管理表1241追加1个条目(步骤S3)。假设在被追加条目的时刻,该条目的域511至513为空。接着,IO处理部1242将领取LBA及领取哈希值分别设定为追加条目的域(旧LBA域)511及域(哈希值域)512(步骤S4)。并且,IO信息处理部1242结束守护进程处理。

并且,在步骤S3中,IO信息处理部1242可以将包括设定有领取LBA及领取哈希值的域511及512的条目500追加到数据管理表1241。这时,不需要步骤S4。

另一方面,若领取IO识别符不表示读(步骤S2的否),即,领取IO识别符表示写,则IO信息处理部1242前进到步骤S5。在步骤S5中,IO信息处理部1242将域513为空且域512的内容等于领取哈希值的条目当作设为目标的条目从数据管理表1241检索。并且,IO信息处理部1242判断是否检索到设为目标的条目(步骤S6)。

如果检索到设为目标的条目(步骤S6的是),则IO信息处理部1242在检索出的条目的域513设定领取LBA作为新LBA(步骤S7)。并且,IO信息处理部1242结束守护进程处理.

相对于此,如果未检索到设为目标的条目(步骤S6的否),IO信息处理部1242将域513的内容(新LBA)与领取LBA相同的条目当作设为目标条目从数据管理表1241检索(步骤S8)。并且,IO信息处理部1242判断是否检索到设为目标的条目(步骤S9)。

如果检索到设为目标的条目(步骤S9的是),IO信息处理部1242执行COW通知。即,IO信息处理部1242将检索出的条目的域511及513的内容(即,旧LBA及新LBA)通知给分级存储装置20(步骤S10)。

接着,IO信息处理部1242将检索出的条目作为符合第3条件的条目从数据管理表1241删除(步骤S11)。符合第3条件的条目是指从IO信息处理部1242通知给分级存储装置20的包括旧LBA及新LBA的条目。IO信息处理部1242若执行步骤S11,则结束守护进程处理。并且,也可以是条目删除部1243删除检索出的条目。另一方面,若未检索到设为目标的条目(步骤S9的否),IO信息处理部1242直接结束守护进程处理。

接着,关于第1实施方式的守护进程处理的具体例,加上图6的流程图,参照图7至图9说明。图7表示在守护进程处理中追加条目的数据管理表1241的例子。图8表示在守护进程处理中更新条目内容的数据管理表1241的例子。图9表示访问计数表230的内容的迁移的例子。

首先,假设应用122发出了指示在已存在的文件F内的偏移OFSTi重写数据D2的写请求WR。这样,按照写请求WR,从系统呼叫发出机构向OS121发出写系统呼叫。写请求WR及写系统呼叫包括与应写入数据D2(在第1实施方式中1块的数据)的文件F内的位置(写位置)有关的文件信息。

在适用1块单位上的读请求或写请求的第1实施方式中,文件信息包括文件F的文件名F1和偏移OFSTi。偏移OFSTi表示第i个偏移(OFSTi=i)。这时,文件信息表示写(访问)位置为由文件名F1表示的文件F中第i个偏移(块的位置)。因此,包含这种文件信息的写请求WR及写系统呼叫指定在文件F的第i偏移重写数据。

并且,文件信息可以包括表示数据大小DS的信息。在上述的例子中,数据大小DS为1(1块)。如果适用任意的块数j的数据的读出或写入,数据大小DS为j(j块)。这时,写位置为文件F中从第i个偏移OFSTi(块BLKi)到第i+j-1个偏移OFSTi+j-1(块BLKi+j-1)为止的范围。

写系统呼叫由OS121的文件系统1210领取。文件系统1210根据写系统呼叫(写请求WR)开始COW动作。首先,文件系统1210将写系统呼叫(写请求WR)分解成读请求RR、第1写请求WR1及第2写请求WR2。并且,文件系统1210通过设备驱动器123将读请求RR发送到分级存储装置20。读请求RR包括存储有文件F中的偏移OFSTi的位置的块BLKi的数据(块数据)的逻辑块的地址(即,逻辑块地址)LBAp。即,读请求RR指示从由逻辑块地址LBAp指定的逻辑块读出。LBAp例如为1。

分级存储装置20的存储控制器23按照来自设备驱动器123的读请求RR,如下读取由该读请求RR指定的数据。首先,存储控制器23将由读请求RR指定的逻辑块地址LBAp(LBA=LBAp=1)根据地址变换表变换为被分配给该逻辑块地址LBAp的物理地址PAp。物理地址PAp包括指定高速存储装置21或低速存储装置22分级识别符。存储控制器23根据物理地址PAp从高速存储装置21或低速存储装置22读取数据D1。

假设在执行该数据D1的读取之前访问计数表230处于如图4所示的状态。即,假设在访问计数表230的域411及412分别保存有1(LBA=1)及100(计数=100)。这时,存储控制器23将包括分配有物理地址PAp的逻辑块地址LBAp的、访问计数表230内的条目400的域412的内容(计数)根据数据D1的读取增加1。由此,条目400的域412的计数(访问计数)从图4所示的100如图9中以箭头A1所示增量为101。

此外,存储控制器23将读取出的数据D1返回设备驱动器123。设备驱动器123作为对来自文件系统1210的读请求RR的响应(返回值)将读取出的数据D1返回该文件系统1210。

此外,设备驱动器123计算数据D1的哈希值H1。并且,设备驱动器123生成对应于读请求RR的IO信息。对应于读请求RR的IO信息包括表示读的IO识别符、逻辑块地址LBAp(LBA=LBAp)及哈希值H1。设备驱动器123将该IO信息[IO识别符=读、LBAp、H1]转交给守护进程124。

这样,守护进程124的IO信息处理部1242如下执行图6的流程图所示的守护进程处理。首先,IO信息处理部1242领取从设备驱动器123转出的IO信息[IO识别符=读、LBAp、H1](步骤S1)。在此,假设IO信息中的LBAp及H1分别为1及0×1234。该0×1234中的记号0×表示后续的1234为16进制标记。

如上所述,领取IO识别符表示读的情况下(步骤S2的是),IO信息处理部1242在数据管理表1241追加1个条目(步骤S)。图7表示追加条目500的数据管理表1241的例子。在追加条目500的时刻,该条目500的域511至513为空。

接着,IO信息处理部1242将领取IO信息中的LBAp及H1即领取LBAp(=1)及领取哈希值H1(=0×1234)如图7所示分别设定为条目500的域(旧LBA域)511及域(哈希值域)512(步骤S4)。并且,IO信息处理部1242结束守护进程处理。

另一方面,文件系统1210接收对读请求RR的响应,通过设备驱动器123向分级存储装置20发送写请求WR1。写请求WR1包括空的逻辑块的逻辑块地址LBAq,指示将按照读请求RR读取的数据D1写入由逻辑块地址LBAq指定的逻辑块(即,复制)。

设备驱动器123向分级存储装置20发送写请求WR1时,生成对应于该写请求WR1的IO信息。IO信息包括表示写的IO识别符、逻辑块地址LBAq(LBA=LBAq)及哈希值H2。LBAq例如为2。哈希值H2基于按照读请求RR读取出的数据D1计算。因此,哈希值H2为与对应于读请求RR的IO信息中的哈希值H1一致的0×1234。设备驱动器123将该IO信息[IO识别符=写、LBAq、H2]转交给守护进程124。

这样,守护进程124的IO信息处理部1242再次执行由图6流程图所示的守护进程处理。首先,IO信息处理部1242接收从设备驱动器123转出的IO信息[IO识别符=写、LBAq、H2](步骤S1)。

如上所述的领取IO识别符表示写的情况下(步骤S2的否)、IO信息处理部1242前进到步骤S5。在步骤S5中,IO信息处理部1242将域513为空并且域512的内容等于领取哈希值H2(=0×1234)的条目,当作设为目标的条目从数据管理表1241检索。

领取IO信息为对应于写请求WR1的IO信息时,IO信息处理部1242可以将图7所示的条目500当作设为目标的条目检索(步骤S6的是)。这时,IO信息处理部1242判断为领取IO信息与写请求(WR1)对应,该写请求(WR1)指示将从由设定于条目500的域511的LBA(旧LBA=LBAp=1)指定的第1逻辑区域(块)读取的数据(D1)写入由领取IO信息中的LBAq指定的第2逻辑区域(块)(即,复制)。

因此,IO信息处理部1242如图8所示在检索出的条目500的域513设定领取LBAq(=2)作为新LBA(步骤S7)。并且,IO信息处理部1242结束守护进程处理。

另一方面,分级存储装置20的存储控制器23按照来自设备驱动器123写请求WR1,如下执行该写请求WR1。首先,存储控制器23将由写请求WR1指定的逻辑块地址LBAq(LBA=LBAq=2)变换成被分配到该逻辑块地址LBAq的物理地址PAq。物理地址PAq包含指定高速存储装置21或低速存储装置22的分级识别符。存储控制器23基于物理地址PAq向高速存储装置21或低速存储装置22写入数据D1(复制)。

这时,假设访问计数表230不包括在域411设定有逻辑块地址LBAq(=2)的条目401。在该状态下,如在图9中以箭头A2所示,存储控制器23在域411及412向访问计数表230分别追加逻辑块地址LBAq(=2)及设定有计数1的条目401。并且,在数据D1的写入之前,访问计数表230也可以包括域411的内容等于逻辑块地址LBAq(=2)并且域412为空的、或者域412的内容(计数)相当于0的条目(即,相当于条目401的条目)。这时,存储控制器23在该条目的域412设定1即可。

此外,存储控制器23将对写请求WR1的响应(返回值)返回给设备驱动器123。文件系统1210接受对写请求WR1的响应,将写请求WR2通过设备驱动器123发送到分级存储装置20。写请求WR2包括按照写请求WR1写入数据D1(复制)的第2逻辑块的逻辑块地址LBAq,指示将由来自应用122的写请求WR(与其对应的读系统呼叫)指定的数据D2写入由逻辑块地址LBAq指定的逻辑块(即,重写)。

设备驱动器123将写请求WR2发送到分级存储装置20的情况下,生成对应于该写请求WR2的IO信息。对应于写请求WR2的IO信息包括表示写的IO识别符、逻辑块地址LBAq(LBA=LBAq=2)及哈希值H3。哈希值H3根据由写请求WR2指定的数据D2计算。因此,哈希值H3与对应于读请求RR的IO信息中的哈希值H1不一致。

守护进程124的IO信息处理部1242从设备驱动器123接收上述的IO信息[IO识别符=写、LBAq、H3](步骤S1)。这时,由于步骤S2的判断为否,因此IO信息处理部1242再次前进到步骤S5。

领取IO信息为对应于写请求WR2的IO信息时,IO信息处理部1242不能检索域513为空并且域512的内容等于领取哈希值H3的条目(步骤S6的否)。但是,IO信息处理部1242能够检测域513的内容(新LBA)与领取LBA(=LBAq=2)相同的条目500(图8)(步骤S9的是)。这时,IO信息处理部1242判断领取IO信息与写请求(WR2)对应,该写请求(WR2)指示在从由旧LBA(=LBAp=1)指定的第1逻辑区域复制到该领取IO信息中的LBA(新LBA=LBAq=2)指定的第2逻辑区域的数据(D1)写入新的数据(D2)(重写)。即,IO信息处理部1242判断为领取IO信息对应于COW动作中的用于重写的第2次的写请求(WR2),从而检测出COW动作。

因此,IO信息处理部1242执行COW通知。即,IO信息处理部1242将表示由旧LBA(=LBAp=1)指定的第1逻辑区域的数据通过COW动作移动到由新LBA(=LBAq=2)指定的第2逻辑区域的信息通知给分级存储装置20(步骤S10)。具体地,IO信息处理部1242将条目500(目标条目)的域511及513的内容作为表示旧LBA及新LBA的组的信息通知给分级存储装置20。接着,IO信息处理部1242将条目500从数据管理表1241删除(步骤S11),结束守护进程处理。

另一方面,分级存储装置20的存储控制部23领取了来自设备驱动器123的写请求WR2时执行该写请求WR2。即,存储控制器23根据被分配到由写请求WR2指定的逻辑块地址LBAq(LBA=LBAq=2)的物理地址PAq,向高速存储装置21或低速存储装置22写入数据D2(重写)。即,存储控制器23将被复制到由LBAq指定的第2逻辑区域的文件F的第i个偏移的数据D1更新为新的数据D2。

此外,存储控制器23按照写请求WR2的执行(数据D2的重写),对包含逻辑块地址LBAq(LBA=LBAq=2)的、访问计数表230内的条目401进行操作。即,如在图9中以箭头A3所示,存储控制器23将条目401的域412的计数从1增量到2。

存储控制器23还根据写请求WR2的执行的完结将对于写请求WR2的响应(正常完结响应)返回到设备驱动器123。文件系统1210结束遵从写请求WR的COW动作,将对于该写请求WR的响应返回到应用122。此外,文件系统1210将与文件F的第i个偏移对应的逻辑块地址从LBAp变更为LBAq。并且,文件系统1210将由LBAq指定的第1逻辑区域作为空区域,将由LBAq指定的第2逻辑区域作为使用中区域分别进行管理。

在COW动作中,在数据D2的重写的执行中,原来的数据D1被存储在由LBAp指定的第1逻辑区域。因此,即使在上述的改写的执行中发生电源切断那样的障碍,也可以将第1文件的内容复原到COW动作的开始前的状态。即,即使发生障碍,COW动作也可以保持数据的一贯性。

然后,假设分级存储装置20的存储控制器23从设备驱动器123领取上述COW通知。该COW通知包括旧LBA(=LBAp=1)及新LBA(=LBAq=2)的组。这时,存储控制器23在包含新LBA(=2)的访问计数表230内的条目401的计数(=2)加上包含旧LBA(=1)的访问计数表230内的条目400的计数(=101)。即,存储控制器23从设备驱动器123按照COW通知将对应于旧LBA(=1)的计数(=101)继承为与旧LBA的数据的复制目标的新LBA(=2)对应的计数。并且,存储控制器23将条目400的计数清零。

由此,访问计数表230内的条目400及401的计数如在图9中以箭头A4所示,从101及2分别更新为0及103。该更新的结果,条目401表示对存储有文件F的第i个偏移的数据(由新LBA=2指定)的逻辑区域访问的计数为103。即,条目401准确地表示应用122对所识别的文件F的第i个偏移访问的次数。

在第1实施方式中,从文件系统1210向设备驱动器123发出了与COW无关的读请求RRs的情况下,在数据管理表1241追加条目(步骤S3)。但是,从文件系统1210向设备驱动器123不发出对应于读请求RRs的用于复制的写请求。因此,条目删除部1243根据对应于读请求RRs的IO信息,在时刻Ts条目Es被追加到数据管理表1241时,根据从时刻Ts经过一定期间(第1条件的成立)删除该条目Es。

此外,在第1实施方式中,从文件系统1210向设备驱动器123发出与COW动作无关的文件的用于复制的写请求WRt的情况下,对被追加在数据管理表1241的条目的内容(更详细地,域513的内容)进行更新(步骤S7)。但是,从文件系统1210向设备驱动器123不发出对应于写请求WRt的用于重写的写请求。因此,条目删除部1243根据对应于写请求WRt的IO信息,当数据管理表1241内的条目Et在时刻Tt更新时,根据从时刻Tt经过一定期间(第2条件的成立)删除该条目Et。

为了上述的条目删除,可以在数据管理表1241内的各条目追加设定时刻信息的域。时刻信息表示追加了对应的条目的日期时间或该对应的条目的内容被更新的日期时间。

接着,假设从文件系统1210向设备驱动器123发出了与COW动作无关的新的用于数据写入的写请求WRu。不存在对应于该写请求WRu的读请求。这时,步骤S2、S6及S9的判断均为否,对应于写请求WRu的IO信息被废弃。

根据第1实施方式,守护进程124(内的IO信息处理部1242)通过处理来自设备驱动器123的IO信息,实时检测文件系统1210的COW动作,可以将与该COW动作有关的旧LBA及新LBA的组通知给分级存储装置20。由此,分级存储装置20的存储控制器23在文件系统1210的COW功能为有效时能够实现准确反映由应用122发出的访问请求(特别是,在文件F内用于重写数据的写请求)的状况的分级化。即,根据第1实施方式,可以实现有助于提高用户的方便性的分级化。而且,为了该实现,不需要变更OS121(文件系统1210)及应用122。

在第1实施方式中,守护进程124被包含在计算机10_1。但是,守护进程124也可以不包含在分级存储装置20。此外,在第1实施方式中,分级存储装置20具备访问性能不同的2个存储装置,即,高速存储装置21及低速存储装置22。但是,分级存储装置20也可以具备访问性能不同的3个以上的存储装置。例如,分级存储装置20除高速存储装置21及低速存储装置22以外还可以具备访问性能低于高速存储装置21的访问性能且高于低速存储装置22的访问性能的存储装置(中速存储装置)。

<第2实施方式>

接着,对第2实施方式涉及的分级存储系统进行说明。假设第2实施方式涉及的分级存储系统具有与第1实施方式涉及的分级存储系统同样的硬盘结构。因此,在第2实施方式涉及的有关分级存储系统的构成的说明中方便地参照图1。但是,在第2实施方式的分级存储系统中,计算机10_1(至10_n)的功能构成与第1实施方式不同。例如,第2实施方式的计算机10_1包括与第1实施方式的计算机10_1具有的守护进程124不同的功能的守护进程124a(图10)。因此,在第2实施方式中,若有必要将图1所示的守护进程124读作守护进程124a。

下面,关于第2实施方式的分级存储系统的功能构成,以与第1实施方式的功能构成不同的点为中心参照图10进行说明。图10是表示第2实施方式涉及的分级存储系统的典型的功能构成的框图。在图10中,计算机10_1不同于图2的,包括高速缓存控制器125。

高速缓存控制器125包括高速缓冲器1250。高速缓冲器1250用于暂时存储从分级存储装置20读取的数据(读数据)、及应写入分级存储装置20的数据(写数据)。并且,高速缓冲器1250也可以设置在高速缓存控制器125的外部。存储在高速缓冲器1250的数据(读数据及写数据)称为高速缓存数据(读高速缓存数据及写高速缓存数据)

高速缓存控制器125控制对高速缓冲器1250的数据的存储(写入)及从高速缓冲器1250的数据的读取(即高速缓存访问)。高速缓存控制器125管理存储在高速缓冲器1250的数据的目录。并且,在图10中用于目录管理的目录管理表被省略。

高速缓存在控制器125进一步根据基于来自文件系统1210的写请求的向高速缓冲器1250的写数据的写入,将有关该写入IO信息转交给守护进程124a。来自高速缓存控制器125的IO信息包括写数据的哈希值及高速缓冲器1250的该写数据的写入目标的地址(即,缓冲地址)。

图11是表示图10所示的守护进程124a的典型的功能构成的框图。守护进程124a包括数据管理表1241a、IO信息处理部1242a及条目删除部1243。数据管理表1241a、IO信息处理部1242a分别对应于图3所示的数据管理表1241及IO信息处理部1242。但是,数据管理表1241a的数据结构不同于数据管理表1241的数据结构,IO信息处理部1242a的功能不同于IO信息处理部1242的功能。

IO信息处理部1242a根据从设备驱动器123或高速缓存控制器125转出的IO信息,执行数据管理表1241a的条目的增加、从数据管理表1241的条目的检索及检索出的条目的信息的更新(更详细地,对检索出的条目的信息的追加记录)。IO信息处理部1242a还根据检索出的条目的信息的更新检测COW动作。

图12表示图11所示的数据管理表1241a的数据结构例。数据管理表1241a的各条目包括域C1至C4。域C1是在根据来自高速缓存控制器125的IO信息检索出包括该域C1的条目时,用于保存该IO信息中的缓冲地址的缓冲地址域。

域C2是在根据来自设备驱动器123的IO信息被追加包含该域C2的条目时,用于将该IO信息中的哈希值作为旧哈希值保存的旧哈希值域。域C3是在根据来自高速缓存控制器125的IO信息中的缓冲地址检索出包含该域C3的条目时,用于将该IO信息中的哈希值作为新哈希值保存的新哈希值域。

域C4是在根据来自设备驱动器123的IO信息被追加包含该域C4的条目时,用于将该IO信息中的LBA作为旧LBA保存的旧LBA域。域C5是在根据来自设备驱动器123的IO信息检索出包含该域C5的条目时,用于将该IO信息中的LBA作为新LBA保存的新LBA域。

接着,参照图13至图15对在第2实施方式中通过守护进程124a执行的守护进程处理进行说明。图13是表示守护进程处理的典型的顺序的流程图。图14是表示图13所示的守护进程处理中包含的条目/追加更新处理的典型的顺序的流程图,图15是表示图13所示的守护进程处理中包含的条目更新处理的典型的顺序的流程图。

高速缓存控制器125根据基于对该高速缓存控制器125的写请求的、对高速缓冲器1250的写数据的写入,从文件系统1210将与该写入有关的IO信息[哈希值、缓冲地址]转交给守护进程124a。设备驱动器123按照来自文件系统1210的访问请求(读请求或写请求)向分级存储装置20发送读请求或写请求。设备驱动器123在向分级存储装置20发送读请求或写请求时,将与该读请求或写请求对应的IO信息[IO识别符=读、LBA、哈希值]转交给守护进程124a。

守护进程124a的IO信息处理部1242a接收来自设备驱动器123或高速缓存控制器125的IO信息(步骤S21)。并且,IO信息处理部1242a判断领取IO信息例如是否为来自设备驱动器123的IO信息(步骤S22)。

若步骤S22的判断为是,领取IO信息包括IO识别符、LBA及哈希值。这时,IO信息处理部1242a判断领取IO识别符是否表示读(步骤S23)。

如果步骤S23的判断为是,IO信息处理部1242a如下执行条目追加处理(步骤S24)。首先,IO信息处理部1242a将具有与领取LBA相同的LBA作为旧LBA的条目当作设为目标的条目从数据管理表1241a检索(步骤S241)。并且,IO信息处理部1242a判断是否检索到设为目标的条目(步骤S242)。

如果步骤S242的判断为否,IO信息处理部1242a在数据管理表1241a追加1个条目(步骤S243)。在追加条目的时刻,该条目的域C1至C5为空。接着,IO信息处理部1242a将领取哈希值及领取LBA分别作为旧哈希值及旧LBA设定为追加条目的域(旧哈希值域)C2及域(旧LBA域)C4(步骤S244)。由此,IO信息处理部1242结束条目追加处理(步骤S24)来结束守护进程处理。相对于此,若步骤S242的判断为是,IO信息处理部1242a直接结束条目追加处理(步骤S24)来结束守护进程处理。

另一方面,若步骤S23的判断为否,IO信息处理部1242a根据图14所示的流程图如下地执行条目追加/更新处理(步骤S25)。首先,IO信息处理部1242a将具有与领取LBA相同的LBA作为旧LBA的条目当作设为目标的条目从数据管理表1241a检索(步骤S251)。并且,IO信息处理部1242a判断是否检索到设为目标的条目(步骤S252)。

如果步骤S252的判断为否,IO信息处理部1242a将作为新哈希值具有与领取哈希植相同的哈希值的条目当作设为目标的条目从数据管理表1241a检索(步骤S253)。并且,IO信息处理部1242a判断是否检索到设为目标的条目(步骤S254)。

如果步骤S254的判断为否,IO信息处理部1242a与步骤S243同样地在数据管理表1241a追加1个条目(步骤S255)。在被追加条目的时刻,该条目的域C1至C5为空。接着,IO信息处理部1242a与步骤S244同样地将领取哈希值及领取LBA分别作为旧哈希值及旧LBA设定在追加条目的域C2及C4(步骤S256)。由此,IO信息处理部1242结束条目追加/更新处理(步骤S25)来结束守护进程处理。

相对于此,若步骤S254的判断为是,IO信息处理部1242a判断为检测出COW动作。因此,IO信息处理部1242a在检索出的条目的域C5设定领取LBA作为新LBA(步骤S257)。

接着,IO信息处理部1242a将在检索出的条目的域C4及C5设定的旧LBA及新LBA的组通知给分级存储装置20(步骤S258)。接着,IO信息处理部1242a将检索出的条目从数据管理表1241a删除(步骤S259)。由此,IO信息处理部1242结束条目追加/更新处理(步骤S25),结束守护进程处理。并且,条目删除部1243也可以删除检索出的条目。

此外,若步骤S22的判断为否,领取IO信息包括缓冲地址及哈希值。这时,IO信息处理部1242a根据图15所示的流程图如下地执行条目更新处理(步骤S26)。首先,IO信息处理1242a将具有与领取缓冲地址相同的缓冲地址的条目当作设为目标的条目从数据管理表1241a检索(步骤S261)。并且,IO信息处理部1242a判断是否检索到设为目标的条目(步骤S262)。

如果步骤S262的判断为是,IO信息处理部1242a在检索出的条目的域C3作为新哈希值设定领取哈希值(步骤S263)。由此,IO信息处理部1242结束条目更新处理(步骤S26)来结束守护进程处理。

相对于此,若步骤S262的判断为否,IO信息处理部1242a将值具有与领取哈希值相同的哈希值作为旧哈希的条目当作设为目标的条目从数据管理表1241a检索(步骤S264)。并且,IO信息处理部1242a判断是否检索到设为目标的条目(步骤S265)。

如果步骤S265的判断为是,则IO信息处理部1242a在检索出的条目的域C1设定领取缓冲地址(步骤S266)。并且,IO信息处理部1242结束条目更新处理(步骤S26),来结束守护进程处理。相对于此,若步骤S265的判断为否,IO信息处理部1242a直接结束条目追加处理(步骤S26),来结束守护进程处理。

接着,关于第2实施方式的守护进程处理的具体例,加上图13至图15的流程图,参照图16及图17说明。图16表示守护进程处理中追加条目的数据管理表1241a的例子,图17表示数据管理表1241的内容的迁移的例子。

首先,与上述第1实施方式同样地,假设应用122发出了指定在已存在的文件F内的偏移OFSTi重写数据D2的写请求WR。这样,按照写请求WR,从系统呼叫发出机构向OS121发出写系统呼叫。OS121的文件系统1210基于写系统呼叫开始COW动作。首先,文件系统1210将写系统呼叫(写请求WR)与第1实施方式同样地分解为读请求RR、第1写请求WR1、及第2写请求WR2。并且,不同于第1实施方式,文件系统1210向高速缓存控制器125发出读请求RR。

高速缓存控制器125根据读请求RR参照目录管理表判断存储在读请求RR表示的LBAp的数据D1是否也存储在高速缓冲器1250。在此,假设数据D1存储在由缓冲地址BA1指定的高速缓冲器1250内的区域。这时,高速缓存控制器125从高速缓冲器1250读取数据D1。并且,高速缓存控制器125将读取出的数据D1作为对来自文件系统1210的读请求RR的响应返回该文件系统1210。

这样,文件系统1210向高速缓存控制器125发出如下的写请求WR1。这样,存储在读请求RR表示的LBAp的数据D1也存储在高速缓冲器1250的高速缓存命中状态(第1状态)下,从文件系统1210向设备驱动器123不发出读请求RR。高速缓存命中状态表示在开始基于写请求WR的COW动作开始之前已经执行数据D1的读或写的状态。

在高速缓冲命中状态,图16所示的条目1600通过条目追加处理(图13的步骤S24)或条目追加/更新处理(图13的步骤S25)已被追加在数据管理表1241a。假设数据D1的哈希值H1及LBAp与第1实施方式同样地分别是0×1234及1。这时,在条目1600的域C2及C4分别作为旧哈希值及旧LBA设定有数据D1的哈希值H1(=0×1234)及LBAp(=1)。

相对于此,数据D1为未存储在高速缓冲器1250的未命中状态(第2状态)时,从文件系统1210也向设备驱动器123发出读请求RR。设备驱动器123将该读请求RR发送到分级存储装置20。分级存储装置20的存储控制器23将由读请求RR指定的数据D1从高速存储装置21或低速存储装置22读取,将该数据D1返回到设备驱动器123。设备驱动器123作为对于来自文件系统1210的读请求的响应,将读取出的数据D1返回到该文件系统1210。此外,设备驱动器123与第1实施方式同样地计算数据D1的哈希值H1,将对应于读请求RR的IO信息[IO识别符=读,LBAp=1,H1=0×1234]转交给守护进程124a。另一方面,高速缓存控制器125根据读请求RR将通过存储控制器23读取出的数据D1写入到高速缓冲器125内的空区域。

守护进程124a的IO信息处理部1242a接收从设备驱动器123转出的IO信息[IO识别符=读,LBAp=1,H1=0×1234](步骤S21)。这时,IO信息处理部1242a经由步骤S22及S23执行条目追加处理(步骤S24)。由此,IO信息处理部1242a如图16所示在数据管理表1241a追加作为旧哈希值及旧LBA具有领取哈希值H1(=0×1234)及领取LBAp(=1)的条目1600。

另一方面,文件系统1210接收对于读请求RR的来自设备驱动器123或高速缓存控制器125的响应,将写请求WR1发出到高速缓存控制器125。高速缓存控制器125按照写请求WR1将应写入(复制)到由LBAq指定的逻辑块的数据D1写入高速缓冲器1250内的空区域。假设该区域的缓冲地址为BA2(=0×01)。

接着,高速缓存控制器125将对于写请求WR1的响应返回到文件系统1210。此外,高速缓存控制器125将对应于写请求WR1的IO信息[哈希值H2(=H1=0×1234),缓冲地址BA2(=0×01)]转交给守护进程124a。

守护进程124a的IO信息处理部1242a接收从高速缓存控制器125转出的IO信息[哈希值H2(=H1=0×1234,缓冲地址BA2(=0×01)](步骤S21)。这时,IO信息处理部1242a经由步骤S22如下地执行条目更新处理(步骤S26)。

首先,IO信息处理部1242a将具有与领取缓冲地址BA2(=0×01)相同的缓冲地址的条目当作设为目标的条目从数据管理表1241a检索(步骤S261)。在此,IO信息处理部1242a未检索到设为目标的条目(步骤S262的否)。

因此,IO信息处理部1242a将具有与领取哈希值H2(=H1=0×1234)相同的哈希值作为旧哈希值的条目,当作设为目标的条目从数据管理表1241a检索(步骤S264)。在此,IO信息处理部1242a可以将条目1600(图16)当作设为目标条目检索(步骤S265的是)。因此,IO信息处理部1242a如在图17中以箭头A11所示,在条目1600的域C1设定领取缓冲地址BA2(=0×01)(步骤S266)。

因此,当文件系统1210接收到对于写请求WR1的来自高速缓存控制器125的响应,则向高速缓存控制器发出下面的写请求WR2。这样,高速缓存控制器125在根据前面的写请求WR1写有数据D1的高速缓冲器1250内的区域,即,由缓冲地址BA2(=0×01)指定的区域重写由写请求WR2指定的数据D2。

接着,高速缓存控制器125,将对于写请求WR2的响应返回到文件系统1210。此外,高速缓存控制器125将对应于写请求WR2的IO信息[哈希值H3(=0×1357),缓冲地址BA2(=0×01)]转交给守护进程124a。

守护进程124a的IO信息处理部1242a接收从高速缓存控制器125转出的IO信息[哈希值H3(=0×1357),缓冲地址BA2(=0×01)](步骤S21)。这时,IO信息处理部1242a经由步骤S22如下执行条目更新处理(步骤S26)。

首先,IO信息处理部1242a将具有与领取缓冲地址BA2(=0×01)相同的缓冲地址的条目,当作设为目标的条目从数据管理表1241a检索(步骤S261)。在此,IO信息处理部1242a可以将条目1600(图17)当作设为目标的条目检索(步骤S262的是)。因此,IO信息处理部1242a如在图17中箭头A12所示,在条目1600的域C3将领取哈希值H3(=0×1357)设定为新哈希值(步骤S263)。

因此,文件系统1210在将写请求WR2发出到高速缓存控制器125时与写请求WR1的发出时不同,使该写请求WR2通过设备驱动器123发送到分级存储装置20。于是,分级存储装置20的存储控制器23根据被分配在由写请求WR2指定的逻辑块地址LBAq(=2)的物理地址PAq,在高速存储装置21或低速存储装置22写入数据D2。并且,存储控制器23将对于写请求WR2的响应返回设备控制器123。文件系统1210从设备驱动器123接收该响应。于此,文件系统12210结束遵从写请求WR的COW动作。以后的文件系统1210的动作与第1实施方式相同。

并且,设备驱动器123在将写请求WR2发送到分级存储装置20时,与第1实施方式同样地,生成对应于该写请求WR2的IO信息[IO识别符=写、LBAq(=2)、H3(=0×1357)]。IO信息处理部1242a若接收到该IO信息[IO识别符=写、LBAq(=2)、H3(=0×1357)](步骤S21),经由步骤S22及S23如下执行条目追加/更新处理(步骤S25)。

首先,IO信息处理部1242a将具有领取LBAq(=2)的LBA作为旧LBA的条目,当作设为目标的条目从数据管理表1241a检索(步骤S251)。在此,IO信息处理部1242a不能检索设为目标的条目(步骤S252的否)。

因此,IO信息处理部1242a将具有与领取哈希值H3(=0×1357)相同的哈希值作为新哈希值的条目,当作设为目标的条目从数据管理表1241a检索(步骤S253)。在此,IO信息处理部1242a可以将条目1600(图17)当作设为目标的条目检索(步骤S254的是)。

这时,IO信息处理部1242a如在图17中以箭头A13所示在条目1600的域C5将领取LBAq(=2)设定为新LBA(步骤S257)。接着,IO信息处理部1242a执行用于向分级存储装置20通知条目1600的域C4及C5的内容(即,旧LBA及新LBA)的COW通知(步骤S258)。并且,IO信息处理部1242a将条目1600从数据管理表1241删除(步骤S259)。

分级存储装置20的存储控制器23根据来自IO信息处理部1242a的COW通知,将与访问计数表230内的旧LBA(=LBAp=1)的计数继承为访问计数表内的新LBA(=LBAq=2)。并且,存储控制器23将与LBA(=LBAp=1)的计数清零。

根据第2实施方式,守护进程124a(内的IO信息处理部1242a)通过处理来自设备驱动器123及高速缓存控制器125的IO信息,从而实时检测文件系统1210的COW动作,将与该COW动作有关的旧LBA及新LBA通知到分级存储装置20。由此,分级存储装置20的存储控制器23在文件系统1210的COW功能有效且计算机10_1(至10_n)具备高速缓存器时,也可以实现准确反映由应用122发出的访问请求(特别是,在文件F内用于重写数据的写请求)的状况的分级化。而且,为了该实现,不需要变更OS121(文件系统1210)及应用122。

<第3实施方式>

接着,对第3实施方式涉及的分级存储系统进行说明。假设第3实施方式涉及分级存储系统具有与第1及第2实施方式涉及的分级存储系统相同的硬盘结构。因此,在第3实施方式涉及的有关分级存储系统的构成的说明中方便地参照图1。但是,在第3实施方式的分级存储系统中,计算机10_1(至10_n)的功能构成与第1及第2实施方式不同。例如,第3实施方式的计算机10_1包括与设备驱动器123及守护进程124(124a)不同的功能的设备驱动器123b及守护进程124b(图18)。此外,在第3实施方式的计算机10_1中,运行功能与应用122不同的应用122b(图18)。因此,在第3实施方式中若有必要,要将图1所示的应用122、设备驱动器123b及守护进程12读作应用122b、设备驱动器123b及守护进程124b。

下面,关于第3实施方式的分级存储系统的功能构成,以与第1实施方式的功能构成不同的点为中心参照图18进行说明。图18是表示第3实施方式涉及的分级存储系统的典型的功能构成的框图。

在图18所示的计算机10_1上运行应用122b。应用122b生成与读请求或写请求对应的IO信息,并将该IO信息转交给守护进程124b。来自应用122b的IO信息包括文件信息[文件名、偏移]和哈希值。该哈希值根据从由文件信息[文件名、偏移]指定的文件内的位置读取出的数据、或写入该文件内的位置的数据计算。

此外,在图18所示的计算机10_1中,设备驱动器123b生成与来自文件系统1210的读请求或写请求对应的IO信息,并将该IO信息转交给守护进程124b。来自设备驱动器123b的IO信息包括:读请求或写请求指定的LBA、根据读请求或写请求读或写的数据的哈希值。守护进程124b根据来自应用122b及设备驱动器123的IO信息检测通过COW存储的对应于1个[文件名、偏移]的多个LBA。

图19是表示图18所示的守护进程124b的典型的功能构成的框图。守护进程124b包括文件-LBA表301、计数表302、表管理部303及表管理部304及计数校正部305。

文件-LBA表301的各条目组如后述用于将文件信息[文件名、偏移]和LBA列表对应起来保存。计数表302的各条目组如后述用于保存LBA、计数和最终访问日期时间信息。

表管理部303执行第1表管理处理,根据来自应用122b及设备驱动器123b的IO信息管理(更新)文件-LBA表301。表管理部304执行第2表管理处理,根据来自设备驱动器123b的IO信息管理(更新)计数表302。

来自应用122b的IO信息包括文件名、偏移及哈希值。IO信息中的哈希值,根据从由该IO信息中的文件名及偏移指定的文件内的位置读取出的数据、或写入该文件内的位置的数据计算。来自设备驱动器123b的IO信息包括访问目标的LBA及哈希值。即,来自设备驱动器123b的IO信息除了不包含IO识别符的点以外,与来自设备驱动器123的IO信息相同。

计数校正部305将用于校正分级存储装置20内的访问计数表230的计数的计数校正信息根据文件-LBA表301及计数表302生成,执行用于向分级存储装置20发送该计数校正信息的计数校正处理。计数校正部305在计数校正处理中,根据文件-LBA表301及计数表302检测对同一文件内的同一偏移的访问并且通过COW动作作为对多个LBA的访问进行计数的状态。在计数校正处理中,计数校正部305计算用于使对应于LBA列表内的最后被访问的LBA的计数(访问计数表230的计数)与对同一文件内的同一偏移访问的次数一致的校正值。在计数校正处理中,根据该计算结果,计数校正部305向分级存储装置20送出包括LBA及校正计数的组的列的计数校正信息。

图20表示图19所示的文件-LBA表301的数据结构例。文件-LBA表301的各条目组包括域E1至E3。域E1是用于保存文件名的文件名域,域E2是用于保存以该文件名表示的文件内的偏移的偏移域。即,域E1及E2用于保存文件信息[文件名、偏移]。域E3是用于保存存储有由对应的条目的域E1及E2的内容表示的文件内的偏移的数据的1个以上的LBA的LBA列表域。即,域E3是设想有可能存在通过COW动作对应于1个[文件名、偏移]的多个LBA来准备。具有这种结构的文件-LBA表301是一种匹配表。

图21表示图19所示的计数表302的数据结构例。计数表302的各条目组包括域G1至G3。域G1是用于保存LBA的LBA域。域G2是对于由保存在对应的条目的域G的LBA表示的区域(块)访问的计数的计数域。域G3是用于保存表示对应的条目最后被访问的日期时间的最终存储日期时间信息的最终访问日期时间域。

接着,参照图22对在第3实施方式中通过表管理部303执行的第1表管理处理进行说明。图22是表示第3实施方式的第1表管理处理的典型的顺序的流程图。

首先,假设应用122b发出了读请求或写请求。来自应用122b的读请求或写请求包括表示访问目标的文件信息[文件名、偏移]。根据该读请求中写请求,从系统呼叫发出机构向OS121发出读系统呼叫或写系统呼叫。

OS121的文件系统1210根据该读系统呼叫或写系统呼叫通过设备驱动器123b向分级存储装置20发送读请求或写请求。来自该设备驱动器123b的读请求或写请求包括表示访问目标的LBA。分级存储装置20的存储控制器23根据被分配到由该读请求或写请求指定的LBA的物理地址执行从高速存储装置21或低速存储装置22的数据的读取、或对高速存储装置21或低速存储装置22的数据的写入。

根据该数据的读取或写入,从应用122b向守护进程124b转出IO信息[文件名、偏移、哈希值]。同样地,从设备驱动器123b向守护进程124b转出IO信息[LBA、哈希值]。

守护进程124b的表管理部303接收来自应用122b的IO信息[文件名、偏移、哈希值]、及来自设备驱动器123b的IO信息[LBA、哈希值](步骤S31)。表管理部303在双方的领取哈希值相同时,将领取文件名及领取偏移与领取LBA关联起来(步骤S32)。并且,双方的领取哈希值不同时,表管理部303结束第1表管理处理。但是,该顺序在图22的流程中省略。

接着,表管理部303将具有与领取文件名及领取偏移相同的文件名及偏移的条目当作设为目标的条目从文件-LBA表301检索(步骤S33)。并且,表管理部303判断是否检索到设为目标的条目(步骤S34)。步骤S33的判断为是的情况下,表管理部303从文件-LBA表301内的目标条目以外的条目组中检索具有与领取LBA相同的LBA的其它条目(步骤S35)。并且,表管理部303判断是否检索到具有与领取LBA相同的LBA的其它条目(步骤S36)。

表管理部303若在目标条目的域E3中的LBA列表中不包含与领取LBA相同的LBA,则与步骤S36的结果无关地在该LBA列表追加领取LBA(步骤S38)。因此,若步骤S36的判断为是,则由相同的LBA指定的区域(逻辑块)根据不同的文件名及偏移的组访问。这表示在COW动作中使用的逻辑块被回收再利用。因此,表管理部303在步骤S36的判断为是的情况下在步骤S38之前执行步骤S37。在步骤S37中表管理部303启动计数校正部305,通过该计数校正部305执行计数校正处理。

另一方面,步骤S34的判断为否的情况下,表管理部303将具有与领取LBA相同的LBA的条目从文件-LBA表301检索(步骤S39)。并且,表管理部303判断是否检索到具有与领取LBA相同的LBA的条目(步骤S40)。

表管理部303与步骤S40的判断结果无关地,将具有领取文件名、领取偏移及领取LBA的条目追加在文件-LBA表301(步骤S42)。因此,若步骤S40的判断为是,由同样的LBA指定的逻辑块根据不同的文件名及偏移的组被访问。这表示在COW动作中使用的逻辑块被回收再利用。因此,表管理部303在步骤S40的判断为是的情况下在步骤S42之前执行步骤S41。在步骤S41中,表管理部303启动计数校正部305,通过该计数校正部使其执行计数校正处理。若表管理部303执行步骤S38或S42,则结束第1表管理处理。

接着,参照图23对在第3实施方式中通过表管理部304执行的第2表管理处理进行说明。图23是表示第2表管理处理的典型的顺序的流程图。

首先,假设文件系统1210通过设备驱动器123b向分级存储装置20送出读请求或写请求。由此,假设分级存储装置20的存储控制器2执行从高速存储装置21或低速存储装置22的数据的读取、或者向高速存储装置21或低速存储装置22的数据的写入。

根据该数据的读取、写入,从设备驱动器123b向守护进程124b转出IO信息[LBA、哈希值]。守护进程124b的表管理部304接收来自设备驱动器123b的IO信息[LBA、哈希值](步骤S51)。

接着,表管理部304将具有与领取LBA相同的LBA的条目当作设为目标的条目从计数表302检索(步骤S52)。并且,表管理部303判断是否检索到具有与领取LBA相同的LBA的条目(步骤S53)。若步骤S53的判断为是,则表管理部303将检索出的条目中的计数增加1,并且将该检索出的条目中的最终访问日期时间信息更新为表示当前的日期时间(步骤S54)。

相对于此,若步骤S53的判断为否,表管理部303将包含领取LBA、计数1、及表示当前的日期时间的最终访问日期时间信息的条目追加到计数表302(步骤S55)。若执行步骤S54或S55,则表管理部303结束第2表管理处理。

接着,在第3实施方式中,参照图24对在通过表管理部303启动计数校正部305时(图22的步骤37或S41)由该计数校正部305执行计数校正处理进行说明。图24是表示计数校正处理的典型的顺序的流程图。在第3实施方式中,在计数校正部305在分级存储装置20的存储控制器23执行分级处理的情况下也根据来自该存储控制器23的请求启动。

计数校正部305对文件-LBA表301的全部条目重复包含以下的步骤S61的处理(步骤S60)。在此,假设对计数表302的第i个条目执行包含步骤S61的处理。

首先,计数校正部305判断第i条目中的LBA列表是否包括2个以上的LBA(步骤S61)。步骤S61的判断为是的情况下,计数校正部305判断根据对由第i条目中的文件名及偏移的组指定的块的访问的请求(来自应用122b的访问请求)进行了COW动作。即,计数校正部305判断为第i条目包括根据COW动作访问的全部LBA(2个以上的LBA)。因此,计数校正部305取得第i条目所包括的全部LBA(步骤S62)。

接着,计数校正部305将分别具有取得的LBA的条目从计数表302检索(步骤S63)。并且,计数校正部305比较检索出的全部条目的最终访问日期时间信息表示的最终访问日期时间,选择最终访问日期时间为最新的条目(步骤S64)。

接着,计数校正部305计算未被选择的剩余的条目(即,1个以上的条目)中的计数的合计,将被选择的条目中的计数变更为计算出的合计(步骤S65)。此外,计数校正部305将未被选择的剩余的条目中的计数变更为负的值(步骤S66)。由此,计数校正部305结束对第i条目的处理。

相对于此,步骤S61的判断为否的情况下,计数校正部305判断由第i条目中的文件名及偏移的组指定的块与COW动作无关。因此,计数校正部305判断为在访问计数表230中不需要校正与第i条目中的单一的LBA对应的计数。这时,计数校正部305结束对第i条目的处理。计数校正部305对文件-LBA表301的全部条目重复以上的处理(包括步骤S61的处理)(步骤S60)

这样,计数校正部305根据计数表302制作计数校正信息,向分级存储装置20发送该计数校正信息(步骤S67)。计数校正信息包括LBA和校正计数的组的列。校正计数信息包括LBA和校正计数的组的列。校正计数是在步骤S65或S66变更的计数。接着,计数校正部305删除文件-LBA表301及计数表302的全部条目(步骤S68),结束计数校正处理(步骤S69)。

接着,关于第1实施方式的第1表管理处理、第2表管理处理及计数校正处理,加上图22至图24的流程图,参照图25至图31进行说明。图25是在第1表管理处理中追加条目的文件-LBA表的例子的图;图26是表示第2表管理处理中追加条目的计数表的列子的图;27是表示第3实施方式的计数表的内容的迁移的例子的图;28是表示在第1表管理处理中条目中的LBA列表的内容被更新的文件-LBA表的例子的图。图29是表示在计数较正处理中制作的计数校正信息的例子的图;图30是表示第3实施方式的访问计数表的内容的例子的图;图31是表示第3实施方式的被校正的访问计数表的内容的例子的图。

首先,为了简化说明,假设文件-LBA表301及计数表302被初始化。该状态下,假设应用122b制作了新的文件F的偏移0的块的数据。假设文件F的文件名为F1,文件F的偏移0的块的数据为D1,该数据D1的哈希值为0×1234。此外,假设数据D1的LBA被写入1(LBA=LBAp=1)的逻辑块。

这时,应用122b向守护进程124b转出IO信息[文件名=F1,偏移=0,哈希值=0×1234]。相对于此,设备驱动器123b向守护进程124b转出IO信息[LBA=1,哈希值=0×1234]。

这样,守护进程124b的表管理部303将IO信息[文件名=F1,偏移=0,哈希值=0×1234]中的文件名=F1及偏移=0与IO信息[LBA=1,哈希值=0×1234]中的LBA=1根据哈希值=0×1234关联起来(图22的步骤S31及S32)。并且,如图25所示,表管理部303将具有文件名=F1、偏移=0及LBA=1的条目2501追加到文件-LBA表301(图22的步骤S33、S34、S39、S40及S42)。另一方面,如图26所示,表管理部304将具有LBA=1、计数=1及表示当前的日期时间(2015/xx/yy15:00)的最终访问日期时间信息的条目2601追加到计数表302。(图23的步骤S51至S53及S55)。

然后,假设应用122b执行从文件F的偏移0的数据D1的读取。这时,应用122b向守护进程124b转出IO信息[文件名=F1,偏移=0,哈希值=0×1234]。相对于此,设备驱动器123b向守护进程124b转出IO信息[LBA=1,哈希值=0×1234]。

这样,守护进程124b的表管理部303将IO信息[文件名=F1,偏移=0,哈希值=0×1234]中的文件名=F1及偏移=0与IO信息[LBA=1,哈希值=0×1234]中的LBA=1根据哈希值=0×1234关联起来(图22的步骤S31及S32)。这时,文件-LBA表301包括文件名=F1及偏移=0的条目2501(图22的步骤S34的是)。在条目2501存在LBA=1。因此,表管理部303不执行图22的步骤S38。因此,条目2501的域E3的内容未被更新。

另一方面,如图26所示,计数表302包括具有LBA=1的条目2601(图23的步骤S53的是)。因此,表管理部303通过将处于图26所示的状态的条目2601中的计数增加1,如在图27中以箭头A21所示将该计数更新为2,并且将该最终访问日期时间信息更新为最终访问日期时间信息表示当前的日期时间信息(2015/xx/yy 16:00)(图23的步骤S54)

然后,假设应用122b发出了指示在文件F的偏移0重写数据D2的写请求WR。这时,通过对应于写请求WR的文件系统1210的COW动作,该写请求WR被分解为读请求RR、写请求WR1及写请求WR2。并且,假设通过执行读请求RR、写请求WR1及写请求WR2,在与写入有数据D1的LBA(=LBAp=1)不同的LBA(=LBAp=2)的逻辑块写入数据D2。数据D2的哈希值如上所述为0×1357。

这时,应用122b将对应于写请求WR的IO信息[文件名=F1,偏移=0,哈希值=0×1357]转交给守护进程124b。相对于此,设备驱动器123b依次将对应于读请求RR的IO信息[LBA=1,哈希值=0×1234]、对应于写请求WR1的IO信息[LBA=2,哈希值=0×1234]、及对应于写请求WR2的IO信息[LBA=2,哈希值=0×1357]转交给守护进程124b。

对应于写请求WR的IO信息及对应于写请求WR2的IO信息均包括哈希值=0×1357。因此,守护进程124b的表管理部303将对应于写请求WR的IO信息中的文件名=F1及偏移=0与对应于写请求WR2的IO信息中的LBA=2根据哈希值=0×1357关联起来(图22的步骤S31及S32)。

相对于此,对应于读请求RR及写请求WR1的每一个的IO信息包括与哈希值=0×1357不同的哈希值(=0×1234)。因此,表管理部303将对应于读请求RR及写请求WR1的每一个的IO信息中的LBA不与对应于写请求WR的IO信息中的文件名=F1及偏移=0关联。这等价于表管理部303(守护进程124b)仅把读请求RR、写请求WR1及写请求WR2中的写请求WR2识别为对应于写请求WR的访问请求。

这时,如图25所示,文件-LBA表301包括具有文件名=F1及偏移=0的条目2501。这时,表管理部303可以将条目2501设为目标条目检索(图22的步骤S34的是)。在图25所示的条目2501不存在LBA=2。因此,表管理部303在图25所示的条目2501的域E3中的LBA列表追加LBA=2(图22的步骤S38)。由此,条目2501中的LBA列表的内容如图28所示地被变更。

另一方面,条目2601的内容如在图27中以箭头A21所示被更新的计数表302不包括具有LBA=2的条目(图23的步骤S53的否)。这时,表管理部304如在图27中以箭头A22所示将具有LBA=2、计数=1及表示当前的日期时间(2015/xx/yy 17:00)的最终访问日期时间信息的条目2602追加到计数表302。(图23的步骤S55)

然后,假设存储控制器23为了执行分级处理,向计算机10_1请求了计数校正信息。于是,计算机10_1的守护进程124b的计数校正部305遵从图24所示的流程图执行计数校正处理。由此,计数校正部305制作计数校正信息(图24的步骤S67)。

这时,假设文件-LBA表301包括处于图28所示的状态的条目2501,计数表302包括如在图27以箭头A22表示的状态的条目2601及2602。在该状态下,条目2501中的LBA列表包括2个LBA即LBA=1及LBA=2。同样地,条目2601及2602分别包括LBA=1及LBA=2。

因此,计数校正部305从条目2501中的LBA列表获取LBA=1及LBA=2(图24的步骤S61及S62)。此外,计数校正部305从文件-LBA表301检索分别具有LBA=1及LBA=2的条目2601及2602(图24的步骤S63)。并且,计数校正部305从条目2601及2602选择最终访问日期时间为最新的条目2602(图24的步骤S64)。未被选择的条目2601中的计数为2。这时,该计数=2作为未被选择的1个以上的条目的合计使用。

因此,计数校正部305将被选择的条目2602中的计数(=1)变更为2(更详细地,+2)(图24的步骤S65)。此外,计数校正部305将未被选择的条目2601中的计数(=2)变更为负的值即-2(图24的步骤S66)。

接着,计数校正部305根据变更后的计数表302的内容(即变更后的条目2601及2602中的LBA及计数的组)制作图29所示的计数校正信息(图24的步骤S67)。该计数校正信息由作为LBA及校正计数的组的例子包括变更后的计数表302中的LBA及计数的组的列的列表[(LBA=1、校正计数=-2),(LBA=2、校正计数+2)]构成。在步骤S67中,计数校正部305将制作的计数样正信息向分级存储装置20发送制作的计数校正信息。并且,计数校正部305将文件-LBA表301的条目2501及计数表302的条目2601及2602全部删除(图24的步骤S68)。

另一方面,分级存储装置20的存储控制器23根据来自设备驱动器123b的读请求或写请求,例如将包括指定的LBA(领取LBA)及计数=1的条目追加到访问计数表230。此外,包括指定的LBA的条目存在于访问计数表230时,存储控制器23将该条目中的计数增加1。

在第3实施方式中,假设在应用122b制作了新的文件F的偏移0的块的数据D1时,从设备驱动器123b向分级存储装置20送出了指定向LBA=1写入数据D1的写请求。然后,假设应用122b请求了从文件F的偏移0的块读取数据时,从设备驱动器123b向分级存储装置20送出了指定从LBA=1读取数据的读请求。然后,在应用122b请求了向文件F的偏移0的块重写数据D时,与第1实施方式同样地,遵从文件系统1210的COW动作,从设备驱动器123b向分级存储装置20依次送出读请求RR、写请求WR1及写请求WR2。

这时,如图30所示,访问计数表230包括分别具有LBA=1及LBA=2的条目3001及3002。此外,与LBA=1及LBA=2对应起来的条目3001及3002中的计数如图30所示分别为3及2。

存储控制器23在从计数校正部305向分级存储装置20发送如图29所示的计数校正信息[(LBA=1,校正计数=-2),(LBA=2,校正计数=+2)]时,根据该计数校正信息,如下校正访问计数表230。首先,存储控制器23选择包含在访问计数表230并且具有与计数校正信息的前部的要素(LBA=1,校正计数=-2)中的LBA(=1)相同的LBA的条目3001。并且,存储控制器23在条目3001中的计数=3加上校正计数=-2。由此,条目3001中的计数如图31所示被校正为1。

接着,存储控制器23选择包含在访问计数表230并且具有与计数校正信息的下一个(最后的)要素(LBA=2,校正计数=+2)中的LBA(=2)相同的LBA的条目3002。并且,存储控制器23在条目3002中的计数=2加上校正计数=+2。由此,条目3001中的计数如图31所示被校正为4。

访问计数表230的条目3001及3002中的计数的合计(第1合计)在校正前及校正后的任意的状态下都是5(图30及图31)。相对于此计数表302的条目2601及3602中的计数的合计(第2合计)为3(图27),与第1合计不一致。其理由是,守护进程124b仅将读请求RR、写请求WR1及写请求WR2中的写请求WR2识别为与来自应用122b的写请求WR对应。

但是,根据第3实施方式,即使在访问计数表230和计数表302产生计数的差异,也可以将访问计数表230校正为尽力接近于与应用122b识别的文件的访问的状况一致的计数。由此,分级存储装置20的存储控制器23在文件系统1210的COW功能有效的情况下也可以实现比较准确地反映由应用122b发出的访问请求的状况的分级化。

<第3实施方式的变形例>

接着,对第3实施方式的变形例涉及的分级存储系统进行说明。本变形例的第1特征在于,计算机10_1包括具有对有关快照的信息进行处理的功能的守护进程124c(图32)。因此,在本变形例中,如有必要将守护进程124读作守护进程124c。此外,与第3实施方式同样地,将图1所示的应用122及设备驱动器123分别读作应用122b及设备驱动器123b。

下面,关于第3实施方式的变形例的分级存储系统的功能构成,以与第3实施方式的功能构成不同的点为中心参照图32进行说明。图32是表示第3实施方式变形例涉及的分级存储系统的典型的功能构成的框图。在图32中,计算机10_1不同于第3实施方式的计算机,包括快照部126。此外,在图32中,计算机10_1包括代替第3实施方式的守护进程124b使用的守护进程124c。

快照部126执行文件的备份(即,快照)的制作及删除。为了该执行,快照部126向OS121发出快照的制作请求或删除请求。制作请求或删除请求包括与应制作或删除的快照有关的IO信息。该IO信息包括与应作为快照备份的文件或应删除的快照的文件对应的文件名、和该快照的快照名。

在本变形例中,文件的快照被制作在存储有该文件的区域(第1区域)。即,文件的快照不移动该文件的数据而制作。因此,快照的制作后,第1区域内的文件(即原来的文件)立即作为快照参照。因此,不需要用于快照的特别的区域。在COW功能有效的状态且应用122b变更原来的文件时,文件系统1210通过COW动作将文件的新的数据写入到与原来的文件的区域不同的区域。变更前的数据处于作为快照参照的状态。

快照部126向OS121发出快照的制作请求或删除请求时,将对应于该制作请求或删除请求的上述IO信息转交给守护进程124c。守护进程124c除第3实施方式所示的功能以外还具有管理快照的功能。

图33是表示图32所示的守护进程124c的典型的功能构成的框图。守护进程124c与第3实施方式的守护进程124b同样地包括文件-LBA表301、表管理部303、表管理部304、及计数校正部305。守护进程124c还包括代替第3方式的计数表302使用的计数表302c、及与图32所示的快照部126对应的快照管理部306。

图34表示图32所示的计数表302c的数据结构例。计数表302c的各条目组与第3实施方式的计数表302的条目组同样地包括域G1至G3。计数表302c的各条目组与计数302的条目组不同地还包括域G4。域G4表示存储在由对应的条目的域G1的内容(LBA)所示的逻辑块的数据作为不同的快照同时被参照的数(被参照数)。

图33所示的快照管理部306根据来自快照部126的、对应于快照制作请求的IO信息[文件名、快照名]执行第1快照管理处理。此外,快照管理部306根据来自快照部126的与快照删除请求对应的IO信息[文件名、快照名]执行第2快照管理处理。

接着,关于在第3实施方式的变形例中通过快照管理部306执行的第1快照管理处理,参照图35进行说明。图35是表示第1快照管理处理的典型的顺序的流程图。

首先,假设快照部126向文件系统1210发出了快照制作请求。假设快照制作请求包括文件F的文件名F1及快照名SS1的组。由此,文件系统1210将以文件名F1表示的文件F作为以快照名SS表示的快照来管理。快照部126将与快照制作请求所包含的文件名F1及快照名SS1的组相同的IO信息[文件名=F1,快照名=SS1]转交给守护进程124c。

于是,守护进程124c的快照管理部306如下地执行在图35的流程图表示的第1快照管理处理。首先,快照管理部306接收从快照部126转出的IO信息[文件名=F1,快照名=SS1](步骤S71)。

接着,快照管理部306从文件-LBA表301选择具有与领取文件名F1一致的文件名的全部条目(步骤S72)。并且,快照管理部306从被选择的全部条目提取LBA列表(步骤S73)。

接着,快照管理部306根据提取出的全部LBA列表中的全部LBA,参照包含在文件-LBA表301并且与该LBA分别对应的条目(步骤S74)。在步骤S74中,快照管理部306从被参照的全部条目选择表示最新的最终访问日期时间的条目,从被选择的条目提取LBA。即,快照管理部306从被参照的全部条目提取最终访问日期时间为最新的LBA。提取出的LBA表示应作为快照制作的文件(更详细地文件内的偏移)的存储有最新的数据的逻辑区域(块)。

接着,快照管理部306选择包含在计数表302c并且与包含提取出的LBA的LBA列表中的所有LBA分别对应的全部条目,将被选择的全部条目中的被参照数均增加1(步骤S75)。接着,快照管理部306将作为文件名具有领取快照名SS1并且作为LBA列表具有提取出的LBA(即,最新的LBA)的条目追加在文件-LBA表301(步骤S76)。快照管理部306作为被追加的条目中的偏移使用在步骤S72从文件-LBA表301选择的所有列表中、设定为具有包含最新的LBA的LBA列表的条目的偏移。若快照管理部306执行步骤S76,则结束第1快照管理处理。

接着,关于第3实施方式的变形例中通过快照管理部306执行的第2快照管理处理,参照图36进行说明。图36是表示第2快照管理处理的典型的顺序的流程图。

首先,假设快照部126向文件系统1210发出了快照删除请求。快照删除请求包括文件F的文件名F1及快照名SS1的组。快照部126将快照制作请求所包含的与文件名F1及快照名SS1的组相同的IO信息[文件名=F1、快照名SS1]转交给守护进程124c。

于是,守护进程124c的快照管理部306如下地执行图36的流程图所示的第2快照管理处理。首先,快照管理部306接收从快照部126转出的IO信息[文件名=F1,快照名=SS1](步骤S81)。

接着,快照管理部306从文件-LBA表301选择具有与领取快照名SS1一致的文件名的全部条目(步骤S82)。并且,快照管理部306执行步骤S83及S84。步骤S83及S84相当于上述的第1快照管理处理中的步骤S73及S74。因此,快照管理部306通过步骤S83及S84的执行提取最新的LBA。若有必要,在有关第1快照管理处理的上述的说明中,想要将步骤S73及S74读作步骤83及S84。

接着,快照管理部306选择包含在计数表302c并且与包含提取出的LBA的LBA列表中的所有LBA分别对应的全部条目,将被选择的全部条目中的被参照数均减少1(步骤S85)。接着,快照管理部306将具有通过减量操作(步骤S86)值变成0的被参照数的全部条目当作设为目标的条目从计数表302c检索(步骤S87)。

如果未检索到设为目标的条目(步骤S87的是),则快照管理部306计算检索出的全部条目中的计数的合计N,并且将该全部条目中的计数变更为0(步骤S88)。检索出的条目中的LBA表示过去作为1个以上的快照参照但是当前未被参照的数据的存储目标的逻辑块。并且,若仅检索出1个条目,快照管理部306将该1个条目中的计数作为合计N决定。

接着,快照管理部306通过参照文件-LBA表301,对检索出的条目中的包含LBA的LBA列表的全部条目进行确定(步骤S89)。在步骤S89中,快照管理部306从确定的全部条目中提取包含2个以上的LBA的全部LBA列表。提取出的LBA列表包括检索出的条目中的LBA。即,快照管理部306从文件-LBA表301提取出除了与检索出的条目中的LBA一致的LBA以外包含1个以上的LBA的2个以上的全部LBA列表。

接着,快照管理部306执行相当于第1(2)快照管理处理中的步骤S74(S84)的步骤S90。即,快照管理部306根据在步骤S89中提取出的所有LBA列表中的所有LBA,参照包含在文件-LBA表301并且与该LBA分别对应的全部条目。并且,快照管理部306从被参照的全部条目提取最终访问日期时间为最新的LBA。

接着,快照管理部306在被包含于计数表302c并且与在步骤S90提取出的最新的LBA对应的条目中的计数加上在步骤S88计算出的合计N(步骤S91)。即,快照管理部306在步骤S88中将变更为0的计数的变更前的值的合计N继承为对应于最新的LBA的条目中的计数。

接着,快照管理部306从文件-LBA表301删除在步骤S82选择的全部条目(步骤S92)。并且,快照管理部306结束第2快照管理处理。

根据第3实施方式的变形例,快照管理部306可以将与未作为快照参照的表示数据的存储目标的LBA对应的计数相加到与通过COW变更的表示存储目标的最新的LBA对应的计数。由此,在分级存储装置20的存储控制器23的文件系统1210的COW功能有效并且分级存储系统(的计算机10_1)适用快照的情况下也可以实现准确地反映通过应用122发出的访问请求的状况的分级化。

在上述第1至第3实施方式、及上述第3实施方式的变形例中,文件的各偏移的数据与该文件的制作时期无关地,根据访问计数重新配置到高速存储装置21或低速存储装置22。关于该重新配置简单地进行说明。

首先,假设文件Fa的偏移OFSTa的数据Da被存储在由LBAa指定的逻辑块LBa。这时,存储控制器23根据在访问计数表230中对应于LBAa的访问计数CNTa(例如,一定期间的访问计数)是否超过阈值TH,决定是否将数据Da重新配置在高速存储装置21或低速存储装置22的任意个。具体地,CNTa>TH并且数据Da配置在低速存储装置22时,该数据Da重新配置在高速存储装置21。

但是,文件Fa最近被制作时,需要CNTa超过TH的时间,数据Da在低速存储装置22配置比较长的期间。因此,文件Fa新制作时,存储控制器23可以将该文件Fa的各偏移的数据与访问计数无关地配置在高速存储装置21。在这种构成中,根据写时复制动作的特征,数据的重写也作为新写入对高速存储装置21进行。因此,具有高速存储装置21的记忆容量不足的可能性。

因此,存储控制器23例如将配置在高速存储装置21的文件的数据中、从制作经过一定期间并且对应的访问计数少的数据移动到低速存储装置22。在现有技术中,由于该访问计数受到写时复制动作的影响,所以不准确,因此难以向低速存储装置22适当地移动。相对于此,在上述第1至第3实施方式、及上述第3实施方式的变形例中,可以将与写时复制动作中的复制源的逻辑块地址对应的访问计数继承为与写时复制动作中的复制目标的逻辑块地址对应的访问计数,所以访问计数是准确的。因此,可以将访问计数少的数据适当地移动到低速存储装置22。

根据以上说明的至少1个实施方式,在写时复制功能有效的情况下也可以将存储控制器管理的访问计数校正为与应用识别的文件的访问的状况一致,可以实现有助于提高用户的方便性的分级化。

对本发明的几种实施方式进行了说明,这些实施方式是作为例子提示的,不企图限定发明的范围。这些新的实施方式可以由其它各种方式实施,在不脱离发明的主旨的范围内,进行各种省略、替换、变更。这些实施方式或其变形包含在发明的范围及主旨的同时,包含在权利要求书所记载的发明及其均等的范围。

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