CN101350030B - 用于缓存数据的方法及装置 - Google Patents
用于缓存数据的方法及装置 Download PDFInfo
- Publication number
- CN101350030B CN101350030B CN2008101377508A CN200810137750A CN101350030B CN 101350030 B CN101350030 B CN 101350030B CN 2008101377508 A CN2008101377508 A CN 2008101377508A CN 200810137750 A CN200810137750 A CN 200810137750A CN 101350030 B CN101350030 B CN 101350030B
- Authority
- CN
- China
- Prior art keywords
- data
- identifier
- buffer memory
- cache database
- recorded
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了用于缓存数据的方法及装置。在该装置中,中继单元(31)输入数据和索引。缓存管理单元(32)确定是否存在用于缓存数据的空间区域。在存在空间区域的情况下,缓存管理单元(32)缓存数据。标识符生成单元(33)生成与所缓存的数据的内容相对应的标识符。在缓存数据表(23)中与该数据相关联地记录标识符。在缓存索引表(24)中与索引相关联地记录标识符。在不存在空间区域的情况下,缓存管理单元(32)获取空间区域。缓存管理单元(32)将与缓存在所获取区域中的数据相关联的标识符注销。
Description
技术领域
本发明涉及用于缓存数据的缓存方法和缓存装置。
背景技术
近年来,WAN加速器(WAN高速设备)已成为通过使用相比于LAN(局域网),诸如互联网,具有更窄频带和更大延迟的线路来访问远距离存储装置的已知设备。
WAN加速器在例如TCP/IP层或诸如NFS(网络文件系统)/CIFS(公共互联网文件系统)/iSCSI(互联网小型计算机系统接口)的应用层中执行延迟控制、传送数据压缩和缓存。
用于缓存的存储器区域的大小受到限制,这并非是对于WAN加速器所独有的。在此,例如,假设在经由例如互联网与WAN加速器连接的存储装置中的数据被缓存进WAN加速器的情况。在这种情况下,用于缓存进WAN加速器的存储器区域的大小通常小于该存储装置中存储器区域的大小(例如,磁盘卷)。
所以,考虑如何在有限的存储器区域中有效地执行缓存控制是重要的。因此,正在考虑着重于时间局部性(1ocality)或空间局部性的诸如LRU(最近最少使用)的缓存控制方法。
同时,已公开了一种技术(下文中称为现有技术),其在具有相同内容(下文中称为相同数据)但不同索引(例如,地址或文件名)的数据已经记录(register)在缓存中的情况下,指向已缓存的相同数据而不是将该数据缓存进另一区域中(例如,参考VMware Inc.的Carl A.Waldspurger的“Memory Resource Management in VMware ESX Server”,USENIXOSDI’02,(2002))。通过这种方式,共享相同数据(具有相同内容的缓存数据)。通过以这种方式共享具有相同内容的缓存数据,可节省用于存储缓存数据的存储器区域。
根据该现有技术,为了确定数据的内容是否相同,需要获得该数据的哈希值。利用该哈希值执行高速搜索,并且随后对该数据自身进行比较。
通常,存储用于数据的指针(换言之,存储器地址)所需的存储器区域的大小明显小于存储数据所需的存储器区域的大小。因此,通过使用上述现有技术,可增加将被缓存进有限的存储器区域中的数据的数量。
然而,在上述现有技术中,在例如当用于缓存的存储区域已经用尽时将较少需要的缓存数据无效的情况下,用于指向相同数据的索引的缓存数据也将同时被无效。
此外,当相同数据在被无效之后重新缓存时,在无效之前指向该相同数据的索引不能被重新记录以重新指向该相同数据。
例如,假设当相同数据在被无效一次之后进行重新缓存的情况下,例如,存在对于在无效之前指向该相同数据的索引的读请求。在这种情况下,由于该索引没有指向重新缓存的相同数据(没有重新记录),尽管该相同数据已被缓存,但仍必需从例如存储装置中获得(读取)该相同数据。
发明内容
本发明的目的在于提供一种缓存方法和缓存装置,当由多个索引所指向的数据被无效之后进行重新记录时,所述方法和装置能够使所述多个索引指向该数据。
根据本发明的实施例,提供了一种由包括用于缓存数据的缓存数据库、缓存数据表以及缓存索引表的缓存装置所执行的缓存方法。该方法包括:输入数据以及指示该数据的索引;生成与所输入的数据的内容相对应的标识符;确定在缓存存储装置中是否存在用于缓存所输入的数据的空间区域;在确定缓存存储装置中存在该空间区域的情况下,将该输入数据缓存进该缓存存储装置;在缓存数据表中与缓存数据相关联地记录所生成的标识符;在缓存索引表中与所输入的索引相关联地记录所生成的标识符;在确定缓存存储装置中不存在空间区域的情况下,获取空间区域;将所输入的数据缓存进所获取的空间区域;以及将与缓存在所获取的空间区域中的数据相关联地记录在缓存数据表中的标识符注销。
本发明的附加目的和优点将在以下的描述中阐明,从以下描述可以部分地获知或者通过实现本发明可以理解所述附加目的和优点。可通过下文中具体指出的手段及组合来实现和获得本发明的目的和优点。
附图说明
被包含进说明书并构成说明书一部分的附图示出了本发明的实施例,并且与上面给出的概括描述和以下给出的详细描述一起用于描述本发明的原理。
图1为示出根据本发明实施例的中继装置的硬件配置的方框图。
图2为主要示出根据当前实施例的中继装置30的功能性配置的方框图。
图3示出缓存数据表23的数据结构的实例。
图4示出缓存索引表24的数据结构的实例。
图5为描述缓存数据表23与缓存索引表24之间关系的示意图。
图6为示出在存在来自客户端装置40的读请求的情况下,中继装置30的缓存命中确定处理的处理过程的流程图。
图7为示出在将读请求从客户端装置40发送给存储装置50的情况下,处理流程的流程图。
图8为示出在将写请求从客户端装置40发送给存储装置50的情况下,处理流程的流程图。
图9为示出在中继装置30中执行的缓存记录处理的处理过程的流程图。
图10为具体描述当前实施例的操作的示意图。
具体实施方式
以下将参照附图描述本发明的实施例。
图1为示出根据当前实施例的中继装置(缓存设备)的硬件配置的方框图。如图1所示,计算机10与例如硬盘驱动器(HDD)的外部存储器装置20连接。该外部存储器装置20储存由计算机10执行的程序21。该中继装置30包括计算机10和外部存储器装置20。
图2为主要示出根据当前实施例的中继装置30的功能性配置的方框图。该中继装置30连接到客户端装置(传送目的地装置)40和存储装置(传送源装置)50,从而中继装置30可与客户端装置40和存储装置50进行通信。例如,通过iSCSI(互联网小型计算机系统接口)在中继装置30与客户端装置40之间进行通信。在中继装置30与存储装置50之间进行相同的通信。
客户端装置40是访问例如存储装置50的装置。此外,该客户端装置40作为iSCSI(SCSI)中的发起方。
存储装置50设置有磁盘卷以存储各种数据。存储装置50为客户端装置40提供了对于存储装置50的磁盘卷的访问。存储装置50作为iSCSI(SCSI)中的目标方。
中继装置30在例如客户端装置40和存储装置50之间中继通信。例如,中继装置30将从存储装置50发送的数据(块卷)传送到客户端装置40。中继装置30具有缓存该被传送的数据的功能。通过缓存该被传送的数据,可提高客户端装置40与存储装置50之间的数据传输效率。
客户端装置40通过指定中继装置30的客户端装置40侧的接口来尝试连接到存储装置50。已接受该尝试后,中继装置30从存储装置50侧的接口连接到存储装置50。通过这种方式,在客户端装置40与存储装置50之间建立连接。
此外,客户端装置40侧/存储装置50侧的接口在物理上可为一个接口。例如,对于iSCSI,如果TCP/IP的IP地址或端口号能标识出客户端装置40侧/存储装置50侧的接口是不同接口,则就完全可以将它们在物理上实现为一个接口。
中继装置30包括中继单元31、缓存管理单元32以及标识符生成单元33。在当前实施例中,中继单元31、缓存管理单元32以及标识符生成单元33由图1所示的计算机10来实现,其中该计算机10执行存储在外部存储器装置20中的程序21。可通过预先存储在计算机可读存储介质上来分发该程序21。此外,可经由例如网络将该程序21下载到计算机10中。
中继装置30还包括缓存数据库22、缓存数据表23和缓存索引表24。在当前实施例中,缓存数据库22、缓存数据表23和缓存索引表24存储在外部存储器装置20中。
中继装置30在例如客户端装置40与存储装置50之间中继iSCSI-PDU。如果该iSCSI-PDU涉及数据传送(READ&SCSIDATAIN/WRITE&DATAOUT(读&SCSI数据输入/写&数据输出)),则经由缓存管理单元32执行对缓存的访问。同时,如果该iSCSI-PDU未涉及数据传送,则通过中继单元31直接将PDU传送到其目的地。
这里,例如假设客户端装置40从存储装置50处读取数据的情况。在这种情况下,客户端装置40将读请求发送给中继装置30。该读请求包括例如指示将成为读取目标的数据的索引。该索引包括例如将成为读取目标的数据的文件名或存储在存储装置50中的数据的地址等。中继单元31输入由客户端装置40发送的读请求。中继单元31将该输入的读请求传送到存储装置50。中继单元31输入根据所传送的读请求而从存储装置50读取的数据(由包括在读请求中的索引所指示的数据)。
同时,例如假设客户端装置40将数据写入存储装置50的情况。在该情况下,客户端装置40将写请求发送给中继装置30。该写请求包括例如将成为写目标的数据以及指示该数据的索引。该索引包括例如将成为写目标的数据的文件名或存储装置50中将写入该数据的地址等。中继单元31输入由客户端装置40发送的写请求。中继单元31将所输入的写请求传送到存储装置50。
缓存管理单元32对于例如将成为读取目标的数据或者将成为写入目标的数据(下文中称为目标数据)执行缓存控制。缓存管理单元32确定缓存数据库22中是否具有缓存该目标数据的空间区域。在具有缓存该目标数据的空间区域的情况下,缓存管理单元32通过将该目标数据存储在缓存数据库22的该空间区域中来缓存该目标数据。此外,在没有缓存该目标数据的空间区域的情况下,缓存管理单元32通过例如删除存储在缓存数据库22中的数据(缓存数据)来获取(secure)空间区域。
缓存管理单元32将与目标数据的内容相对应的标识符与该目标数据相关联,并且将其记录在缓存数据表23中。此外,缓存管理单元32将与该目标数据的内容相对应的标识符与指示该目标数据的索引相关联,并且将其记录在缓存索引表24中。
在例如存在来自客户端装置40的读请求的情况下,缓存管理单元32根据包括在该读请求中的索引确定是否存在缓存命中。在缓存命中的情况下,存储在缓存数据库22中的数据经由中继单元31而被发送到客户端装置40。同时,在缓存未命中的情况下,该读请求被传送给存储装置50,并且从存储装置50中读取由该读请求指定的数据。
此外,在从缓存数据库22中删除了缓存数据(以获取空间区域)的情况下,缓存管理单元32删除与该数据相关联并记录在缓存数据表23中的标识符,以便注销(unregister)该标识符。
标识符生成单元33接收例如来自缓存管理单元32的目标数据。标识符生成单元33生成与例如所接收的目标数据的内容相对应的标识符。当执行该操作时,标识符生成单元33使用预定的哈希函数,诸如MD5或SHA1,以生成标识符。换言之,标识符生成单元33生成哈希值以作为标识符。
将与目标数据的内容相对应的哈希值(标识符)与存储(缓存)在缓存数据库22中的目标数据(缓存数据)相关联,并且保持(记录)在缓存数据表23中。
将与由读请求或写请求指定的目标数据的内容相对应的哈希值与包括在上述读请求或写请求中的索引相关联,并且保持(记录)在缓存索引表24中。此外,在以下描述中,索引是例如在其中读取或写入目标数据的磁盘卷的序列号和逻辑块地址(LBA)的组合。序列号是标识存储装置50中的磁盘卷的号码。可以通过将例如CDB(指令描述符块)查询从中继装置30发送到存储装置50来获得序列号。此外,存在多种方法来实现上述过程,诸如在iSCSI的情况下,可使用一对iSCSI-InitiatorName(iSCSI-发起方名称)和LUN作为序列号。
缓存索引表24被制备用于存储装置50上存在的所有磁盘卷中的每一个。换言之,存在与存储装置50中的每个磁盘卷相对应的缓存索引表24。此外,在例如存储装置50中形成新的磁盘卷的情况下,形成与该磁盘卷相对应的缓存索引表24。例如,在未生成由索引(序列号和LBA)指示的数据的哈希值的情况下,将例如指示无效的哈希值(例如,值全部为0)与该索引相关联,并且记录在缓存索引表24中。
记录在缓存索引表24中的哈希值是例如LBA的多个扇区单元(512字节的倍数)中的数据的哈希值。为了方便起见,以下将以一个扇区单元(512字节)进行描述。
图3示出缓存数据表23的数据结构的实例。如图3所示,在缓存数据表23中,缓存数据(存储目的地地址)和标识符已被关联并记录。这里,缓存数据的地址是缓存数据被存储在缓存数据库22中的地址,并且例如是以8字节描述的。此外,标识符是通过使用预定的哈希函数(例如,SHA1)根据关联数据的内容而生成的哈希值。此外,例如,该哈希值是以20字节描述的。
在图3所示的实例中,哈希值“0x5C3EB80066420002BC3DCC7CA4AB6EFAD7ED4AE5”(20字节)与缓存数据的地址“0x15A0001000020000”(8字节)相关联并且被记录。哈希值“0xF28E8BDB1F95033D31D332AD1C192E5263687F27”与数据地址“0x15A0001000020200”相关联并且被记录。此外,哈希值“0xB376885AC8452B6CBF9CED81B1080BFD570D9B91”与数据地址“0x15A0001000020400”相关联并且被记录。
图4示出缓存索引表24的数据结构的实例。如图4所示,磁盘卷的序列号、LBA和标识符被记录在缓存索引表24中。在该缓存索引表24中,将磁盘卷的序列号与LBA的组合提供作为索引。此外,对于每个磁盘卷(磁盘卷的序列号)都存在一个缓存索引表24。
如图4所示,在缓存索引表24中,与序列号所标识的磁盘卷中的每个LBA相关联地记录标识符。
这里,例如,磁盘卷的序列号以10字节来描述。此外,LBA以4字节来描述。标识符是通过使用预定的哈希函数(例如,SHA1),根据磁盘卷的序列号和LBA所指示数据(存储在LBA中)的内容所生成的哈希值。该哈希值以例如20字节来描述。
图4示出与序列号“0xF4BAACDDD8FA4ACBF834”所标识的磁盘卷相对应的缓存索引表24。在图4所示的实例中, 哈希值“0x5C3EB80066420002BC3DCC7CA4AB6EFAD7ED4AE5”(20字节)与LBA“0x00000000”(4字节)相关联并且被记录。哈希值“0xF28E8BDB1F95033D31D332AD1C192E5263687F27”与LBA“0x00000001”相关联并且被记录。哈希值“0xB376885AC8452B6CBF9CED81B1080BFD570D9B91”与LBA“0x00000003”相关联并且被记录。哈希值“0x 5C3EB80066420002BC3DCC7CA4AB6EFAD7ED4AE5”与LBA“0x00000007”相关联并且被记录。
现在,将参照图5描述缓存数据表23与缓存索引表24之间的关系。此外,与上述图3和图4不同,在图5中,为了方便起见,简化并描述保持(记录)在缓存数据表23和缓存索引表24中的磁盘卷的序列号(磁盘卷序列号)、LBA、标识符(哈希值)以及数据地址。
如图5所示,针对存储装置50上存在的所有磁盘卷中的每一个制备缓存索引表24-1到24-3。换言之,存在与存储装置50上的每个磁盘卷相对应的缓存索引表24-1到24-3。
图5描述了与存储装置50中由磁盘卷序列号“1”标识的磁盘卷相对应的缓存索引表24-1。缓存索引表24-i(i=1,2,…)对应于存储装置50中由磁盘卷序列号“i”标识的磁盘卷。
在该缓存索引表24-1中,标识符“哈希值1”与LBA“1”相关联并被记录。此外,标识符“哈希值2”与LBA“2”相关联,标识符“哈希值3”与LBA“3”相关联,以及标识符“哈希值1”与LBA“4”相关联,并且这些标识符被记录。换言之,存储在LBA“1”中的数据与存储在LBA“4”中的数据是相同数据。即,LBA“1”和LBA“4”处于指向相同数据的状态。
同时,在缓存数据表23中,“地址1”与标识符“哈希值1”相关联并且作为缓存数据地址而被记录。此外,“地址2”与标识符“哈希值2”相关联,以及“地址3”与标识符“哈希值3”相关联,并且地址2和地址3作为缓存数据地址而被记录。
此外,在缓存数据库22的“地址1”中,存储了数据A。在缓存数据库22的“地址2”中,存储了数据B。在缓存数据库22的“地址3”中,存储了数据C。
数据A是缓存在缓存数据库22的“地址1”中的数据,并且是(等同于)在存储装置50的磁盘卷序列号“1”的LBA“1”和LBA“4”中存储的数据。
数据B是缓存在缓存数据库22的“地址2”中的数据,并且是(等同于)在存储装置50的磁盘卷序列号“1”的LBA“2”中存储的数据。
数据C是缓存在缓存数据库22的“地址3”中的数据,并且是(等同于)在存储装置50的磁盘卷序列号“1”的LBA“3”中存储的数据。
如上所述,缓存数据表23和缓存索引表24-1通过标识符(哈希值)进行关联。因此,在存在例如从客户端装置40发送到存储装置50的读请求的情况下,中继装置30可根据包括在读请求中的索引(磁盘卷序列号和LBA)来标识存储在缓存数据库22中的缓存数据。
现在,将参照图6的流程图描述在存在例如来自客户端装置40的读请求的情况下,由中继装置30执行的缓存命中确定处理的处理过程。由客户端装置40发送的读请求包括索引,该索引指示由该读请求指定的数据(以成为读取目标)。该索引包括磁盘卷序列号以及该磁盘卷中的LBA,其中该磁盘卷序列号标识了存储装置50中存储由读请求指定的数据的磁盘卷。
首先,中继装置30中的中继单元31输入(接收)由客户端装置40发送的读请求。中继单元31将所输入的读请求传递到缓存管理单元32。
随后,缓存管理单元32标识缓存索引表24-i(步骤S1),该缓存索引表对应于由磁盘卷序列号(磁盘卷序列号“i”)标识的磁盘卷,该磁盘卷序列号被包括在由中继单元31传递的读请求中。
在所标识的缓存索引表24-i中,缓存管理单元32标识与包括在读请求中的LBA相关联地记录的哈希值。缓存管理单元32确定所标识的哈希值是否有效(步骤S2)。
在例如如上所述没有生成由读请求指定的数据的哈希值的情况下,与存储了该数据的LBA相关联地记录指示无效的哈希值(例如,值全部为0)。
即,在所标识的哈希值不是指示无效的哈希值的情况下,缓存管理单元32确定该哈希值有效。
在所标识的哈希值被确定为有效的情况下(步骤S2中为是),缓存管理单元32获得该哈希值(步骤S3)。
缓存管理单元32确定所获得的哈希值是否存在于缓存数据表23中(步骤S4)。
在所获得的哈希值被确定为存在于缓存数据表23中的情况下(步骤S4中为是),缓存管理单元32标识在缓存数据表23中与哈希值相关联地记录的缓存数据的地址(步骤S5)。
缓存管理单元32参照缓存数据库22,获得存储(缓存)在所标识地址中的数据(缓存数据)。缓存管理单元32将所获得的数据经由中继单元31输出(发送)到客户端装置40(步骤S6)。
例如,在如上所述将读请求从客户端装置40发送到存储装置50的情况下,执行确定由读请求指定的数据是否被缓存在缓存数据库22中的处理(缓存命中确定)。
同时,在步骤S2中将所标识的哈希值确定为无效的情况下,由读请求指定的数据被认为未缓存,即缓存未命中,并且结束该处理。
此外,在步骤S4中将所获得的哈希值确定为不存在于缓存数据表23中的情况下,认为缓存未命中,并且结束该处理。
现在,将在下面描述在中继装置30的缓存数据库22中记录数据(即,缓存数据)的处理过程。根据例如从客户端装置40发送到存储装置50的请求是读请求还是写请求,在缓存数据库22中执行数据记录处理(下文中称为缓存记录处理)的时序会有所不同。
在此,将参照图7的流程图来描述在例如将读请求从客户端装置40发送到存储装置50的情况下的处理流程。
首先,客户端装置40将读请求发送到中继装置30(步骤S11)。
由客户端装置40发送的读请求被输入到中继装置30。在此,中继装置30执行上述图6所示的缓存命中确定处理(步骤S12)。
在此,假设由中继装置30执行的缓存命中确定处理确定了缓存未命中的情况。在这种情况下,中继装置30将读请求传送到存储装置50(步骤S13)。在确定为缓存命中的情况下,中继装置30将缓存数据传送到客户端装置40,并且结束该处理。
在存储装置50中,读取由中继装置30传送的读请求所指定的数据(读数据)(步骤S14)。存储装置50将该读数据发送到中继装置30。
中继装置30将由存储装置50发送的数据传送到客户端装置40(步骤S15)。
中继装置30对由存储装置50发送的数据执行缓存记录处理(下文中称为第一缓存记录处理)(步骤S16)。
现在,将参照图8的流程图,描述在例如将写请求从客户端装置40发送到存储装置50的情况下的处理流程。写请求包括由该写请求指定的数据(写数据)以及指示该数据的索引。该索引包括标识存储装置50中例如将写入该写数据的磁盘卷的磁盘卷序列号以及该磁盘卷的LBA。
首先,客户端装置40将写请求发送到中继装置30(步骤S21)。
由客户端装置40发送的写请求被输入到中继装置30。中继装置30将所输入的写请求传送到存储装置50(步骤S22)。当写请求被中继装置30传送时,存储装置50根据该写请求执行数据的写处理。
同时,在中继装置30中,对由客户端装置40发送的写请求所指定的数据(写数据)执行缓存记录处理(下文中称为第二缓存记录处理)(步骤S23)。
在此,将参照图9的流程图描述图7中示出的步骤16以及图8中示出的步骤S23的缓存记录处理的处理过程。
如上所述,根据由客户端装置40发送的请求的类型(读请求或写请求),执行缓存记录处理的时序会有所不同。然而,当中继装置30(的中继单元31)输入磁盘卷序列号、LBA和数据(读数据或写数据)时,执行上述第一缓存记录处理和第二缓存记录处理。从而,在第一缓存记录处理和第二缓存记录处理中执行的处理被认为是相同的。因此,该处理将被认为是相同的并描述如下。
磁盘卷序列号和LBA是包括在例如读请求或写请求中的索引。此外,由中继装置30输入的数据将被描述为目标数据。
中继单元31将所输入的磁盘卷序列号、LBA以及目标数据传递到缓存管理单元32。缓存管理单元32将所接收的目标数据发送到标识符生成单元33。
标识符生成单元33生成与由缓存管理单元33发送的目标数据的内容相对应的标识符。此时,标识符生成单元33生成作为该标识符的哈希值。通过使用例如预定的哈希函数,如SHA1,来生成该哈希值。
缓存管理单元32获得由标识符生成单元33生成的哈希值(步骤S31)。
缓存管理单元32确定所获得的哈希值是否存在于缓存数据表23中(步骤S32)。
在所获得的哈希值被确定为没有存在于缓存数据表23中的情况下(步骤S32中为否),缓存管理单元32确定在例如缓存数据库22中是否存在存储(缓存)该目标数据的空间区域,即,缓存数据库22的存储区域是否用尽(步骤S33)。
在确定没有用于缓存的空间区域的情况下(步骤S33中为否),缓存管理单元32在缓存数据库22中获取用于缓存目标数据的空间区域。此时,例如,缓存管理单元32从缓存数据库22中清除缓存在缓存数据库22的缓存数据中最不必要的数据。在此,在考虑例如时间/空间局部性的情况下来辨别该最不必要的数据。例如,可应用LRU(最近最少使用)。
此外,缓存管理单元32从缓存数据表23中删除存储在所获取的区域中的缓存数据的地址以及与该缓存数据的内容相对应的标识符(哈希值),并且在该缓存数据表23中注销该标识符。
在获取缓存数据库22中用于缓存目标数据的空间区域之后,缓存管理单元32将目标数据缓存在缓存数据库22中所获取的区域内(步骤S35)。此外,缓存管理单元32将存储所缓存的目标数据的地址以及对应于目标数据内容的标识符(条目)添加(记录)到缓存数据表23中(步骤S35)。此外,对应于目标数据内容的标识符是在上述步骤S31中生成的哈希值。
缓存管理单元32随后标识缓存索引表24-i,该缓存索引表对应于由中继单元31传递的磁盘卷序列号(磁盘卷序列号“i”)所标识的磁盘卷。在所标识的缓存索引表24-i中,缓存管理单元32将与由中继单元31传递的LBA相关联的哈希值重写为在上述步骤S31中获得的哈希值(步骤S36)。
同时,当在步骤S32中获得的哈希值被确定为存在于缓存数据表23中的情况下,缓存管理单元32标识在缓存数据表23中与所获得的哈希值相关联地记录的地址。缓存管理单元32确定存储在缓存数据库22中所标识地址处的数据(缓存数据)是否与目标数据相同(步骤S37)。
在确定存储在缓存数据库22中所标识地址处的数据与目标数据相同的情况下(步骤S37中为是),执行步骤S36的处理。
同时,当在步骤S37中确定存储在缓存数据库22中所标识地址处的数据与目标数据不相同的情况下,由于相同哈希值对应于多个数据,所以检测出哈希冲突。例如,在检测出哈希冲突的情况下,结束对该目标数据的缓存记录处理。换言之,不缓存该目标数据。
另外,也可进行配置,使得在检测出哈希冲突时,接着使用与此前用于生成该哈希值的哈希函数不同的哈希函数来生成哈希值。也可以生成不同于该哈希值的标识符,并且将该不同的标识符作为第二标识符。通过这种方式,例如,可在避免哈希冲突的情况下执行缓存记录处理。
另外,在上述缓存记录处理中,在例如从客户端装置40发送到存储装置50的请求是写请求的情况下,当该写请求针对已被缓存的缓存数据时,将该数据更新为该写数据。当写请求针对未被缓存的数据时,缓存该写数据。然而,也可进行配置,使得在例如存在针对未被缓存的数据的写请求时,不缓存该数据,而是使标识符(哈希值)无效,其中该标识符与包括在写请求中的磁盘卷序列号以及LBA相关联地记录在缓存索引表24中。在这种情况下,当例如从存储装置50中读出由该写请求指定的写数据时,将该写数据缓存在中继装置30中。
现在,将参照图10详细描述当前实施例的操作。如图10所示,首先,哈希值1与索引1相关联并被记录在缓存索引表24a中。类似地,假设哈希值2与索引2相关联,哈希值3与索引3相关联,以及哈希值1与索引4相关联,并且这些哈希值被记录。同时,地址1与哈希值1相关联并被记录在缓存数据表23a中。类似地,假设地址2与哈希值2相关联,以及地址3与哈希值3相关联,并且地址2和地址3被记录。此外,例如假设将存储(记录)在缓存数据库22中的地址1处的数据称为数据A。
换言之,存储在缓存数据库22中的地址1处的数据A是由记录在缓存索引表24a中的索引1和4指示的数据。
在此,假设一种情况,其中,例如当缓存数据库22的存储区域已用尽时,例如将存储数据A的区域(由地址1指示的区域)获取作为空间区域。在这种情况下,记录在缓存数据表23a中的哈希值1和地址1被从缓存数据表23a中清除,并变为注销。因此,如图10所示,缓存数据表23a被更新为缓存数据表23b。
通过这种方式,由上述索引1和4指示的数据(数据A)变为未缓存。
同时,即使在记录在缓存数据表23a中的哈希值1和地址1变为注销的情况下,记录在缓存索引表24a中的索引和哈希值也不变为注销。从而,缓存索引表24a变成(与缓存索引表24a相同的)缓存索引表24b。
在此,假设例如由客户端装置40发送包括索引1的读请求的情况。此外,由索引1指示的数据是数据A。在这种情况下,通过例如上述的缓存记录处理来将数据A缓存到缓存数据库22中。此时,数据A被认为缓存在缓存数据库22中的地址1处。
在这种情况下,使对应于数据A的内容的哈希值1与数据A的地址1相关联,并记录在缓存数据表23b中。换言之,如图10所示,缓存数据表23a变成缓存数据表23c。
通过这种方式,尽管由索引1和4指示的数据A未在上述阶段的缓存数据表23b中进行缓存,但是例如当根据包括索引1的读请求重新缓存数据A时,数据A也可对应于索引4而被缓存。
因此,在例如存在包括索引4的读请求的情况下,即使未执行对于索引4的缓存记录处理,也可以确定缓存命中并且快速地传送数据。
如上所述,通过管理缓存数据表23和缓存索引表24,当由多个索引所指向的缓存数据在被无效之后重新进行缓存时,本实施例可使所述多个索引指向重新缓存的数据。
换言之,即使在从缓存数据表23中注销数据的标识符(哈希值)和地址的情况下,缓存索引表中的条目(哈希值)也不会被注销。因此,例如当已从缓存数据表23中注销的条目被重新记录到该缓存中时,指向该条目的所有缓存索引表24的条目变为有效。因此,可以减小在由多个索引所指向的缓存数据被无效的情况下,由缓存未命中所造成的负面影响。因此,可以有效地传送数据。
此外,在上述实施例中,描述了存储在存储装置50的磁盘卷上的数据(块卷)被缓存到中继装置30中。然而,关于上述实施例的缓存方法也可采用当前实施例中所描述缓存之外的通用缓存。也可以进行细致地配置,使得例如将缓存数据库22、缓存数据表23以及缓存索引表24存储在例如计算机10的存储器中。
此外,本发明就其整体而言不限于上述实施例。在实施阶段,可通过在本发明概述范围中修改组件来实现本发明。此外,可以采用上述实施例中公开的多个组件的任意组合来形成各种发明。例如,可以从实施例中指示的全部组件中删除一些组件。
本领域技术人员将能够容易地获知附加的优点和修改。因此,本发明就其更广泛方面而言不限于在此示出和描述的具体细节和典型实施例。因此,在不偏离由所附权利要求及其等同物限定的一般发明概念的精神或范围的情况下,可作出各种修改。
Claims (9)
1.一种由缓存设备执行的缓存方法,该缓存设备包括用于在存储装置中缓存数据的缓存数据库、缓存数据表和缓存索引表,所述方法的特征在于,包括:
输入存储在所述存储装置中的数据以及指示所述数据在所述存储装置中的存储位置的索引;
生成与所输入的数据的内容相对应的标识符;
确定所生成的标识符是否记录在所述缓存数据表中,当所生成的标识符被确定为未记录在所述缓存数据表中时,确定所述缓存数据库中是否存在缓存所输入的数据的空间区域;
当确定在所述缓存数据库中存在所述空间区域时,将所输入的数据缓存进所述缓存数据库;
将所生成的标识符与所缓存的数据在所述缓存数据库中的地址相关联地记录在所述缓存数据表中;
将所生成的标识符与所输入的索引相关联地记录在所述缓存索引表中;
当确定所述缓存数据库中不存在空间区域时,在所述缓存数据库中获取一区域作为空间区域;
将所输入的数据缓存进所获取的空间区域;
将记录在所述缓存数据表中的与所获取的空间区域的地址相关联的原有标识符注销,其中不将记录在所述缓存索引表中的原有标识符设置为无效;
将所生成的标识符与所获取的空间区域的地址相关联地记录在所述缓存数据表中;以及
将所生成的标识符与所输入的索引相关联地记录在所述缓存索引表中。
2.根据权利要求1所述的方法,其特征在于,还包括:
输入用于请求从所述存储装置读取数据的读请求,该请求包括索引,该索引指示被请求从所述存储装置读取的数据;
标识与包括在所输入的读请求中的所述索引相关联地记录在所述缓存索引表中的标识符;
确定在所述缓存数据表中是否存在所标识的标识符,从而确定在所述缓存数据库中是否存在与所标识的标识符相关联的数据;以及
在确定存在所述数据的情况下,将所述数据输出到读请求方。
3.根据权利要求1所述的方法,其特征在于,在生成所述标识符的步骤中,使用预定的哈希函数生成哈希值,以作为与所述数据的内容相对应的标识符。
4.根据权利要求3所述的方法,其特征在于,还包括:
确定所生成的哈希值是否记录在所述缓存数据表中;
在确定所述哈希值记录在所述缓存数据表中的情况下,确定与所生成的哈希值相关联的数据是否与所输入的数据相同;以及
在上述步骤确定为不相同的情况下,检测哈希冲突,其中
在缓存步骤中,在检测出所述哈希冲突的情况下,不将所输入的数据缓存进所述缓存数据库。
5.根据权利要求4所述的方法,其特征在于,还包括:
在检测出所述哈希冲突的情况下,使用另一哈希函数生成哈希值。
6.根据权利要求4所述的方法,其特征在于,还包括:
在检测出所述哈希冲突的情况下,生成不同于所述哈希值的标识符。
7.根据权利要求1所述的方法,其特征在于,
所输入的数据是从所述存储装置传送到所述客户端装置的传送数据,其中所述存储装置和所述客户端装置是独立于所述缓存设备提供的。
8.根据权利要求7所述的方法,其特征在于,
所输入的数据是在所述存储装置中提供的磁盘卷内存储的块卷,以及
所述索引包括标识所述磁盘卷的标识号码以及存储所述块卷的逻辑块地址。
9.一种缓存设备,其特征在于,包括:
缓存数据库,用于缓存数据;
输入单元,用于输入存储在存储装置中的数据和指示该数据在所述存储装置中的存储位置的索引;
标识符生成单元,用于生成与所输入的数据的内容相对应的标识符;
确定单元,用于确定所生成的标识符是否记录在缓存数据表中,当所生成的标识符被确定为未记录在所述缓存数据表中时,确定在所述缓存数据库中是否存在缓存所输入的数据的空间区域;
缓存数据表,将所生成的标识符与缓存在所述缓存数据库中的所述数据在缓存数据库中的地址相关联地记录在所述缓存数据表中;
缓存索引表,将所生成的标识符与所输入的索引相关联地记录在所述缓存索引表中;
获取单元,用于在所述确定单元确定所述缓存数据库中不存在空间区域的情况下,在所述缓存数据库中获取一区域作为空间区域;
缓存管理单元,用于在所述确定单元确定所述缓存数据库中存在空间区域的情况下,将所输入的数据缓存进所述缓存数据库中;并且在所述确定单元确定所述缓存数据库中不存在空间区域的情况下,获取单元获取空间区域后,将所输入的数据缓存进所获取的空间区域中;以及
注销单元,用于在所述确定单元确定所述缓存数据库中不存在空间区域的情况下,获取单元获取空间区域后,将所述缓存数据表中与所获取的区域的地址相关联地记录的原有标识符注销,其中不将记录在所述缓存索引表中的原有标识符设置为无效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP189850/2007 | 2007-07-20 | ||
JP2007189850A JP4405533B2 (ja) | 2007-07-20 | 2007-07-20 | キャッシュ方法及びキャッシュ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101350030A CN101350030A (zh) | 2009-01-21 |
CN101350030B true CN101350030B (zh) | 2012-04-18 |
Family
ID=40265782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101377508A Expired - Fee Related CN101350030B (zh) | 2007-07-20 | 2008-07-18 | 用于缓存数据的方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20090024795A1 (zh) |
JP (1) | JP4405533B2 (zh) |
CN (1) | CN101350030B (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9021197B2 (en) * | 2005-06-24 | 2015-04-28 | Hewlett-Packard Development Company, L.P. | Drive indicating mechanism for removable media |
JP4607937B2 (ja) * | 2007-10-31 | 2011-01-05 | 株式会社東芝 | キャッシュ方法及びキャッシュ装置 |
US9268779B2 (en) * | 2009-01-28 | 2016-02-23 | Mckesson Financial Holdings | Methods, computer program products, and apparatuses for dispersing content items |
JP4818383B2 (ja) * | 2009-03-11 | 2011-11-16 | 株式会社東芝 | 中継装置及び同装置にキャッシュデータを登録するための方法 |
CN101840430B (zh) * | 2010-04-28 | 2012-02-29 | 北京握奇数据系统有限公司 | 智能卡数据库多表操作方法及装置 |
CN102591864B (zh) * | 2011-01-06 | 2015-03-25 | 上海银晨智能识别科技有限公司 | 比对系统中的数据更新方法及装置 |
US8874935B2 (en) * | 2011-08-30 | 2014-10-28 | Microsoft Corporation | Sector map-based rapid data encryption policy compliance |
US8738858B1 (en) | 2011-11-30 | 2014-05-27 | Emc Corporation | System and method for improving cache performance |
US9208098B1 (en) * | 2011-11-30 | 2015-12-08 | Emc Corporation | System and method for improving cache performance |
US8738857B1 (en) | 2011-11-30 | 2014-05-27 | Emc Corporation | System and method for improving cache performance |
US8725939B1 (en) | 2011-11-30 | 2014-05-13 | Emc Corporation | System and method for improving cache performance |
US9424175B1 (en) | 2011-11-30 | 2016-08-23 | Emc Corporation | System and method for improving cache performance |
CN103020268B (zh) * | 2012-12-26 | 2016-05-04 | 大唐软件技术股份有限公司 | 关系型数据库序列号应用方法和系统 |
US20160217079A1 (en) | 2013-02-08 | 2016-07-28 | Shanghai Xinhao Microelectronics Co., Ltd. | High-Performance Instruction Cache System and Method |
CN103984647B (zh) * | 2013-02-08 | 2017-07-21 | 上海芯豪微电子有限公司 | 存储表替换方法 |
US20140344570A1 (en) | 2013-05-20 | 2014-11-20 | Microsoft Corporation | Data Protection For Organizations On Computing Devices |
CN104298675B (zh) * | 2013-07-18 | 2017-06-16 | 国际商业机器公司 | 用于缓存管理的方法和装置 |
CN104424116B (zh) * | 2013-08-19 | 2017-07-07 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法及系统 |
CN104572638B (zh) * | 2013-10-09 | 2019-03-26 | 腾讯科技(深圳)有限公司 | 数据读写方法及装置 |
US10615967B2 (en) | 2014-03-20 | 2020-04-07 | Microsoft Technology Licensing, Llc | Rapid data protection for storage devices |
US9825945B2 (en) | 2014-09-09 | 2017-11-21 | Microsoft Technology Licensing, Llc | Preserving data protection with policy |
US9853812B2 (en) | 2014-09-17 | 2017-12-26 | Microsoft Technology Licensing, Llc | Secure key management for roaming protected content |
US9900295B2 (en) | 2014-11-05 | 2018-02-20 | Microsoft Technology Licensing, Llc | Roaming content wipe actions across devices |
US9853820B2 (en) | 2015-06-30 | 2017-12-26 | Microsoft Technology Licensing, Llc | Intelligent deletion of revoked data |
US9900325B2 (en) | 2015-10-09 | 2018-02-20 | Microsoft Technology Licensing, Llc | Passive encryption of organization data |
CN108348292B (zh) | 2015-10-27 | 2021-04-27 | 纳诺帕斯技术有限公司 | 具有机械性导引的微针装置 |
JP2018014568A (ja) * | 2016-07-19 | 2018-01-25 | 富士通株式会社 | 中継装置及び中継方法 |
CN107332908B (zh) * | 2017-07-03 | 2020-11-27 | 网宿科技股份有限公司 | 一种数据传输方法及其系统 |
CN108009025A (zh) * | 2017-12-13 | 2018-05-08 | 北京小米移动软件有限公司 | 数据存储方法及装置 |
CN109101641B (zh) * | 2018-08-20 | 2022-09-23 | 联想(北京)有限公司 | 表格处理方法、装置、系统和介质 |
CN109407988A (zh) * | 2018-10-18 | 2019-03-01 | 张德辉 | 冷数据存储系统及其存储方法 |
CN112565870B (zh) | 2019-09-26 | 2021-09-14 | 北京字节跳动网络技术有限公司 | 内容的缓存和读取方法、客户端及存储介质 |
CN112286973B (zh) * | 2020-11-19 | 2022-09-30 | 每日互动股份有限公司 | 数据消息的存储方法、装置、计算机设备及存储介质 |
CN115952110B (zh) * | 2023-03-09 | 2023-06-06 | 浪潮电子信息产业股份有限公司 | 一种数据缓存方法、装置、设备和计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427187B2 (en) * | 1998-07-31 | 2002-07-30 | Cache Flow, Inc. | Multiple cache communication |
EP1207454A1 (en) * | 2000-11-15 | 2002-05-22 | International Business Machines Corporation | Java run-time system with modified linking identifiers |
SE0004736D0 (sv) * | 2000-12-20 | 2000-12-20 | Ericsson Telefon Ab L M | Mapping system and method |
US20060143506A1 (en) * | 2004-12-29 | 2006-06-29 | Lsi Logic Corporation | RAID storage controller assist circuit, systems and methods |
US7594145B2 (en) * | 2006-05-31 | 2009-09-22 | Fujitsu Limited | Improving performance of a processor having a defective cache |
US7568068B2 (en) * | 2006-11-13 | 2009-07-28 | Hitachi Global Storage Technologies Netherlands B. V. | Disk drive with cache having volatile and nonvolatile memory |
-
2007
- 2007-07-20 JP JP2007189850A patent/JP4405533B2/ja not_active Expired - Fee Related
-
2008
- 2008-07-17 US US12/174,817 patent/US20090024795A1/en not_active Abandoned
- 2008-07-18 CN CN2008101377508A patent/CN101350030B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP4405533B2 (ja) | 2010-01-27 |
JP2009026141A (ja) | 2009-02-05 |
CN101350030A (zh) | 2009-01-21 |
US20090024795A1 (en) | 2009-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101350030B (zh) | 用于缓存数据的方法及装置 | |
CN111190928A (zh) | 缓存处理方法、装置、计算机设备以及存储介质 | |
US11287994B2 (en) | Native key-value storage enabled distributed storage system | |
CN107179878B (zh) | 基于应用优化的数据存储的方法和装置 | |
JP2011258016A (ja) | データ管理システム、データ管理方法、及びデータ管理プログラム | |
CN104573064B (zh) | 一种大数据环境下的数据处理方法 | |
CN102739720A (zh) | 分布式缓存服务器系统及其应用方法、缓存客户端、缓存服务端 | |
AU2015249206B2 (en) | Receiver-side data deduplication in data systems | |
CN107004013A (zh) | 用于使用基于硬件的处理来提供分布式树遍历的系统和方法 | |
CN102904878A (zh) | 用于数据包的高效下载的方法及系统 | |
US8447825B2 (en) | File sharing system and file sharing method | |
KR20100067976A (ko) | 분산 저장된 컨텐츠 파일의 동기화 방법 | |
CN103970875A (zh) | 一种并行重复数据删除方法 | |
KR101482014B1 (ko) | 할당 테이블을 이용한 파일 캐시 시스템 및 방법 그리고 파일 캐시 어플리케이션을 배포하는 배포 시스템 및 배포 방법 | |
WO2011121905A1 (ja) | ファイルストレージ装置、データ格納方法およびデータ格納プログラム | |
US20180107404A1 (en) | Garbage collection system and process | |
US7249219B1 (en) | Method and apparatus to improve buffer cache hit rate | |
KR101628195B1 (ko) | 클라우드 서비스를 이용한 2중 백업 시스템 및 데이터 관리 방법 | |
JP2009193440A (ja) | キャッシュシステム、サーバおよび端末 | |
CN103491124A (zh) | 一种对彩信数据进行处理的方法及分布式缓存系统 | |
CN103077099A (zh) | 一种块级快照系统及基于该系统的用户读写方法 | |
JP2011242826A (ja) | ファイル管理システム及びファイル管理プログラム | |
US11977636B2 (en) | Storage transaction log | |
JP4607936B2 (ja) | データ転送方法及びデータ転送システム | |
KR101138937B1 (ko) | 네트워크 버퍼를 이용한 컨텍스트 상태 정보 기반 미리 읽기 시스템 및 방법 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120418 Termination date: 20200718 |
|
CF01 | Termination of patent right due to non-payment of annual fee |