CN111124945A - 用于提供高速缓存服务的方法、设备和计算机程序产品 - Google Patents

用于提供高速缓存服务的方法、设备和计算机程序产品 Download PDF

Info

Publication number
CN111124945A
CN111124945A CN201811278408.XA CN201811278408A CN111124945A CN 111124945 A CN111124945 A CN 111124945A CN 201811278408 A CN201811278408 A CN 201811278408A CN 111124945 A CN111124945 A CN 111124945A
Authority
CN
China
Prior art keywords
cache
storage system
data
target data
pool
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.)
Granted
Application number
CN201811278408.XA
Other languages
English (en)
Other versions
CN111124945B (zh
Inventor
贾瑞勇
徐鑫磊
杨利锋
刘友生
奉昌玉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201811278408.XA priority Critical patent/CN111124945B/zh
Priority to US16/572,929 priority patent/US11010301B2/en
Publication of CN111124945A publication Critical patent/CN111124945A/zh
Application granted granted Critical
Publication of CN111124945B publication Critical patent/CN111124945B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • G06F2212/6012Reconfiguration of cache memory of operating mode, e.g. cache mode or local memory mode

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)

Abstract

本公开涉及用于在存储系统中提供高速缓存服务的方法、设备和计算机程序产品。该存储系统包括存储单元池、高速缓存以及基础存储系统,存储单元池包括多个存储单元,多个存储单元中的存储单元经由存储系统的地址映射被映射至基础存储系统中的物理地址。具体地,接收针对存储单元池中的虚拟地址处的目标数据的访问请求,并确定访问请求的类型。基于确定的类型,利用高速缓存来服务于访问请求,在此高速缓存用于按照存储单元池中的存储单元的格式来存储数据。此时,高速缓存直接存储对于可见的存储单元池中的各个存储单元中的数据,进而可以提高针对访问请求的响应速度。进一步,提供了一种用于在存储系统中提供高速缓存服务的设备和计算机程序产品。

Description

用于提供高速缓存服务的方法、设备和计算机程序产品
技术领域
本公开的各实现方式涉及存储系统,更具体地,涉及用于在存储 系统中提供高速缓存服务的方法、设备和计算机程序产品。
背景技术
随着数据存储技术的发展,各种数据存储设备已经能够向用户提 供越来越高的数据存储能力,并且数据访问速度也有了很大程度的提 高。在存储系统中,目前已经提出了存储资源池的概念,在存储系统 的存储资源池中可以包括多个存储设备,并且多个存储设备中的每个 存储设备可以包括多个区块(extent)。
此时,可以向用户分配存储系统中的存储空间以便建立用户的存 储系统。用户的存储系统可以包括对于用户可见的存储单元池,并且 存储单元池中的各个存储单元是虚拟存储单元,这些虚拟存储单元经 由用户存储系统的地址映射而被映射至真正提供存储空间的基础存 储系统中的物理地址。为了向用户提供更高的响应速度,目前已经开 发出了在存储系统中使用高速缓存的技术方案。然而,由于在存储系 统中可能会存在复杂的地址映射关系。此时,如何以更为有效的方式 来在存储系统中提供高速缓存服务,成为一个研究热点。
发明内容
因而,期望能够开发并实现一种以更为有效的方式来管理存储系 统并提供高速缓存服务的技术方案。期望该技术方案能够与现有的应 用环境相兼容,并且通过改造现有应用环境的各种配置,来以更为有 效的方式在存储系统中提供高速缓存服务。
根据本公开的第一方面,提供了一种用于在存储系统中提供高速 缓存服务的方法。在此的存储系统包括存储单元池、高速缓存以及基 础存储系统,存储单元池包括多个存储单元,多个存储单元中的存储 单元经由存储系统的地址映射被映射至基础存储系统中的物理地址。 该方法包括:接收针对存储单元池中的虚拟地址处的目标数据的访问 请求;确定访问请求的类型,类型包括用于从存储系统中读取目标数 据的读取请求、以及用于向存储系统中写入目标数据的写入请求;以 及基于确定的类型,利用高速缓存来服务于访问请求,其中高速缓存 用于按照存储单元池中的存储单元的格式来高速缓存存储单元池中 的至少一部分存储单元中的数据。
根据本公开的第二方面,提供了一种用于在存储系统中提供高速 缓存服务的设备。在此的存储系统包括存储单元池、高速缓存以及基 础存储系统,存储单元池包括多个存储单元,多个存储单元中的存储 单元经由存储系统的地址映射被映射至基础存储系统中的物理地址。 该设备包括:至少一个处理器;易失性存储器;以及与至少一个处理 器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个 处理器执行时使得设备执行动作。该动作包括:接收针对存储单元池 中的虚拟地址处的目标数据的访问请求;确定访问请求的类型,类型 包括用于从存储系统中读取目标数据的读取请求、以及用于向存储系 统中写入目标数据的写入请求;以及基于确定的类型,利用高速缓存 来服务于访问请求,其中高速缓存用于按照存储单元池中的存储单元 的格式来高速缓存存储单元池中的至少一部分存储单元中的数据。
根据本公开的第三方面,提供了一种计算机程序产品,计算机程 序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执 行指令,机器可执行指令用于执行根据本公开的第一方面的方法。
附图说明
结合附图并参考以下详细说明,本公开各实现方式的特征、优点 及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了 本公开的若干实现方式。在附图中:
图1示意性示出了根据一个技术方案的用于提供高速缓存服务的 存储系统的框图;
图2示意性示出了根据本公开的一个实现方式的用于提供高速缓 存服务的存储系统的框图;
图3示意性示出了根据本公开的一个实现方式的在存储系统中提 供高速缓存服务的方法的流程图;
图4示意性示出了根据本公开的一个实现方式的用于针对读取请 求提供高速缓存服务的流程的框图;
图5示意性示出了根据本公开的一个实现方式的用于针对读取请 求提供高速缓存服务的操作的框图;
图6示意性示出了根据本公开的一个实现方式的用于针对读取请 求提供预取(prefetch)操作的高速缓存服务的操作的框图;
图7示意性示出了根据本公开的一个实现方式的其中可以使用本 公开的方法的存储系统的控制节点的框图;
图8示意性示出了根据本公开的一个实现方式的用于针对写入请 求提供高速缓存服务的操作的框图;
图9示意性示出了根据本公开的一个实现方式的用于针对写入请 求提供高速缓存服务的操作的框图;
图10A和10B分别示意性示出了其中可以实现本公开的方法的存 储系统的示意图;
图11示意性示出了其中可以实现本公开的方法的示例性环境的 框图;
图12示意性示出了图11中的存储资源池的图示;以及
图13示意性示出了根据本公开的示例性实现的用于提供高速缓 存服务的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实现。虽然附图中显 示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开 而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公 开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的 技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但 不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至 少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示 例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、 “第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
图1示意性示出了根据一个技术方案的用于提供高速缓存服务的 存储系统100的框图。如图1所示,可以提供基础存储系统110。将 会理解,基础存储系统110可以包括多个数据块(block)112。尽管 图1中将数据块的大小示意性示出为256M,该数据块还可以具有其 他的大小。还可以提供基础存储系统120,在此的基础存储系统120 可以包括多个数据块122。此时,基础存储系统110和基础存储系统 120可以一起为用户提供存储空间。将会理解,尽管在图1中示出了 两个基础存储系统,在其他应用环境中,可以存在更多或者更少的基 础存储系统来为用户提供存储空间。
将会理解,在此的基础存储系统110可以是目前已知的或者将在 未来开发的任何存储系统。例如,该基础存储系统110可以常规的不 存在冗余数据的普通存储系统。又例如,该基础存储系统110可以存 在冗余数据的存储系统。此时,当该基础存储系统110中出现故障时, 可以基于冗余数据来恢复出现故障的部分。基础存储系统110例如可 以是基于独立磁盘冗余阵列(RAID)的存储系统。备选地和/或附加 地,该RAID存储系统可以是基于映射的RAID存储系统。
在基础存储系统110和基础存储系统120之上,可以提供高速缓 存130。在此的高速缓存130可以用于针对下层的基础存储系统中的 各个数据块进行高速缓存。以便当接收到来自存储系统100的用户的 访问请求时,不必再从基础存储系统110和基础存储系统120中读取 数据,而是可以直接基于高速缓存130中被高速缓存的数据来提高针 对访问请求的响应速度。
如图1所示,在高速缓存130的上层还可以提供切片池(slice pool) 140。例如,切片可以具有256M的大小。在切片池140之上,还可 以将切片划分为更小粒度(例如,8K)的单元。此时,多个单元可以 构成文件系统150。在文件系统150之上,是对于用户可见的存储单元池(storage cell pool)160。该存储单元池160可以包括多个存储单 元,并且用户可以通过访问请求来访问与指定虚拟地址相关联的目标 数据。在此的虚拟地址例如可以是存储单元在存储单元池160中的地 址。
将会理解,尽管在如图1所示的存储系统100中提供了高速缓存 130,然而由于该高速缓存130位于切片池140和基础存储系统110/ 基础存储系统120之间。此时,在访问高速缓存130中的数据时,需 要经过如下的访问路径:存储单元池160->文件系统150->切片池 140->高速缓存130。尽管高速缓存130在一定程度上加快了对于来自 用户的访问请求的响应速度,由于访问路径中存在多个层级的组件并 且涉及复杂的地址映射关系,高速缓存130的效率并不理想。
为了解决上述缺陷,本公开的实现提供了一种用于在存储系统中 提供高速缓存服务的方法、设备和计算机程序产品。采用本公开的实 现,可以以更为有效的方式来在存储系统中提供高速缓存服务。在下 文中,将参见图2详细描述本公开的具体实现。
具体地,图2示意性示出了根据本公开的一个实现方式的用于提 供高速缓存服务的存储系统200的框图。如图2所示,该存储系统200 可以包括存储单元池160和高速缓存230。与如图1所示的存储系统 100的不同之处在于,高速缓存230直接耦合至存储单元池160,并 且可以用于针对存储单元池160中的一个或多个存储单元进行高速缓 存。进一步,该存储系统200还可以包括类似于图1中的文件系统150、 切片池140、基础存储系统110和基础存储系统120。类似于图1中 的存储系统100,存储单元池160可以包括多个存储单元,多个存储 单元中的存储单元经由地址映射(在图2中未示出)被映射至基础存 储系统110和基础存储系统120中的物理地址。
根据本公开的示例性实现方式,存储系统200的高速缓存230被 直接耦合至存储单元池160,并且该高速缓存230可以按照存储单元 池160中的存储单元的格式,来高速缓存存储单元池160中的至少一 部分存储单元中的数据。将会理解,高速缓存230可以直接存储对于 用户可见的一个或多个存储单元中的数据。利用上述示例性实现,当 接收到来自用户的访问请求时,可以直接基于访问请求中指定的虚拟 地址(例如,以存储单元的地址或者标识符来表示),来查找在高速 缓存230中是否包括与访问请求相对应的数据。
以此方式,在访问高速缓存230时,不必按照存储系统200的地 址映射来进行复杂的地址转换,即可直接访问高速缓存230中的数据, 或者直接向高速缓存230中写入数据。此时,对于高速缓存230的访 问路径被缩短至:存储单元池160->高速缓存230。相比于如图1所 示在存储系统100中访问路径而言,采用如图2所示的存储系统200 中的高速缓存230,可以大大缩短访问路径进而降低对于来自用户的 访问请求的响应时间,提高响应效率。
将会理解,尽管图2示意性示出了该存储系统200包括基础存储 系统110和基础存储系统120的情况,根据本公开的示例性实现方式, 该存储系统200可以仅包括一个基础存储系统110。根据本公开的示 例性实现方式,该存储系统200可以包括三个或者更多的基础存储系 统。
在下文中,将参见图3详细描述用于在存储系统200中提供高速 缓存服务的方法的更多细节。图3示意性示出了根据本公开的一个实 现方式的在存储系统200中提供高速缓存服务的方法300的流程图。 将会理解,在此的存储系统200可以是如图2所示的存储系统。该存 储系统200可以包括存储单元池160、高速缓存230以及基础存储系 统110。为方便描述起见,在此的存储系统200仅包括一个基础存储 系统110。在此的存储单元池160可以包括多个存储单元,并且多个 存储单元中的每个存储单元经由存储系统200的地址映射被映射至基 础存储系统110中的物理地址。将会理解,在此并不限定地址映射的 更多细节,而是地址映射可以单级或者多级的地址映射。进一步,该 地址映射可以采用诸如表结构、树结构或者其他数据结构来存储。
在框310处,可以接收针对存储单元池160中的虚拟地址处的目 标数据的访问请求。在不同的应用环境中,访问请求可以具有不同的 格式。例如,虚拟地址可以采用存储单元池160中的各个存储单元的 标识符(例如,0、1、2等)来表示。又例如,虚拟地址还可以采用 存储单元池160中的各个存储单元的地址来表示。又例如,虚拟地址 还可以采用存储单元池160中的用于存储目标数据的存储单元的起始 地址和结束地址来表示(例如,0x00…00至0xff..ff等)。又例如, 虚拟地址还可以采用存储单元池160中的用于存储目标数据的存储单 元的起始地址和数据长度来表示(例如,0x00…00和长度length)。
根据本公开的示例性实现方式,存储单元池160中的存储空间可 以采用逻辑单元号(Logic Unit Number,LUN)来表示。当在存储系 统200中存在多个LUN的情况下,逻辑地址还可以包括目标数据所 在的LUN的标识符。
在框320处,在已经接收到访问请求的情况下,可以解析该访问 请求以便确定访问请求的类型。在此的访问请求的类型可以包括用于 从存储系统200中读取目标数据的读取请求、以及用于向存储系统 200中写入目标数据的写入请求。例如,可以通过解析访问请求中的 关键字来确定访问请求的类型。根据本公开的示例性实现方式,访问 请求可以采用如下格式来定义:1)Read表示读取请求;Write表示 写入请求;2)以目标数据所在的存储单元的起始地址和数据长度来 表示虚拟地址。
例如,可以接收到如下访问请求:Read(startAdd,length)。通 过解析访问请求可知,该访问请求是读取请求,目标数据的虚拟地址 为开始地址在startAdd并且长度为length的地址范围。换言之,该访 问请求目的在于:从存储系统200中读取开始地址在startAdd并且长 度为length的地址范围内的目标数据。
又例如,可以接收到如下访问请求:Write(startAdd,length,data)。 通过解析访问请求可知,该访问请求是写入请求,并且该写入请求目 的在于:将目标数据“data”写入至存储系统200中的开始地址在 startAdd并且长度为length的地址范围内。
在框330处,可以基于确定的类型,利用高速缓存230来服务于 该访问请求。将会理解,在此高速缓存230用于直接地按照存储单元 池160中的存储单元的格式来高速缓存存储单元池160中的至少一部 分存储单元中的数据。将会理解,按照本公开的实现方式,高速缓存 230中直接存储对于用户可见的存储单元池160中的数据。此时,在 访问高速缓存230时,并不需要经历复杂的地址映射。而是只需要将 存储单元池160中的一个或多个存储单元中的数据拷贝至高速缓存 230中,或者直接从该高速缓存230中读取数据即可。
在下文中,将分别针对读取请求和写入请求来详细描述如何利用 高速缓存230来服务于不同类型的访问请求。根据本公开的示例性实 现方式,访问请求可以是读取请求。可以首先从该读取请求中获取目 标数据的虚拟地址。此时,将存在如下两种情况:高速缓存命中(cache hit),即在高速缓存230中存在读取请求将要访问的目标数据;以及 高速缓存未命中(cache miss),即在高速缓存230中不存在读取请 求将要访问的目标数据。如果确定在高速缓存230中存在期望访问的 目标数据,则可以直接从高速缓存230中读取该目标数据。继而,可 以向用户返回读取的目标数据以响应于读取请求。在下文中,将参见 图4描述有关读取命中的更多细节。
图4示意性示出了根据本公开的一个实现方式的用于针对读取请 求提供高速缓存服务的流程的框图400。如图4所示,主机410可以 是用户用于访问存储系统200的设备,文件系统核430可以是存储系 统200中的用于处理往来于主机410的消息的处理器。如箭头420所 示,主机410可以向文件系统核430发送读取请求。继而,如箭头422 所示,文件系统核430可以在高速缓存230中查找该读取请求所期望 访问的目标数据是否存在于该高速缓存230中。如果存在,则此时高 速缓存命中。如箭头424所示,高速缓存230可以向文件系统核430 返回找到的目标数据。在接收到从高速缓存230获取的目标数据后, 如箭头426所示,文件系统核430可以向主机410返回读取请求所期 望访问的目标数据。
将会理解,由于期望访问的目标数据直接被存储在高速缓存230 中,此时高速缓存命中因而可以直接地从高速缓存230中获取目标数 据。相比于传统的如图1所示的存储系统100而言,不需要经历较长 的访问路径“存储单元池160->文件系统150->切片池140->高速缓存 130”。而是,采用本公开的实现方式的存储系统200,此时的访问路 径被缩短至“存储单元池160->高速缓存230”。由于访问操作经历 的路径大大缩短,因而可以以更快的速度响应于来自用户的访问请求。
根据本公开的示例性实现方式,还可以出现在高速缓存230中不 存在目标数据的情况。此时,可以基于地址映射确定目标数据在基础 存储系统110中的物理地址,并从基础存储系统110中的物理地址处 读取目标数据。继而,可以将从基础存储系统110读取的目标数据加 载至高速缓存230,并且返回读取的目标数据以响应于读取请求。将 会理解,尽管此时仍然需要通过地址映射来从目标数据所在的物理地 址处读取并向用户返回目标数据,通过将读取的数据加载至高速缓存 230中,在未来接收到针对该目标数据或者该目标数据中的一部分的 访问请求时,可以直接在高速缓存230中找到请求访问的数据。在下 文中,在下文中,将参见图5描述有关读取未命中的更多细节。
图5示意性示出了根据本公开的一个实现方式的用于针对读取请 求提供高速缓存服务的操作的框图500。在图5中,如箭头520所示, 主机410可以向文件系统核430发送读取请求。继而,如箭头522所 示,文件系统核430可以在高速缓存230中查询该读取请求所期望访 问的目标数据是否存在于该高速缓存230中。如果不存在,则此时高 速缓存未命中。如箭头524所示,高速缓存230可以向文件系统核430 返回指示在高速缓存230中没有找到的目标数据的消息。此时,文件 系统核430可以基于地址映射来确定目标数据在基础存储系统110中 的物理地址。
继而,如箭头526所示,文件系统核430可以在基础存储系统110 中检索到目标数据。如箭头530所示,从基础存储系统110检索到的 目标数据可以被加载至高速缓存230中。继而如箭头532所示,目标 数据可以被发送至文件系统核430。最后,如箭头534所示,目标数 据可以被发送至主机410。
将会理解,在图5所示的示例性实现方式中,目标数据可以被加 载至高速缓存230中。在此之后,如果在主机410处再次接收到针对 目标数据的访问,则此时可以直接从高速缓存230中获取目标数据本 身,而不必如图1所示的传统技术方案那样需要经过复杂的地址映射 才能从高速缓存130中获取目标数据。利用上述示例性实现,可以大 大加快数据访问的速度,进而提高用户体验。
将会理解,如果主机410连续接收到针对连续地址区域的访问请 求或者连续接收到的访问请求的虚拟地址满足其他条件,则此时可以 判断在下一时间点处是否会接收到满足访问条件的下一访问请求。假 设判断结果为“是”,则可以在尚未接收到下一访问请求时,将下一 访问请求可能访问的候选数据预先加载至高速缓存230中。可以将上 述操作成为“预取”操作。此时可以预测候选数据在存储单元池160 中的候选地址。接着,可以基于地址映射确定候选地址在基础存储系 统110中的物理地址,并从基础存储系统110中的物理地址处读取候 选数据,以将读取的候选数据加载至高速缓存230。
在下文中,将仅以针对连续地址区域的访问请求为示例进行描述。 根据本公开的示例性实现方式,假设主机410接收到了针对存储单元 池160中的第一个和第二个存储单元中的数据的访问请求,则此时可 以预测在下一时间点处,主机410将会接收到针对存储单元池160中 的第三个存储单元中的数据的访问请求。此时,可以在尚未接收到针 对第三存储单元中的数据的访问请求之前执行预取操作。换言之,可 以预先从基础存储系统110中向高速缓存230中加载第三存储单元中 的数据。根据本公开的示例性实现方式,将参见图6详细描述有关预 取操作的更多细节。
图6示意性示出了根据本公开的一个实现方式的用于针对读取请 求提供预取高速缓存服务的操作的框图600。在图6中,主机410连 续接收到针对连续存储单元的访问请求,则此时可以启动预先获取操 作。如箭头612所示,高速缓存230可以向文件系统核430发送获取 地址映射的请求。响应于接收到该请求,如箭头614所示,文件系统 核430可以获取地址映射,并且如箭头616所示,文件系统核430可 以向高速缓存230返回地址映射。继而,如箭头618所示,高速缓存 230可以使用获取的地址映射来从基础存储系统110中获取候选数据, 并将获取的候选数据加载至高速缓存230中。
利用上述示例性实现,在未来很可能被访问的候选数据被预先从 基础存储系统加载至高速缓存230中,进而在后续接收到针对该候选 数据的访问请求时,可以立刻从高速缓存230中找到期望的数据。以 此方式,可以大大加快处理用户请求的速度,进而提高用户体验。在 加载之后,即使在有限时间内在主机410处没有接收到针对候选数据 的访问,在该候选数据从高速缓存230中被移除之前,高速缓存230 中的候选数据都可以服务于后续的访问请求。利用上述示例性实现, 可以加快数据访问的速度并提高用户体验。
将会理解,为了进一步提高存储系统200对于用户访问请求的处 理效率,在存储系统200中可以包括多个控制节点,以便并行地向多 个用户提供数据服务。图7示意性示出了根据本公开的一个实现方式 的其中可以使用本公开的方法的存储系统200的控制节点的框图700。 如图7所示,存储系统200可以包括两个控制节点710和控制节点720。 具体而言,每个控制节点710和720可以具有各自的高速缓存230以 便用于将存储单元池160中的至少一部分存储单元中的数据进行高速 缓存。类似地,控制节点720可以包括类似的结构。如图7所示高速 缓存722同样可以用于将存储单元池160中的至少一部分存储单元中 的数据进行高速缓存。如图7所示,数据通道730用于在两个高速缓 存230和722之间同步数据。
根据本公开的示例性实现方式,在接收到写入请求后,可以首先 将待写入的目标数据加载至高速缓存230中。当达到预定时间间隔或 者高速缓存230中的待写入数据达到预定数量时,可以向基础存储系 统110中冲刷(flush)待写入的数据。如图7所示,在存储系统200 包括两个控制节点710和720的情况下,可以在向高速缓存230写入 目标数据之后,首先将将目标数据在高速缓存230中的状态设置为 “脏”,以指示高速缓存230中的目标数据尚未被冲刷至基础存储系 统110。
在下文中,将参见图8描述有关写入操作的更多细节。图8示意 性示出了根据本公开的一个实现方式的用于针对写入请求提供高速 缓存服务的操作的框图800。如箭头820所示,主机410可以向文件 系统核430发送写入请求,以指示将存储单元池160中的虚拟地址处 的目标数据写入存储系统200。如箭头822所示,文件系统核430首 先将该目标数据写入高速缓存230。继而,如箭头824所示,高速缓 存230向对端高速缓存(peer cache)722同步被写入的目标数据。继 而,高速缓存230通知文件系统核430写入过程结束。
将会理解,由于此时目标数据仅仅被写入高速缓存230和高速缓 存722,而尚未被真正冲刷至基础存储系统110中,因而此时的高速 缓存230和722中的目标数据都被标记为“脏”以便指示该目标数据 尚未被冲刷至基础存储系统110中。在下文中,将描述有关冲刷操作 的更多细节。
根据本公开的示例性实现方式,可以基于地址映射和目标数据在 存储单元池160中虚拟地址,来确定与虚拟地址相对应的基础存储系 统110中的物理地址。继而,可以向基础存储系统110中的物理地址 处写入目标数据。根据本公开的示例性实现方式,在已经将高速缓存 中的目标数据冲刷至基础存储系统110中的物理地址处之后,可以将 目标数据的状态设置为“清洁”以指示高速缓存230中的目标数据已 经被冲刷至基础存储系统110。在下文中,将参见图9描述有关冲刷 操作的更多细节。
图9示意性示出了根据本公开的一个实现方式的用于针对写入请 求提供高速缓存服务的操作的框图900。在图9中,如箭头920所示, 为了执行冲刷操作,高速缓存230可以首先向文件系统核430发送获 取地址映射的请求。继而,如箭头924所示,文件系统核430将地址 映射发送至高速缓存230。如箭头926所示,高速缓存230可以基于 获取的地址映射,来将高速缓存230中的目标数据写入至基础存储系 统110中的与目标数据在存储单元池160中虚拟地址相对应的物理地 址处。
继而,如箭头928-1和928-2所示,高速缓存230可以利用文件 系统核430来通知基础存储系统110已经执行了写入操作。如箭头930 所示,文件系统核430可以通知高速缓存230写入操作已经完成。继 而,如箭头932所示,高速缓存230可以通知高速缓存722,以便在对端高速缓存722处执行相应的操作。在写入操作已经完成之后,高 速缓存230中的目标数据的状态可以从“脏”被设置为“清洁”。
在对端高速缓存722处,在已经接收到如箭头932所示的来自高 速缓存230的通知之后,可以将高速缓存722中的被同步的目标数据 的状态设置为“清洁”。此时,两个高速缓存230和722中的数据都 是最新的数据,并且与在基础存储系统110中存储的数据相一致。
在下文中,将参见图10A至图10B来详细描述有关基础存储系统 110和120的更多细节。在本公开的上下文中,基础存储系统110和 120可以是基于RAID的存储系统。基于RAID的存储系统可以将多 个存储设备组合起来,成为一个磁盘阵列。通过提供冗余的存储设备, 可以使得整个磁盘组的可靠性大大超过单一的存储设备。RAID可以 提供优于单一的存储设备的各种优势,例如,增强数据整合度,增强 容错功能,增加吞吐量或容量,等等。RAID存在多个标准,例如 RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-10,RAID-50等等。关于RAID级别的更多细节,本领域技术人员例如可 以参见https://en.wikipedia.org/wiki/Standard_RAID_levels、以及https://en.wikipedia.org/wiki/Nested_RAID_levels等。
图10A示意性示出了其中可以实现本公开的方法的存储系统 1000A的示意图。在图10A所示的存储系统中,以包括五个独立存储 设备(1010、1012、1014、1016以及1018)的RAID-5(4D+1P,其 中4D表示存储系统中包括四个存储设备来用于存储数据,1P表示存 储系统中包括一个存储设备来用于存储P校验)阵列为示例,来说明 RAID的工作原理。应当注意,尽管图10A中示意性示出了五个存储 设备,在其他的实现方式中,根据RAID的等级不同,还可以包括更 多或者更少的存储设备。尽管图10A中示出了条带1020、1022、 1024、…、1026,在其他的示例中,RAID系统还可以包括不同数量 的条带。
在RAID中,条带跨越多个物理存储设备(例如,条带1020跨 越存储设备1010、1012、1014、1016以及1018)。可以简单地将条 带理解为多个存储设备中的满足一定地址范围的存储区域。在条带 1020中存储的数据包括多个部分:存储在存储设备1010上的数据块D00、存储在存储设备1012上的数据块D01、存储在存储设备1014 上的数据块D02、存储在存储设备1016上的数据块D03、以及存储 在存储设备1018上的数据块P0。在此示例中,数据块D00、D01、 D02、以及D03是被存储的数据,而数据块P0是被存储数据的P校 验。
在其他条带1022和1024中存储数据的方式也类似于条带1020, 不同之处在于,有关其他数据块的校验可以存储在不同于存储设备 1018的存储设备上。以此方式,当多个存储设备1010、1012、1014、 1016以及1018中的一个存储设备出现故障时,可以从其他的正常的 存储设备中恢复出故障设备中的数据。
图10B示意性示出了存储系统1010A的重建过程的示意图1000B。 如图10B所示,当一个存储设备(例如,以阴影示出的存储设备1016) 出现故障时,可以从其余的正常操作的多个存储设备1010、1012、1014、 1018中恢复数据。此时,可以向RAID中加入新的后备存储设备1018B 来替代存储设备1018,以此方式,可以将恢复的数据写入1018B并 实现系统的重建。
应当注意,尽管在上文中参见图10A和图10B描述了包括5个存 储设备(其中4个存储设备用于存储数据,1个存储设备用于存储校 验)的RAID-5的存储系统,根据其他RAID等级的定义,还可以存 在包括其他数量的存储设备的存储系统。例如,基于RAID-6的定义,可以利用两个存储设备来分别存储校验P和Q。又例如,基于三重校 验RAID的定义,可以利用三个存储设备来分别存储校验P、Q和R。
随着分布式存储技术的发展,图10A和10B所示的存储系统中的 各个存储设备1010、1012、1014、1016以及1018可以不再局限于物 理存储设备,而是可以是虚拟存储设备。例如,存储设备1010上的 各个区块可以分别来自于资源池中的不同的物理存储设备(在下文中 将简称为存储设备)。图11示意性示出了其中可以实现本公开的方 法的示例性环境的框图。如图11所示,存储资源池1170可以包括多 个物理存储设备1110、1120、1130、1140、1150、…、1160。此时, 该多个存储设备中的存储空间可以被分配给多个存储系统110、…、 和120。此时,存储系统110、…、120可以经由网络1180来访问存 储资源池1170中的各个存储设备中的存储空间。
图12示意性示出了如图11所示的存储资源池1170的更多信息 的图示。资源池1170可以包括多个存储设备1110、1120、1130、1140、 1150、…、1160。每个存储设备可以包括多个区块,其中空白区块(如 图例1260所示)表示空闲的区块,以条纹示出的区块(如图例1262 所示)表示用于图10中的存储系统1010A的第一条带的区块,而以 阴影示出的区块(如图例1264所示)表示用于图10中的存储系统 1010A的第二条带的区块。此时,用于第一条带的区块1212、1222、 1232、1242、1252分别用于存储第一条带的数据块D00、D01、D02、D03和校验P0。用于第二条带的区块1224、1234、1244、1266和1214 分别用于存储第二条带的数据块D10、D11、D12、D13和校验P1。
如图12所示,在各个存储设备中还可以存在预留的空闲部分1270, 以便用于在资源池中的一个存储设备出现故障时,可以选择各个存储 设备中的空闲部分1270中的区块,来重建故障存储设备中的各个区 块。
应当注意,图12仅以4D+1P的RAID-5存储系统为示例示出了 各个条带中的区块如何分布在资源池的多个存储系统中。当采用基于 其他RAID等级时,本领域技术人员可以基于上文的原理来实现具体 细节。例如,在6D+1P+1Q的RAID-6存储系统中,每个条带中的8个区块可以分布在多个存储设备上,进而保证多个存储设备的负载均 衡。
在上文中已经参见图2至图12详细描述了根据本公开的方法的 示例,在下文中将描述相应的设备的实现。根据本公开的示例性实现, 提供了一种用于在存储系统中提供高速缓存服务的设备。存储系统包 括存储单元池、高速缓存以及基础存储系统,存储单元池包括多个存 储单元,多个存储单元中的存储单元经由存储系统的地址映射被映射 至基础存储系统中的物理地址。该设备包括:接收模块,配置用于接 收针对存储单元池中的虚拟地址处的目标数据的访问请求;确定模块, 配置用于确定访问请求的类型,类型包括用于从存储系统中读取目标 数据的读取请求、以及用于向存储系统中写入目标数据的写入请求; 以及服务模块,配置用于基于确定的类型,利用高速缓存来服务于访 问请求,其中高速缓存用于按照存储单元池中的存储单元的格式来高 速缓存存储单元池中的至少一部分存储单元中的数据。
图13示意性示出了根据本公开的示例性实现的用于管理存储系 统的设备1300的框图。如图所示,设备1300包括中央处理单元(CPU) 1301,其可以根据存储在只读存储器(ROM)1302中的计算机程序 指令或者从存储单元1301加载到随机访问存储器(RAM)1303中的 计算机程序指令,来执行各种适当的动作和处理。在RAM 1303中, 还可存储设备1300操作所需的各种程序和数据。CPU 1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(I/O)接 口1305也连接至总线1304。
设备1300中的多个部件连接至I/O接口1305,包括:输入单元 1306,例如键盘、鼠标等;输出单元1307,例如各种类型的显示器、 扬声器等;存储单元1308,例如磁盘、光盘等;以及通信单元1309, 例如网卡、调制解调器、无线通信收发机等。通信单元1309允许设备1300通过诸如因特网的计算机网络和/或各种电信网络与其他设备 交换信息/数据。
上文所描述的各个过程和处理,例如方法300和1300,可由处理 单元1301执行。例如,在一些实现中,方法300和1300可被实现为 计算机软件程序,其被有形地包含于机器可读介质,例如存储单元 1308。在一些实现中,计算机程序的部分或者全部可以经由ROM1302 和/或通信单元1309而被载入和/或安装到设备1300上。当计算机程 序被加载到RAM1303并由CPU 1301执行时,可以执行上文描述的 方法400的一个或多个步骤。备选地,在其他实现中,CPU 1301也 可以以其他任何适当的方式被配置以实现上述过程/方法。
根据本公开的示例性实现方式,提供了一种用于在存储系统中提 供高速缓存服务的设备,存储系统包括存储单元池、高速缓存以及基 础存储系统,存储单元池包括多个存储单元,多个存储单元中的存储 单元经由存储系统的地址映射被映射至基础存储系统中的物理地址。 设备包括:至少一个处理器;易失性存储器;以及与至少一个处理器 耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处 理器执行时使得设备执行动作。
该动作包括:接收针对存储单元池中的虚拟地址处的目标数据的 访问请求;确定访问请求的类型,类型包括用于从存储系统中读取目 标数据的读取请求、以及用于向存储系统中写入目标数据的写入请求; 以及基于确定的类型,利用高速缓存来服务于访问请求,其中高速缓 存用于按照存储单元池中的存储单元的格式来高速缓存存储单元池 中的至少一部分存储单元中的数据。
根据本公开的示例性实现方式,利用高速缓存来服务于访问请求 包括:响应于确定访问请求是读取请求,从读取请求中获取虚拟地址; 确定高速缓存中是否存在与虚拟地址相对应的数据;响应于确定在高 速缓存中存在数据,从高速缓存中读取数据;以及返回读取的数据以 响应于读取请求。
根据本公开的示例性实现方式,该动作进一步包括:响应于确定 在高速缓存中不存在数据,基于地址映射确定目标数据在基础存储系 统中的物理地址;从基础存储系统中的物理地址处读取目标数据,以 将读取的目标数据加载至高速缓存;以及返回读取的目标数据以响应 于读取请求。
根据本公开的示例性实现方式,该动作进一步包括:基于访问请 求来确定下一读取请求将要读取的候选数据;以及将候选数据从基础 存储系统中加载至高速缓存。
根据本公开的示例性实现方式,将候选数据从基础存储系统中加 载至高速缓存包括:获取候选数据在存储单元池中的候选地址;基于 地址映射确定候选地址在基础存储系统中的物理地址;从基础存储系 统中的物理地址处读取候选数据,以将读取的候选数据加载至高速缓 存。
根据本公开的示例性实现方式,利用高速缓存来服务于访问请求 包括:响应于确定访问请求是写入请求,向高速缓存中写入目标数据; 以及将目标数据在高速缓存中的状态设置为“脏”,以指示高速缓存 中的目标数据尚未被冲刷至基础存储系统。
根据本公开的示例性实现方式,该动作进一步包括:基于地址映 射确定与虚拟地址相对应的基础存储系统中的物理地址;以及向基础 存储系统中的物理地址处写入目标数据。
根据本公开的示例性实现方式,向基础存储系统中的物理地址处 写入目标数据包括:将高速缓存中的目标数据冲刷至基础存储系统中 的物理地址处;以及将状态设置为“清洁”以指示高速缓存中的目标 数据已经被冲刷至基础存储系统。
根据本公开的示例性实现方式,存储系统进一步包括对端高速缓 存,对端高速缓存用于按照存储单元池中的存储单元的格式来高速缓 存存储单元池中的至少一部分存储单元中的数据。
根据本公开的示例性实现方式,该动作进一步包括:向对端高速 缓存同步目标数据;以及将同步的目标数据在对端高速缓存中的对端 状态设置为“脏”,以指示对端高速缓存中的同步的目标数据尚未被 冲刷至基础存储系统。
根据本公开的示例性实现方式,该动作进一步包括:响应于高速 缓存中的目标数据已经被冲刷至基础存储系统,将对端状态设置为 “清洁”。
根据本公开的示例性实现,提供了一种计算机程序产品,计算机 程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可 执行指令,机器可执行指令用于执行根据本公开的方法。
根据本公开的示例性实现,提供了一种计算机可读介质。计算机 可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个 处理器执行时,使得至少一个处理器实现根据本公开方法。
本公开可以是方法、设备、系统和/或计算机程序产品。计算机程 序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各 个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使 用的指令的有形设备。计算机可读存储介质例如可以是――但不限于 ――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体 存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体 的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存 储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM 或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储 器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的 任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时 信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其 他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通 过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质 下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广 域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜 传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计 算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络 接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令, 以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集 架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、 状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码 或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++ 等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。 计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户 计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部 分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在 涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包 括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者, 可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连 接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个 性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指 令,从而实现本公开的各个方面。
这里参照根据本公开实现的方法、装置、设备(系统)和计算机 程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流 程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都 可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或 其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这 些指令在通过计算机或其他可编程数据处理装置的处理单元执行时, 产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作 的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介 质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特 定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品, 其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作 的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处 理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或 其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使 得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实 现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方 法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上, 流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部 分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻 辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功 能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框 实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这 依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、 以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作 的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令 的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷 尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的 范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改 和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各 实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域 的其他普通技术人员能理解本文公开的各实现。

Claims (21)

1.一种用于在存储系统中提供高速缓存服务的方法,所述存储系统包括存储单元池、高速缓存以及基础存储系统,所述存储单元池包括多个存储单元,所述多个存储单元中的存储单元经由存储系统的地址映射被映射至所述基础存储系统中的物理地址,所述方法包括:
接收针对所述存储单元池中的虚拟地址处的目标数据的访问请求;
确定所述访问请求的类型,所述类型包括用于从所述存储系统中读取所述目标数据的读取请求、以及用于向所述存储系统中写入所述目标数据的写入请求;以及
基于确定的所述类型,利用所述高速缓存来服务于所述访问请求,其中所述高速缓存用于按照所述存储单元池中的存储单元的格式来高速缓存所述存储单元池中的至少一部分存储单元中的数据。
2.根据权利要求1所述的方法,其中利用所述高速缓存来服务于所述访问请求包括:响应于确定所述访问请求是读取请求,
从所述读取请求中获取所述虚拟地址;
确定所述高速缓存中是否存在与所述虚拟地址相对应的数据;
响应于确定在所述高速缓存中存在所述数据,从所述高速缓存中读取所述数据;以及
返回读取的所述数据以响应于所述读取请求。
3.根据权利要求2所述的方法,进一步包括:响应于确定在所述高速缓存中不存在所述数据,
基于所述地址映射确定所述目标数据在所述基础存储系统中的物理地址;
从所述基础存储系统中的所述物理地址处读取所述目标数据,以将读取的所述目标数据加载至所述高速缓存;以及
返回读取的所述目标数据以响应于所述读取请求。
4.根据权利要求1所述的方法,进一步包括:
基于所述访问请求来确定下一读取请求将要读取的候选数据;以及
将所述候选数据从所述基础存储系统中加载至所述高速缓存。
5.根据权利要求4所述的方法,其中将所述候选数据从所述基础存储系统中加载至所述高速缓存包括:
获取所述候选数据在所述存储单元池中的候选地址;
基于所述地址映射确定所述候选地址在所述基础存储系统中的物理地址;
从所述基础存储系统中的所述物理地址处读取所述候选数据,以将读取的所述候选数据加载至所述高速缓存。
6.根据权利要求1所述的方法,其中利用所述高速缓存来服务于所述访问请求包括:响应于确定所述访问请求是写入请求,
向所述高速缓存中写入所述目标数据;以及
将所述目标数据在所述高速缓存中的状态设置为“脏”,以指示所述高速缓存中的所述目标数据尚未被冲刷至所述基础存储系统。
7.根据权利要求6所述的方法,进一步包括:
基于所述地址映射确定与所述虚拟地址相对应的所述基础存储系统中的物理地址;以及
向所述基础存储系统中的所述物理地址处写入所述目标数据。
8.根据权利要求7所述的方法,其中向所述基础存储系统中的所述物理地址处写入所述目标数据包括:
将所述高速缓存中的所述目标数据冲刷至所述基础存储系统中的所述物理地址处;以及
将所述状态设置为“清洁”以指示所述高速缓存中的所述目标数据已经被冲刷至所述基础存储系统。
9.根据权利要求7所述的方法,其中所述存储系统进一步包括对端高速缓存,所述对端高速缓存用于按照所述存储单元池中的存储单元的格式来高速缓存所述存储单元池中的至少一部分存储单元中的数据,所述方法进一步包括:
向所述对端高速缓存同步所述目标数据;以及
将同步的所述目标数据在所述对端高速缓存中的对端状态设置为“脏”,以指示所述对端高速缓存中的同步的所述目标数据尚未被冲刷至所述基础存储系统。
10.根据权利要求9所述的方法,进一步包括:
响应于所述高速缓存中的所述目标数据已经被冲刷至所述基础存储系统,将所述对端状态设置为“清洁”。
11.一种用于在存储系统中提供高速缓存服务的设备,所述存储系统包括存储单元池、高速缓存以及基础存储系统,所述存储单元池包括多个存储单元,所述多个存储单元中的存储单元经由存储系统的地址映射被映射至所述基础存储系统中的物理地址,所述设备包括:
至少一个处理器;
易失性存储器;以及
与所述至少一个处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述至少一个处理器执行时使得所述设备执行动作,所述动作包括:
接收针对所述存储单元池中的虚拟地址处的目标数据的访问请求;
确定所述访问请求的类型,所述类型包括用于从所述存储系统中读取所述目标数据的读取请求、以及用于向所述存储系统中写入所述目标数据的写入请求;以及
基于确定的所述类型,利用所述高速缓存来服务于所述访问请求,其中所述高速缓存用于按照所述存储单元池中的存储单元的格式来高速缓存所述存储单元池中的至少一部分存储单元中的数据。
12.根据权利要求11所述的设备,其中利用所述高速缓存来服务于所述访问请求包括:响应于确定所述访问请求是读取请求,
从所述读取请求中获取所述虚拟地址;
确定所述高速缓存中是否存在与所述虚拟地址相对应的数据;
响应于确定在所述高速缓存中存在所述数据,从所述高速缓存中读取所述数据;以及
返回读取的所述数据以响应于所述读取请求。
13.根据权利要求12所述的设备,其中所述动作进一步包括:响应于确定在所述高速缓存中不存在所述数据,
基于所述地址映射确定所述目标数据在所述基础存储系统中的物理地址;
从所述基础存储系统中的所述物理地址处读取所述目标数据,以将读取的所述目标数据加载至所述高速缓存;以及
返回读取的所述目标数据以响应于所述读取请求。
14.根据权利要求11所述的设备,其中所述动作进一步包括:
基于所述访问请求来确定下一读取请求将要读取的候选数据;以及
将所述候选数据从所述基础存储系统中加载至所述高速缓存。
15.根据权利要求14所述的设备,其中将所述候选数据从所述基础存储系统中加载至所述高速缓存包括:
获取所述候选数据在所述存储单元池中的候选地址;
基于所述地址映射确定所述候选地址在所述基础存储系统中的物理地址;
从所述基础存储系统中的所述物理地址处读取所述候选数据,以将读取的所述候选数据加载至所述高速缓存。
16.根据权利要求11所述的设备,其中利用所述高速缓存来服务于所述访问请求包括:响应于确定所述访问请求是写入请求,
向所述高速缓存中写入所述目标数据;以及
将所述目标数据在所述高速缓存中的状态设置为“脏”,以指示所述高速缓存中的所述目标数据尚未被冲刷至所述基础存储系统。
17.根据权利要求16所述的设备,其中所述动作进一步包括:
基于所述地址映射确定与所述虚拟地址相对应的所述基础存储系统中的物理地址;以及
向所述基础存储系统中的所述物理地址处写入所述目标数据。
18.根据权利要求17所述的设备,其中向所述基础存储系统中的所述物理地址处写入所述目标数据包括:
将所述高速缓存中的所述目标数据冲刷至所述基础存储系统中的所述物理地址处;以及
将所述状态设置为“清洁”以指示所述高速缓存中的所述目标数据已经被冲刷至所述基础存储系统。
19.根据权利要求17所述的设备,其中所述存储系统进一步包括对端高速缓存,所述对端高速缓存用于按照所述存储单元池中的存储单元的格式来高速缓存所述存储单元池中的至少一部分存储单元中的数据,所述动作进一步包括:
向所述对端高速缓存同步所述目标数据;以及
将同步的所述目标数据在所述对端高速缓存中的对端状态设置为“脏”,以指示所述对端高速缓存中的同步的所述目标数据尚未被冲刷至所述基础存储系统。
20.根据权利要求19所述的设备,其中所述动作进一步包括:
响应于所述高速缓存中的所述目标数据已经被冲刷至所述基础存储系统,将所述对端状态设置为“清洁”。
21.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行根据权利要求1-10中的任一项所述的方法。
CN201811278408.XA 2018-10-30 2018-10-30 用于提供高速缓存服务的方法、设备和计算机可读介质 Active CN111124945B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811278408.XA CN111124945B (zh) 2018-10-30 2018-10-30 用于提供高速缓存服务的方法、设备和计算机可读介质
US16/572,929 US11010301B2 (en) 2018-10-30 2019-09-17 Method, apparatus, and computer program product for providing cache service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811278408.XA CN111124945B (zh) 2018-10-30 2018-10-30 用于提供高速缓存服务的方法、设备和计算机可读介质

Publications (2)

Publication Number Publication Date
CN111124945A true CN111124945A (zh) 2020-05-08
CN111124945B CN111124945B (zh) 2023-09-22

Family

ID=70326842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811278408.XA Active CN111124945B (zh) 2018-10-30 2018-10-30 用于提供高速缓存服务的方法、设备和计算机可读介质

Country Status (2)

Country Link
US (1) US11010301B2 (zh)
CN (1) CN111124945B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028388A (zh) * 2023-01-17 2023-04-28 摩尔线程智能科技(北京)有限责任公司 高速缓存方法、装置、电子设备、存储介质和程序产品

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124951B (zh) 2018-10-31 2023-09-15 伊姆西Ip控股有限责任公司 管理数据访问的方法、设备和计算机程序产品
US11972034B1 (en) 2020-10-29 2024-04-30 Amazon Technologies, Inc. Hardware-assisted obscuring of cache access patterns
US11620238B1 (en) * 2021-02-25 2023-04-04 Amazon Technologies, Inc. Hardware blinding of memory access with epoch transitions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1828510A (zh) * 2005-03-03 2006-09-06 富士通株式会社 数据存储系统和数据存储控制装置
US9069783B1 (en) * 2013-12-31 2015-06-30 Emc Corporation Active-active scale-out for unified data path architecture
CN105897859A (zh) * 2016-03-25 2016-08-24 天津书生云科技有限公司 一种存储系统
CN107111455A (zh) * 2014-12-26 2017-08-29 威斯康星校友研究基金会 使用虚拟地址的缓存访问

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430480B1 (en) 2013-12-31 2016-08-30 Emc Corporation Active-active metro-cluster scale-out for unified data path architecture
US10810123B1 (en) 2017-10-25 2020-10-20 EMC IP Holding Company, LLC Flush strategy for using DRAM as cache media system and method
US10521137B1 (en) 2017-10-31 2019-12-31 EMC IP Holding Company LLC Storage device array integration of dual-port NVMe device with DRAM cache and hostside portion of software stack system and method
JP2019191886A (ja) * 2018-04-24 2019-10-31 富士通株式会社 情報処理装置,情報処理方法およびプログラム
US10949355B2 (en) * 2018-06-11 2021-03-16 Western Digital Technologies, Inc. Methods and apparatus for workload based dynamic cache control in SSD

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1828510A (zh) * 2005-03-03 2006-09-06 富士通株式会社 数据存储系统和数据存储控制装置
US9069783B1 (en) * 2013-12-31 2015-06-30 Emc Corporation Active-active scale-out for unified data path architecture
CN107111455A (zh) * 2014-12-26 2017-08-29 威斯康星校友研究基金会 使用虚拟地址的缓存访问
CN105897859A (zh) * 2016-03-25 2016-08-24 天津书生云科技有限公司 一种存储系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028388A (zh) * 2023-01-17 2023-04-28 摩尔线程智能科技(北京)有限责任公司 高速缓存方法、装置、电子设备、存储介质和程序产品
CN116028388B (zh) * 2023-01-17 2023-12-12 摩尔线程智能科技(北京)有限责任公司 高速缓存方法、装置、电子设备、存储介质和程序产品

Also Published As

Publication number Publication date
US20200133867A1 (en) 2020-04-30
US11010301B2 (en) 2021-05-18
CN111124945B (zh) 2023-09-22

Similar Documents

Publication Publication Date Title
US11444641B2 (en) Data storage system with enforced fencing
US11438411B2 (en) Data storage system with redundant internal networks
US11281536B2 (en) Method, device and computer program product for managing storage system
US11467732B2 (en) Data storage system with multiple durability levels
US11237772B2 (en) Data storage system with multi-tier control plane
CN111124945B (zh) 用于提供高速缓存服务的方法、设备和计算机可读介质
CN110413201B (zh) 用于管理存储系统的方法、设备和计算机程序产品
US20190324666A1 (en) Data storage system
CN109725831B (zh) 管理存储系统的方法、系统和计算机可读介质
CN109213619B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN111857541B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN110413208B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN110413198B (zh) 用于管理存储系统的方法、设备和计算机程序产品
US11263080B2 (en) Method, apparatus and computer program product for managing cache
US10592165B1 (en) Method, apparatus and computer program product for queueing I/O requests on mapped RAID
CN104750428A (zh) 块储存存取和网关模块、储存系统和方法与内容递送装置
CN112764661A (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN112748849A (zh) 用于存储数据的方法、设备和计算机程序产品
US11481275B2 (en) Managing reconstruction of a malfunctioning disk slice
WO2021088586A1 (zh) 一种存储系统中的元数据的管理方法及装置
CN107526538B (zh) 用于在存储系统中传递消息的方法和系统
US9767029B2 (en) Data decompression using a construction area
CN115981559A (zh) 分布式数据存储方法、装置、电子设备和可读介质
CN113973137A (zh) 用于使用数据访问网关和投标计数器优化对数据集群的数据节点的访问的方法和系统
CN113973138A (zh) 用于使用数据访问网关优化对数据集群的数据节点的访问的方法和系统

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