CN104246722B - 用于基于哈希表排除数据重复的存储系统,存储控制器及方法 - Google Patents
用于基于哈希表排除数据重复的存储系统,存储控制器及方法 Download PDFInfo
- Publication number
- CN104246722B CN104246722B CN201380000362.4A CN201380000362A CN104246722B CN 104246722 B CN104246722 B CN 104246722B CN 201380000362 A CN201380000362 A CN 201380000362A CN 104246722 B CN104246722 B CN 104246722B
- Authority
- CN
- China
- Prior art keywords
- bulk
- page
- cryptographic hash
- hash
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Abstract
根据实施方式,存储控制器具备分割部、重复管理部以及重复判定部。所述分割部将由来自主计算机的写入请求所指定的数据分割成多个大块。所述重复管理部在第1大块被写入到存储装置的情况下,将所述第1大块的第1哈希值与所述第1大块建立对应,并优先地登记到哈希表的第1表中。所述哈希表包含具有比所述第1表多的条目的第2表。所述重复判定部,在计算出第2大块的第2哈希值的情况下,首先从所述第1表中搜索与所述第2哈希值一致的第3哈希值。
Description
技术领域
本发明的实施方式涉及用于基于哈希表排除数据重复的存储系统、存储控制器及方法。
背景技术
近年,为了保存在信息处理系统中处理的大规模的数据(大量数据),存储装置的大容量化正在进展。大量数据一般包含较多的重复的数据。为此,在存储装置中保存有大量数据的情况下,该存储装置的记忆区域的一部分被较多的重复的数据所占据。这意味着,存储装置的记忆容量被浪费地使用。因此,为了有效地使用存储装置的受限的记忆容量,需要从应当保存于该存储装置的数据中排除重复的数据。
以下,对现有技术中应用的排除重复的数据的方法的例子进行叙述。存储控制器在对存储装置写入数据的情况下,判定与该应当写入的数据相同的数据是否已被写入到该存储装置。为了进行该判定,存储控制器将应当写入的数据(文件)分割成被称为大块(chunk)的固定长的数据的块。
存储控制器针对每个大块、用哈希函数计算哈希值。存储控制器在将哈希值的计算中所用的大块写入存储装置时,将该哈希值与该大块建立对应并登记到哈希表中。
因此,存储控制器在计算出应当新写入存储装置的第1大块的哈希值时,判定与该哈希值相同的哈希值是否登记于哈希表中。若进一步具体地叙述,存储控制器基于相同的哈希值是否登记于哈希表中,判定与第1大块重复的数据是否已写入到存储装置。存储控制器仅在与第1大块重复的数据未被写入的情况下,将该第1大块写入存储装置。由此,从存储装置排除重复的数据。
在写入到存储装置的大块的数目增多时,与这些大块建立对应并在哈希表中登记的哈希值的数目也增多。因此,现有技术为了登记多个哈希值,应用使用具有相同数目条目的多个表并构成为多级的哈希表。
现有技术文献(专利文献)
专利文献1:日本特开平3-282966号公报
专利文献2:日本特表2012-505440号公报
发明内容
发明要解决的课题
如上所述,在哈希表被用于登记多个哈希值的情况下,保存该哈希表所需的记忆容量也变大。将这种哈希表整体保存于存储控制器具有的存储器是困难的。因此,哈希表一般保存于如保存大量数据所用的大容量的存储装置、或者存储控制器具有的硬盘驱动器(HDD)那样的本地存储装置。另一方面,现有技术应用利用具有相同数目条目的多个表并构成为多级的哈希表。
因此,存储控制器为了比较哈希值而对这种结构的哈希表进行搜索的情况下,在该存储控制器与存储装置之间将产生很多的输入输出(I/O)处理。这样,在伴随着用于排除数据重复的哈希值的比较而产生很多I/O处理时,存储装置的写入性能(写入速度)低下。
本发明要解决的课题在于,提供能够使得用于排除数据重复的哈希表搜索高速化的存储系统、存储控制器及方法。
用于解决课题的手段
根据实施方式,存储系统具备存储装置、存储控制器以及哈希表。所述存储控制器控制对所述存储装置的访问。所述哈希表包含具有第1数目的条目的第1表及具有比所述第1数目大的第2数目的条目的第2表。所述存储控制器具备分割部、哈希生成部、访问控制器、重复管理部以及重复判定部。所述分割部将由来自主计算机的写入请求所指定的数据分割成多个大块。所述哈希生成部基于所述多个大块的各自的数据,计算所述多个大块的各自的具有第1长度的哈希值。所述访问控制器对所述存储装置写入大块。在所述存储装置被写入第1大块的情况下,所述重复管理部将所述第1大块的第1哈希值与所述第1大块建立对应并优先地登记到所述哈希表的所述第1表。所述重复判定部,在计算出第2大块的第2哈希值的情况下,使从所述第1表的搜索优先来执行从所述哈希表搜索与所述第2哈希值一致的第3哈希值的处理,由此判定具有与所述第2大块相同内容的第3大块是否保存于所述存储装置。所述重复管理部,在判定为所述第3大块保存于所述存储装置的情况下,抑制所述第2大块被写入所述存储装置。
附图说明
图1是表示实施方式涉及的计算机系统的典型的硬件结构的框图。
图2是以图1所示的存储控制器的典型的功能结构为主进行表示的框图。
图3是表示通过来自主计算机的写入请求所指定的文件的数据与大块的关系的例子的图。
图4是表示图2所示的哈希表的数据结构例的图。
图5是表示图4所示的哈希表所包含的第1级的表具有的叶页的数据结构例的图。
图6是表示图5所示的管理信息的格式的例子的图。
图7是表示图5所示的其他的管理信息的格式的例子的图。
图8是表示图2所示的元表(Meta Table)的数据结构例的图。
图9是表示图2所示的大块表的数据结构例的图。
图10是表示对同实施方式中的数据写入处理的典型的步骤进行说明所用的流程图的一部分的图。
图11是表示对同数据写入处理的典型的步骤进行说明所用的流程图的其他的一部分的图。
图12是表示对同数据写入处理的典型的步骤进行说明所用的流程图的剩余部分的图。
图13是表示对同实施方式中的哈希值搜索处理的典型的步骤进行说明所用的流程图的一部分的图。
图14是表示对同哈希值搜索处理的典型的步骤进行说明所用的流程图的剩余部分的图。
图15是表示由从主计算机依次发送的三个文件写入请求所指定的三个文件与通过该三个文件被每隔恒定的尺寸来划分而取得的大块的关系的例子的图。
图16是表示哈希表中包含的第1级的表的内容的变化的例子的图。
图17是表示元表的内容的变化的例子的图。
图18是表示大块表的内容的变化的例子的图。
具体实施方式
以下,参照附图对实施的方式进行说明。
图1是表示实施方式涉及的计算机系统的典型的硬件结构的框图。所述计算机系统包括存储系统10及主计算机(以下,称为主机的装置)20。存储系统10经由网络30与主机20连接。
主机20是服务器、或者客户端个人计算机(客户端PC)这样的物理计算机。在主机20内,用于对存储系统10内的数据进行访问的应用程序动作。按照该应用程序,主机20将存储系统10(更详细而言,存储系统10的后述的HDD/SSD阵列11)作为外部记忆装置并经由网络30来利用。网络30例如是存储区域网络(SAN)、因特网(Internet)或者内部网(intranet)。因特网或者内部网例如由以太网(登记商标)来构成。此外,主机20也可以经由光纤通道(FC)、小型计算机系统接口(SCSI)总线、串行SCSI(SAS)总线、或者串行高级技术附件(SATA)总线那样的主机接口总线与存储系统10连接。
存储系统10包括HDD/SSD阵列11及存储控制器12。在本实施方式中,HDD/SSD阵列11及存储控制器12构成存储装置。HDD/SSD阵列11是用例如多个硬盘驱动器及多个固态硬盘(SSD)所构成的RAID(Redundant Arrays of Inexpensive Disks或Redundant Arraysof Independent Disks)阵列。HDD/SSD阵列11经由存储接口总线13与存储控制器12(更详细而言,存储控制器12的未图示的存储接口)连接。在本实施方式中,存储接口总线13是FC(光纤通道)。然而,存储接口总线13也可以是SCSI总线、SAS总线、或者SATA总线那样的、FC以外的接口总线。
存储控制器12经由存储接口总线13来控制对HDD/SSD阵列11的访问。存储控制器12经由网络30与主机20连接。存储控制器12从主机20受理通过指定逻辑地址而进行的读出请求或写入请求。存储控制器12通过地址转换功能将所指定的逻辑地址转换为物理地址,该物理地址表示映射了该逻辑地址的HDD/SSD阵列11内的物理区域。若以数据读出的情况为例更详细地叙述,存储控制器12将逻辑地址转换为分配给以该逻辑地址所指定的数据(大块)的大块编号。关于大块,后述。存储控制器12将大块编号转换为物理地址,该物理地址表示保存有该大块编号所示的大块的HDD/SSD阵列11内的物理区域。存储控制器12基于该物理地址访问HDD/SSD阵列11。
存储控制器12包括CPU121、存储器122及硬盘驱动器(HDD)123。CPU121按照存储器122内的后述的控制程序区域122a中所保存的控制程序的程序编码,在存储控制器12中执行被请求的处理。存储器122例如是用多个DRAM所构成的易失性存储器。HDD123是本地存储装置,用于保存控制程序及各种表。此外,也能够使用搭载了多个闪存器的存储装置代替HDD123。
在本实施方式中,存储控制器12包括于包含HDD/SSD阵列11的存储装置。然而,存储控制器12也可以独立于存储装置而被包括。此情况下,存储控制器12也可以内置于主机20。另外,存储控制器12(更详细而言,存储控制器12的功能)也可以用主机20具有的操作系统(OS)的功能的一部分来实现。
另外,存储控制器12也可以包括于在主机20的插件槽中安装并被使用的卡片。另外,也可以是,存储控制器12的一部分内置于主机20,该存储控制器12的剩余部分包括于所述卡片。
另外,也可以应用例如用多个HDD而构成的RAID阵列、或用多个SSD而构成的RAID阵列,来代替HDD/SSD阵列11。另外,也可以应用不具有RAID结构的仅仅多个存储驱动的集合(驱动阵列),来代替HDD/SSD阵列11(即RAID阵列)。
图2是以图1所示的存储控制器12的典型的功能结构为主进行表示的框图。存储控制器12包括分割部200、重复管理部201、重复判定部202、哈希生成部203及访问控制器204。关于分割部200、重复管理部201、重复判定部202、哈希生成部203及访问控制器204的功能,后述。这些功能要素200至204是通过由图1所示的存储控制器12的CPU121执行控制程序而实现的软件模块。然而,功能要素200至204的一部分或全部也可以通过硬件模块来实现。
存储器122包含控制程序区域122a、表区域122b及工作区域122c。控制程序区域122a用于保存由CPU121执行的控制程序的至少一部分。该控制程序如前所述那样、预先保存于HDD123,该控制程序的至少一部分在存储控制器12的起动时从该HDD123载入到控制程序区域122a。
表区域122b用于对保存于HDD123的各种表的至少一部分进行保存。工作区域122c用于保存CPU121执行控制程序时所利用的临时性的数据。
HDD123(即,本地存储装置)除了保存上述的控制程序以外,还保存后述的哈希表205、元表206及大块表207。即HDD123包含分别保存控制程序、哈希表205、元表206及大块表207的记忆区域。
图3表示通过来自主机20的写入请求所指定的文件的数据与大块的关系的例子。分割部200将图3所示的文件分割成固定长、例如4千比特(4K比特)的数据的块。将该每4K比特的数据的块称为大块。重复管理部201对每个大块管理重复的有无。在图3的例子中,文件F的尺寸为4NK比特。此情况下,文件F被分割成N个大块#0至#N-1。重复管理部201对大块#0至#N-1赋予唯一的识别编号即大块编号。在本实施方式中,大块编号以8比特表示。
接着,对在HDD123中保存的哈希表205的概要进行说明。哈希表205用于对被赋予了大块编号的每个大块登记哈希信息。哈希信息例如包含基于对应的大块而计算出的32比特的哈希值与该大块的8比特的大块编号的对。即,哈希表205用于登记哈希信息,该哈希信息是指,将大块的哈希值与该大块的大块编号建立关联的哈希信息。
哈希表205用于由重复判定部202来判定具有与应当写入HDD/SSD阵列11的大块相同内容的大块是否已被写入到该HDD/SSD阵列11。重复管理部201基于该重复判定部202的判定的结果,排除具有相同内容的多个大块被重复写入到HDD/SSD阵列11。由此,数据的重复排除能够实现。
在此,对本实施方式中应用的数据的重复排除的概要进行说明。首先,设想从主机20向存储系统10的存储控制器12请求包含大块A的文件的写入。另外,设大块A的哈希值为H(A)。重复判定部202将大块A的哈希值H(A)与登记到哈希表205的哈希值依次比较。基于该比较的结果,重复判定部202判定HDD/SSD阵列11中保存有具有与大块A相同内容的大块(以下,称为代表大块A)。
如果哈希表205中登记有与哈希值H(A)一致的哈希值(即,哈希值H(A)),则重复判定部202判定为HDD/SSD阵列11中保存有代表大块A。即,重复判定部202判定为大块A重复。另一方面,如果哈希表205中未登记有哈希值H(A),则重复判定部202判定为大块A不重复。
在判定为大块A不重复的情况下,访问控制器204在由写入请求所指定的HDD/SSD阵列11的地址中写入大块A。更详细而言,访问控制器204将大块A写入到由被分配到来自主机20的写入请求所指定的逻辑地址的物理地址所示的HDD/SSD阵列11的物理区域。此时,重复管理部201将哈希信息登记到哈希表205,该哈希信息包含哈希值H(A)与大块A的大块编号的对。
另一方面,在判定为大块A重复的情况下,重复管理部201抑制访问控制器204将大块A写入HDD/SSD阵列11。此情况下,重复管理部201对由来自主机20的写入请求所指定的逻辑地址分配物理地址,该物理地址是指已在HDD/SSD阵列11中写入代表大块A的物理地址(即映射)。
图4表示图2所示的哈希表205的数据结构例。哈希表205用多个表构成为多级。在图4的例子中,哈希表205用7个表TBL_1、TBL_2、TBL_3、TBL_4、TBL_5、TBL_6及TBL_7构成。即哈希表205为7段结构的表。在此,表TBL_h(h=1,2,3,4、5,6,7)是哈希表205中的第h级的表。
表TBL_1至TBL_7任一个都包含“kmax+1”个页(以下,称为叶页)。在此,表TBL_h的第k个(k=0,1,…,kmax)叶页如LP_k(h)那样标记。叶页LP_k(h)与后述的组G_k(组编号k或组索引k)建立了对应。叶页LP_k(h)用于登记哈希信息,该哈希信息是指,包含属于组G_k的哈希值(更详细而言,后述的第一阶段哈希值(first stage hash value))与用于确定在该哈希值的计算中所用的大块的大块编号的对的哈希信息。
表TBL_1至TBL_7的叶页LP_k(1)至LP_k(7)的尺寸不同,因此,在登记哈希信息中所用的条目的数目也不同。在此,设表TBL_1、TBL_2、TBL_3、TBL_4、TBL_5、TBL_6及TBL_7的叶页LP_k(1)、LP_k(2)、LP_k(3)、LP_k(4)、LP_k(5)、LP_k(6)及LP_k(7)的尺寸(条目数)分别为SIZE_1(EN_1)、SIZE_2(EN_2)、SIZE_3(EN_3)、SIZE_4(EN_4)、SIZE_5(EN_5)、SIZE_6(EN_6)及SIZE_7(EN_7)。此情况下,在这些尺寸(条目数)之间,存在如下的关系:
SIZE_1<SIZE_2<SIZE_3<SIZE_4<SIZE_5<SIZE_6<SIZE_7
EN_1<EN_2<EN_3<EN_4<EN_5<EN_6<EN_7。
即,在本实施方式中,构成哈希表205的7个表TBL_1、TBL_2、TBL_3、TBL_4、TBL_5、TBL_6及TBL_7具有的叶页LP_k(1)、LP_k(2)、LP_k(3)、LP_k(4)、LP_k(5)、LP_k(6)及LP_k(7)的尺寸(条目数)中,表TBL_1(即第1级的表TBL_1)的尺寸最小。以下,按表TBL_2、TBL_3、TBL_4、TBL_5、TBL_6及TBL_7的顺序,叶页的尺寸(条目数)变大。
表TBL_1的各叶页LP_k(1)具有例如96条目。表TBL_2的各叶页LP_k(2)具有例如192条目(即,叶页LP_k(1)的尺寸的2倍的条目)。表TBL_3的各叶页LP_k(3)具有例如384条目(即,叶页LP_k(2)的尺寸的2倍的条目)。表TBL_4的各叶页LP_k(4)具有例如768条目(叶页LP_k(3)的尺寸的2倍的条目)。表TBL_5的各叶页LP_k(5)具有例如1536条目(即,叶页LP_k(4)的尺寸的2倍的条目)。表TBL_6的各叶页LP_k(6)具有例如3,072条目(即,叶页LP_k(5)的尺寸的2倍的条目)。表TBL_7的各叶页LP_k(7)具有例如6,144条目(即,叶页LP_k(6)的尺寸的2倍的条目)。
在本实施方式中,哈希表205为了对该哈希表205的访问的高速化而被从HDD123载入到存储器122的表区域122b中使用。但是,因为存储器122的表区域122b的容量的制约,并不是哈希表205整体被载入到存储器122,而是仅仅从哈希表205选择出的1个叶页被载入到存储器122的表区域122b。
在本实施方式中,用32比特的哈希值作为大块(4K比特的大块)的哈希值。哈希生成部203在计算该32比特的哈希值时,应用例如被称为“SHA-256”的第1哈希函数。将该32比特的哈希值称为第一阶段哈希值。
在此,设在HDD/SSD阵列11中保存的全部大块的第一阶段哈希值与大块编号的对不被分类就被分散登记到表TBL_1至TBL_7中。此情况下,在表TBL_1~TBL_7中保存的第一阶段哈希值与大块编号的对的数目变得庞大。为此,从表TBL_h(h=1,2,3,4、5,6,7)中搜索例如与前述的哈希值H(A)一致的哈希值需要很多时间。
因此,在本实施方式中,重复管理部201基于第一阶段哈希值,将应当登记到表TBL_1~TBL_7中的该第一阶段哈希值(即,32比特的哈希值)的集合分类为“kmax+1”个组G_0至G_kmax。组G_0至G_kmax分别与组编号0至kmax建立对应。表TBL_1~TBL_7的各自的“kmax+1”个叶页与组G_0至G_kmax(即组编号0至kmax)建立了对应。例如,表TBL_h的叶页LP_0(h)至LP_kmax(h)与组G_0至G_kmax建立了对应。在此,kmax”例如为16,777,216(16进制表现时为0xFFFFFF)。0xFFFFFF中的“0x”表示附有该“0x”的FFFFFF为16进制表现。
为了重复管理部201进行的上述的分类,哈希生成部203基于第一阶段哈希值生成用于确定该第一阶段哈希值所属的组的作为组编号的索引(以下,称为组索引)。在本实施方式中,该组索引中使用基于第一阶段哈希值算出的3比特的哈希值。将该3比特的哈希值称为第二阶段哈希值(second stage hash value)。该第二阶段哈希值(即组索引)的计算中用第2哈希函数。关于该第2哈希函数,后述。
重复管理部201例如将与第二阶段哈希值(组索引)0(=0x000000)对应的第一阶段哈希值的集合作为具有组编号0的组G_0来管理。同样地,重复管理部201将与第二阶段哈希值1(0x000001)对应的第一阶段哈希值的集合作为具有组编号1的组G_1来管理,将与第二阶段哈希值2(0x000002)对应的第一阶段哈希值的集合作为具有组编号2的组G_2来管理。同样地,重复管理部201将与第二阶段哈希值kmax(0xFFFFFF)对应的第一阶段哈希值的集合作为具有组编号kmax的组G_kmax来管理。即重复管理部201将与第二阶段哈希值k对应的第一阶段哈希值的集合作为具有组编号k的组G_k来管理。
这样,在本实施方式中,重复管理部201用第二阶段哈希值(即组索引),将对应的第一阶段索引值的集合分类为16,777,216个(即“kmax+1”个)组。由此,与第一阶段索引值的集合未被组化的情况相比较,能够将哈希表205中的搜索范围减小为16,777,216分之一。
在此,对第2哈希函数进行说明。如前所述,第2哈希函数用于作为组索引的第二阶段哈希值的计算。在本实施方式中,该第2哈希函数使用除法函数。该除法函数用规定的质数作为除数。具体而言,该除数例如使用比以3比特表现的最大的数值(16,777,216)小并且最接近该最大的数值的质数(16,777,213)。第二阶段哈希值是基于除法函数(第2哈希函数),以质数16,777,213除第一阶段哈希值而取得的余数。除法函数的除数使用这种质数,由此能够将分别属于组G_0至G_kmax的第一阶段哈希值的集合随机化。
在应用了上述的第2哈希函数的情况下,第二阶段哈希值的总数(即,组索引的总数)为16,777,213(0xFFFFFC)。此情况下,第二阶段哈希值“kmax-2”(=16,777,214)、“kmax-1”(=16,777,215)及kmax(=16,777,216)不存在。然而,在本实施方式中,为了简化管理,重复管理部201也管理分别与第二阶段哈希值“kmax-2”、“kmax-1”及kmax对应的组G_(kmax-2)、G_(kmax-1)及G_kmax。此外,组G_(kmax-2)、G_(kmax-1)及G_kmax未必是必要的。
接着,举例对表TBL_1至TBL_7的各叶页的数据结构进行说明。图5表示在图4所示的哈希表205中包含的表TBL_1(即第1级的表TBL_1)具有的第k个叶页LP_k(1)的数据结构例。叶页LP_k(1)与组G_k建立了对应。
叶页LP_k(1)包括8个扇区ST_0至ST_7。扇区如周知那样,是对如硬盘驱动器(HDD)或者固态硬盘(SSD)那样的存储驱动进行访问时的最小单位。在本实施方式中,1扇区的尺寸为512比特。扇区ST_0至ST_7分别包含登记哈希信息时所用的12个条目。因此,叶页LP_k(1)如前所述那样、具有96(8×12=96)个条目。哈希信息的尺寸例如为40比特。哈希信息包含32比特的哈希值(第一阶段哈希值)与8比特的大块编号的对。扇区ST_0至ST_7进一步包含管理信息MI1_0至MI1_7。管理信息MI1_0至MI1_7的各自的尺寸例如为32比特。关于管理信息MI1_i(i=0,1,…,i(1)max),后述。此外,i(1)max是从叶页LP_k(1)具有的扇区的数目中减去1而获得的数,为7。
表TBL_2至TBL_7具有的第k个叶页LP_k(2)至LP_k(7)的数据结构也与图5所示的叶页LP_k(1)的数据结构同样。但是,叶页LP_k(2)至LP_k(7)具有的扇区的数目如依据前述的条目数的差异所知那样,是不同的。
例如,叶页LP_k(2)、LP_k(3)及LP_k(4)分别具有16扇区(192条目)、32扇区(384条目)及64扇区(768条目)。即,i(2)max、i(3)max及i(4)max分别为15、31及63。另外,叶页LP_k(5)、LP_k(6)及LP_k(7)分别具有128扇区(1,536条目)、256扇区(3,072条目)及512扇区(6,144条目)。即,i(5)max、i(6)max及i(7)max分别为128、256及512。
接着,对向如上所述的数据结构的哈希表205登记哈希信息(即哈希表205的更新)的概要进行说明。如前所述,哈希表205包括表TBL_1至TBL_7。表TBL_1具有基于3比特的第二阶段哈希值0x000000至0xFFFFFF(即组索引)而分类的“kmax+1”个(即16,777,216个)叶页LP_0(1)至LP_kmax(1)。
例如在具有第二阶段哈希值0x000000的第1大块被写入到HDD/SSD阵列11的情况下,重复管理部201在通过该第二阶段哈希值0x000000指定的第1级的表TBL_1的叶页LP_0(1)中登记第1哈希信息。该第1哈希信息包含第1大块的第一阶段哈希值与该第1大块的大块编号的对。同样地,例如在具有第二阶段哈希值0x000001的第2大块被写入到HDD/SSD阵列11的情况下,重复管理部201在通过该第二阶段哈希值0x000001指定的第1级的表TBL_1的叶页LP_1(1)中登记第2哈希信息。该第2哈希信息包含第2大块的第一阶段哈希值与该第2大块的大块编号的对。
第1级的表TBL_1的叶页LP_k(1)(k=0,1,…,kmax)具有96条目(EN_1=96)。为此,例如在具有第二阶段哈希值0x000000的96个大块已被写入到HDD/SSD阵列11的情况下,叶页LP_0(1)充满。在该状态下,例如无法将上述的第1哈希信息登记到叶页LP_0(1)中。即,需要增设的叶页。
因此,在本实施方式中,哈希表205进一步包括提供增设的叶页LP_k(2)的第2级的表TBL_2。第2级的表TBL_2的叶页LP_k(2)当在第1级的表TBL_1中叶页LP_k(1)达到充满的情况下使用。根据该情况,可以说,表TBL_1(即第1级的表TBL_1)是哈希表205中的基本的表。
另外,在第1级的表TBL_1的叶页LP_0(1)达到充满的状态下,如上所述那样,设第1大块(即,具有第二阶段哈希值0x000000的第1大块)被写入到HDD/SSD阵列11。此情况下,重复管理部201在第2级的表TBL_2的叶页LP_0(2)中登记第1哈希信息。第2级的表TBL_2的叶页LP_k(2)(k=0,1,…,kmax)具有192条目(EN_2=192)。因此,例如叶页LP_0(2)的192条目也达到充满的情况下,无法在该叶页LP_0(2)中登记新的哈希信息。
因此,哈希表205进一步包括提供增设的叶页LP_k(3)的第3级的表TBL_3。叶页LP_k(3)当在第2级的表TBL_2中叶页LP_k(2)达到充满的情况下使用。第3级的表TBL_3的叶页LP_k(3)具有384条目(EN_3=384)。同样地,哈希表205还包括提供增设的叶页LP_k(4)的第4级的表TBL_4。叶页LP_k(4)当在第3级的表TBL_3中叶页LP_k(3)达到充满的情况下使用。第4级的表TBL_4的叶页LP_k(4)具有768条目(EN_4=768)。
同样地,哈希表205还包括提供增设的叶页LP_k(5)的第5级的表TBL_5。第5级的表TBL_5的叶页LP_k(5)具有1,536条目(EN_5=1,536)。同样地,哈希表205还包括提供增设的叶页LP_k(6)的第6级的表TBL_6、提供增设的叶页LP_k(7)的第7级的表TBL_7。第6级的表TBL_6的叶页LP_k(6)具有3,072条目(EN_6=3,072),第7级的表TBL_7的叶页LP_k(7)具有6,144条目(EN_6=6,144)。即,哈希表205针对每个第二阶段哈希值(即组索引)具有12,192个条目。
在此,对如上所述的哈希表205的结构的意义进行说明。在哈希表205中所登记的哈希值的量随着在HDD/SSD阵列11中保存的数据的量(大块数)变多而增大。在这种状况下,哈希表205所需的记忆容量一般成为也无法在存储器122中保存的大小(例如,超过数GB的大小)。为此,哈希表205如本实施方式那样、保存于HDD123(即,本地存储装置)。此外,哈希表205也可以保存于HDD/SSD阵列11。
在哈希表205所需的记忆容量变大时,存储控制器12(更详细而言,存储控制器12的重复判定部202)为了搜索哈希值,需要重复将该哈希表205的全部条目的一部分读入到存储器122的动作。为此,在存储控制器12与存储装置之间,产生较多的输入输出(I/O)处理。
另外,在一般的存储系统中,以最初分配到逻辑卷的记忆容量(例如,最小的单位的记忆容量)开始运用。逻辑卷是指,由主机识别为逻辑的存储驱动的记忆区域。逻辑卷中,例如每隔4K(千)比特适当分配HDD/SSD阵列11的记忆区域(物理区域)。这种存储系统具有根据运用开始后的状况使逻辑卷的记忆容量灵活地增加的功能。本实施方式中的存储系统10也是同样的。
在这种具有记忆容量增设功能并且具有重复排除功能的存储系统中,在运用开始时,准备与分配了最小单位的记忆容量的逻辑卷对应的基准的大小RS的哈希表。并且,在分配给逻辑卷的记忆容量增加到最小的单位的M倍(M是比1大的整数)的情况下,哈希表也增加到基准的大小RS的M倍。
在本实施方式中,能够对逻辑卷分配的记忆容量的最小的单位是6太拉(T)比特。设该6T比特的数据如前所述那样、被分割成4K比特的大块。
重复管理部201基于各大块的32比特的哈希值(第一阶段哈希值),排除具有相同内容的多个大块(即重复的大块)被保存于HDD/SSD阵列11的情况。此情况下,哈希表205中登记的大块的数目(即,排除重复后的大块的数目)以一定的可能性不超过16,777,216×96是众所周知的。
16,777,216如前所述那样、是在第一阶段哈希值的集合被按第二阶段哈希值来分类的情况下获得的组G_0至G_kmax(组索引)的总数。96是与各组G_k(k=0,1,…,kmax)建立了对应的表TBL_1的叶页LP_k(1)具有的条目的数目(EN_1)。因此,表TBL_1能够应用于6T比特的逻辑卷的数据的重复排除。即,在逻辑卷的记忆容量为6T比特的情况下,具有16,777,216×96条目的表TBL_1的大小为上述的基准的大小RS。
在此,逻辑卷的记忆容量从例如6T比特增加到12T比特或24T比特的情况下,仅仅表TBL_1,条目数不足。此情况下,需要将哈希表205的大小扩展为基准的大小RS的2倍或4倍。同样地,逻辑卷的记忆容量从例如6T比特增加到516T比特的情况下,需要将哈希表205的大小扩展为基准的大小RS的86倍。
若是现有技术,则为了进行该扩展,具有基准大小RS的85个第2至第86的表被追加至具有基准大小R的第1表(即构成运用开始时的哈希表的第1表)。可知,第2至第86的表任一个都具有与第1表具有的条目数相同数目的条目。第1表用作多级结构的哈希表的第1级的表。第2至第86的表分别用作多级结构的哈希表的第2级至第86级的表。
此情况下,存储控制器为了从第1至第86的表中搜索哈希值,需要将该第1至第86的表依次读入到存储器。因此,在现有技术中,关于哈希表,即使使存储器具有用于保存16,777,216×96条目的表区域,也需要86次I/O处理。
与之相对,在本实施方式中,第1级的表TB_1中被追加第2级的表TBL_2至第7级的表TBL_7。第2级的表TBL_2、第3级的表TBL_3及第4级的表TBL_4分别具有第1级的表TB_1所具有的条目数的2倍、4倍及8倍的条目。另外,第4级的表TBL_4、第5级的表TBL_5及第6级的表TBL_6分别具有第1级的表TB_1所具有的条目数的16倍、32倍及64倍的条目。
此情况下,哈希表205的总条目数成为第1级的表TB_1的条目数的127倍,充分地超过了支持516T比特的记忆容量的逻辑卷所需的总条目数(即,第1级的表TB_1的总条目数的86倍)。在应用这种结构的哈希表205的本实施方式中,存储控制器12在从第1级的表TB_1至第7级的表TBL_7中搜索哈希值的情况下,至多进行7次的I/O处理就结束。
因此,根据本实施方式,与现有技术相比较,能够大幅削减伴随着哈希值搜索的表访问所需的I/O处理的次数。由此,根据本实施方式,能够实现哈希值搜索的高速化,能够提高与重复排除有关的处理能力,进一步能够提高存储系统10的写入性能(写入速度)。
而且,在本实施方式中,存储控制器12无需为了搜索哈希值而将第1级的表TB_1至第7级的表TBL_7的各自的整体读入到存储器122。即,存储控制器12仅仅只将包含第1级的表TB_1至第7级的表TBL_7并且与第二阶段哈希值(更详细而言,以第二阶段哈希值确定的组)建立了对应的叶页读入到存储器122即可。
并且,在本实施方式中,最大的尺寸的叶页是第7级的TBL_7的叶页LP_k(7)。该叶页LP_k(7)具有6,144个条目。因此,在本实施方式中,存储控制器12通过上述的I/O处理,最大将具有6,144个条目的叶页从存储装置(更详细而言,HDD123)读入到存储器(更详细而言,存储器122)即可。换言之,存储器122关于哈希表205、仅具有用于保存6,144条目的表区域即可。
因此,根据本实施方式,与现有技术相比,能够大幅减小哈希值搜索的范围。由此,根据本实施方式,能够实现哈希值搜索的进一步的高速化,能够进一步提高存储系统10的写入性能。
图6表示图5所示的管理信息MI1_0的格式的例子。管理信息MI1_0如前所述,被登记于表TBL_1具有的叶页LP_k(1)的开头的扇区ST_0。管理信息MI1_0包含8个字段F0至F7。字段F0至F7的各自的长度为2比特。
管理信息MI1_0的字段F0用于设定使用条目计数CNT。使用条目计数CNT表示在登记管理信息MI1_0(即,包含字段F0的管理信息MI1_0)的扇区ST_0中在哈希信息的登记时所使用的条目的数目。
管理信息MI1_0的字段F1至F7用于设定使用条目计数CNT1至CNT7。使用条目计数CNT1至CNT7表示在表TBL_1至TBL_7的叶页LP_k(1)至LP_k(7)中在哈希信息的登记时所使用的条目的数目。
图7表示图5所示的管理信息MI1_i(i=1,2,…,7)的格式的例子。管理信息MI1_i如前所述那样、被登记到表TBL_1具有的叶页LP_k(1)的扇区ST_i(即,除了扇区ST_0外的扇区)。管理信息MI1_i包含字段F0。字段F0的长度为2比特。
管理信息MI1_i的字段F0与管理信息MI1_0同样地,在设定使用条目计数CNT时使用。该使用条目计数CNT表示在登记管理信息MI1_i的扇区ST_i中在哈希信息的登记时所使用的条目的数目。图7所示的管理信息MI1_i的格式也被应用于在表TBL_2至TBL_7具有的叶页LP_k(2)至LP_k(7)的全部扇区中登记的管理信息。
图8表示图2所示的元表206的数据结构例。元表206用于对大块进行管理,该大块是指,被写入到通过按每4K(千)比特划分逻辑卷而获得的各区域(4K比特区域)的大块。元表206具有与对逻辑卷的各个4K比特区域(更详细而言,在4K比特区域中保存的大块)进行指示的逻辑地址建立了对应的条目的集合。
元表206的各条目用于对在与该条目建立了对应的逻辑地址表示的4K比特区域中保存的大块的大块编号进行登记。即元表206是为了表示写入于各4K比特区域的大块而将该4K比特区域的逻辑地址与分配给该大块的大块编号建立了对应的表。因此,重复管理部201能够通过参照元表206来确定在以目的的逻辑地址所指定的区域中保存着的大块。
图9表示图2所示的大块表207的数据结构例。大块表207具有与大块编号建立了对应的条目的集合。大块表207的各条目用于对具有与该条目建立了对应的大块编号的大块所涉及的大块信息进行登记。大块信息包含物理地址及参照计数RCNT。
大块表207的各条目具有物理地址字段及参照计数字段。物理地址字段用于登记物理地址,该物理地址是指,对具有与具有该物理地址字段的条目(以下,称为对应条目)建立了对应的大块编号的大块的物理位置进行指示的物理地址。大块的物理位置是指,实际保存有该大块的HDD/SSD阵列11的记忆区域的位置。
参照计数字段用于登记参照计数RCNT。参照计数RCNT表示以与对应条目建立了对应的大块编号所确定的大块(以下,称为对应大块)与几个逻辑地址(4K比特区域)建立了对应。
例如,在参照计数RCNT为“1”的情况下,该参照计数RCNT表示对应大块不会成为重复排除的对象而被写入到HDD/SSD阵列11。换言之,参照计数RCNT表示对应大块仅被写入到逻辑卷内的1个逻辑地址所指示的4K比特区域。与之相对,在参照计数RCN为例如“2”的情况下,该参照计数RCN表示:通过重复排除,虽然在HDD/SSD阵列11中作为实体写入有1个大块,但是该大块与两个逻辑地址建立了对应。换言之,表示从主机20对逻辑卷内的两个逻辑地址所指示的4K比特区域写入了具有相同内容的大块。
接着,参照图10至图12对本实施方式的动作进行说明。图10是表示用于对由存储系统10的存储控制器12从主机20接收到数据写入请求的情况下执行的数据写入处理的典型的步骤进行说明所用的流程图的一部分的图。图11是表示用于对同数据写入处理的典型的步骤进行说明的流程图的其他的一部分的图,图12是表示用于对同数据写入处理的典型的步骤进行说明的流程图的剩余部分的图。
这里,设从主机20经由网络30对存储系统10发送了对文件的写入进行指定的数据写入请求(即,文件写入请求)。并且,设存储系统10的存储控制器12接收到来自主机20的文件写入请求。
于是,存储控制器12的分割部200例如按每4K比特对以文件写入请求所指定的文件(即文件数据)进行划分。由此,分割部200将所指定的文件分割成具有4K比特尺寸的多个大块(步骤S1)。即重复管理部201从所指定的文件取得构成该文件的多个大块。此外,在所指定的文件的尺寸为4K比特的情况下,分割部200取得该文件本身作为1个大块。在此,大块的尺寸无需为固定长。即大块的尺寸也可以是可变长。
重复管理部201将所取得的大块的数设定为变量N(步骤S2)。在此,将所取得的N个大块标记为大块C_1至C_N。哈希生成部203用被称为例如“SHA-256”的第1哈希函数计算大块C_1至C_N的哈希值(即第一阶段哈希值)H1(C_1)至H1(C_N)(步骤S3)。第一阶段哈希值H1(C_1)至H1(C_N)分别以32比特表示。
接着,哈希生成部203用第2哈希函数计算第一阶段哈希值H1(C_1)至H1(C_N)的哈希值(即第二阶段哈希值)H2(C_1)至H2(C_N)(步骤S4)。如前所述,第2哈希函数是用质数16,777,213作为除数的除法函数。即哈希生成部203将通过以质数16,777,213除第一阶段哈希值H1(C_1)至H1(C_N)而取得的余数决定为第二阶段哈希值H2(C_1)至H2(C_N)。
接着,重复管理部201将在指定通过步骤S1取得的N个大块中的一个大块时所用的变量n设定为初始值1(步骤S5)。然后,重复管理部201从通过步骤S1取得的N个大块C_1至C_N中选择第n个大块C_n(步骤S6)。
接着,重复判定部202执行哈希值搜索处理,该哈希值搜索处理用于从哈希表205搜索与通过重复管理部201所选择的大块C_n的第一阶段哈希值H1(C_n)一致的第一阶段哈希值(步骤S7)。在该哈希值搜索处理中,重复判定部202依次比较通过步骤S4计算出的大块C_n的第二阶段哈希值H2(C_n)和属于建立有对应的组并且被登记于哈希表205的第一阶段哈希值。通过该比较,重复判定部202搜索与第一阶段哈希值H1(C_n)一致的第一阶段哈希值。该哈希值搜索处理的详细后述。
重复判定部202基于哈希值搜索处理的结果,判定与所选择的大块C_n的第一阶段哈希值H1(C_n)一致的第一阶段哈希值是否存在于哈希表205(步骤S8)。重复管理部201基于该重复判定部202的判定的结果,进入到步骤S9或步骤S16。
如果与所选择的大块C_n的第一阶段哈希值H1(C_n)一致的第一阶段哈希值不存在(步骤S8的否),则重复管理部201判定为具有与大块C_n相同内容的大块未保存于HDD/SSD阵列11。此情况下,重复管理部201进入到步骤S9。
在步骤S9中,重复管理部201对大块C_n赋予大块编号CNC_n。在本实施方式中,赋予时序的大块编号。通过步骤S9对大块C_n赋予的大块编号CNC_n通过对已赋予其他大块的最新的大块编号加1而获得。为此,例如HDD123中保存最新的大块编号(或接着应当赋予的大块编号)。该最新的大块编号从HDD123载入到存储器122的工作区域122c来使用。
此外,通过从开头条目起依次参照大块表207的条目,重复管理部201也能够取得最新的大块编号。另外,重复管理部201也可以使用对与接着应当赋予的大块编号建立对应的大块表207的条目进行指示的下一条目指针。重复管理部201能够基于该下一条目指针,决定对于大块C_n赋予的大块编号CNC_n。
在对大块C_n赋予大块编号CNC_n时,访问控制器204将该大块C_n写入到HDD/SSD阵列11内的空的记忆区域(步骤S10)。接着,重复管理部201在与大块C_n的第二阶段哈希值H2(C-n)建立了对应的哈希表205内的叶页LP_k(h)中登记大块C_n的哈希信息HIC_n(步骤S11)。该哈希信息HIC_n包含大块C_n的第一阶段哈希值H1(C-n)及该大块C_n的大块编号的对。
LP_k(h)如后所述那样、表示通过哈希值搜索处理(步骤S7)最后搜索到哈希值的叶页。在此,LP_k(h)中的k表示用作组索引的第二阶段哈希值H2(C-n)。另外,LP_k(h)中的h表示叶页LP_k(h)包含于第h级的表TBL_h。即,表示LP_k(h)是在第h级的表TBL_h包含的第k个叶页。
关于步骤S11的详细,以下进行说明。首先,设最后搜索到哈希值的叶页LP_k(h)的扇区及该扇区的条目分别是该叶页LP_k(h)的第i个扇区ST_i及该第i个扇区ST_i的第j个条目。此情况下,重复判定部202对叶页LP_k(h)的第i个扇区ST_i内的第j+1个条目登记大块C_n的哈希信息HIC_n。
另外,重复管理部201使在扇区ST_i中包含的管理信息中的使用条目计数CNT仅增加1。并且,重复管理部201使在叶页LP_k(1)的开头的扇区ST_0中包含的管理信息MI1_0中的使用条目计数CNTh仅增加1。该管理信息MI1_0如后所述那样、不仅保存于叶页LP_k(1)的开头的扇区ST_0,也保存于工作区域122c。
在本实施方式中,在工作区域122c中保存的管理信息MI1_0中的使用条目计数CNTh增加。在该工作区域122c保存的管理信息MI1_0在适当的时机被在HDD123中保存的叶页LP_k(1)的开头的扇区ST_0的管理信息MI1_0例如覆盖。适当的时机是指,例如存储系统10不忙碌的情况或者存储系统10的电源被切断前的时机。
另外,设第i个扇区ST_i的第j个条目是该第i个扇区的最终条目(在此,i=11)。此情况下,重复判定部202在叶页LP_k(h)的第“i+1”个扇区ST_(i+1)内的开头条目中登记大块C_n的哈希信息HIC_n。
另外,重复管理部201使在扇区ST_(i+1)中包含的管理信息中的使用条目计数CNT仅增加1。并且,重复管理部201使管理信息MI1_0中的使用条目计数CNTh仅增加1。
接着,设最后搜索到哈希值的叶页LP_k(h)内的条目是该叶页LP_k(h)的最终的条目(更详细而言,叶页LP_k(h)的最终的扇区内的最终的条目)。即,设叶页LP_k(h)的全部条目被使用,该叶页LP_k(h)内没有空条目。此情况下,重复管理部201与上述的说明不同地、对在第“h+1”级的表TBL_(h+1)中包含的第k个叶页LP_k(h+1)的开头的扇区ST_0(更详细而言,叶页LP_k(h+1)的开头的扇区ST_0内的开头的条目)登记大块C_n的哈希信息HIC_n。
另外,重复管理部201使叶页LP_k(h+1)的开头的扇区ST_0中包含的管理信息中的使用条目计数CNT仅增加1。并且,重复管理部201使管理信息MI1_0中的使用条目计数CNT(h+1)仅增加1。
另外,重复管理部201执行步骤S11后进入到步骤S12。在步骤S12中,重复管理部201取得对所选择的大块C_n的逻辑卷内的位置进行表示的逻辑地址。该逻辑地址通过对由来自主机20的文件写入请求指定的逻辑地址(文件的开头地址)加4K(即,4,096)×(n-1)而取得。在步骤S12中重复管理部201进一步在与所取得的逻辑地址建立了对应的元表206的条目中登记对所选择的大块C_n赋予的大块编号CNC_n。
重复管理部201执行步骤S12后进入到步骤S13。在步骤S13中,首先,重复管理部201选择与对所选择的大块C_n赋予的大块编号CNC_n建立了对应的大块表207的条目。在步骤S13中,重复管理部201还在所选择的条目中登记所选择的大块C_n所涉及的大块信息CIC_n。该大块信息CIC_n包含写入了所选择的大块C_n的HDD/SSD阵列11内的记忆区域的物理地址及参照计数RCN。参照计数RCN的值为“1”。
重复管理部201执行步骤S13后进入到步骤S14。在步骤S14中,重复管理部201使变量n增加1。并且,重复管理部201判定增加后的变量n是否超过通过步骤S2所设定的大块数N(步骤S15)。如果增加后的变量n未超过大块数N(步骤S15的否),则重复管理部201为了对在由来自主机20的文件写入请求所指定的文件中包含的下一大块的写入进行处理,返回到步骤S6。与之相对,如果增加后的变量n超过了大块数N(步骤S15的是),则重复管理部201判定为结束了在通过来自主机20的文件写入请求而指定的文件中包含的全部大块的写入。此情况下,以图10至图12的流程图表示的数据写入处理结束。
接着,对重复判定部202在步骤S8中判定为与所选择的大块C_n的第一阶段哈希值H1(C_n)一致的第一阶段哈希值存在的情况的动作进行说明。这样,在步骤S8的判定为“是”的情况下,重复管理部201判定为具有与所选择的大块C_n相同内容的大块已经保存于HDD/SSD阵列11。在此,将已经保存于HDD/SSD阵列11并且具有与大块C_n相同内容的大块标记为大块C_x。
在步骤S8的判定为”是”的情况下,为了排除具有相同内容的多个大块重复并且被保存于HDD/SSD阵列11的情况,重复管理部201进入到步骤S16。在步骤S16中,重复管理部201抑制访问控制器204将所选择的大块C_n写入到HDD/SSD阵列11的动作。
接着,重复管理部201将大块C_x的大块编号作为所选择的大块C_n的大块编号CNC_n,并登记到元表206中(步骤S17)。由此,元表206中,相同的大块编号被登记到元表206内的至少两个条目。重复管理部201为了确定应当登记该大块编号的元表206的条目,通过与步骤S12同样的方法取得对所选择的大块C_n的逻辑卷内的位置进行表示的逻辑地址。
重复管理部201执行步骤S17后进入到步骤S18。在步骤S18中,首先,重复管理部201参照在与所选择的大块C_n的大块编号(即,大块C_x的大块编号)建立了对应的大块表207的条目中登记着的大块信息CI_Cn。在步骤S18中,重复管理部201还使所参照的大块信息中的参照计数RCNT增加1。由此,增加后的参照计数RCNT表示:虽然在HDD/SSD阵列11中作为实体写入1个大块,但是具有相同内容的RCNT个大块被写入到逻辑卷内的RCNT个4K比特区域。
重复管理部201执行步骤S18后进入到步骤S19。在步骤S19中,首先,重复管理部201取得对写有大块C_x(即,具有与所选择的大块C_n相同内容的大块C_x)的HDD/SSD阵列11的记忆区域进行指示的物理地址。该物理地址包含于通过步骤S18参照的大块信息。在步骤S19中,重复管理部201进一步将所取得的物理地址分配至所选择的大块C_n的逻辑地址。具体而言,重复管理部201在未图示的地址转换表中登记对所选择的大块C_n的逻辑地址与所取得的物理地址的对应进行表示的地址转换信息(即,映射信息)。重复管理部201执行步骤S19后进入到步骤S14。以后的动作与重复管理部201从步骤S13进入到步骤S14的情况相同。
此外,步骤S19未必是必要的。例如,重复管理部201能够如以下所述那样、不用地址转换表就将由主机20所指定的逻辑地址转换为物理地址。重复管理部201首先基于由主机20所指定的逻辑地址参照元表206,由此取得在与该逻辑地址建立了对应的条目中登记的大块编号。接着,重复管理部201基于所取得的大块编号参照大块表207,由此取得在与该大块建立了对应的条目中登记的物理地址。
接着,参照图13及图14对本实施方式中的哈希值搜索处理(步骤S7)的详细进行说明。图13是表示用于对哈希值搜索处理的典型的步骤进行说明的流程图的一部分的图。图13是表示用于对同哈希值搜索处理的典型的步骤进行说明的流程图的剩余部分的图。
首先,重复判定部202将变量h设定为初始值1(步骤S21)。变量h表示哈希表205内的第h级的表TBL_h。在步骤S21中,重复判定部202还将变量k设定为所选择的大块C_n的第二阶段哈希值H2(C_n)。变量k表示包含于表TBL_h并且与所选择的大块C_n的第二阶段哈希值H2(C_n)建立了对应的第k个叶页LP_k(h)。在步骤S21中,重复判定部202进一步将变量i及j任一个都设定为初始值0。变量i表示在基于变量h及k而确定的叶页LP_k(h)中包含的第i个扇区ST_i。变量j表示扇区ST_i内的第j个条目。
接着,重复判定部202从哈希表205中选择第h级的表TBL_h(步骤S22)。在变量h为1的本实施方式中,选择第1级的表TBL_1作为表TBL_h。接着,重复判定部202选择包含于所选择的表TBL_h并且与所选择的大块C_n的第二阶段哈希值H2(C_n)=k建立了对应的第k个叶页LP_k(h)(步骤S23)。在此,因为h为1,所以选择表TBL_1的第k个叶页LP_k(1)作为叶页LP_k(h)。在步骤S23中,重复判定部202从HDD123读出所选择的叶页LP_k(h),将该读出的叶页LP_k(h)保存于存储器122的表区域122b。即重复判定部202将所选择的叶页LP_k(h)载入于存储器122的表区域122b。
接着,重复判定部202选择所选择的(所载入的)叶页LP_k(h)(在此,叶页LP_k(1))的第i个扇区ST_i(步骤S24)。在此,作为第i个扇区ST_i,选择开头(第0个)扇区ST_0。
重复判定部202选择了叶页LP_k(1)(即,存储器122的表区域122b中所保存的叶页LP_k(1))的开头的扇区ST_0时,将该扇区ST_0中包含的管理信息MI1_0也保存于例如存储器122的工作区域122c。由此,重复判定部202仅参照管理信息MI1_0中的使用条目计数CNT2至CNT7,就能够取得表TBL_2至TBL_7的叶页LP_k(2)至LP_k(7)内分别使用着的条目的数目。即,重复判定部202能够在从HDD123读出叶页LP_k(2)至LP_k(7)前取得该叶页LP_k(2)至LP_k(7)内分别使用着的条目的数目。另外,重复判定部202也能够基于管理信息MI1_0中的使用条目计数CNT1,来取得叶页LP_k(1)内使用着的条目的数目。
因此,重复判定部202能够基于叶页LP_k(1)至LP_k(7)内分别使用着的条目的数目(即,管理信息MI1_0中的使用条目计数CNT1至CNT7),确定使用着的条目的数目为零的叶页。在此,设使用条目计数CNT1至CNT4非零,并设使用条目计数CNT5至CNT7为零。此情况下,重复判定部202能够决定为充其量将叶页LP_k(1)至LP_k(4)作为对象进行哈希值搜索即可。将与该叶页有关的最大的搜索范围标记为hmax。在该例中,hmax为4,表示将叶页LP_k(1)作为开头的四个叶页为最大的搜索范围。
同样地,重复判定部202能够基于管理信息MI1_0中的使用条目计数CNTh(h=1,2,…,7)确定在叶页LP_k(h)中使用着的扇区的数目。例如,叶页LP_k(1)(h=1)的各扇区的条目的数目是12。因此,使用条目计数CNT1(h=1)为例如16的情况下,重复判定部202能够确定为在叶页LP_k(1)中使用着的扇区的数目为2。此情况下,重复判定部202能够决定为充其量将叶页LP_k(1)内的扇区ST_0及ST_1作为对象进行哈希值搜索即可。将与该扇区有关的最大的搜索范围标记为imax(h,CNT1)。imax(h,CNT1)是通过从在叶页LP_k(1)中使用着的扇区的数目减去1而获得的值。
重复判定部202执行步骤S24后进入到步骤S25。在步骤S25中,重复判定部202从所选择的扇区ST_i的第j个条目中读出第一阶段哈希值H1(C_x)。接着,重复判定部202对所读出的第一阶段哈希值H1(C_x)和通过步骤S1计算出的大块C_n的第一阶段哈希值H1(C_n)进行比较(步骤S26)。然后,重复判定部202判定第一阶段哈希值H1(C_x)与第一阶段哈希值H1(C_n)是否相等(步骤S27)。
如果步骤S27的判定为“是”,则重复判定部202取得包含于扇区ST_i的第j个条目并且与第一阶段哈希值H1(C_x)成对的大块编号(步骤S28)。在步骤S27中,重复判定部202将所取得的大块编号作为具有与所选择的大块C_n相同内容的大块C_x的大块编号,暂时保存于例如存储器122的工作区域122c。由此,哈希值搜索处理(步骤S7)结束,重复判定部202进入步骤S8。暂时保存于工作区域122c的大块C_x的大块编号在步骤S17中使用。
另一方面,如果步骤S27的判定为“否”,则重复判定部202为了取得应当与第一阶段哈希值H1(C_n)进行比较的下一第一阶段哈希值而进入到步骤S29。在步骤S29中,重复判定部202使变量j仅增加1。接着,重复判定部202判定增加后的变量j是否超过变量j的最大值jmax(步骤S30)。在本实施方式中,变量j的最大值jmax为11。
如果步骤S30的判定为“否”,则重复判定部202进入到步骤S31。在步骤S31中,重复判定部202判定变量j是否超过jmax(CNT)。jmax(CNT)是通过使在叶页LP_k(h)的扇区ST_i中包含的管理信息MIh_i中的使用条目计数CNT减1而获得的值(即,“CNT-1”)。即,jmax(CNT)表示叶页LP_k(h)的扇区ST_i中的条目涉及的最大的搜索范围。
如果变量j超过jmax(CNT)(即“CNT-1”)(步骤S31的是),则重复判定部202判定为应当与第一阶段哈希值H1(C_n)进行比较的新的第一阶段哈希值不存在于哈希表205,因此第一阶段哈希值H1(C_n)与哈希表205中登记着的全部第一阶段哈希值不一致。此情况下,重复判定部202使哈希值搜索处理结束。与之相对,如果变量j未超过jmax(CNT)(步骤S31的否),则重复判定部202为了从叶页LP_k(h)的扇区ST_i内的下一条目中读出第一阶段哈希值而返回到步骤S25。
另一方面,如果步骤S30的判定为“是”,则重复判定部202使变量i增加1(步骤S32)。然后,重复判定部202判定增加后的变量i是否超过变量i的最大值imax(h)(步骤S33)。变量i的最大值imax(h)在变量h为例如1时为7(8-1=7),在变量h为例如2时为15(16-1)。
如果步骤S33的判定为“否”,则重复判定部202进入到步骤S34。在步骤S34中,重复判定部202判定变量i是否超过imax(h,CNTh)。imax(h,CNTh)是如前所述那样、通过从在叶页LP_k(h)中使用着的扇区的数目减去1而获得的值。
如果变量i超过imax(h,CNTh)(步骤S34的是),则重复判定部202判定为应当与第一阶段哈希值H1(C_n)进行比较的新的第一阶段哈希值在哈希表205中不存在,因此第一阶段哈希值H1(C_n)与哈希表205中登记着的全部第一阶段哈希值不一致。此情况下,重复判定部202使哈希值搜索处理结束。与之相对,如果变量i超过imax(h,CNTh)(步骤S34的否),则重复判定部202为了选择叶页LP_k(h)(在此,LP_k(1))的下一扇区而返回到步骤S24。
另一方面,如果步骤S33的判定为“是”,则重复判定部202使变量h仅增加1(步骤S35)。然后,重复判定部202判定增加后的变量h是否超过hmax(步骤S36)。hmax如前所述那样、基于叶页LP_k(1)的开头的扇区ST_0中包含的管理信息MI1_0中的使用条目计数CNT1至CNT7而决定。
如果步骤S36的判定为“否”,则重复判定部202为了从哈希表205中选择下一表及该下一表内的下一叶页而返回到步骤S22。与之相对,如果步骤S36的判定为“是”,则重复判定部202判定为应当与第一阶段哈希值H1(C_n)进行比较的新的第一阶段哈希值在哈希表205中不存在,因此第一阶段哈希值H1(C_n)与哈希表205中登记着的全部第一阶段哈希值不一致。此情况下,重复判定部202使哈希值搜索处理结束。
接着,参照图15至图18,对通过主机20请求的文件写入的例子进行说明。图15表示由从主机20依次发送的三个文件写入请求所指定的文件F0至F2与通过该文件F0至F2被每隔4K比特划分而取得的大块的关系的例子。图16表示哈希表205中包含的例如第1级的表TBL_1的内容的变化的例子。图17表示元表206的内容的变化的例子。图18表示大块表207的内容的变化的例子。
首先,设存储系统10的运用的开始后,从主机20对存储系统10的存储控制器12请求将图15(A)所示的16K比特的文件F0写入逻辑卷的从逻辑地址La0开始的区域。此情况下,存储控制器12的分割部200将文件F0分割成四个大块Ca0、Ca1、Ca2及Ca3。应当写入大块Ca1、Ca2及Ca3的逻辑地址La1、La2及La3分别是La0+4K、La0+8K、La0+12K。大块Ca0、Ca1、Ca2及Ca3分别具有数据A、B、C及D。哈希生成部203计算大块Ca0、Ca1、Ca2及Ca3的哈希值(第一阶段哈希值)H(A)、H(B)、H(C)及H(D)。
在此,设具有与大块Ca0、Ca1、Ca2及Ca3相同内容的其他的大块不存在。此情况下,访问控制器204将大块Ca0、Ca1、Ca2及Ca3写入HDD/SSD阵列11的空区域、例如以物理地址Pa0、Pa1、Pa2及Pa3指定的物理区域。另外,重复管理部201对大块Ca0、Ca1、Ca2及Ca3赋予例如大块编号0、1、2及3。
重复管理部201将第一阶段哈希值H(A)、H(B)、H(C)及H(D)与大块编号0、1、2及3的各个对例如如图16(A)所示那样、登记到表TBL_1。此外,在图16(A)中省略,但这些对被登记到与哈希值H(A)、H(B)、H(C)、H(D)各自的第二阶段哈希值建立了对应的表TBL_1的叶页。
另外,重复管理部201如图17(A)所示那样、在与逻辑地址La0、La1、La2及La3分别建立了对应的元表206的条目中登记大块Ca0、Ca1、Ca2及Ca3的大块编号0、1、2及3。另外,重复管理部201如图18(A)所示那样、在与大块Ca0、Ca1、Ca2及Ca3的大块编号0、1、2及3分别建立了对应的大块表207的条目中登记写入有大块Ca0、Ca1、Ca2及Ca3的物理区域的物理地址Pa0、Pa1、Pa2及Pa3。另外,重复管理部201在大块表207中,对与物理地址Pa0、Pa1、Pa2及Pa3分别成对的参照计数RCNT任一个都设定1。
接着,设从主机20对存储控制器12请求将图15(B)所示的12K比特的文件F1写入逻辑卷的从逻辑地址Lb0开始的区域。此情况下,存储控制器12的分割部200将文件F1分割为三个大块Cb0、Cb1及Cb2。应当写入大块Cb1及Cb2的逻辑地址Lb1及Lb2分别是Lb0+4K及Lb0+8K。大块Cb0、Cb1及Cb2分别具有数据X、Y及A。哈希生成部203计算大块Cb0、Cb1及Cb2的哈希值(第一阶段哈希值)H(X)、H(Y)及H(A)。
在此,具有与大块Cb0及Cb1相同内容的其他的大块不存在,但具有与大块Cb2相同内容(A)的大块Ca0存在。此情况下,访问控制器204将大块Cb0及Cb1写入HDD/SSD阵列11的空区域、例如通过物理地址Pb0及Pb1指定的物理区域。另一方面,关于大块Cb2,为了排除与大块Ca0的重复,重复管理部201抑制访问控制器204向HDD/SSD阵列11写入该大块Cb2。另外,重复管理部201对大块Cb0及Cb1赋予后续于最新的大块编号3的大块编号4及5。另外,对具有与大块Ca0相同内容(A)的大块Cb2的大块编号使用该大块Ca0的大块编号0。
重复管理部201例如如图16(B)所示那样、将第一阶段哈希值H(X)及H(Y)与大块编号4及5的各自的对登记到表TBL_1。另外,重复管理部201如图17(B)所示那样、在与逻辑地址Lb0、Lb1及Lb2分别建立了对应的元表206的条目中登记大块Cb0、Cb1及Cb2的大块编号4、5及0。
另外,重复管理部201如图18(B)所示那样、在与大块Cb0及Cb1的大块编号4及5分别建立了对应的大块表207的条目中登记写入有大块Cb0及Cb1的物理区域的物理地址Pb0及Pb1。另外,重复管理部201在大块表207中,对与物理地址Pb0及Pb1分别成对的参照计数RCNT任一个都设定1。另外,重复管理部201将与具有与大块Cb2相同内容(A)的大块Ca0的大块编号0建立了对应的大块表207的条目的参照计数RCNT从如图18(A)所示的1更新为如图18(B)所示的2。
接着,设从主机20对存储控制器12请求将如图15(C)所示的12K比特的文件F2写入逻辑卷的从逻辑地址Lc0开始的区域。此情况下,存储控制器12的分割部200将文件F2分割为三个大块Cc0、Cc1及Cc2。应当写入大块Cc1及Cc2的逻辑地址Lc1及Lc2分别是Lc0+4K及Lc0+8K。大块Cc0、Cc1及Cc2分别具有数据E、F及A。哈希生成部203接收大块Cc0、Cc1及Cc2的哈希值(第一阶段哈希值)H(E)、H(F)及H(A)。
在此,具有与大块Cc0及Cc1相同内容的其他的大块不存在,但具有与大块Cc2相同内容(A)的大块Ca0存在。此情况下,访问控制器204将大块Cc0及Cc1写入HDD/SSD阵列11的空区域、例如通过物理地址Pc0及Pc1指定的物理区域。另一方面,关于大块Cc2,为了排除与大块Ca0的重复,重复管理部201抑制访问控制器204对HDD/SSD阵列11写入该大块Cc2。另外,重复管理部201对大块Cc0及Cc1赋予后续于最新的大块编号6的大块编号7及8。另外,在具有与大块Ca0相同内容(A)的大块Cc2的大块编号中,使用该大块Ca0的大块编号0。
重复管理部201例如如图16(C)所示那样、将第一阶段哈希值H(E)及H(Y)与大块编号6及7的各自的对登记到表TBL_1。另外,重复管理部201如图17(C)所示那样、在与逻辑地址Lc0、Lc1及Lc2分别建立了对应的元表206的条目中登记大块Cc0、Cc1及Cc2的大块编号6、7及0。
另外,重复管理部201如图18(C)所示那样、在与大块Cc0及Cc1的大块编号6及7分别建立了对应的大块表207的条目中登记写入了大块Cc0及Cc1的物理区域的物理地址Pc0及Pc1。另外,重复管理部201在大块表207中,对与物理地址Pc0及Pc1分别成对的参照计数RCNT任一个都设定1。另外,重复管理部201将与具有与大块Cc2相同内容(A)的大块Ca0的大块编号0建立了对应的大块表207的条目内的参照计数RCNT从图18(B)所示的2更新为图18(C)所示的3。
在此,设从主机20对存储控制器12请求文件F1的删除。此情况下,重复管理部201如图16(D)所示那样、使登记到表TBL_1中的第一阶段哈希值H(X)及H(Y)与大块编号4及5的各自的对无效化。在图16(D)中,为了表示无效化条目,对相应的条目附以斜线。为了进行这种无效化,表TBL_1的各条目的特定的位用作表示该条目的内容是否有效的有效位。并且,重复管理部201如图17(D)所示那样、使与逻辑地址b0、b1及b2分别建立了对应的元表206的三个条目的内容无效化。在图17(D)中,为了表示无效条目,对相应的条目附以斜线。为了进行这种无效化,元表206的各条目的特定的位用作表示该条目的内容是否有效的有效位。
重复管理部201将与逻辑地址b0、b1及b2分别建立了对应的元表206的三个条目内的各自的有效位任一个都设定为表示该条目的内容无效的状态(例如“0”)。另外,重复管理部201将与构成被删除的文件F1的大块Cb0、Cb1及Cb2的大块编号4、5及0分别建立了对应的大块表207的条目内的参照计数RCNT从图18(C)所示的1、1及3更新为图18(D)所示的0、0及2。
在本实施方式中,在这种状态下新的大块被写入到HDD/SSD阵列11的情况下,对该新的大块赋予通道编号8。此时,被赋予了通道编号4及5的有效的大块不存在。因此,在本实施方式中,相应于存储控制器12的等待时间或者来自主机20的指示,进行碎片消除处理(碎片整理处理;defragmentation)。即,在HDD/SSD阵列11中保存的有效的大块按照例如每个文件、在该HDD/SSD阵列11的物理地址连续的区域被进行再配置。此时,对有效的全部大块重新赋予连续的通道编号。与之相应,哈希表205、元表206及大块表207也得以更新。
根据以上说明的至少1个实施方式,能够提供能够使得用于排除数据重复的哈希表搜索高速化的存储系统、存储控制器及方法。
对本发明的几个实施方式进行了说明,但这些实施方式作为例子来提示,无意限定发明的范围。这些新的实施方式能够以其他各种方式实施,在不脱离发明的主旨的范围内,能够进行各种省略、置换、变更。这些实施方式及其变形包含于发明的范围及主旨,并且包含于与权利要求书记载的发明及其等同的范围。
Claims (5)
1.一种存储系统,具备:
存储装置;
存储控制器,控制对所述存储装置的访问;以及
哈希表,包含具有第1数目的条目的第1表及具有比所述第1数目大的第2数目的条目的第2表,
所述存储控制器具备:
分割部,将由来自主计算机的写入请求所指定的数据分割成多个大块;
哈希生成部,基于所述多个大块的各自的数据,计算所述多个大块的各自的具有第1长度的哈希值;
访问控制器,对所述存储装置写入大块;
重复管理部,在所述存储装置被写入第1大块的情况下,将所述第1大块的第1哈希值与所述第1大块建立对应并优先地登记到所述哈希表的所述第1表;以及
重复判定部,在计算出第2大块的第2哈希值的情况下,使从所述第1表的搜索优先来执行从所述哈希表搜索与所述第2哈希值一致的第3哈希值的处理,由此判定具有与所述第2大块相同内容的第3大块是否保存于所述存储装置,
在判定为所述第3大块保存于所述存储装置的情况下,所述重复管理部抑制所述第2大块写入所述存储装置,
所述第1表包括多个第1页,该多个第1页是指,用于基于多个哈希值将分别具有所述第1长度的该多个哈希值分类为多个组并登记的、分别与指示所述多个组的多个组索引建立了对应的多个第1页,
所述多个第1页分别具有第3数目的条目,
所述多个第1页的总条目数与所述第1数目相等,
所述第2表包括与所述多个组索引分别建立了对应的多个第2页,
所述多个第2页分别具有大于所述第3数目的第4数目的条目,
所述多个第2页的总条目数与所述第2数目相等,
所述重复判定部,基于所述第2大块的所述第2哈希值,确定该第2哈希值属于的组,优先地选择与所述所确定的组的组索引建立了对应的所述第1页,从所述所选择的第1页中搜索所述第3哈希值,在无法从所述所选择的第1页中搜索所述第3哈希值并且至少所述所选择的第1页的所述第3数目的条目全部被使用的情况下,选择与所述所确定的组的组索引建立了对应的所述第2页,从所述所选择的第2页中搜索所述第3哈希值,
所述重复管理部,在判定为所述第3大块未保存于所述存储装置的情况下,在所述第1页及所述第2页中的、最后被选择的页中登记所述第1哈希值。
2.如权利要求1所述的存储系统,其中,
所述哈希生成部,基于具有所述第1长度的哈希值,计算具有比所述第1长度短的第2长度并且被用作所述组索引的哈希值,
所述重复判定部,在从所述哈希表中搜索所述第3哈希值的情况下,将基于所述第2哈希值计算的具有所述第2长度的第4哈希值作为对于应当搜索所述第3哈希值的组进行指定的组索引而使用。
3.如权利要求1所述的存储系统,其中,
所述存储控制器还具备易失性的存储器,
所述哈希表保存于所述存储装置、或所述存储控制器具有的本地存储装置,
所述多个第1页分别包含管理信息,该管理信息表示该第1页内使用着的条目的数目、与该第1页所属的组的组索引建立了对应的所述第2页内使用着的条目的数目,
所述重复判定部,在选择了所述第1页的情况下,将该被选择的第1页载入到所述存储器,从所述被载入的第1页中搜索所述第3哈希值,在无法从所述被载入的第1页中搜索所述第3哈希值并且由所述被载入的第1页中包含的所述管理信息所示的所述第2页内使用着的条目的数目不为零的情况下,选择所述第2页,将该被选择的第2页载入到所述存储器,从所述被载入的第2页搜索所述第3哈希值。
4.一种存储控制器,控制对存储装置的访问,在该存储控制器中,具备:
分割部,将由来自主计算机的写入请求所指定的数据分割成多个大块;
哈希生成部,基于所述多个大块的各自的数据,计算所述多个大块的各自的具有第1长度的哈希值;
访问控制器,对所述存储装置写入大块;
重复管理部,在所述存储装置被写入第1大块的情况下,将所述第1大块的第1哈希值与所述第1大块建立对应,并优先地登记到包含第1表及第2表的哈希表中的所述第1表;以及
重复判定部,在计算出第2大块的第2哈希值的情况下,使从所述第1表的搜索优先来执行从所述哈希表搜索与所述第2哈希值一致的第3哈希值的处理,由此判定具有与所述第2大块相同内容的第3大块是否保存于所述存储装置,
所述重复管理部,在判定为所述第3大块保存于所述存储装置的情况下,抑制所述第2大块被写入到所述存储装置,
所述哈希表保存于所述存储装置、或所述存储控制器具有的本地存储装置,
所述第1表具有第1数目的条目,
所述第2表具有大于所述第1数目的第2数目的条目,
所述第1表包括多个第1页,该多个第1页是指,用于基于多个哈希值将分别具有所述第1长度的该多个哈希值分类为多个组并登记的、分别与指示所述多个组的多个组索引建立了对应的多个第1页,
所述多个第1页分别具有第3数目的条目,
所述多个第1页的总条目数与所述第1数目相等,
所述第2表包括与所述多个组索引分别建立了对应的多个第2页,
所述多个第2页分别具有大于所述第3数目的第4数目的条目,
所述多个第2页的总条目数与所述第2数目相等,
所述重复判定部,基于所述第2大块的所述第2哈希值,确定该第2哈希值属于的组,优先地选择与所述所确定的组的组索引建立了对应的所述第1页,从所述所选择的第1页中搜索所述第3哈希值,在无法从所述所选择的第1页中搜索所述第3哈希值并且至少所述所选择的第1页的所述第3数目的条目全部被使用的情况下,选择与所述所确定的组的组索引建立了对应的所述第2页,从所述所选择的第2页中搜索所述第3哈希值,
所述重复管理部,在判定为所述第3大块未保存于所述存储装置的情况下,在所述第1页及所述第2页中的、最后被选择的页中登记所述第1哈希值。
5.一种方法,应用于控制对存储装置的访问的存储控制器,并且用于基于哈希表排除数据的重复,
将由来自主计算机的写入请求所指定的数据分割成多个大块,
基于所述多个大块的各自的数据,计算所述多个大块的各自的具有第1长度的哈希值,
在所述存储装置被写入第1大块的情况下,将所述第1大块的第1哈希值与所述第1大块建立对应,并优先地登记到包含第1表及第2表的哈希表中的所述第1表,
在计算出第2大块的第2哈希值的情况下,使从所述第1表的搜索优先来执行从所述哈希表搜索与所述第2哈希值一致的第3哈希值的处理,
基于所述搜索的结果来判定具有与所述第2大块相同内容的第3大块是否保存于所述存储装置,
在判定为所述第3大块保存于所述存储装置的情况下,抑制所述第2大块被写入所述存储装置,
所述哈希表保存于所述存储装置、或所述存储控制器具有的本地存储装置,
所述第1表具有第1数目的条目,
所述第2表具有大于所述第1数目的第2数目的条目,
所述第1表包括多个第1页,该多个第1页是指,用于基于多个哈希值将分别具有所述第1长度的该多个哈希值分类为多个组并登记的、分别与指示所述多个组的多个组索引建立了对应的多个第1页,
所述多个第1页分别具有第3数目的条目,
所述多个第1页的总条目数与所述第1数目相等,
所述第2表包括与所述多个组索引分别建立了对应的多个第2页,
所述多个第2页分别具有大于所述第3数目的第4数目的条目,
所述多个第2页的总条目数与所述第2数目相等,
基于所述第2大块的所述第2哈希值,确定该第2哈希值属于的组,优先地选择与所述所确定的组的组索引建立了对应的所述第1页,从所述所选择的第1页中搜索所述第3哈希值,在无法从所述所选择的第1页中搜索所述第3哈希值并且至少所述所选择的第1页的所述第3数目的条目全部被使用的情况下,选择与所述所确定的组的组索引建立了对应的所述第2页,从所述所选择的第2页中搜索所述第3哈希值,
在判定为所述第3大块未保存于所述存储装置的情况下,在所述第1页及所述第2页中的、最后被选择的页中登记所述第1哈希值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/059530 WO2014155668A1 (ja) | 2013-03-29 | 2013-03-29 | データの重複をハッシュテーブルに基づいて排除するためのストレージシステム、ストレージコントローラ及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104246722A CN104246722A (zh) | 2014-12-24 |
CN104246722B true CN104246722B (zh) | 2017-02-22 |
Family
ID=50614397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380000362.4A Active CN104246722B (zh) | 2013-03-29 | 2013-03-29 | 用于基于哈希表排除数据重复的存储系统,存储控制器及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9152341B2 (zh) |
JP (1) | JP5444506B1 (zh) |
CN (1) | CN104246722B (zh) |
WO (1) | WO2014155668A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
US11636031B2 (en) * | 2011-08-11 | 2023-04-25 | Pure Storage, Inc. | Optimized inline deduplication |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US10908835B1 (en) | 2013-01-10 | 2021-02-02 | Pure Storage, Inc. | Reversing deletion of a virtual machine |
US11733908B2 (en) | 2013-01-10 | 2023-08-22 | Pure Storage, Inc. | Delaying deletion of a dataset |
KR20150002297A (ko) * | 2013-06-28 | 2015-01-07 | 삼성전자주식회사 | 스토리지 시스템 및 그의 동작 방법 |
US9405783B2 (en) * | 2013-10-02 | 2016-08-02 | Netapp, Inc. | Extent hashing technique for distributed storage architecture |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US9658774B2 (en) | 2014-07-09 | 2017-05-23 | Hitachi, Ltd. | Storage system and storage control method |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
WO2016194121A1 (ja) * | 2015-06-01 | 2016-12-08 | 株式会社日立製作所 | ストレージシステム、計算機装置、及び、重複排除デバイス |
CN106326285B (zh) * | 2015-06-30 | 2019-11-12 | 华为技术有限公司 | 一种存储数据的方法及装置 |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
CN107850983B (zh) * | 2015-09-11 | 2020-11-03 | 株式会社日立制作所 | 计算机系统、存储装置和数据的管理方法 |
US9665287B2 (en) * | 2015-09-18 | 2017-05-30 | Alibaba Group Holding Limited | Data deduplication using a solid state drive controller |
WO2017061022A1 (ja) * | 2015-10-09 | 2017-04-13 | 株式会社日立製作所 | データを重複排除するシステム |
US10255288B2 (en) * | 2016-01-12 | 2019-04-09 | International Business Machines Corporation | Distributed data deduplication in a grid of processors |
JP6587953B2 (ja) * | 2016-02-10 | 2019-10-09 | 東芝メモリ株式会社 | ストレージコントローラ、ストレージ装置、データ処理方法およびプログラム |
JP6406283B2 (ja) * | 2016-03-01 | 2018-10-17 | 日本電気株式会社 | ストレージ装置およびストレージ方法 |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
JP6767825B2 (ja) * | 2016-09-20 | 2020-10-14 | ヤフー株式会社 | データ管理装置、データ管理方法、およびデータ管理プログラム |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
KR102559518B1 (ko) | 2016-09-28 | 2023-07-26 | 에스케이하이닉스 주식회사 | 메모리 제어장치 및 방법 |
JP6841024B2 (ja) | 2016-12-09 | 2021-03-10 | 富士通株式会社 | データ処理装置,データ処理プログラムおよびデータ処理方法 |
JP7074454B2 (ja) * | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | 計算機システムおよび制御方法 |
KR102536637B1 (ko) * | 2018-03-29 | 2023-05-26 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
EP3971700A4 (en) * | 2019-07-26 | 2022-05-25 | Huawei Technologies Co., Ltd. | METHOD AND DEVICE FOR DATA PROCESSING IN A STORAGE SYSTEM AND COMPUTER-READABLE STORAGE MEDIUM |
CN114064621B (zh) * | 2021-10-28 | 2022-07-15 | 江苏未至科技股份有限公司 | 一种重复数据判断方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03282966A (ja) | 1990-03-30 | 1991-12-13 | Fujitsu Ltd | ハッシュエントリ領域管理方法 |
US7278131B2 (en) | 2003-03-03 | 2007-10-02 | Microsoft Corporation | Compact hardware identification for binding a software package to a computer system having tolerance for hardware changes |
JP5043820B2 (ja) | 2005-03-11 | 2012-10-10 | ロックソフト リミテッド | 低冗長記憶システムで索引を行う方法 |
US7870409B2 (en) * | 2007-09-26 | 2011-01-11 | Hitachi, Ltd. | Power efficient data storage with data de-duplication |
JP4962483B2 (ja) | 2008-12-19 | 2012-06-27 | 日本電気株式会社 | 情報処理装置 |
US8161211B2 (en) | 2009-02-25 | 2012-04-17 | Hitachi, Ltd. | Storage system and data processing method for the same |
JP5254141B2 (ja) * | 2009-07-14 | 2013-08-07 | 富士通株式会社 | アーカイブ装置、データ格納プログラムおよびデータ格納方法 |
US8396873B2 (en) * | 2010-03-10 | 2013-03-12 | Emc Corporation | Index searching using a bloom filter |
JP2012133551A (ja) * | 2010-12-21 | 2012-07-12 | Nec Corp | 書き込み制御システム及び書き込み制御方法 |
JP2013058133A (ja) * | 2011-09-09 | 2013-03-28 | Nec Corp | データ書き込み装置 |
-
2013
- 2013-03-29 CN CN201380000362.4A patent/CN104246722B/zh active Active
- 2013-03-29 JP JP2013517504A patent/JP5444506B1/ja active Active
- 2013-03-29 WO PCT/JP2013/059530 patent/WO2014155668A1/ja active Application Filing
- 2013-07-31 US US13/955,626 patent/US9152341B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9152341B2 (en) | 2015-10-06 |
US20140297980A1 (en) | 2014-10-02 |
WO2014155668A1 (ja) | 2014-10-02 |
JP5444506B1 (ja) | 2014-03-19 |
JPWO2014155668A1 (ja) | 2017-02-16 |
CN104246722A (zh) | 2014-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104246722B (zh) | 用于基于哈希表排除数据重复的存储系统,存储控制器及方法 | |
KR102438308B1 (ko) | 구역화된 네임스페이스들에 대한 내구성 그룹들의 적용 | |
KR102042643B1 (ko) | 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리 | |
US9684462B2 (en) | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory | |
AU2010265984C1 (en) | Scalable indexing in a non-uniform access memory | |
US9311252B2 (en) | Hierarchical storage for LSM-based NoSQL stores | |
CN106708425A (zh) | 分布式多模存储管理 | |
US20150186259A1 (en) | Method and apparatus for storing data in non-volatile memory | |
US20140019706A1 (en) | System and method of logical object management | |
CN103064639A (zh) | 数据存储方法及装置 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN105579977A (zh) | 访问文件的方法、装置及存储系统 | |
CN107704194A (zh) | 无锁io处理方法及其装置 | |
US20080168069A1 (en) | Method and apparatus for storing and accessing data records on solid state disks | |
CN110825794A (zh) | 分区合并方法和数据库服务器 | |
CN104461384B (zh) | 一种数据写入方法及存储设备 | |
US20180150250A1 (en) | Tiered storage system, storage controller and tiering control method | |
Shafaei et al. | Write Amplification Reduction in {Flash-Based}{SSDs} Through {Extent-Based} Temperature Identification | |
Liang et al. | ISM-an intra-stripe data migration approach for RAID-5 scaling | |
US11199988B2 (en) | Data migration across tiers in a multi-tiered storage area network | |
CN111338569A (zh) | 一种基于直接映射的对象存储后端优化方法 | |
CN111221478A (zh) | 数据写入、读取方法、装置、设备及机器可读存储介质 | |
WO2015129109A1 (ja) | インデックス管理装置 | |
CN110377601B (zh) | 一种基于B树数据结构的MapReduce计算过程优化方法 | |
KR100878142B1 (ko) | 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Tokyo, Japan, Japan Co-patentee after: Toshiba Digital Solutions Ltd Patentee after: Toshiba Corp Address before: Tokyo, Japan, Japan Co-patentee before: Toshiba Solutions Corporation Patentee before: Toshiba Corp |