CN110196818B - 缓存数据的方法、缓存设备和存储*** - Google Patents
缓存数据的方法、缓存设备和存储*** Download PDFInfo
- Publication number
- CN110196818B CN110196818B CN201810163505.8A CN201810163505A CN110196818B CN 110196818 B CN110196818 B CN 110196818B CN 201810163505 A CN201810163505 A CN 201810163505A CN 110196818 B CN110196818 B CN 110196818B
- Authority
- CN
- China
- Prior art keywords
- data unit
- cache
- target data
- free block
- index
- 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
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
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0824—Distributed directories, e.g. linked lists of caches
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种缓存数据的方法和缓存设备,该方法包括:缓存设备获取待缓存的目标数据单元以及所述目标数据单元对应的地址;确定所述缓存设备保存的索引表中包括有所述地址的第一索引;确定空闲块集合,所述空闲块集合由所述缓存设备的缓存空间中至少一个空闲块组成;确定目标空闲块,所述目标空闲块为所述空闲块集合中的任一个空闲块;将所述目标数据单元缓存在所述目标空闲块中。本申请实施例的缓存数据的方法能够在防止数据破坏的同时提高缓存空间的利用率。
Description
技术领域
本申请涉及计算机存储领域,并且更具体地,涉及计算机存储领域中一种缓存数据的方法、缓存设备和存储***。
背景技术
为了提升分布式存储***的性能,在存储池上层增加多副本的分布式高速缓冲存储器(Cache Memory,Cache)。分布式Cache的难点主要是在多副本之间保证数据的一致性和完整性,同时满足高性能、低时延的要求。
当前存在的分布式存储***很难做到数据的一致性和完整性的同时,还保持缓存空间利用率高的优点。因此,分布式存储***如何保持多副本之间数据的一致性和完整性的同时还保持缓存空间利用率高成为亟待解决的问题。
发明内容
本申请提供一种缓存数据的方法、缓存设备和存储***,能够满足分布式存储***多副本之间数据的一致性和完整性以及空间利用率高的要求。
第一方面,提供了一种缓存数据的方法,该方法包括:缓存设备获取待缓存的目标数据单元以及所述目标数据单元对应的地址;确定所述缓存设备的索引表中包括有所述地址的第一索引;确定空闲块集合,所述空闲块集合由所述缓存设备中至少一个空闲块组成;确定目标空闲块,所述目标空闲块为所述空闲块集合中的任一个空闲块;将所述目标数据单元缓存在所述目标空闲块中。
根据本申请实施例的缓存数据的方法,对于待缓存的数据单元在缓存空间的空闲块中任意分配一个空闲块缓存待缓存的数据单元,其中,数据单元可以是数据块(block)也可以是数据页面(page)。能够使得在缓存设备获取的待缓存的目标数据单元所对应的地址,在索引表中有第一索引,其中第一索引中的地址和目标数据单元的地址相同的情况下,仍然在多个空闲块中任意分配一个空闲块缓存待缓存的目标数据单元,能够提高缓存空间的利用率。
可选地,本申请实施例中的待缓存数据单元可以是在索引表中没有上述第一索引的数据单元。
可选地,本申请实施例中缓存设备获取到待缓存的数据之后会根据***规定的数据单元的固定大小对待缓存数据进行切分,得到至少一个待缓存的目标数据单元。
结合第一方面,在第一方面的一种实现方式中,所述确定空闲块集合包括:
在确定所述缓存设备的缓存空间中包括至少一个第一类空闲块的情况下,确定所述空闲块集合由至少一个所述第一类空闲块组成,所述第一类空闲块为在所述索引表中不存在索引的所述空闲块;
在确定所述缓存设备的缓存空间中不包括所述第一类空闲块且包括至少一个第二类空闲块的情况下,确定所述空闲块集合由至少一个所述第二类空闲块组成,所述第二类空闲块为在所述索引表中存在索引的所述空闲块。
根据本申请实施例的缓存数据的方法,对于待缓存的数据单元,缓存设备可以首先将待缓存的目标数据单元缓存在在索引表中没有索引的空闲块(第一类空闲块)上,能够避免在缓存空间中同时包括有索引的第一类空闲块以及没有索引的第二类空闲块,并且存在地址相同第一类空闲块和第二类空闲块时,其中,所述地址相同第一类空闲块为无效状态(invalid)的空闲块,该无效状态的空闲块可以是该空闲块上之前缓存了数据单元,但是该数据单元已经被重写了,成为旧的数据单元,而地址相同第二类空闲块为清除(clean)状态的空闲块,该清除状态的空闲块可以是该空闲块上之前缓存了数据单元,但是该数据单元已经存储到存储***中,而该数据单元的索引还保存在索引表中,即,该索引指向地址相同的两个数据单元中的新的数据单元,如果缓存目标数据单元的时候没有缓存在第一类空闲块上而是缓存在上述第二类空闲块上,也就是说地址相同的数据单元的最新的数据被破坏了,在恢复数据的时候可能恢复出旧数据单元而导致的恢复数据出错,并且将目标数据单元首先缓存在第一类空闲块上对于存在索引的第二类空闲块来说可以将索引保留更长的时间,可以给读请求提供查询。
可选地,上述目标数据单元可以是待缓存的任意一个数据单元。
根据本申请实施例的缓存数据的方法,对于待缓存的数据单元,在缓存空间中不包括没有索引的空闲块时,缓存设备从有索引的空闲块(第二类空闲块)中任意分配一个空闲块缓存待缓存的目标数据单元,本申请实施例缓存数据的方法是在第一空闲块分配完了之后才将数据单元缓存在第二类空闲块中,能够避免在恢复数据的时候恢复出旧数据而导致的恢复数据出错。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述方法还包括:根据所述目标数据单元生成元数据,所述元数据用于恢复所述目标数据单元;所述元数据缓存在所述目标数据单元缓存的所述目标空闲块中。
根据本申请实施例的缓存数据的方法,缓存设备获取到待缓存的数据并基于***规定的固定数据单元大小对数据进行划分得到至少一个目标数据单元之后,对于待缓存的目标数据单元,生成与所述目标数据单元对应的元数据,其中,元数据用于在缓存设备出现故障之后重建数据的过程中,恢复目标数据单元。本申请实施例的缓存数据的方法将目标数据单元和元数据缓存在目标数据单元缓存的空闲块中,这种将目标数据单元和元数据放在一起缓存的布局,能够降低数据同步时候的***开销以及避免数据单元和元数据同步的过程中出现不对应的情况。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述元数据包括序列号。
可选地,在一些实施例中,所述序列号用于表示所述目标数据单元为所述缓存设备第N次缓存的数据单元。
可选地,在另一些实施例中,所述序列号用于表示所述目标数据单元为所述缓存设备第N次缓存地址相同的数据单元,其中,所述N为正整数。
根据本申请实施例的缓存数据的方法,缓存设备对于待缓存的目标数据单元,生成与所述目标数据单元对应的元数据,其中,元数据还包括序列号,序列号用于表示目标数据单元是第几次缓存在缓存空间中的数据单元,能够在基于元数据恢复数据单元的过程中,按照缓存的顺序选择缓存的较新的数据单元,从而提高数据恢复的准确性。
可选地,元数据中的序列号从1开始编号,即,每缓存一个数据单元,序列号的大小加1。那么,在缓存***重建时,利用元数据进行数据单元恢复时,当扫描到多个元数据中的地址一样且所述多个元数据都经过了校验属于有效的数据单元,那么可以根据元数据中的序列号的大小,选择序列号最大的作为有效数据单元,因为,序列号越大表示缓存的数据越新。
可选地,元数据中的序列号从1开始编号,针对地址相同的数据单元,从1开始编号,每缓存一个地址相同的数据单元,该数据单元对应的元数据中的序列号相对于缓存设备中,地址相同的数据单元的元数据中的序列号加1。在缓存***重建时,利用元数据进行数据单元恢复时,当扫描到多个元数据中的地址一样且所述多个元数据都经过了校验属于有效的数据单元,那么可以根据元数据中的序列号的大小,选择序列号最大的作为有效数据单元,因为,序列号越大表示缓存的数据越新。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述方法还包括:在所述缓存设备的缓存空间中的数据单元需要恢复的情况下,恢复多个地址相同的元数据中所述N最大的元数据对应的目标数据单元。
根据本申请实施例的缓存数据的方法,缓存设备在恢复数据的过程中,能够在基于元数据恢复缓存时间靠后的数据单元,按照缓存的顺序选择缓存的较新的数据单元,从而提高数据恢复的准确性。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述方法还包括:所述缓存设备进行目标数据单元同步;所述缓存设备在完成所述目标数据单元同步的情况下,生成所述目标数据单元对应的第二索引,所述第二索引用于描述所述目标数据单元,所述第二索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在所述目标空闲块中。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述方法还包括:
所述缓存设备将所述目标数据单元从所述目标空闲块存储到存储***;所述缓存设备生成第三索引,所述第三索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。
根据本申请实施例的缓存数据的方法,缓存设备对于待缓存的目标数据单元,生成与所述目标数据单元对应的第二索引,其中,第二索引中包括目标数据单元的状态信息,状态信息用于表示目标数据单元当前所属的状态是缓存的状态。当目标数据单元从所述目标空闲块存储到存储***,所述缓存设备生成第三索引,所述第三索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元已经存储在存储***的状态。本申请实施例中将目标数据单元的状态信息放在对应的索引中,能够在目标数据单元的状态发生改变的时候,仅仅更新目标数据单元对应的索引中的表示目标数据单元的状态信息。避免同步数据单元的状态信息到缓存设备中的其他副缓存设备上,降低了缓存设备的能耗。
第二方面,提供了一种缓存数据的方法,该方法包括:缓存设备将目标数据单元缓存在缓存空间中;所述缓存设备进行目标数据单元同步;所述缓存设备在完成所述目标数据单元同步的情况下,生成第一索引,所述第一索引用于描述所述目标数据单元,所述第一索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在缓存空间中。
结合第二方面,在第二方面的一种实现方式中,所述方法还包括:所述缓存设备将所述目标数据单元从所述缓存空间存储到存储***;所述缓存设备生成第二索引,所述第二索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。
根据本申请实施例的缓存数据的方法,缓存设备对于待缓存的目标数据单元,生成与所述目标数据单元对应的第一索引,其中,第一索引中包括目标数据单元的状态信息,状态信息用于表示目标数据单元当前所属的状态是缓存的状态。当目标数据单元从所述缓存空间存储到存储***所述缓存设备生成第二索引,所述第二索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元已经存储在存储***的状态。本申请实施例中将目标数据单元的状态信息放在对应的索引中,能够在目标数据单元的状态发生改变的时候,仅仅更新目标数据单元对应的索引中的表示目标数据单元的状态信息。避免同步数据单元的状态信息到缓存设备中的其他副缓存设备上,降低了缓存设备的能耗。
可选地,本申请实施例的待缓存的目标数据单元可以缓存在空闲块中,也可以缓存在包括缓存数据的缓存块上,本申请实施例对此并不限制。
结合第二方面,在第二方面的另一种实现方式中,所述将目标数据单元缓存在缓存空间中包括:所述缓存设备获取待缓存的目标数据单元;确定空闲块集合,所述空闲块集合由所述缓存设备的缓存空间中至少一个空闲块组成;确定目标空闲块,所述目标空闲块为所述空闲块集合中的任一个空闲块;将所述目标数据单元缓存在所述目标空闲块中。
根据本申请实施例的缓存数据的方法,缓存设备将待缓存的目标数据单元缓存在空闲块上,能够避免数据单元在缓存的时候破坏已缓存数据的缓存块上的数据。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述确定空闲块集合包括:在确定所述缓存设备的缓存空间中包括至少一个第一类空闲块的情况下,确定所述空闲块集合由至少一个所述第一类空闲块组成,所述第一类空闲块为在所述索引表中不存在索引的所述空闲块;在确定所述缓存设备的缓存空间中不包括所述第一类空闲块且包括至少一个第二类空闲块的情况下,确定所述空闲块集合由至少一个所述第二类空闲块组成,所述第二类空闲块为在所述索引表中存在索引的所述空闲块。
根据本申请实施例的缓存数据的方法,对于待缓存的数据单元,缓存设备可以首先将待缓存的目标数据单元缓存在在索引表中没有索引的空闲块(第一类空闲块)上,能够避免在缓存空间中同时包括有索引的第一类空闲块以及没有索引的第二类空闲块,并且存在地址相同第一类空闲块和第二类空闲块时,其中,所述地址相同第一类空闲块为无效状态(invalid)的空闲块,该无效状态的空闲块可以是该空闲块上之前缓存了数据单元,但是该数据单元已经被重写了,成为旧的数据单元,而地址相同第二类空闲块为清除(clean)状态的空闲块,该清除状态的空闲块可以是该空闲块上之前缓存了数据单元,但是该数据单元已经存储到存储***中,而该数据单元的索引还保存在索引表中,即,该索引指向地址相同的两个数据单元中的新的数据单元,如果缓存目标数据单元的时候没有缓存在第一类空闲块上而是缓存在上述第二类空闲块上,也就是说地址相同的数据单元的最新的数据被破坏了,在恢复数据的时候可能恢复出旧数据单元而导致的恢复数据出错,并且将目标数据单元首先缓存在第一类空闲块上对于存在索引的第二类空闲块来说可以将索引保留更长的时间,可以给读请求提供查询。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述方法还包括:根据所述目标数据单元生成元数据,所述元数据用于恢复所述目标数据单元;所述元数据缓存在所述目标数据单元缓存的所述目标空闲块中。
根据本申请实施例的缓存数据的方法,缓存设备获取到待缓存的数据并基于***规定的固定数据单元大小对数据进行划分得到至少一个目标数据单元之后,对于待缓存的目标数据单元,生成与所述目标数据单元对应的元数据,其中,元数据用于在缓存设备出现故障之后重建数据的过程中,恢复目标数据单元。本申请实施例的缓存数据的方法将目标数据单元和元数据缓存在目标数据单元缓存的空闲块中,这种将目标数据单元和元数据放在一起缓存的布局,能够降低数据同步时候的***开销以及避免数据单元和元数据同步的过程中出现不对应的情况。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述元数据包括序列号,所述序列号用于表示所述目标数据单元为所述缓存设备第N次缓存的数据,或,
所述序列号用于表示所述目标数据单元为所述缓存设备第N次缓存地址相同的数据单元,其中,所述N为正整数。在所述缓存设备的缓存空间中的数据单元需要恢复的情况下,恢复多个地址相同的元数据中所述N最大的元数据对应的目标数据单元。
根据本申请实施例的缓存数据的方法,缓存设备对于待缓存的目标数据单元,生成与所述目标数据单元对应的元数据,其中,元数据还包括序列号,序列号用于表示目标数据单元是第几次缓存在缓存空间中的数据单元,能够在基于元数据恢复数据单元的过程中,按照缓存的顺序选择缓存的较新的数据单元,从而提高数据恢复的准确性。
第三方面,提供了一种缓存设备,包括用于执行上述第一方面以及第一方面的各实现方式中的缓存数据的方法的各步骤的单元。
第四方面,提供了一种缓存设备,包括用于执行上述第二方面以及第二方面的各实现方式中的缓存数据的方法的各步骤的单元。
第五方面,提供了一种存储设备,该设备具有实现上述第一和第二方面中的任一方面及其各种实现方式中的各个缓存设备的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多于一个与上述功能相对应的模块。
第六方面,提供了一种服务器,服务器的结构中包括处理器。该处理器被配置为支持服务器执行上述第一和第二方面中的任一方面及其各种实现方式中的功能,在一个可能的设计中,该服务器还可以包括收发器,用于支持服务器获取或发送信息。在一个可能的设计中,该服务器还可以包括存储器,该存储器用于与处理器耦合,保存服务器必要的程序指令和数据。或者说,该服务器包括存储器和处理器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得服务器执行上述第一和第二方面中的任一方面及其各种实现方式中的任一种缓存数据的方法。
第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序,所述程序使得服务器执行上述第一和第二方面中的任一方面及其各种实现方式中的任一种缓存数据的方法。或者说,该计算机可读存储介质用于储存为上述服务器所用的计算机软件指令,其包含用于执行上述第一方面的方法所设计的程序。
第八方面,提供了一种芯片***,该芯片***包括处理器,用于支持服务器实现上述第一和第二方面中的任一方面及其各种实现方式中所涉及的功能。
从而,本申请提出的缓存数据的方法、缓存设备和存储***,能够提高缓存设备的缓存空间的利用率和降低缓存设备的能耗,从而提高缓存设备的性能。
附图说明
图1是本申请实施例适用的分布式存储***的示意性架构图;
图2是本申请实施例的一种缓存数据的方法示意性框图;
图3是本申请实施例的一种元数据的示意图;
图4是本申请实施例的一种数据单元同步示意性框图;
图5是本申请实施例的一种索引的示意性框图;
图6是本申请实施例的另一种缓存数据单元的方法示意性框图;
图7是本申请实施例的另一种缓存数据单元的方法示意性框图;
图8是本申请实施例的另一种缓存数据单元的方法示意性框图;
图9是本申请实施例的一种缓存设备的示意性框图;
图10是本申请实施例的另一种缓存设备的示意性框图;
图11是本申请实施例的一种存储***的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例提供的缓存数据的方法,可以应用于计算机上,该计算机包括硬件层、运行在硬件层之上的操作***层,以及运行在操作***层上的应用层。
该硬件层包括中央处理器(Central Processing Unit,CPU)、内存管理单元(Memory Management Unit,MMU)和内存(也称为主存)等硬件。
该操作***可以是任意一种或多种通过进程(Process)实现业务处理的计算机操作***,例如,Linux操作***、Unix操作***、Android操作***、iOS操作***或windows操作***等。
该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
并且,本申请实施例并未对本申请实施例提供的方法的执行主体的具体结构特别限定,只要能够通过运行记录有本申请实施例的提供的方法的代码的程序,以根据本申请实施例提供的方法进行通信即可,例如,本申请实施例提供的方法的执行主体可以是计算机设备,或者,是计算机设备中能够调用程序并执行程序的功能模块。
并且,在本申请实施例中,该计算机设备可以是个人计算机等终端设备,或者,该计算机设备也可以是服务器,本申请实施例并未特别限定,只要能够通过运行记录有本申请实施例的缓存数据的方法的代码的程序,以根据本申请实施例的缓存数据的方法确定待缓存数据在缓存设备中缓存位置即可。
其中,服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。服务器的构成包括处理器、硬盘、内存、***总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
本申请实施例的缓存数据的执行主体可以是计算机设备,或者,是计算机设备中能够调用程序并执行程序的功能模块。
此外,本申请实施例的各个方面或特征可以实现成方法、设备或使用标准编程和/或工程技术的制品。本申请中使用的术语“制品”涵盖可从任何计算机可读器件、载体或介质访问的计算机程序。例如,计算机可读介质可以包括,但不限于磁存储器件(例如,硬盘、软盘或磁带等),光盘(例如,压缩盘(Compact Disc,CD)、数字通用盘(Digital VersatileDisc,DVD)等),智能卡和闪存器件(例如,可擦写可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、卡、棒或钥匙驱动器等)。
另外,本文描述的各种存储介质可代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可包括但不限于,无线信道和能够存储、包含和/或承载指令和/或数据的各种其它介质。
首先,结合图1简单介绍一下本申请实施例适用的***架构图。
图1是本申请实施例适用的分布式存储***的示意性架构图。该框架图包括缓存设备110,应用设备120和存储池130,下面对这三个部分进行详细的介绍。
缓存设备110(包括如图1所示包括缓存设备110a、缓存设备110b和缓存设备110c),用于缓存数据。在分布式存储***中,通常在存储池130上层增加多副本的分布式Cache作为分布式存储***中的缓存设备来提升***的性能。分布式存储***可以将数据分散缓存在多***立的缓存设备上(例如,分散缓存在缓存设备110a、缓存设备110b和缓存设备110c)。传统的网络存储***采用集中的存储服务器存放所有数据。集中的存储服务器是***性能的瓶颈,也是可靠性和安全性的焦点。集中的存储服务器不能满足大规模存储应用的需要。分布式网络存储***采用可扩展的***结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。分布式网络存储不但提高了***的可靠性、可用性和存取效率,还易于扩展。
分布式存储***中的缓存设备110包括预写日志(Write-Ahead Logging,WAL)模块、镜像(Mirro)模块、离台和回收(Destage and Eviction,DE)模块。
离台(Destage)表示将脏(dirty)数据单元驱离缓存空间,即将脏数据单元写到后端存储上去。回收(Eviction)表示回收数据单元供分布式存储***继续使用。通常说的数据单元的淘汰包含离台和回收这两个过程。
WAL模块用于执行WAL。WAL是数据库中一种高效的日志算法。对于非内存数据库而言,磁盘输入/输出(Input/Output,I/O)操作是提升数据库效率的一大瓶颈。在相同的数据量下,采用WAL的数据库***在事务提交时,磁盘写操作只有传统的回滚日志的一半左右,大大提高了数据库磁盘I/O操作的效率,从而提高了数据库的性能。
Mirro模块用于进行数据的镜像。进行数据的镜像也可以称为进行数据的同步或者进行数据的复制。多副本的分布式存储***中,每个缓存设备都有本地的缓存介质。当应用设备120的写请求下发到分布式存储***。分布式存储***中的一个缓存设备(例如上述缓存设备110a)可以接收到该写请求,该缓存设备会将数据写入本地缓存介质上。同时该缓存设备也会通过网络,将数据发送至其他缓存设备(例如上述缓存设备110b和/或缓存设备110c)(一个或者多个)上。该其他缓存设备可以称为副缓存设备。副缓存设备可以将获取到的数据存入该副缓存设备的缓存介质。上述过程即为进行数据的镜像的过程。
DE模块用于周期检查缓存空间的脏数据单元的占用率。当脏数据单元达到一定比例后,将启动淘汰流程。DE模块可以确定什么时候触发淘汰、什么时候停止淘汰、选择淘汰哪些数据单元一次淘汰的数据量。
可选的,在一些实施例中,该DE模块可以采用高低水位的方式确定什么时候触发淘汰,什么时候停止淘汰。高水位表示脏数据单元占全部数据单元的比例高于一个预设阈值(例如第一预设阈值),低水位表示脏数据单元占全部数据单元的比例低于另一个预设阈值(例如第二预设阈值,该第二预设阈值与该第一预设阈值不同)。更具体地,当DE模块确定缓存空间(Cache Space)中的脏数据单元占全部数据单元的比例达到高于该第一预设阈值的情况下,确定触发淘汰。当DE模块确定脏数据单元占全部数据单元的比例低于该第二预设阈值时,停止淘汰。该DE模块也可以采用其他方式确定什么时候触发淘汰,什么时候确定停止淘汰,本申请对此并不限定。
可选的,在一些实施例中,该DE模块可以基于最近最少使用(Least frequentlyused,LRU)淘汰算法确定淘汰的数据单元。具体地,LRU淘汰算法是指对数据单元按照访问时间排序,淘汰最久未访问的数据单元。
可选的,在另一些实施例中,该DE模块可以基于最少使用(Least frequentlyused,LFU)淘汰算法确定淘汰的数据单元。具体地,LFU淘汰算法是指对数据单元访问次数排序,优先淘汰最少访问的数据单元。
可选的,在另一些实施例中,该DE模块可以基于最近使用(Most recently used,MRU)淘汰算法。具体地,MRU淘汰算法是指对数据单元按照访问时间排序,优先淘汰最近使用的数据单元。
可选的,在另一些实施例中,该DE模块也可以基于LRU淘汰算法、LFU淘汰算法和MRU淘汰算法中的任意两个或全部淘汰数据单元。
可选的,在一些实施例中,该DE模块可以根据分布式存储***中的缓存子***和存储池(Storage Pool)子***之间的接口,确定一个固定值或者一个范围。该固定值或者范围就是一次被淘汰的数据量。缓存子***指的是多个独立的缓存设备构成的***,存储池子***指的是多个存储池构成的***。
本申请实施例主要涉及的内容包括:缓存数据,数据的备份以及缓存设备故障时数据的恢复。因此,本申请实施例对于如何确定什么时候触发淘汰,如何确定什么时候停止淘汰,选择淘汰哪些数据单元以及一次淘汰的数据量不做限定。
应用设备120可以根据一定的规则(例如分布式哈希表(Distributed HashTable,DHT))将数据路由到某一个缓存设备上,通常称这个缓存设备为主缓存设备。应理解这是针对这一路由规则下,处理这个数据写请求的缓存设备。在整个***中,所有的缓存设备都可以作为主缓存设备,也可以作为副缓存设备。例如,上述缓存设备110a、缓存设备110b和缓存设备110c都可以成为作为主缓存设备,也可以作为副缓存设备。
应理解,本申请实施例中缓存设备可以缓存任意写请求的数据单元,这里只是以应用设备的写请求作为一个实施例说明缓存数据的过程,并不能限制本申请的保护范围。
存储池130(如图1所示包括存储池130a、存储池130b和存储池130c),用于存储数据。当缓存设备110中的Cache Space中脏数据单元达到高水位时,上述DE模块启动淘汰,将数据淘汰至存储池,即,将数据在存储***中存储起来。
应理解,上述的分布式存储***只是一种举例的方式,本申请实施例缓存数据的方法还适用于其他分布式存储***架构,例如,缓存设备数目不同或者存储池数目不同的分布式存储***,这里不再赘述。
可选地,缓存设备保存的数据的读写量巨大。并且,缓存设备的读写速度也需要很快。因此分布式缓存设备之间通常采用高速通讯网络和协议(例如基于无线宽带技术(InfiniBand,IB)的远程直接内存访问(Remote Direct Memory Access,RDMA)网络协议)使得分布式缓存设备的通信效率大幅提升。因此在采用IB的RDMA网络协议的分布式存储***中,缓存设备之间通常利用RDMA写(write)来实现数据的复制,并直接写入远端的缓存介质。所以,本申请中实施例可以应用于基于RDMA write的分布式存储***。
下面结合图1、图2-图7详细介绍本申请实施例的缓存数据的方法。
图2是本申请实施例的一种缓存数据的方法示意性框图。该框图包括S110-S150五个步骤,下面对这五个步骤进行详细的描述。
S110,缓存设备获取待缓存的目标数据单元以及目标数据单元对应的地址。
该获取待缓存的目标数据单元的缓存设备是分布式存储***中的主缓存设备。该缓存设备可以根据接收到的待缓存数据获取该目标数据单元。具体地,应用设备(如图1所示的应用设备120)的写请求下发到分布式存储***。该分布式存储***中的一个缓存设备可以接收到该写请求。该缓存设备是分布式存储***中的主缓存设备(如图1所示的缓存设备110a)。该写请求中包括待缓存的数据。该缓存设备获取到该写请求中的待缓存数据。
可选地,缓存设备获取待缓存数据之后对待缓存数据进行处理。例如,该缓存设备可以将待缓存数据按照固定大小进行边界对齐切分或者补齐,将对齐切分或者补齐后的待缓存数据划分成至少一个目标数据单元。例如,待缓存数据大小为8KB,当***规定固定数据单元大小为4KB时,需要将待缓存数据分为两个目标数据单元,并分别缓存该两个目标数据单元。
通常缓存设备按照固定的块大小来管理和组织缓存空间(Cache space),固定的块大小一般称之为页面(Page)或者块(Block)等,其大小通常是4KB或者4KB的整数倍。
可选的,在一些实施例中,缓存数据的方法还可以包括:缓存设备将待缓存数据划分成至少一个目标数据单元之后,缓存设备再根据目标数据单元生成元数据,其中该元数据用于恢复该目标数据单元。每个目标数据单元对应的缓存块空间(即用于缓存目标数据单元的空闲块)能够缓存所述目标数据单元和对应的元数据。
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata)。元数据是一种电子式目录。为了达到编制目录的目的,必须在描述并保存数据的内容或特色,进而达成协助数据检索的目的。元数据中包括描述数据属性(property)的信息。该数据属性的信息用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据。
图3是本申请实施例的一种元数据的示意图。图3所示的元数据包括目标文件(即缓存对象的目标文件(obj))、逻辑区块寻址(Logical Block Addressing,Lba)、校验值以及序列号。
其中,obj、Lba用于指示数据单元的地址,是写请求中包括的指示信息。缓存设备能够在接收到写请求后,获取目标数据单元的地址。
校验值是缓存设备根据数据单元以及数据单元对应的元数据计算得到的,后续数据单元恢复时需要涉及到校验值的验算,本实施例不详细说明如何计算校验值以及如何验算。
可选的,在一些实施例中,序列号可以用于表示所述目标数据单元为所述缓存设备第N次缓存的数据单元,其中,所述N为正整数。例如,序列号从1开始,每缓存一次数据单元,序列号的大小加1。
可选的,在另一些实施例中,序列号可以用于表示所述目标数据单元为所述缓存设备第N次缓存地址相同的数据单元,其中,所述N为正整数。例如,对于地址相同的数据单元对应的元数据序列号从1开始,每缓存一次地址相同的数据单元,序列号的大小加1。
缓存设备可以根据目标数据单元生成元数据。例如,目标数据单元的地址为obj1、Lba1是缓存设备第5次缓存的数据单元,校验值为目标数据单元以及元数据产生的循环冗余校验码(Cyclic Redundancy Check Code,CRC Code)CRC Code1。则元数据的各个标识位分别为obj1、Lba1、CRC Code1和5。
元数据中的序列号主要是为了后续数据单元重建时恢复数据单元提高准确性。下面会结合图6详细说明数据单元重建的流程并说明序列号的作用,这里不详细说明。
可选地,在另一些实施例中,可以将待缓存的目标数据单元和所对应的元数据缓存在同一个目标空闲块中。这种布局能够避免缓存设备在接收一次输入输出写请求时,需要做多次数据同步,以及避免了数据单元同步过程中出现数据单元和元数据不一致的问题。例如,缓存设备将数据单元和对应的元数据分别缓存在两个不同的空闲块中。在此情况下,若缓存设备将数据单元和元数据同步到缓存***中的其他副缓存设备,则缓存设备需要分别对数据单元和元数据进行同步。分别同步数据单元和元数据使得数据的传输效率低。此外,分别同步数据单元和元数据可能导致同步异常。例如,数据单元同步成功,但是数据单元对应的元数据同步失败。又如,数据单元对应的元数据同步成功,但是数据单元同步失败。
S120,缓存设备确定第一索引。
缓存设备获取目标数据单元对应的地址之后,确定在索引表中包括该地址的第一索引。例如,目标数据单元的写请求中obj和Lba为,obj1和Lba1,如果在缓存***的索引表中包括有第一索引且第一索引的obj和Lba标识位为obj1和Lba1。那么对于目标数据单元来说,缓存设备可以在空闲块集合中分配任意一个目标空闲块缓存上述目标数据单元。
S130,缓存设备确定空闲块集合。
缓存设备确定空闲块集合,所述空闲块集合由所述缓存设备的缓存空间中至少一个空闲块组成,其中,空闲块可以包括没有缓存过数据单元的缓存块,缓存的数据单元淘汰到后台存储***的缓存块以及被重写的缓存块。
可选的,在一些实施例中,在确定所述缓存空间中包括至少一个第一类空闲块的情况下,确定所述空闲块集合由至少一个所述第一类空闲块组成,所述第一类空闲块为在所述索引表中不存在索引的所述空闲块。
可选的,在一些实施例中,在确定所述缓存空间中不包括所述第一类空闲块且包括至少一个第二类空闲块的情况下,确定所述空闲块集合由至少一个所述第二类空闲块组成,所述第二类空闲块为在所述索引表中存在索引的所述空闲块。
可选地,在一些实施例中,当缓存空间中包括至少一个第一类空闲块以及包括第二类空闲块,空闲块集合由至少一个所述第一类空闲块组成时。所述缓存设备可以用第一空闲块表来管理第一类空闲块,第二空闲块表来管理第二类空闲块。
其中,第二类空闲块包括该空闲块之前缓存了数据单元,所述数据单元淘汰之后,数据单元的索引还存在缓存***的索引表中。第一类空闲块可以是处于无效(invalid)状态的空闲块,该无效状态的空闲块是缓存的数据单元已经被重写的缓存块。或者,第一类空闲块可以是完全未被缓存过的缓存块,可以用于缓存数据单元。
S140,缓存设备确定缓存目标数据单元的目标空闲块。
缓存设备从空闲块集合中分配任意一个空闲块缓存上述目标数据单元,其中,称缓存目标数据单元的空闲块为目标空闲块。
可选地,在一些实施例中,缓存设备在确定目标空闲块缓存目标数据单元时,优先地从上述第一类空闲块中选择目标空闲块缓存待缓存的目标数据单元。
当空闲块集合中不包括第一类空闲块且包括至少一个第二类空闲块的情况下,从上述第二类空闲块中选择目标空闲块缓存待缓存的目标数据单元。
应理解,本申请实施例对于在分布式存储***的索引表中不包括有目标数据单元地址的索引时,该目标数据单元也可以在空闲集合中分配任意一个空闲块作为目标空闲块。
S150,缓存设备将目标数据单元缓存在目标空闲块中。
缓存设备在确定待缓存目标数据单元缓存的目标空闲块之后,将目标数据单元缓存到目标空闲块中。
可选地,在一些实施例中,缓存设备可以将目标数据单元和目标数据单元对应的元数据缓存在同一个目标空闲块中。
可选地,在一些实施例中,缓存设备将目标数据单元缓存在目标空闲块之后,缓存设备可以利用RDMA和缓存***中的其他缓存设备之间做目标数据单元的同步,即,将目标数据单元备份到缓存***中的其他副缓存设备上。
例如,本申请实施例中的缓存目标数据单元的缓存设备为图1中所示的缓存设备110a,在缓存设备110a缓存目标数据单元之后,会将目标数据单元同步到图1中所示的缓存设备110b和缓存设备110c中,其中,缓存设备同步目标数据单元时会指示目标数据单元在副缓存设备上的存储位置,如图4所示数据单元在缓存设备和副缓存设备之间进行同步,下面结合图4介绍本申请实施例中数据单元同步的方法。
图4是本申请实施例的一种数据单元同步的示意性框图。该框图包括索引表210,缓存设备110,以及缓存位置310和缓存位置320。
索引表210,用于保存缓存空间中有索引的缓存块对应的索引。在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,索引是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
缓存设备110,用于缓存数据,这里不再详细介绍,和如图1所示的缓存设备110一致。
缓存位置310和缓存位置320所示的是不同的缓存位置。对于同一个目标数据单元来说,缓存设备可以在缓存空间中任意选择一个空闲块缓存目标数据单元。例如,缓存设备不需要提前为新数据1预留与数据1对应的固定的缓存位置,任意选择空闲的缓存位置(例如缓存位置320或缓存位置310)缓存新数据1。对于新数据1的缓存的位置选择和缓存方法这里不再详述与上述S120和S130类似。结合图4说明缓存设备如何进行数据的同步。例如,新数据1缓存在缓存位置320之后,缓存设备110a利用RDMA做镜像/同步将新数据1和新元数据1同步到缓存设备110b和缓存设备110c中,缓存设备110a在新数据1同步时可以指定备份的新数据1缓存到缓存设备110b和缓存设备110c的哪个缓存位置,如图4所示可以是指定缓存到缓存设备110b和缓存设备110c的缓存位置320。对于图4中所示的数据1和元数据1也可以采用上述的同步方法同步数据。
应理解图4所示只是一种举例的方式说明本申请中数据单元同步的方式,本申请实施例中对于数据单元在缓存设备和副缓存设备之间的备份方式不做限制,可以是现有中其他数据复制的方式。
应理解,上述缓存设备110a、缓存设备110b和缓存设备110c也只是一种举例的形式,缓存***中可以包括其他形式的设备,本申请对此不做限制。
缓存设备将待缓存的目标数据单元缓存在目标空闲块中,并在目标空闲块中缓存目标数据单元的元数据。
目标数据单元的元数据包括图3中所示的obj和Lba,其中obj和Lba能表示目标数据单元地址。地址为上述obj和Lba确定的数据单元的标识可以是卷地址、磁盘地址或虚拟盘地址等。例如,地址包括对象和对象内的偏移。如果上述缓存设备处于一个盘或者一个卷的***中,上述地址可以看成是Lba/偏移量(offset),如果上述缓存设备处于多卷/多盘的***中,上述地址就是包含了卷id/盘id(obj)以及Lba/offset。
目标数据单元的元数据中还包括校验值,缓存设备根据目标数据单元以及目标数据单元对应的元数据计算该校验值。例如,校验值可以是根据目标数据单元以及目标数据单元对应的元数据产生的循环冗余校验码(Cyclic Redundancy Check Code,CRC Code),本申请对校验值的计算并不做限制,下面会结合图6详细介绍校验值的作用,这里不再赘述。
可选地,在一些实施例中,图2所述的方法还包括:缓存设备进行所述目标数据单元同步。缓存设备在完成所述目标数据单元同步的情况下,生成所述目标数据单元对应的第二索引,所述第二索引用于描述所述目标数据单元。
所述第二索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在所述目标空闲块中。
可选地,在另一些实施例中,图2所述的方法还包括:缓存设备将所述目标数据单元从所述目标空闲块存储到存储***。所述缓存设备生成第三索引,所述第三索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。本申请实施例中的目标数据单元的索引如图5所示。例如,缓存设备将所述目标数据单元从所述目标空闲块存储到存储***之后,生成第三索引,该第三索引中的第二状态信息指示所述目标数据单元已经存储在所述存储***中了。
图5是本申请实施例的一种数据单元的索引的示意性框图。该框图包括目标文件(obj)、逻辑区块寻址(Lab)、数据位置和状态信息。
其中obj和Lab用于表示目标数据单元的地址,数据位置表示目标数据单元的在缓存空间中的缓存位置,状态信息用于表示表示目标数据单元处于缓存在目标空闲块状态(也称为dirty状态),还是存储在存储池状态(也称为clean状态)。
可选地,在一些实施例中,缓存设备进行目标数据单元同步之后,生成目标数据单元对应的第二索引。该第二索引包括第一状态信息,第一状态信息为dirty。
可选地,在另一些实施例中,缓存设备将目标数据单元从目标空闲块存储到存储***。所述缓存设备生成第三索引。该第三索引包括第二状态信息,第二状态信息为clean。
可选地,在一些实施例中,目标数据单元的状态信息的标识放在目标数据单元的索引中。可以在目标数据单元的状态发生变化的时候,缓存设备仅仅更新目标数据单元对应的索引。缓存设备不需要更新目标数据单元对应的元数据,并再在各个副缓存设备之间进行元数据的数据同步,减小了分布式存储***的网络开销,提升了网络利用率,从而提高了分布式存储***的性能。
例如,当分布式存储***中的脏数据的数量达到预设的条件之后,需要进行数据单元淘汰时。缓存设备将脏的目标数据单元写入图1中所示的存储池130中。目标数据单元的状态从脏(dirty)(也称为第一状态)转变为干净(clean)(也称为第二状态)。缓存设备更新目标数据单元所对应的第二索引中目标数据单元状态信息的标识。缓存设备不需要修改缓存空间中的目标数据单元对应的元数据,并在各个副缓存设备之间进行元数据的同步,减少了元数据同步的次数,减轻了网络的压力。
可选地,生成目标数据单元对应的第二索引,可以是以下四种方式之一:
方式一:上述目标数据单元缓存的空闲块属于上述第一类空闲块,即,所述空闲块在索引表中不存在索引。缓存设备缓存目标数据单元并同步数据单元。然后生成一个新的第二索引,其中,第二索引用于描述目标数据单元,可以描述目标数据单元的地址、缓存地址以及目标数据单元的状态信息。
方式二:上述目标数据单元缓存的空闲块属于上述第二类空闲块,即,所述空闲块在索引表中存在索引。则缓存目标数据单元后修改空闲块旧的索引生成目标数据单元对应的第二索引。例如,目标数据单元缓存的空闲块,在淘汰第二数据单元时对应的第四索引为,obj1,Lba1,P1(缓存位置),clean(第二数据单元被淘汰了,状态自然为clean)。上述第二数据单元为所述空闲块缓存目标数据单元之前缓存的数据单元。目标数据单元对应的obj和Lba为obj2,Lba2。缓存设备缓存目标数据单元并同步数据单元。然后修改第四索引中的obj1,Lba1以及clean。将第三索引中的obj1修改为obj2。将第四索引中的Lba1修改为Lba2。将第四索引中的clean修改为dirty。然后缓存设备将修改后的obj2,Lba2,P1,dirty确定为目标数据单元对应的第二索引。
方式三:上述目标数据单元缓存的空闲块属于上述第一类空闲块。但是,索引表中包括有与目标数据单元地址相同的第一索引。修改第一索引的缓存位置信息和状态位信息生成目标数据单元对应的第二索引。例如,索引表中包括的第一索引各标识位为obj1,Lba1,P1,clean。目标数据单元缓存的空闲块在缓存空间中的缓存位置为P2。缓存设备缓存目标数据单元并同步数据单元。然后修改第一索引中的P1,clean。将第一索引中的P1修改为P2。将第一索引中的clean修改为dirty。然后缓存设备将修改后的obj1,Lba1,P2,dirty确定为目标数据单元对应的第二索引。
方式四:上述目标数据单元缓存的空闲块属于上述第二类空闲块,即,所述空闲块在索引表中存在索引。但是,索引表中包括有与目标数据单元地址相同的第一索引,则缓存目标数据单元后删除空闲块旧的索引,修改第一索引的缓存位置信息和状态位信息生成目标数据单元对应的第二索引。例如,索引表中包括的第一索引各标识位为obj1,Lba1,P1,clean。目标数据单元缓存的空闲块,在淘汰第二数据单元时对应的第三索引为,obj2,Lba2,P2,clean。其中,上述第二数据单元为所述空闲块缓存目标数据单元之前缓存的数据单元。缓存设备缓存目标数据单元并同步数据单元。然后删除上述第三索引。将第一索引中的P1修改为P2。将第一索引中的clean修改为dirty。然后缓存设备将修改后的obj1,Lba1,P2,dirty确定为目标数据单元对应的第二索引。
应理解,上述缓存设备缓存目标数据单元时,首先,判断空闲块集合中是否包括第一类空闲块,当没有第一类空闲块时将数据单元缓存在第二类空闲块中,缓存设备缓存目标数据单元只是一个举例的形式。本申请实施例中,对于其他的待缓存数据单元(索引表中有相同地址索引的数据单元或者没有相同地址索引的数据单元)均可以采用上述缓存数据的方法进行缓存,当缓存的数据单元在索引表中没有与所述数据单元地址相同的索引时,可以采用上述方式一或者方式二生成数据单元的索引。上述以目标数据单元举例的形式,不能限制本申请的保护范围。
下面将结合图6说明本申请实施例中将数据单元的状态信息放在数据单元的索引中的作用。
图6是本申请实施例的另一种缓存数据的方法示意性框图。该框图包括S210和S220两个步骤,下面对这两个步骤进项详细的介绍。
S210,缓存设备淘汰缓存空间中的数据单元。
分布式存储***中,在缓存空间中的脏状态的数据单元的数量达到预设条件之后,需要将一部分脏状态的数据单元写入后端存储***。例如,在淘汰数据时使用的淘汰算法可以是图1中所介绍的LRU、LFU或MRU中任意一种,其中,预设条件可以是***规定的。本申请实施例对如何淘汰脏数据以及预设淘汰条件并不做限制。
S220,缓存设备修改数据单元的索引。
本申请实施例中,数据单元的状态信息标识位在索引中,即,在数据单元写入到后端存储***中之后,数据单元的状态从dirty变为clean。本申请实施例中缓存设备只需要修改数据单元对应的索引中的状态标识位。而数据单元对应的元数据没有发生变化,即缓存设备不需要在数据单元状态发生变化时,同步元数据的改变到其他副缓存设备上。
可选地,在一些实施例中,由于分布式存储***中缓存设备淘汰数据单元后,需要经过一段时间才能接收到淘汰的结果,其中,上述一段时间的时长可以基于存储***的能力而定,本申请对此不做限制。
如果数据单元的索引在缓存设备等待淘汰结果的一段时间内发生改变,则缓存设备将缓存该数据单元的缓存块加入到第一类空闲块中。例如,缓存块中缓存的第一数据单元被重写,第一数据单元对应的第一索引各个标识位为obj1,Lba1,P1,dirty。在缓存设备等待淘汰结果反馈的上述一段时间内,缓存设备接收到的写请求中第二数据单元的地址为obj1,Lba1。按照图2所示的缓存数据的方法,缓存设备将地址为obj1,Lba1的数据单元缓存到P2位置的空闲块并完成数据单元同步。然后缓存设备将第一索引的P1修改为P2。然后缓存设备生成第二索引。缓存设备将第一索引修改为第二索引之后,上述第一索引对应的缓存块已经成为一个在索引表中不存在索引的空闲块,缓存设备将该缓存块放在第一类空闲块中,不需要修改索引的状态信息。
图7是本申请实施例的另一种缓存数据的方法示意性框图。该框图包括S310-S330三个步骤,下面对这三个步骤进行详细的介绍。
S310,缓存设备扫描缓存空间中的数据单元。
在分布式存储***中,缓存设备故障、掉电或者软件故障等问题都是比较常见的异常。而分布式存储***的可靠性要求在出现异常之后,***能够容错,保护数据不丢失。经过故障缓存设备和***中其他缓存设备切换后,接替故障缓存设备工作的新缓存设备通常是原来缓存设备的副缓存设备。例如,本申请实施例以图1中的缓存设备110a为缓存设备为例,当缓存设备110a出现上述故障等问题时,进行缓存设备切换,副缓存设备,如缓存设备110b或缓存设备110c接替缓存设备110a继续缓存数据。
应理解,本申请实施例对分布式存储***的故障检查和切换、副缓存设备关系管理不做限制,因此这里对此不做具体描述和说明,缓存设备110b或缓存设备110c需要能够恢复重建缓存数据,并对外提供服务。下面以缓存设备110a故障,缓存设备110b接替缓存设备110a继续缓存数据为例说明缓存数据单元重建的流程。
缓存设备110b扫描缓存空间中所有的缓存块,即读取缓存空间中,每个数据单元的元数据。
S320,缓存设备获取有效数据单元。
缓存设备110b在扫描后获取缓存设备110b的缓存空间内所有的元数据,计算第一校验值。其中,所述第一校验值为缓存设备110b基于扫描得到的数据单元以及数据单元对应的元数据计算得到的。比较第一校验值与元数据中的原校验值,原校验值为缓存设备缓存数据单元和数据单元对应的元数据时计算的校验值,如果上述第一校验值和原校验值一致的,则数据单元为有效的数据单元,如果校验值不一致的,则是无效数据单元。对于校验值一致的数据单元,如果相同关键字(key)的数据单元存在多个,其中,相同key表示obj和Lba均相同,相同key的多个数据单元取序列号sn值最大作为有效的数据单元,对于其他数据单元认为无效数据单元,如果不存在相同key的多个块,则认为是有效数据单元。
S330,缓存设备重建数据单元的索引。
缓存设备110b确定有效数据单元之后,根据有效数据单元重建索引表,标记所有有效数据单元为Dirty状态。
可选地,缓存设备110b根据无效数据单元重建空闲块表,所有无效数据单元占用的空闲块加入图2所述的第一类空闲块中。
应理解,图7所示的缓存设备110a、缓存设备110b或缓存设备110只是一种举例的形式,不能限制本申请的保护范围。
图8是本申请实施例的另一种缓存数据的方法示意性框图。该框图包括S410-S420三个步骤,下面对这三个步骤进行详细的介绍。
S410,缓存设备将目标数据单元缓存在缓存空间中。
可选的,在一些实施例中,缓存设备可以按照图2所示的方法缓存所述目标数据单元。
可选的,在另一些实施例中,缓存设备将目标数据单元缓存在缓存空间中的任意缓存块中。
应理解,本实施例对于缓存设备将目标数据单元缓存在缓存空间中的位置不做限制,缓存设备将目标数据单元缓存在缓存空间中即可,缓存位置可以是任意的缓存块。
可选的,在一些实施例中,缓存设备根据所述目标数据单元生成元数据,所述元数据用于恢复所述目标数据单元,所述元数据缓存在所述目标数据单元缓存的缓存块中。
可选的,在一些实施例中,目标数据单元的元数据包括序列号,所述序列号用于表示所述目标数据单元为缓存设备第N次缓存的数据,其中,N为正整数。
可选的,在另一些实施例中,目标数据单元的元数据包括序列号,所述序列号用于表示所述目标数据单元为缓存设备第N次缓存地址相同的数据单元,其中,N为正整数。
可选的,在一些实施例中,在缓存设备的缓存空间中的数据单元需要恢复的情况下,恢复多个地址相同的元数据中该N最大的元数据对应的目标数据单元,具体的恢复流程如图7所示。
S420,缓存设备进行目标数据单元同步。
缓存设备将目标数据单元缓存在缓存空间中之后,将目标数据单元同步到分布式存储***中的其他副缓存设备上。具体的同步流程如图4所示。
S430,缓存设备生成第一索引。
缓存设备在完成所述目标数据单元同步的情况下,生成第一索引,所述第一索引用于描述所述目标数据单元,所述第一索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在缓存空间中。
可选的,在一些实施例中,图8所示的方法还可以包括:缓存设备将目标数据单元从缓存空间存储到存储***;所述缓存设备生成第二索引,所述第二索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。
其中,第一索引的解释与图5中第二索引类似,第二索引的解释与图5中第三索引类似,这里不再赘述。
图9本申请实施例的一种缓存设备的示意性框图。该框图包括获取单元410,处理单元420,缓存单元430,下面对这三个部分进行详细的介绍。
获取单元410,用于获取待缓存的目标数据单元以及所述目标数据单元对应的地址。例如,获取单元410可以在缓存设备接收应用设备的写请求消息之后,获取写请求中的待缓存的目标数据单元以及目标数据单元对应的地址。
处理单元420,用于确定所述缓存设备保存的索引表中包括有所述地址的第一索引。例如,目标数据单元对应的地址为obj1和Lba1,处理单元420确定索引表中包括有第一索引,第一索引中的地址为obj1和Lba1。
处理单元420,用于确定空闲块集合,所述空闲块集合由所述缓存设备的缓存空间中至少一个空闲块组成。
可选地,在一些实施例中,处理单元420,具体用于在确定所述缓存空间中包括至少一个第一类空闲块的情况下,确定所述空闲块集合由至少一个所述第一类空闲块组成,所述第一类空闲块为在所述索引表中不存在索引的空闲块,所述不存在索引的空闲块指的是没有缓存过数据单元的缓存块或者是缓存块上缓存的数据单元为无效数据单元的缓存块。
可选地,在另一些实施例中,处理单元420,具体用于在确定所述缓存空间中不包括所述第一类空闲块且包括至少一个第二类空闲块的情况下,确定所述空闲块集合由至少一个所述第二类空闲块组成,所述第二类空闲块为在所述索引表中存在索引的空闲块,所述存在索引的空闲块指的是空闲块之前缓存了数据单元,但是数据单元淘汰到后端了且数据单元的索引还存在索引表中。
处理单元420,用于确定目标空闲块,所述目标空闲块为所述空闲块集合中的任一个空闲块。
可选地,在一些实施例中,处理单元420,具体用于在所述空闲块集合中包括第一类空闲块时,从所述第一类空闲块中分配任意一个目标空闲块用于缓存所述目标数据单元,
可选地,在一些实施例中,处理单元420,具体用于在所述空闲块集合中不包括第一类空闲块,且包括至少收一个第二类空闲块时,从所述第二类空闲块中分配任意一个目标空闲块用于缓存所述目标数据单元。
处理单元420,用于在所述缓存设备在完成所述目标数据单元同步的情况下,生成第二索引。所述第二索引用于描述所述目标数据单元。所述第二索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在所述目标空闲块中。
处理单元420,用于将所述目标数据单元从所述目标空闲块存储到存储***,生成第三索引,所述第三索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。
处理单元420,用于根据所述目标数据单元生成所述目标数据单元对应的元数据,所述元数据用于恢复所述目标数据单元。
所述元数据包括目标数据单元的地址、校验值以及序列号。其中,处理单元420根据元数据恢复数据单元时,在缓存空间扫描到多个地址相同的元数据单元时,取序列号大的元数据对应的数据单元为有效的数据单元恢复。
缓存单元430,用于缓存待缓存的目标数据单元以及目标数据单元的元数据。
应理解,图8所示的缓存设备的示意性框图可以对应上述图2-图7所示的缓存数据方法中描述的各动作或处理过程,这里为了避免赘述,省略其详细说明。
图10是本申请实施例的另一种缓存设备的示意性框图。
设备700包括:
存储器710,用于存储程序代码以及数据单元;存储器710可以是物理上独立的单元,也可以与处理器720集成在一起。
处理器720,用于执行存储器710中存储的程序代码,例如,可以是执行图9中所示的各个单元的动作,这里不再赘述。
存储器710可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器710也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器710还可以包括上述种类的存储器的组合。
处理器720可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。
处理器720还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
可选的,在一些实施例中,存储器710,用于存储程序。处理器720,用于执行存储器710存储的程序,当程序被执行时,使得缓存设备700可以实现上述图2-图7实施例提供的方法中缓存设备执行的各个步骤。利用缓存设备700可以将图2-图7所示的方法中缓存设备执行的各个步骤的部分或全部通过软件来实现。
可选的,当图2-图7所示的方法中缓存设备执行的各个步骤的部分或全部通过软件实现时,缓存设备700也可以只包括处理器720。用于存储程序的存储器710位于装置700之外,处理器720通过电路/电线与存储器710连接,用于读取并执行存储器710中存储的程序。
图11是本申请实施例提供的存储***的示意性框图。图11中的存储***800包括:
存储器810,用于存储程序代码以及数据单元;
控制器820,该控制器如图9所示的缓存设备,用于执行存储器中的程序。应理解图11只是一种存储***的示意性框图,还可以包括其他单元,例如,发射单元等,本申请对此不做限制。
本申请的又一方面提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述如图2-图7所示的方法中缓存设备执行的步骤。
本申请的又一方面提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如图2-图7所示的方法中缓存设备执行的步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (24)
1.一种缓存数据的方法,其特征在于,所述方法包括:
缓存设备获取待缓存的目标数据单元以及所述目标数据单元对应的地址;
所述缓存设备确定所述缓存设备保存的索引表中包括所述地址的第一索引;
所述缓存设备确定空闲块集合,所述空闲块集合由所述缓存设备的缓存空间中至少一个空闲块组成;
所述缓存设备确定目标空闲块,所述目标空闲块为所述空闲块集合中的任一个空闲块;
所述缓存设备将所述目标数据单元缓存在所述目标空闲块中;
所述方法还包括:
所述缓存设备进行所述目标数据单元同步;
所述缓存设备在完成所述目标数据单元同步的情况下,生成所述目标数据单元对应的第二索引,所述第二索引用于描述所述目标数据单元;
所述第二索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在所述目标空闲块中;
所述缓存设备将所述目标数据单元从所述目标空闲块存储到存储***;
所述缓存设备生成第三索引,所述第三索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。
2.根据权利要求1所述的方法,其特征在于,所述确定空闲块集合包括:
在确定所述缓存空间中包括至少一个第一类空闲块的情况下,确定所述空闲块集合由至少一个所述第一类空闲块组成,所述第一类空闲块为在所述索引表中不存在索引的所述空闲块;
在确定所述缓存空间中不包括所述第一类空闲块且包括至少一个第二类空闲块的情况下,确定所述空闲块集合由至少一个所述第二类空闲块组成,所述第二类空闲块为在所述索引表中存在索引的所述空闲块。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据所述目标数据单元生成元数据,所述元数据用于恢复所述目标数据单元;
所述元数据缓存在所述目标数据单元缓存的所述目标空闲块中。
4.根据权利要求3所述的方法,其特征在于,所述元数据包括序列号,所述序列号用于表示所述目标数据单元为所述缓存设备第N次缓存的数据单元,或,
所述序列号用于表示所述目标数据单元为所述缓存设备第N次缓存地址相同的数据单元,其中,所述N为正整数。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述缓存设备的缓存空间中的数据单元需要恢复的情况下,恢复多个地址相同的元数据中所述N最大的元数据对应的目标数据单元。
6.一种缓存数据的方法,其特征在于,所述方法包括:
缓存设备将目标数据单元缓存在缓存空间中;
所述缓存设备进行目标数据单元同步;
所述缓存设备在完成所述目标数据单元同步的情况下,生成第一索引,所述第一索引用于描述所述目标数据单元,所述第一索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在缓存空间中;
所述方法还包括:
所述缓存设备将所述目标数据单元从所述缓存空间存储到存储***;
所述缓存设备生成第二索引,所述第二索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。
7.根据权利要求6所述的方法,其特征在于,所述将目标数据单元缓存在缓存空间中包括:
所述缓存设备获取待缓存的目标数据单元;
所述缓存设备确定空闲块集合,所述空闲块集合由所述缓存设备的缓存空间中至少一个空闲块组成;
所述缓存设备确定目标空闲块,所述目标空闲块为所述空闲块集合中的任一个空闲块;
所述缓存设备将所述目标数据单元缓存在所述目标空闲块中。
8.根据权利要求7所述的方法,其特征在于,所述确定空闲块集合包括:
在确定所述缓存空间中包括至少一个第一类空闲块的情况下,确定所述空闲块集合由至少一个所述第一类空闲块组成,所述第一类空闲块为在索引表中不存在索引的所述空闲块;
在确定所述缓存空间中不包括所述第一类空闲块且包括至少一个第二类空闲块的情况下,确定所述空闲块集合由至少一个所述第二类空闲块组成,所述第二类空闲块为在所述索引表中存在索引的所述空闲块。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
根据所述目标数据单元生成元数据,所述元数据用于恢复所述目标数据单元;
所述元数据缓存在所述目标数据单元缓存的所述目标空闲块中。
10.根据权利要求9所述的方法,其特征在于,所述元数据包括序列号,所述序列号用于表示所述目标数据单元为所述缓存设备第N次缓存的数据,或,
所述序列号用于表示所述目标数据单元为所述缓存设备第N次缓存地址相同的数据单元,其中,所述N为正整数。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在所述缓存设备的缓存空间中的数据单元需要恢复的情况下,恢复多个地址相同的元数据中所述N最大的元数据对应的目标数据单元。
12.一种缓存设备,其特征在于,所述缓存设备包括:
获取单元,用于获取待缓存的目标数据单元以及所述目标数据单元对应的地址;
处理单元,用于确定所述缓存设备保存的索引表中包括有所述地址的第一索引;
所述处理单元还用于确定空闲块集合,所述空闲块集合由所述缓存设备的缓存空间中至少一个空闲块组成;
所述处理单元还用于确定目标空闲块,所述目标空闲块为所述空闲块集合中的任一个空闲块;
缓存单元,用于将所述目标数据单元缓存在所述空闲块中;
所述处理单元,具体用于进行目标数据单元同步;
在完成所述目标数据单元同步的情况下,所述处理单元,具体用于生成第二索引,所述第二索引用于描述所述目标数据单元,所述第二索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在所述目标空闲块中;
所述处理单元,具体用于将所述目标数据单元从所述目标空闲块存储到存储***;
所述处理单元,具体用于生成第三索引,所述第三索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。
13.根据权利要求12所述的设备,其特征在于,所述处理单元,具体用于在确定所述缓存空间中包括至少一个第一类空闲块的情况下,确定所述空闲块集合由至少一个所述第一类空闲块组成,所述第一类空闲块为在所述索引表中不存在索引的空闲块;
在确定所述缓存空间中不包括所述第一类空闲块且包括至少一个第二类空闲块的情况下,确定所述空闲块集合由至少一个所述第二类空闲块组成,所述第二类空闲块为在所述索引表中存在索引的空闲块。
14.根据权利要求12或13所述的设备,其特征在于,所述处理单元,具体用于根据所述目标数据单元生成元数据,所述元数据用于恢复所述目标数据单元;
所述缓存单元,具体用于将所述元数据缓存在所述目标数据单元缓存的所述目标空闲块中。
15.根据权利要求14所述的设备,其特征在于,所述元数据包括序列号,所述序列号用于表示所述目标数据单元为所述缓存单元第N次缓存的数据单元,或,
所述序列号用于表示所述目标数据单元为所述缓存单元第N次缓存地址相同的数据单元,其中,所述N为正整数。
16.根据权利要求15所述的设备,其特征在于,所述处理单元,具体用于在所述缓存设备的缓存空间中的数据单元需要恢复的情况下,恢复多个地址相同的元数据中所述N最大的元数据对应的目标数据单元。
17.一种缓存设备,其特征在于,所述设备包括:
缓存单元,用于将目标数据单元缓存在缓存空间中;
处理单元,用于进行目标数据单元同步,在完成所述目标数据单元同步的情况下,所述处理单元,具体用于生成第一索引,所述第一索引用于描述所述目标数据单元;
所述第一索引包括第一状态信息,所述第一状态信息用于指示所述目标数据单元缓存在缓存空间中;
所述处理单元,具体用于将所述目标数据单元从所述缓存空间存储到存储***;
所述处理单元,具体用于生成第二索引,所述第二索引包括第二状态信息,所述第二状态信息用于指示所述目标数据单元存储在所述存储***中。
18.根据权利要求17所述的设备,其特征在于,所述缓存单元将目标数据单元缓存在缓存空间中具体包括:
获取单元,用于获取待缓存的目标数据单元;
处理单元,用于确定空闲块集合,所述空闲块集合由所述缓存设备的缓存空间中至少一个空闲块组成;
所述处理单元还用于确定目标空闲块,所述目标空闲块为所述空闲块集合中的任一个空闲块;
所述缓存单元将所述目标数据单元缓存在所述目标空闲块中。
19.根据权利要求18所述的设备,其特征在于,所述处理单元,具体用于在确定所述缓存空间中包括至少一个第一类空闲块的情况下,确定所述空闲块集合由至少一个所述第一类空闲块组成,所述第一类空闲块为在索引表中不存在索引的所述空闲块;
在确定所述缓存空间中不包括所述第一类空闲块且包括至少一个第二类空闲块的情况下,确定所述空闲块集合由至少一个所述第二类空闲块组成,所述第二类空闲块为在所述索引表中存在索引的所述空闲块。
20.根据权利要求18或19所述的设备,其特征在于,所述处理单元,具体用于根据所述目标数据单元生成元数据,所述元数据用于恢复所述目标数据单元;
所述缓存单元,具体用于将所述元数据缓存在所述目标数据单元缓存的所述目标空闲块中。
21.根据权利要求20所述的设备,其特征在于,所述元数据包括序列号,所述序列号用于表示所述目标数据单元为所述缓存单元第N次缓存的数据,或,
所述序列号用于表示所述目标数据单元为所述缓存单元第N次缓存地址相同的数据单元,其中,所述N为正整数。
22.根据权利要求21所述的设备,其特征在于,所述处理单元,具体用于在所述缓存设备的缓存空间中的数据单元需要恢复的情况下,恢复多个地址相同的元数据中所述N最大的元数据对应的目标数据单元。
23.一种存储***,其特征在于,包括:
存储器,用于存储计算机程序以及数据单元;
处理器,用于执行所述存储器中存储的计算机程序,以使得所述设备执行如权利要求1至11中任一项所述的缓存数据的方法。
24.一种计算机可读存储介质,包括计算机程序,当其在计算机上运行时,使得所述计算机执行如权利要求1至11中任一项所述的缓存数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810163505.8A CN110196818B (zh) | 2018-02-27 | 2018-02-27 | 缓存数据的方法、缓存设备和存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810163505.8A CN110196818B (zh) | 2018-02-27 | 2018-02-27 | 缓存数据的方法、缓存设备和存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196818A CN110196818A (zh) | 2019-09-03 |
CN110196818B true CN110196818B (zh) | 2021-07-16 |
Family
ID=67751247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810163505.8A Active CN110196818B (zh) | 2018-02-27 | 2018-02-27 | 缓存数据的方法、缓存设备和存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196818B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563052B (zh) * | 2020-04-30 | 2023-08-08 | 深圳忆联信息***有限公司 | 降低读延时的缓存方法、装置、计算机设备及存储介质 |
CN111796772B (zh) * | 2020-07-07 | 2024-05-07 | 西北工业大学 | 缓存的管理方法、缓存节点及分布式存储*** |
WO2022021158A1 (zh) * | 2020-07-29 | 2022-02-03 | 华为技术有限公司 | 缓存***、方法和芯片 |
CN112632621A (zh) * | 2020-12-30 | 2021-04-09 | ***通信集团江苏有限公司 | 数据存取方法、装置、设备及计算机存储介质 |
US11656792B2 (en) * | 2021-06-29 | 2023-05-23 | International Business Machines Corporation | Mirroring data in write caches of a controller of a non-volatile memory |
CN115168259B (zh) * | 2022-09-06 | 2023-01-24 | 浪潮电子信息产业股份有限公司 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
CN117539409B (zh) * | 2024-01-10 | 2024-03-26 | 北京镜舟科技有限公司 | 基于数据缓存的查询加速方法、装置、介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101228523A (zh) * | 2005-04-25 | 2008-07-23 | 网络装置公司 | 用于高速缓存网络文件***的***和方法 |
CN102012790A (zh) * | 2008-01-02 | 2011-04-13 | 桑迪士克以色列有限公司 | 具有直接用户访问的存储装置 |
CN103246614A (zh) * | 2012-02-08 | 2013-08-14 | 国际商业机器公司 | 多处理器数据处理***、高速缓存存储器及其方法 |
CN104468665A (zh) * | 2013-09-18 | 2015-03-25 | 腾讯科技(深圳)有限公司 | 数据分布式存储的实现方法和*** |
CN107256196A (zh) * | 2017-06-13 | 2017-10-17 | 北京中航通用科技有限公司 | 基于闪存阵列的支持零拷贝的缓存***及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572323B2 (en) * | 2010-12-30 | 2013-10-29 | Freescale Semiconductor, Inc. | Cache result register for quick cache information lookup |
CN103092775B (zh) * | 2013-01-31 | 2015-06-10 | 武汉大学 | 一种基于键值结构的空间数据双缓存方法及机制 |
JP2016091242A (ja) * | 2014-10-31 | 2016-05-23 | 富士通株式会社 | キャッシュメモリ、キャッシュメモリへのアクセス方法及び制御プログラム |
CN105808153B (zh) * | 2014-12-31 | 2018-11-13 | 深圳市硅格半导体有限公司 | 存储***及其读写操作方法 |
-
2018
- 2018-02-27 CN CN201810163505.8A patent/CN110196818B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101228523A (zh) * | 2005-04-25 | 2008-07-23 | 网络装置公司 | 用于高速缓存网络文件***的***和方法 |
CN102012790A (zh) * | 2008-01-02 | 2011-04-13 | 桑迪士克以色列有限公司 | 具有直接用户访问的存储装置 |
CN103246614A (zh) * | 2012-02-08 | 2013-08-14 | 国际商业机器公司 | 多处理器数据处理***、高速缓存存储器及其方法 |
CN104468665A (zh) * | 2013-09-18 | 2015-03-25 | 腾讯科技(深圳)有限公司 | 数据分布式存储的实现方法和*** |
CN107256196A (zh) * | 2017-06-13 | 2017-10-17 | 北京中航通用科技有限公司 | 基于闪存阵列的支持零拷贝的缓存***及方法 |
Non-Patent Citations (1)
Title |
---|
分布式数据缓存机制的研究和设计;刘玄;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140415;I137-50 * |
Also Published As
Publication number | Publication date |
---|---|
CN110196818A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110196818B (zh) | 缓存数据的方法、缓存设备和存储*** | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
US20200387315A1 (en) | Write-ahead log maintenance and recovery | |
US9836355B2 (en) | Reconstruction of dense tree volume metadata state across crash recovery | |
US9268653B2 (en) | Extent metadata update logging and checkpointing | |
CN108431783B (zh) | 访问请求处理方法、装置及计算机*** | |
US9311333B1 (en) | Managing files of file systems | |
CN111104058A (zh) | 持久性存储器上的键-值存贮器 | |
US10552377B2 (en) | Data discard method for journaling file system and memory management apparatus thereof | |
US11003558B2 (en) | Systems and methods for sequential resilvering | |
US10977143B2 (en) | Mirrored write ahead logs for data storage system | |
CN108431784B (zh) | 访问请求处理方法、装置及计算机*** | |
TWI774388B (zh) | 資料同步方法 | |
US11599460B2 (en) | System and method for lockless reading of metadata pages | |
US11467963B2 (en) | System and method for reducing reference count update contention in metadata blocks | |
CN111611223B (zh) | 非易失性数据的访问方法、***、电子设备和介质 | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
CN117348968A (zh) | 一种虚拟磁盘的缓存数据加速方法、装置和设备 | |
US11243909B2 (en) | Journaling overhead reduction with remapping interface | |
KR101153688B1 (ko) | 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 | |
CN114816224A (zh) | 数据管理方法和数据管理装置 | |
US20240248838A1 (en) | System and Method for Deferred Processing of Metadata Log Flush Operations | |
CN112416812B (zh) | 访问请求处理方法、装置及计算机*** | |
Son et al. | An Empirical Performance Evaluation of Transactional Solid-State Drives |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |