CN103493024B - 用于高速缓存分层的方法和*** - Google Patents
用于高速缓存分层的方法和*** Download PDFInfo
- Publication number
- CN103493024B CN103493024B CN201180051518.2A CN201180051518A CN103493024B CN 103493024 B CN103493024 B CN 103493024B CN 201180051518 A CN201180051518 A CN 201180051518A CN 103493024 B CN103493024 B CN 103493024B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- layer
- cache layer
- tissue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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
-
- 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/1048—Scalability
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/314—In storage network, e.g. network attached cache
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/463—File
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种用于存储数据以供在计算机***上运行的应用检索的方法和***,包括:提供包括至少一个高速缓存层和基层的分层高速缓存***;基于策略将数据存储在所述至少一个高速缓存层和所述基层中的至少一个中;以及通过用于组织数据的装置将所述数据的应用视图呈现给所述应用。本发明可选地提供了附加的溢出层,并优选地包括多个高速缓存层。
Description
本申请要求于2010年8月25日提交的美国临时申请No. 61/377,018的优先权,该美国临时申请的全部内容通过引用并入本文。
技术领域
本发明总体涉及计算机数据存储,并且更具体地,涉及用于提供分层高速缓存结构的方法和***。
背景技术
近来,作为正变得广泛可用且可容易访问的商品存储设备,已出现以下两个具体新类别的存储设备:基于闪存的固态驱动器(SSD)和云存储器。本领域公知这些设备中的每一个在性能和成本上与计算机存储***中许多年来流行的旋转介质硬盘驱动器清楚区分。从纯数据存储角度来看,每个类别的存储设备具有其自身的特定长处;例如,SSD较快,常规硬驱动器便宜,并且云存储器较灵活。如当前所使用,不同存储设备可由给定计算机***访问,并且,使用不同数据流来管理与该存储设备的交互。图1示意了与多个类别的存储设备的典型现有技术***交互。
不同类别的存储设备之间在特性、性能和成本上的差异一般大于每个类别内的各个产品或技术之间的差异。由此,期望能够在适当时使用所有类别的存储设备来管理数据存储,以最佳地利用其每个长处。当前在本领域中存在使SSD充当存储***中的常规硬驱动器的高速缓存的新兴趋势,尽管实现方法是原始的并且是利用常规硬驱动器与SSD之间的简化数据流、基于每***来设计的。
一些年来到现在,已经使用分层的思想(基于对数据应用的策略将数据置于分离存储设备上)来实现围绕数据管理的商业目的,例如针对成本效率、数据保持或法规遵循。例如,可以对所有数据进行存档,可以对敏感数据进行加密,可以将频繁使用的数据保存在其用户附近等等。这种类型的分层往往主要通过用于这些层的存储设备或数据存储***而区分。
本发明的领域中的当前解决方案一般是基于网络的(器械或存储区域网络),使用基于块的高速缓存和/或存储设备(或者在云存储器的情况下,存储服务)选项的固定列表,例如图1所示。
尽管现有技术***利用特定类别的存储设备的优势,但是这些***在其使用上受计算机***与具体存储设备之间的交互限制。此外,在应用级,通常必须进行适应,以从不同类别的存储设备进行数据检索。此外,从不同存储设备类别的不同优势实现极少(如果有的话)协同效应,并且因此,现有技术***限于存储设备的物理表现,这是由于现有技术***将独立地执行,而与***中的其他不同类别的存储设备无关。
因此,本发明的目的是提供一种新***和方法,用于提供分层高速缓存结构,以实现由不同类别的存储设备的比可在独立使用这些不同类别的存储设备时实现的优势高的优势产生的效益。
发明内容
本发明提供了一种新***和方法,用于透明地将不同类别的存储设备集成在单个装置内以组织数据,从而实现使用这些不同类别的存储设备的协同效益,该协同效益扩展超过独立地且利用每一个自身的用于组织数据的装置进行操作的每个类别的存储设备的优势。本发明提供了一种推广的高速缓存***和方法,可以将任何类别的存储设备高速缓存在任何其他类别的存储设备上,并可选地在多个类别和类型的存储设备当中以集成的方式提供这种高速缓存。
根据本发明的一个实施例,提供了一种用于存储数据以供在计算机***上运行的应用检索的方法,包括:提供包括至少一个高速缓存层和基层的分层高速缓存***;基于策略将数据存储在所述高速缓存层和所述基层中的至少一个中;以及通过用于组织数据的装置将所述数据的应用视图呈现给所述应用。优选地,所述用于组织数据的装置包括至少一个高速缓存层中的每一个所述基层的元数据信息。此外,所述至少一个高速缓存层中的每一个和所述基层布置在不同存储资源上,并且所述用于组织数据的装置包括所述不同存储资源中的每一个的元数据信息。
根据本发明的一方面,所述方法包括:提供至少一个溢出层,其中,所述溢出层布置在与所述至少一个高速缓存层中的每一个和所述基层不同的存储资源上;以及其中,所述用于组织数据的装置包括所述溢出层的元数据信息。
根据本发明的另一方面,所述至少一个高速缓存层包括多个分层的高速缓存层。所述至少一个高速缓存层可以是结合操作***而使用的操作***文件缓冲高速缓存。
根据本发明的另一方面,所述多个高速缓存层中的每一个是在固态驱动器上提供的,所述基层是在硬盘驱动器上提供的,并且所述溢出层是在云存储资源上提供的。
根据本发明的另一方面,所述用于组织数据的装置存储在所述硬盘驱动器上。
根据本发明的另一方面,所述方法还包括:将所述数据存储在所述基层上;以及将所述数据高速缓存在所述多个高速缓存层中的一个或多个上,其中,较高级别高速缓存层将数据高速缓存在较低级别高速缓存层上。
根据本发明的另一方面,每个高速缓存层级别包括两个或更多个存储资源。
根据本发明的另一方面,所述用于组织数据的装置对正在使用的特定存储设备不可知(agnostic)。
根据本发明的另一方面,步骤:通过拦截***来拦截要执行的用于组织数据的装置的操作或者与所述用于组织数据的装置无关地处理的操作。
根据本发明的另一方面,所述方法还包括以下步骤:根据所述策略将输入/输出操作不相关联,使得操作的至少一部分被所述拦截***拦截并根据所述策略而处理。
根据本发明的另一方面,所述策略由策略模块提供。
根据本发明的另一方面,所述策略模块与所述拦截***构成一个整体。
根据本发明的另一方面,所述策略模块与所述用于组织数据的装置构成一个整体。
根据本发明的另一方面,拦截步骤还包括以下各项之一:(a)将被拦截的操作传递至在存储资源与所述拦截***之间提供的数据变换引擎;(b)将被拦截的操作的完成记入日志;以及(c)改变被拦截的操作并将其继续传递至所述用于组织数据的装置。
根据本发明的另一方面,所述方法还包括:在所述拦截***与所述存储资源之间提供数据变换引擎。
根据本发明的另一方面,所述方法还包括以下步骤:在所述用于组织数据的装置外执行策略;所述执行策略的步骤由所述数据变换引擎执行。
根据本发明的另一方面,所述数据变换引擎还包括:读取高速缓存模块,用于执行读取操作,以找到其上存在数据的最高高速缓存层并检索所述数据。
根据本发明的另一方面,所述数据变换引擎还包括:写入高速缓存模块,用于向不同高速缓存层级别执行写入操作。
根据本发明的另一方面,所述数据变换引擎还包括:加密模块,用于在数据经过所述用于组织数据的装置之前对数据进行加密和解密。
根据本发明的另一方面,所述数据变换引擎还包括:完整性模块,用于将数据的属性与元数据信息中存储的属性进行比较。
根据本发明的另一方面,所述数据变换引擎还包括:重复删除模块,用于执行重复删除步骤。
根据本发明的另一方面,所述数据变换引擎还包括:溢出模块,用于响应于失败的写入操作,将数据写入至溢出高速缓存层。
根据本发明的另一方面,所述方法还包括:提供数据存储接口,所述数据存储接口用于在所述存储资源与所述数据变换引擎之间提供操作接口。
根据本发明的另一方面,所述方法还包括以下步骤:抽象数据存储资源信息,使得每个数据存储资源对所述数据变换引擎来说统一地出现。
根据本发明的另一方面,所述方法还包括以下步骤:对至少两个或更多个数据存储资源成池(pool)。
根据本发明的另一实施例,提供了一种用于存储数据以供在计算机***上运行的应用检索的***,包括:分层高速缓存***,包括至少一个高速缓存层和基层,其中,所述数据是基于策略而存储在所述至少一个高速缓存层和所述基层中的至少一个中的;以及用于组织数据的装置,用于将所述数据的应用视图呈现给所述应用,其中,所述用于组织数据的装置包括至少一个高速缓存层中的每一个和所述基层的元数据信息。
根据该实施例的一方面,所述至少一个高速缓存层中的每一个和所述基层布置在不同存储资源上;以及此外,其中,所述用于组织数据的装置包括所述不同存储资源中的每一个的元数据信息。
根据该实施例的另一方面,所述***还包括:至少一个溢出层,其中,所述溢出层布置在与所述至少一个高速缓存层中的每一个和所述基层不同的存储资源上;以及其中,所述用于组织数据的装置包括所述溢出层的元数据信息。
根据该实施例的另一方面,所述至少一个高速缓存层包括多个分层的高速缓存层。
根据该实施例的另一方面,其中,所述多个高速缓存层中的每一个是在固态驱动器上提供的,所述基层是在硬盘驱动器上提供的,并且所述溢出层是在云存储资源上提供的。
根据该实施例的另一方面,所述用于组织数据的装置存储在所述硬盘驱动器上。
根据该实施例的另一方面,所述数据存储在所述基层上以及高速缓存在所述多个高速缓存层中的一个或多个上,其中,较高级别高速缓存层将数据高速缓存在较低级别高速缓存层上。
根据该实施例的另一方面,每个高速缓存层级别包括两个或更多个存储资源。
根据该实施例的另一方面,所述用于组织数据的装置对正在使用的特定存储设备不可知。
根据该实施例的另一方面,还包括:拦截***,用于拦截要执行的用于组织数据的装置的操作或者与所述用于组织数据的装置无关地处理的操作。
根据该实施例的另一方面,其中,所述拦截***适于根据所述策略将输入/输出操作不相关联,使得操作的至少一部分被所述拦截***拦截并根据所述策略而处理。
根据该实施例的另一方面,所述***还包括用于提供所述策略的策略模块。
根据该实施例的另一方面,所述策略模块与所述拦截***构成一个整体。
根据该实施例的另一方面,所述策略模块与所述用于组织数据的装置构成一个整体。
根据该实施例的另一方面,所述拦截***包括以下至少一项:(a)用于将被拦截的操作传递至在存储资源与所述拦截***之间提供的数据变换引擎的装置;(b)用于将被拦截的操作的完成记入日志的装置;以及(c)用于改变被拦截的操作并将其继续传递至所述用于组织数据的装置的装置。
根据该实施例的另一方面,在所述拦截***与所述存储资源之间提供数据变换引擎。
根据该实施例的另一方面,所述数据变换引擎还包括:读取高速缓存模块,用于执行读取操作,以找到其上存在数据的最高高速缓存层并检索所述数据。
根据该实施例的另一方面,所述数据变换引擎还包括:写入高速缓存模块,用于向不同高速缓存层级别执行写入操作。
根据该实施例的另一方面,所述数据变换引擎还包括:加密模块,用于在数据经过所述用于组织数据的装置之前对数据进行加密和解密。
根据该实施例的另一方面,所述数据变换引擎还包括:完整性模块,用于将数据的属性与元数据信息中存储的属性进行比较。
根据该实施例的另一方面,所述数据变换引擎还包括:重复删除模块,用于执行重复删除步骤。
根据该实施例的另一方面,所述数据变换引擎还包括:溢出模块,用于响应于失败的写入操作,将数据写入至溢出高速缓存层。
根据该实施例的另一方面,所述***还包括:数据存储接口,用于在所述存储资源与所述数据变换引擎之间提供操作接口。
根据该实施例的另一方面,对至少两个或更多个数据存储资源成池。
附图说明
现在将参照附图,仅作为示例,描述实施例,在附图中:
图1示出了计算机的现有技术存储模型,其中,在管理和互连数据流两方面,每个存储资源或数据存储***均分离。
图2示出了根据本发明的存储模型。
图3示出了根据本发明的一个实施例的一般存储分层模型。
图4示出了图3的存储模型的改善版本。
图5示出了根据本发明的一个实施方式的框图。
图6示出了用作复合存储资源的min-OR存储树的示例,对4路RAID0配置进行仿真。
图7示出了用作复合存储资源的示例min-OR存储树,其示出了与作为RAID6等效配置的镜之一成镜像的更复杂3路RAID1。
图8示出了可实现本发明的推广计算机***。
图9示出了与本发明一起使用的代表性数据变换引擎。
具体实施方式
本发明提供了一种新***和方法,用于透明地将不同类别的存储设备集成在单个文件***内,从而实现使用这些不同类别的存储设备的协同效益,该协同效益扩展超过独立地且利用每一个自身的文件***进行操作的每个类别的存储设备的优势。考虑到以下描述,对本领域技术人员来说将变得显而易见,本发明提供了一种推广的高速缓存***和方法,可以将任何类别的存储设备高速缓存在任何其他类别的存储设备上,并可选地在多个类别和类型的存储设备当中以集成的方式提供这种高速缓存。尽管关于文件***描述了本发明以便于理解,但是将意识到,可以使用任何用于组织数据的装置,包括但不限于数据库,以及特别地,对象数据库、键值存储器、一些网络协议和一些共享数据***。
在实现上述功能时,申请人面临着以下问题:(a)如何透明地集成不同存储设备,使得存储用户体验到本文描述的效益,而无需改变其应用或操作***;(b)如何对可用的许多选项当中存储设备的选择不可知,使得在新技术出现时可以实现本发明;(c)如何在总体级别上提供存储设备的安全性和完整性;以及(d)如何应付较慢或遥远的存储设备的延迟问题。以下是对如何解决这些问题以得到本发明的简要的顶级描述。对实施本发明的更详细描述将紧随其后。
已经发现,可以通过保留对主数据存储***(例如,文件***中的文件***元数据)的现有用户可见组织并使数据放置在独立控制的相同或其他存储设备上,解决透明集成问题。这将如图1所示的现有技术***的数据流和组织改变为如图2所示的数据流和组织,在图2中,根据本发明,存储器的每个层级或层是更低层级的前端。
关于不可知问题,已经发现,将***中的每个存储设备用作一般数据存储资源,并抽象掉潜在存储机制以提供针对看起来相同并因此被不可知地对待的每个类别的存储设备而允许的所有设备的统一接口,同时仍保留从特定类别的存储设备可用的固有物理优势。
通过提供对经过***的所有数据的基于策略的处理,解决了安全性和完整性问题,该数据包括在用户/拥有者的控制之外某处存储的数据,如云存储器的情况中可能的那样。此外,这是提供所有设备的统一接口的另一优势,提供统一接口使得这些设备可以被不可知地对待,并因此同时使其上的数据受到基于策略的处理,而不论存储设备类别或者数据所驻留于的特定存储设备如何。
通过以下方式来解决延迟问题:使用多个存储设备的透明集成来提供存储层的高速缓存级联,以优化性能。即,可以应用规则以使得当确定在哪个类别上存储数据时,可以说明特定类别的数据存储器的物理特性。可替换地,可以一开始就应用***级设计,从而给更高级别的层提供更快的存储器类别。
本发明一般在计算机***的上下文内操作,并用于提供对一般已知计算机***来说可用的数据存储能力的改进,该一般已知计算机***的示例性***在图8中示出。如图所示,计算机***20具有多个物理和逻辑组件,包括中央处理单元(“CPU”)24、随机存取存储器(“RAM”)28、输入/输出(“I/O”)接口32、网络接口36、非易失性存储器40和局部总线44,局部总线44使CPU 24能够与其他组件通信。CPU 24执行操作***和多个软件***。RAM 28给CPU 24提供反应相对灵敏的易失性存储器。I/O接口32允许从一个或多个设备(例如键盘、鼠标等)接收输入,并将信息输出至输出设备(例如显示器和/或扬声器)。网络接口36允许与其他***进行通信。非易失性存储器40存储操作***和程序。在计算机***20的操作期间,可以从非易失性存储器40检索操作***、程序和数据,并将其置于RAM 28中以便于执行。
图2的示例示出了本发明的一个顶级实施方式,其中,计算机***200从分层高速缓存结构访问数据,其中,该高速缓存结构包括利用SSD实现的高速缓存层210、利用常规硬驱动器实现的基层220和利用云存储服务实现的溢出层230。如图所示,文件***240仍可以驻留于基层220上,即,驻留于硬盘驱动器上,其中,其通常驻留于已知计算机***中。
现在参照图3,示出了根据本发明的顶级数据流模型。文件***340是数据存储***的扩展,并可以位于计算机300可访问的任何存储设备上。示出了一系列高速缓存层310,还示出了一个基层320和溢出层330。每个高速缓存层可以包括分别处于如所示的相应层内的任何数目的存储资源311、321和331。根据本发明,较高级别的层将来自其他层的数据较低地高速缓存在堆栈中。在高速缓存层310上,存在以下层级:该层级使得较高级别高速缓存层310将来自高速缓存层的数据高速缓存在较低级别310a上。基层320是数据的硬源,并且在该级别处完成存储。溢出层330是在基层320为满的情况下数据所处的位置。
一般地,存在一个或多个高速缓存层310、单个基层320,溢出层330是可选地提供的,尽管可以存在多个溢出层330。可以使用任何类别的数据存储设备,并可以针对多于一个层使用任何类别的数据存储设备。优选地,在每个层上使用的特定类别的存储器是如图2所示的存储器,但是,还可想到其他类别的存储器。例如,可以在优选地结合操作***使用的操作***文件缓冲高速缓存上实现多个高速缓存层。在该示例中,本发明与操作***协作使用文件缓冲高速缓存,但是文件缓冲器不用作专用资源。即,尽管低于文件缓冲高速缓存的高速缓存将隐式地使用文件缓冲高速缓存,但是本发明可想到的多于此,其中,存在对某内容是否进入文件缓冲高速缓存中的显式控制,并且本发明以超出在现有***中对文件缓冲高速缓存的典型使用的方式进行操作。
本发明还允许文件***340元数据存储在任何存储资源上,该存储资源包括还用于其他目的的存储资源。实际上,将通过计算机***300来移动所有数据,此时,将所有数据从一层布置或移动至下一层。即,计算机***300负责基于处于其上的用于执行本发明的指令和基于文件***340元数据,在本发明的层高速缓存级别之间传送数据。
尽管图3示出了本发明的特定顶级实施方式,但是图3所示的数据具有单个类型。参照图4,示出了并入有多种类型的数据450a、450b、450c和450n的本发明的推广实施方式。例如,数据类型450a存在于两个高速缓存层410a和410b上以及基层420上。数据类型450b和450c存在于不同高速缓存层上,但存在于相同基层和溢出层上。存储资源411、421和431分别存在于高速缓存层410、基层420和溢出层430上。如本领域技术人员将意识到,本发明可想到存储在任何高速缓存层上和任何特定类型的存储资源上的任何类型的数据,如图4的推广情况所示。对于每种类型的数据,如以下将描述的策略所确定,存在分层堆栈,具有所有高速缓存层和溢出层选项,并且仅需要基层。数据按顺序流经其分层堆栈。由于显式地处于存储资源的名字空间中的数据分离特征或者隐式地由于针对所存储的数据的命名算法,相同存储资源可以无冲突地出现在多个分层堆栈中。以下描述这些特征的实现的细节。如本领域技术人员将意识到,本发明提供了一种新范例,通过该范例,可以在多个类别的存储资源上管理和存储数据。
尽管图3和4已被描述为包括存储资源,但是这些存储资源也可以是在物理资源自身上方并入有其他组织信息的数据存储***。本发明还提供了用于在每个层上组织存储资源的结构。还可以将图3和4中的每个存储资源作为数据存储树进行组织。如果树中的特定节点是叶子,则在本发明的某级实施方式处,其为具有统一接口的数据存储资源。如果特定节点是内部节点,那么针对该节点存储数据表示针对其最小数目的子节点存储数据。相应地,这种存储树的内节点是该特定分支的顶存储层级,并对文件***来说作为包括用于管理源自内部节点的叶子存储资源的语义的单个存储资源而出现。此外,本发明可想到对包括原始块存储器(例如,盘设备)、文件***和键值存储器的多种形式的数据存储***或存储资源的支持。这些存储资源中的每一个还可以具有复杂结构,并包括例如来自分离盘的块,但是,提出了向本发明的文件***340、440的唯一输出,以实现本发明并随后将视图提供给对存储资源的这种潜在细节不可知的使用的应用或操作***。考虑到以下描述,这些特征的实现的细节将变得显而易见。
总的来说,本发明具有以下非限制性的各自独特的特征:
a)本发明使用一般高速缓存分层存储模型,其中,每个(策略确定的)类别的数据具有其自身的层堆栈;
b)本发明对正在使用的特定存储设备不可知;
c)本发明对用户来说透明,这是由于其可以作为现有数据存储***的扩展(例如,文件***)而创建;
d)本发明基于对数据存储***的用户可见组织,而不是潜在的实现,因此,例如对于文件***,本发明是基于文件的,而不是基于块的;
e)本发明可以被布置为现有操作***安装的增加设施或者被封装为网络器械。
此外,本发明能够针对提供高于实际存储资源的更高级抽象作为其主接口的除文件***外的数据存储***(例如,数据库,以及特别地,对象数据库、键值存储器、一些网络协议和一些共享数据***)提供这些特征。
现在已描述本发明的结果的优势和顶级细节,现在将特别参照图5来描述用于使本领域技术人员能够实施本发明的优选***和方法,在图5中,示出了本发明的优选实施例。在图5中,示出了文件***540,文件***540呈现面向计算机***上的应用510的接口,并与拦截***560进行通信。拦截***560按来自策略模块570的指令进行操作,以拦截在提供根据本发明的高速缓存分层存储***时使用的各个数据存储设备590之间移动的数据。提供了数据变换引擎580和数据存储接口585,以在拦截***560或文件***540在数据上执行操作之前处理数据,如下所述。
文件***
本发明需要使用文件***540。本领域公知,文件***540、其一般性质和功能是操作***/应用与数据存储***之间的接口。优选地,文件***540呈现面向应用的、应用能够在未被修改的情况下使用的文件***接口。以这种方式,文件***540可以是以优化的方式利用和使用本发明教导的新型文件***,其可以是现有文件***的修改版本,或者其可以是现有文件***的扩展版本。在每一种情况下,保留全部文件***功能,使得可以将数据存储在文件***中,但是,通过将与选择策略相匹配的文件***操作重定向至被称为拦截***560的模块,来以与现有技术文件***操作不同的方式处理这些文件***操作。在扩展现有文件***的情况下,在申请人的名称为“System and Method For Extending DataStorage System Functions”的、申请号为PCT/CA2011/050514的共同待审PCT申请中公开了一种用于实现向拦截***560的这种重定向的特定***和方法,该PCT申请的内容通过引用并入本文。
对于不提供文件***接口的数据存储***,本发明将提供该数据存储***的优选接口,并且相同原理将以与如下操作类似方式适用:按照针对文件***而进行的情况,修改其他数据存储***的数据流。
拦截***
为了利用本发明的增加功能的实现来扩展正常文件***功能,提供了拦截***560。拦截***560适于适当地拦截文件***操作,并允许在文件***自身外透明地处理这些操作。可选地,拦截***560可以是文件***自身的扩展,或者可以通过利用内置操作***功能来提供拦截***560,或者可以以其他方式(例如,通过本领域中当前可用的商业产品)提供拦截***560。本发明不限于拦截***560的特定实现。
出于本发明的目的,提供了拦截***560,以根据策略将数据存储***中的输入/输出操作不相关联,使得一个操作集合按对数据存储***来说正常的方式进行,并且另一集合由拦截***根据策略来解释。这样,数据存储***保留允许以下各项的其原始功能:(a)由于其语义被保留而一般对数据存储***的用户来说透明的拦截***560的操作;(b)拦截***所要扩展的数据存储***的语义;以及(c)拦截***在实现其策略时可用作资源的数据存储***自身。
在不脱离本发明的一般性质和教导的前提下,本发明可想到从以上功能的变型和偏差。例如,在实现包括根据上下文不同地出现的数据(数据多态性)的策略的情况下,可以不保留数据存储***的语义,并且拦截***可以盖写数据存储***的语义。这也是一种按照上述(b)扩展文件***语义的方式。
关于上述(c),可以想到,策略可以规定:应当对特定文件进行加密,但在其他方面却以与这些文件要不然将是的情况相同的方式将其存储在相同文件***上,或者,拦截***可以维持文件***上的数据库,以辅助其工作,或者,文件***可以保持负责所有元数据,并且拦截***可以接管对一些或所有数据的责任,如本发明的优选实施例中的情况那样。
相应地,拦截***560在分层高速缓冲存储器的潜在结构与在应用级呈现的文件***540之间提供接口。应当注意,文件***自身可以是例如复杂复合文件***,以允许元数据物理分布,该文件***提供分布式高速缓存和加锁管理,以确保数据完整性。
利用如上所述的拦截***,不论拦截***决定如何放置数据,对数据存储***的用户可见组织都清楚地不变。这是提供对不同存储设备的透明集成的问题的一个解决方案,如前所讨论。然而,给定存储设备的不同特性和类别,则用户体验还受拦截***可进行的数据放置的选择的性能特性影响。解决该问题的典型方式是利用高速缓存,并且,给定拦截***将数据放置在任何位置的能力,则如上所述,本发明应用高速缓存分层存储模型,以辅助针对用户及其应用优化性能。
策略
本发明还提供了策略模块570,或者可替换地,可以将策略内置于拦截***中,或者作为文件***的扩展而提供策略。优选地,策略及其执行规定了本发明的所有其他主要模块的操作。优选地,策略模块包含策略存储功能和用户接口功能。
一般地,策略是与动作相关联的上下文模式或者借以执行对数据的存储和处理的特定规则。例如,策略可以规定:对于具有“.avi”扩展且大于1兆字节的任何文件,不通过内核文件高速缓存来对文件进行缓冲,或者对于在所允许的工作时间外访问文件数据的任何用户“Joe”,其不执行操作,或者始终将新数据复制至被命名为“异地存储器”的数据存储器,或者在不存在足够空间供该操作完成的情况下,使用“云存储器”上的存储器。提供这些示例仅为了示意可通过策略而应用的许多种规则。策略模块570可以在应用本发明教导时实现各种其他策略。
可选地,可以提供用于将这些策略传送至策略模块570的用户接口。例如,这可以是在首次将根据本发明的分层高速缓存与现有计算机***集成时运行的应用,或者可替换地,这可以是对本发明的管理员来说可访问的应用。关于策略模块570,将模式定义为观察、所请求的动作或数据状态,响应于此,策略模块570执行动作或者为本发明的任何其他元件执行动作做准备。以下描述策略模块570与本发明的每个其他元件的交互。
通过策略模块570,策略控制拦截***540将拦截哪些文件***操作以及一旦被拦截时利用这些文件***操作做什么。通过将上下文模式相匹配来控制拦截,这是由于上下文对拦截***540来说可用。本文将上下文更宽地定义为文件***所具有的、对文件***来说可用的、与由应用发起的特定操作有关的任何信息。该信息的示例包括但不限于:(a)请求操作的过程的标识;(b)请求操作的过程的拥有者的标识;(c)所涉及的文件的名称;(d)所请求的操作;(d)所请求的操作的参数;(e)操作中涉及的文件的个体属性,包括但不限于大小、创建日期/时间、最后修改时间;(f)一般上下文信息,例如日期和时间、***状态、***资源使用率等;(g)应用是本地的还是远程的;以及(h)文件是本地的还是远程的。该描述可互换地指代策略和策略模块。实际上,策略是由策略模块执行或传达的任何指令集。
响应于来自策略模块570的适配策略,拦截***540可以采取以下三个动作之一:(i)将被拦截的操作传递至数据变换引擎580,并等待被数据变换引擎告诉向文件***传达什么;(ii)记录出现了被拦截的操作(可能作为状态改变或记入日志功能的一部分);以及(iii)改变被拦截的操作,并立即在文件***内继续传递该操作。策略模块570适于指示拦截***540一旦其辨别出具体上下文模式时做什么。
策略模块包含实现上述分层高速缓存模型的规则,该分层高速缓存模型用于自适应地将数据存储在不同存储资源上的不同高速缓存层中,如上所述。
数据变换引擎
策略精确地确定在给定优选地形成数据变换引擎580的一部分或与数据变换引擎580通信的功能模块的集合的情况下如何处理每个被拦截的操作。可选地,该策略还提供功能模块的参数,使得可以基于上下文、以不同的具体方式执行相同动作。优选地,数据变换引擎580负责在文件***的操作流程外执行策略。数据存储接口585(以下描述其细节)在数据变换引擎580与在提供本发明的分层高速缓存组织时使用的数据存储资源之间提供接口。
根据本发明,策略模块将如数据变换引擎580所使用的数据存储器标签与用于在给定该数据存储器标签的情况下执行输入/输出操作的算法相关联。
优选地,数据变换引擎580包括针对每个策略动作而组装至处理指令集中的多个功能模块。简单动作可以由利用每个功能模块的1个输入和1个输出布置的功能模块原始集合表示。因此,最简单类型的数据变换引擎580将具有固定策略,并因此使用彼此具有固定连接的功能模块,其中每个功能模块具有一个输入和一个输出。实际上,功能模块必须实际上在更低级别模块执行之前和之后都能够执行操作,因此,概念性的单输入单输出模块事实上具有2个输入和2个输出,以允许例如数据变换引擎580内的每个功能模块之间的迭代交互。
数据变换引擎580的作用是:通过该处理流程来发送被拦截的操作,并将信息返回至拦截***540,使得拦截***540可以适当地完成其对文件***和使用该文件***的应用透明地处理被拦截的操作的责任。功能模块被创建以提供本发明的具体可见功能。具体关于本发明,功能模块具体地与高速缓存分层模型相关,但是,还可以在该级别处实现其他功能模块,以提供附加功能。
参照图9,优选地,提供了用于实现根据本发明的高速缓存分层的以下模块。
可以提供读取高速缓存模块905,用于执行读取操作,以找到其上存在数据的最高高速缓存层并检索该数据。如果该数据未高速缓存在最高层处,则读取高速缓存模块805可以排队写入高速缓存模块要针对该特定数据向最高高速缓存层执行的写入操作。
可以提供写入高速缓存模块910,用于执行写入操作,例如以便将数据写入至最高高速缓存层并对向该高速缓存层之下的下一级别或向基层的写入进行排队。优选地,关于将特定数据存储在不同高速缓存级别上的数据存储规则由策略规定。
可以提供加密模块915,用于针对写入操作对数据进行加密并针对读取操作对数据进行解密。加密的方法或类型不受本发明限制,并且因此,可以使用任何类型的加密模块和/或方法。
可以提供完整性模块920,用于在数据上计算内容散列或校验和,并将其与元数据中存储的值进行比较,以及在读取操作或可替换地写入操作出现差错时采取适当动作,以在数据上计算内容散列或校验和并将值存储在元数据中。
可以提供重复删除模块925,使得在执行写入操作时,如果写入进行至如此指定的数据存储器(例如,云存储器),则删除重复的写入,即,仅当数据尚未存在于数据存储器上时写入该数据。
可以提供溢出模块930,使得在观察到向存储资源上的不足数据空间的失败写入时,将写入操作重定向至不同存储资源。在本发明的情况下,优选地,这是重定向至溢出层。
本领域技术人员将理解,这些模块中的每一个由活动策略进行参数化,例如在内容散列或校验和的具体选择中、在针对溢出的交替数据存储中、在加密机制的选择中等等。策略的细节不受本发明限制,而是受在本文定义的分层高速缓存***的上下文中这种模块的布置限制。此外,可以给这些模块提供执行操作(例如,完成排队写入、维持高速缓存和执行抢占式或预测性计算)的辅助进程和/或线程。功能模块还可以关于流经这些功能模块的操作和数据访问其自身共享的元数据,并且该元数据可以存储在文件***中或者存储在数据库或某其他共享数据结构中。
功能模块还能够使用拦截***来影响经过文件***的操作流。例如,加密模块可以通过简单地请求文件***对经过的数据执行其缺省加密动作来进行操作。其他功能利用该架构是可能的,包括复制、压缩、版本控制、名称虚拟化、一般数据虚拟化、数据多态性和许多其他功能。
数据存储接口
提供了数据存储接口585,优选地,在充当数据变换引擎580与在如本文描述的不同分层高速缓存级别上使用的潜在存储资源之间的操作接口时,执行两个主要操作。
首先,数据存储接口585执行抽象功能,使得每个数据存储资源对数据变换引擎来说统一地出现。其次,数据存储接口提供成池功能,成池功能用于将如数据变换引擎580所请求的输入/输出操作转换为如策略所规定的复合操作。
数据存储机制的抽象是处置许多基本上类似但具体不同的数据存储***或存储资源以简化使用存储资源的元件(在这种情况下,数据变换引擎580及其功能模块)的逻辑的方式。
尽管实现抽象过程的各种方法是可能的,但是根据优选实施例,基本存储抽象模型是键值存储器。利用具体键(名称或标签)来存储数据的具体段,使得可以通过将相同键提供给数据存储器来检索该具体段。例如,将盘上存储的数据块存储在特定位置(其键)处,并稍后以相同方式或通过使用盘的其他语义(键形成邻接空间,并且不同大小的数据块在该键空间中重叠)来检索该数据块。另一示例是云存储器,典型地,云存储器呈现基本键值存储接口。由于本发明支持文件***作为数据存储器,并且在文件***中,存在指定先前存储的值的子集的能力,因此本发明的优选实施例将文件接口模型用作对数据变换引擎580呈现的抽象。在该抽象中,利用具体键和位置(以及隐式地,数据的大小)来存储数据的具体段,并且对于每个键,典型文件(或者盘,如以上示例中那样)语义关于位置信息和重叠数据适用。这允许将文件***简单地集成至抽象中,但将实现方式中的下一层容易地映射至键值存储抽象,这使得对应地容易集成云存储器和其他类似键值存储器。
由于本发明被指派有数据存储***或存储资源以供使用,因此能够创建利用多个更原始的数据存储***或存储资源的复合数据存储器是有用的。这种复合存储资源的非常普遍的示例是RAID阵列,其将多个原始独立盘聚集成单个复合虚拟盘。本发明通过存储资源成池机制来实现这一点。
在本发明中,对数据存储***和存储资源进行分类(其为什么类型的存储器、如何与其进行通信)、参数化(使用其仅这么多、在其上的该位置处、利用这些证书)和加标签(并对其给出该名称:“…”)。这些可以是缺省的,因此,在用户接口中暴露的内容不必处于该完整级别。本发明允许但不需要创建由策略在其他数据存储***、存储资源或其他成池存储器的非零集合的方面定义的成池存储器,以及作为在写入操作被视为继续之前必须确认写入操作的集合的元件的最小数目的数目,本文将该数目称为复制数目。
该结构被称为min-OR树。图6和图7示意了具有在节点内示出的复制数目(仅与内节点相关)的min-OR树。这种结构可以用于表达与传统地已使用RAID级别而表达的内容类似的多个数据存储和数据冗余策略。例如,图6中的结构与4路RAID0配置的相似之处在于:当向任一个子节点的写入操作成功时,根节点处的写入操作成功。本发明可想到子节点中的数据放置的三种性质上不同的语义,以完成复制数目需求:
随机放置:将数据实质上随机放置在子节点上。
有序放置:将数据放置在节点的有序序列上(例如,“最左侧”),这是提供溢出保护的方式。
算法放置:根据利用外部信息的算法来放置数据,以优化特定操作或参数,例如,包装(尝试填充节点)、损耗均衡(尝试将所有节点保持在相同填充级别处)、负载感知(尝试将所有节点保持为同等忙碌)、高可用性(尝试最大化可用性/成本函数)、能量(尝试最小化能量使用率)、亲近性(尝试使用与某内容“接近”的节点)、服务器(尝试使用附着至优选服务器的节点)和拓扑(尝试使用彼此靠近的节点)。
另一示例是图7所示的示例,图7示出了涉及两个级别的配置,其中,顶级别充当3路RAID1镜(在实际情形中,这可能对应于“将所有内容写入至我的快本地存储器、我的慢站点档案和远程公司云档案”),并且子节点之一自身是使用如“写入至这5个节点中的任意3个”中的复制而创建的冗余配置,“写入至这5个节点中的任意3个”在2个节点失败的情况下创建了生存性(这满足被称为RAID6的标准)。
本发明可以支持该结构的任何数目的级别,包括没有级别(即,仅简单存储资源),并且该结构的每个节点可以独立地作为复杂数据存储***或存储资源。
由于冗余由复制提供,因此移除活动节点包括:确保通过在子节点之间适当地拷贝数据来维持父节点的复制策略。因此,存在具有对在何处存储数据的记录的分离地维持的元数据,以帮助实现min-OR存储树上的所有操作。如果复制数目为1,则无法在不通知的情况下非破坏性地进行移除子节点,而是可以在通知在移除或失败之前可以将对子来说唯一的数据拷贝下来至其他节点的情况下进行。通知将语义定义为使得数据必须至少复制次数地存在于不同子节点上,但是始终允许更高程度的复制。
以这种方式创建的存储结构与传统RAID实现方式的不同之处在于(尽管不是定义):不维持扇区对应性(在RAID1的情况下);不针对冗余使用奇偶校验(在RAID6的情况下);以及不针对条带化使用固定块(在RAID0的情况下),然而,该功能适于执行本发明。
该优选成池机制是有用的,这是由于其提供了强大且一致的复制模型,在功能上等效于多个传统RAID级别,允许容易地表达复杂存储策略,并允许简单地管理存储资源的较大池。
例如,可以利用盘来填充架,声明所有这些盘以用作根据本发明的层内的存储资源,并指定设置复制数目(在该示例中,设置为4)的期望冗余级别(“经历3个盘的同时失败后仍生存”),并且,数据存储接口将根据该策略来管理针对数据变换引擎存储和检索数据。
另一方面,平凡min-OR树是单个原始节点,例如盘或文件***。可以通过将min-OR树扩展为精确地仿真传统RAID实现方式(通过将最小奇偶校验复制参数添加至内节点)或其他内容分散方法(例如,通过添加复制类型参数,例如“reed-solomon分散”),扩展该成池概念。
在不脱离以下权利要求中限定的本发明的精神和范围的前提下,可以想到对本发明的各种修改。尽管本文已经使用各个步骤和计算机组件,但是应当对这些步骤和计算机组件给出本领域将公知的其普通定义,除非明确限制或本文以其他方式定义。
上述实施例意在作为本发明的示例,并且在不脱离由所附权利要求唯一限定的本发明的范围的前提下,本领域技术人员可以对上述实施例进行更改和修改。
Claims (78)
1.一种用于存储数据以供在计算机***上运行的应用检索的方法,包括:
a. 提供包括至少一个高速缓存层和基层的分层高速缓存***,其中在高速缓存层上,存在层级以便较高级别高速缓存层将来自高速缓存层的数据高速缓存在较低级别高速缓存层上;
b. 基于策略将数据存储在所述至少一个高速缓存层和所述基层中的至少一个中;以及
c. 通过用于组织数据的装置将所述数据的应用视图呈现给所述应用;其中,所述用于组织数据的装置包括至少一个高速缓存层中的每一个和所述基层的元数据信息;
其中,所述至少一个高速缓存层中的每一个和所述基层布置在不同存储资源上;以及此外,其中,所述用于组织数据的装置包括用于所述不同存储资源中的每一个的元数据信息,
所述方法还包括以下步骤:通过拦截***来拦截要执行的用于组织数据的装置的操作或者另外与所述用于组织数据的装置无关地处理的操作。
2.根据权利要求1所述的方法,还包括:提供至少一个溢出层,其中,所述溢出层布置在与所述至少一个高速缓存层中的每一个和所述基层不同的存储资源上;以及其中,所述用于组织数据的装置包括用于所述溢出层的元数据信息。
3.根据权利要求1所述的方法,其中,所述至少一个高速缓存层包括多个分层的高速缓存层。
4.根据权利要求3所述的方法,其中,所述多个分层的高速缓存层中的每一个是在固态驱动器上提供的,所述基层是在硬盘驱动器上提供的,并且溢出层是在云存储资源上提供的。
5.根据权利要求4所述的方法,其中,所述用于组织数据的装置存储在所述硬盘驱动器上。
6.根据权利要求4所述的方法,还包括:将所述数据存储在所述基层上;以及将所述数据高速缓存在所述多个分层的高速缓存层中的一个或多个上。
7.根据权利要求6所述的方法,其中,每个高速缓存层级别包括两个或更多个存储资源。
8.根据权利要求1所述的方法,其中,所述用于组织数据的装置对正在使用的特定存储设备不可知。
9.根据权利要求1所述的方法,还包括以下步骤:根据所述策略将输入/输出操作不相关联,使得所述操作的至少一部分被所述拦截***拦截并根据所述策略而处理。
10.根据权利要求1所述的方法,其中,所述策略由策略模块提供;其中,所述策略模块与所述拦截***构成一个整体。
11.根据权利要求10所述的方法,其中,所述策略模块与所述用于组织数据的装置构成一个整体。
12.根据权利要求1所述的方法,其中,所述拦截步骤还包括以下各项之一:(a)将被拦截的操作传递至在存储资源与所述拦截***之间提供的数据变换引擎;(b)将被拦截的操作的完成记入日志;以及(c)改变被拦截的操作并将其继续传递至所述用于组织数据的装置。
13.根据权利要求1所述的方法,还包括:在所述拦截***与所述存储资源之间提供数据变换引擎。
14.根据权利要求13所述的方法,还包括以下步骤:在所述用于组织数据的装置外执行策略;所述执行策略的步骤由所述数据变换引擎执行。
15.根据权利要求13所述的方法,其中,所述数据变换引擎还包括:读取高速缓存模块,用于执行读取操作,以找到其上存在数据的最高高速缓存层并检索所述数据。
16.根据权利要求13所述的方法,其中,所述数据变换引擎还包括:写入高速缓存模块,用于向不同高速缓存层级别执行写入操作。
17.根据权利要求13所述的方法,其中,所述数据变换引擎还包括:加密模块,用于在数据经过所述用于组织数据的装置之前对所述数据进行加密和解密。
18.根据权利要求13所述的方法,其中,所述数据变换引擎还包括:完整性模块,用于将所述数据的属性与元数据信息中存储的属性进行比较。
19.根据权利要求13所述的方法,其中,所述数据变换引擎还包括:重复删除模块,用于执行重复删除步骤。
20.根据权利要求16所述的方法,其中,所述数据变换引擎还包括:溢出模块,用于响应于失败的写入操作,将数据写入至溢出高速缓存层。
21.根据权利要求13所述的方法,还包括:提供数据存储接口,所述数据存储接口用于在所述存储资源与所述数据变换引擎之间提供操作接口。
22.根据权利要求21所述的方法,还包括以下步骤:抽象数据存储资源信息,使得每个数据存储资源对所述数据变换引擎来说统一地出现。
23.根据权利要求21所述的方法,还包括以下步骤:对至少两个或更多个数据存储资源成池。
24.根据权利要求3所述的方法,其中,所述多个高速缓存层包括操作***文件缓冲高速缓存。
25.根据权利要求1所述的方法,其中,所述用于组织数据的装置包括文件***。
26.根据权利要求1所述的方法,其中,所述用于组织数据的装置选自包括对象数据库、键值存储器、网络协议和共享数据***的组。
27.一种具有存储于其上的指令的计算机可读介质,当所述指令被执行时使得计算设备执行根据权利要求1-26中任一项所述的方法。
28.一种用于存储数据以供在计算机***上运行的应用检索的设备,包括:
用于a. 提供包括至少一个高速缓存层和基层的分层高速缓存***的装置,其中在高速缓存层上,存在层级以便较高级别高速缓存层将来自高速缓存层的数据高速缓存在较低级别高速缓存层上;
用于b. 基于策略将数据存储在所述至少一个高速缓存层和所述基层中的至少一个中的装置;以及
用于c. 通过用于组织数据的装置将所述数据的应用视图呈现给所述应用的装置;其中,所述用于组织数据的装置包括至少一个高速缓存层中的每一个和所述基层的元数据信息;
其中,所述至少一个高速缓存层中的每一个和所述基层布置在不同存储资源上;以及此外,其中,所述用于组织数据的装置包括用于所述不同存储资源中的每一个的元数据信息,
所述设备还包括用于通过拦截***来拦截要执行的用于组织数据的装置的操作或者另外与所述用于组织数据的装置无关地处理的操作的装置。
29.根据权利要求28所述的设备,还包括:用于提供至少一个溢出层的装置,其中,所述溢出层布置在与所述至少一个高速缓存层中的每一个和所述基层不同的存储资源上;以及其中,所述用于组织数据的装置包括用于所述溢出层的元数据信息。
30.根据权利要求28所述的设备,其中,所述至少一个高速缓存层包括多个分层的高速缓存层。
31.根据权利要求30所述的设备,其中,所述多个分层的高速缓存层中的每一个是在固态驱动器上提供的,所述基层是在硬盘驱动器上提供的,并且溢出层是在云存储资源上提供的。
32.根据权利要求31所述的设备,其中,所述用于组织数据的装置存储在所述硬盘驱动器上。
33.根据权利要求31所述的设备,还包括:用于将所述数据存储在所述基层上以及将所述数据高速缓存在所述多个分层的高速缓存层中的一个或多个上的装置。
34.根据权利要求33所述的设备,其中,每个高速缓存层级别包括两个或更多个存储资源。
35.根据权利要求28所述的设备,其中,所述用于组织数据的装置对正在使用的特定存储设备不可知。
36.根据权利要求28所述的设备,还包括用于根据所述策略将输入/输出操作不相关联,使得所述操作的至少一部分被所述拦截***拦截并根据所述策略而处理的装置。
37.根据权利要求28所述的设备,其中,所述策略由策略模块提供;其中,所述策略模块与所述拦截***构成一个整体。
38.根据权利要求37所述的设备,其中,所述策略模块与所述用于组织数据的装置构成一个整体。
39.根据权利要求28所述的设备,其中,所述用于拦截的装置还包括用于以下各项之一的装置:(a)将被拦截的操作传递至在存储资源与所述拦截***之间提供的数据变换引擎;(b)将被拦截的操作的完成记入日志;以及(c)改变被拦截的操作并将其继续传递至所述用于组织数据的装置。
40.根据权利要求28所述的设备,还包括:用于在所述拦截***与所述存储资源之间提供数据变换引擎的装置。
41.根据权利要求40所述的设备,还包括用于在所述用于组织数据的装置外执行策略的装置;所述用于执行策略的装置由所述数据变换引擎执行。
42.根据权利要求40所述的设备,其中,所述数据变换引擎还包括:读取高速缓存模块,用于执行读取操作,以找到其上存在数据的最高高速缓存层并检索所述数据。
43.根据权利要求40所述的设备,其中,所述数据变换引擎还包括:写入高速缓存模块,用于向不同高速缓存层级别执行写入操作。
44.根据权利要求40所述的设备,其中,所述数据变换引擎还包括:加密模块,用于在数据经过所述用于组织数据的装置之前对所述数据进行加密和解密。
45.根据权利要求40所述的设备,其中,所述数据变换引擎还包括:完整性模块,用于将所述数据的属性与元数据信息中存储的属性进行比较。
46.根据权利要求40所述的设备,其中,所述数据变换引擎还包括:重复删除模块,用于执行重复删除步骤。
47.根据权利要求43所述的设备,其中,所述数据变换引擎还包括:溢出模块,用于响应于失败的写入操作,将数据写入至溢出高速缓存层。
48.根据权利要求40所述的设备,还包括:用于提供数据存储接口的装置,所述数据存储接口用于在所述存储资源与所述数据变换引擎之间提供操作接口。
49.根据权利要求48所述的设备,还包括用于抽象数据存储资源信息,使得每个数据存储资源对所述数据变换引擎来说统一地出现的装置。
50.根据权利要求48所述的设备,还包括用于对至少两个或更多个数据存储资源成池的装置。
51.根据权利要求30所述的设备,其中,所述多个高速缓存层包括操作***文件缓冲高速缓存。
52.根据权利要求28所述的设备,其中,所述用于组织数据的装置包括文件***。
53.根据权利要求28所述的设备,其中,所述用于组织数据的装置选自包括对象数据库、键值存储器、网络协议和共享数据***的组。
54.一种用于存储数据以供在计算机***上运行的应用检索的***,包括:
a. 分层高速缓存***,包括至少一个高速缓存层和基层,其中在高速缓存层上,存在层级以便较高级别高速缓存层将来自高速缓存层的数据高速缓存在较低级别高速缓存层上,以及其中,所述数据是基于策略而存储在所述至少一个高速缓存层和所述基层中的至少一个中的;
b. 用于组织数据的装置,用于将所述数据的应用视图呈现给所述应用;其中,所述用于组织数据的装置包括用于至少一个高速缓存层中的每一个和所述基层的元数据信息;
其中,所述至少一个高速缓存层中的每一个和所述基层布置在不同存储资源上;以及此外,其中,所述用于组织数据的装置包括用于所述不同存储资源中的每一个的元数据信息;
所述***还包括:拦截***,用于拦截要执行的用于组织数据的装置的操作或者另外与所述用于组织数据的装置无关地处理的操作。
55.根据权利要求54所述的***,还包括:至少一个溢出层,其中,所述溢出层布置在与所述至少一个高速缓存层中的每一个和所述基层不同的存储资源上;以及其中,所述用于组织数据的装置包括用于所述溢出层的元数据信息。
56.根据权利要求55所述的***,其中,所述至少一个高速缓存层包括多个分层的高速缓存层。
57.根据权利要求56所述的***,其中,所述多个分层的高速缓存层中的每一个是在固态驱动器上提供的,所述基层是在硬盘驱动器上提供的,并且所述溢出层是在云存储资源上提供的。
58.根据权利要求57所述的***,其中,所述用于组织数据的装置存储在所述硬盘驱动器上。
59.根据权利要求57所述的***,其中,所述数据存储在所述基层上以及高速缓存在所述多个分层的高速缓存层中的所述一个或多个高速缓存层上。
60.根据权利要求59所述的***,其中,每个高速缓存层级别包括两个或更多个存储资源。
61.根据权利要求54所述的***,其中,所述用于组织数据的装置对正在使用的特定存储设备不可知。
62.根据权利要求54所述的***,其中,所述拦截***适于根据所述策略将输入/输出操作不相关联,使得所述操作的至少一部分被所述拦截***拦截并根据所述策略而处理。
63.根据权利要求54所述的***,还包括用于提供所述策略的策略模块。
64.根据权利要求63所述的***,其中,所述策略模块与所述拦截***构成一个整体。
65.根据权利要求63所述的***,其中,所述策略模块与所述用于组织数据的装置构成一个整体。
66.根据权利要求62所述的***,其中,所述拦截***包括以下至少一项:(a)用于将被拦截的操作传递至在存储资源与所述拦截***之间提供的数据变换引擎的装置;(b)用于将被拦截的操作的完成记入日志的装置;以及(c)用于改变被拦截的操作并将其继续传递至所述用于组织数据的装置的装置。
67.根据权利要求62所述的***,还包括所述拦截***与所述存储资源之间的数据变换引擎。
68.根据权利要求67所述的***,其中,所述数据变换引擎还包括:读取高速缓存模块,用于执行读取操作,以找到其上存在数据的最高高速缓存层并检索所述数据。
69.根据权利要求67所述的***,其中,所述数据变换引擎还包括:写入高速缓存模块,用于向不同高速缓存层级别执行写入操作。
70.根据权利要求67所述的***,其中,所述数据变换引擎还包括:加密模块,用于在数据经过所述用于组织数据的装置之前对所述数据进行加密和解密。
71.根据权利要求67所述的***,其中,所述数据变换引擎还包括:完整性模块,用于将所述数据的属性与元数据信息中存储的属性进行比较。
72.根据权利要求67所述的***,其中,所述数据变换引擎还包括:重复删除模块,用于执行重复删除步骤。
73.根据权利要求70所述的***,其中,所述数据变换引擎还包括:溢出模块,用于响应于失败的写入操作,将数据写入至溢出高速缓存层。
74.根据权利要求67所述的***,还包括:数据存储接口,用于在所述存储资源与所述数据变换引擎之间提供操作接口。
75.根据权利要求67所述的***,其中,每个数据存储资源对所述数据变换引擎来说统一地出现。
76.根据权利要求54所述的***,其中,对至少两个或更多个数据存储资源成池。
77.根据权利要求56所述的***,其中,所述多个高速缓存层包括操作***文件缓冲高速缓存。
78.根据权利要求54所述的***,其中,所述用于组织数据的装置选自包括对象数据库、键值存储器、网络协议和共享数据***的组。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37701810P | 2010-08-25 | 2010-08-25 | |
US61/377,018 | 2010-08-25 | ||
US61/377018 | 2010-08-25 | ||
PCT/CA2011/050515 WO2012024801A1 (en) | 2010-08-25 | 2011-08-24 | Method and system for cache tiering |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103493024A CN103493024A (zh) | 2014-01-01 |
CN103493024B true CN103493024B (zh) | 2018-07-10 |
Family
ID=45722796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180051518.2A Active CN103493024B (zh) | 2010-08-25 | 2011-08-24 | 用于高速缓存分层的方法和*** |
Country Status (7)
Country | Link |
---|---|
US (1) | US9864685B2 (zh) |
EP (1) | EP2609510A4 (zh) |
JP (1) | JP5620581B2 (zh) |
KR (1) | KR101482518B1 (zh) |
CN (1) | CN103493024B (zh) |
AU (1) | AU2011293015B2 (zh) |
WO (1) | WO2012024801A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9542466B2 (en) * | 2012-05-10 | 2017-01-10 | Aetherstore Inc. | Systems and methods for distributed storage |
CN102833331B (zh) * | 2012-08-21 | 2015-06-10 | 北京邦诺存储科技有限公司 | 云存储***及其元数据写入方法、元数据读取方法 |
US9239784B1 (en) * | 2013-06-05 | 2016-01-19 | Amazon Technologies, Inc. | Systems and methods for memory management |
US10747475B2 (en) | 2013-08-26 | 2020-08-18 | Vmware, Inc. | Virtual disk blueprints for a virtualized storage area network, wherein virtual disk objects are created from local physical storage of host computers that are running multiple virtual machines |
US9811531B2 (en) | 2013-08-26 | 2017-11-07 | Vmware, Inc. | Scalable distributed storage architecture |
US9887924B2 (en) | 2013-08-26 | 2018-02-06 | Vmware, Inc. | Distributed policy-based provisioning and enforcement for quality of service |
US11016820B2 (en) | 2013-08-26 | 2021-05-25 | Vmware, Inc. | Load balancing of resources |
US10552931B2 (en) * | 2013-09-05 | 2020-02-04 | Optum360, Llc | Automated clinical indicator recognition with natural language processing |
WO2015035193A1 (en) | 2013-09-05 | 2015-03-12 | A-Life Medical, Llc | Automated clinical indicator recognition with natural language processing |
WO2016041998A1 (en) | 2014-09-15 | 2016-03-24 | Foundation For Research And Technology - Hellas (Forth) | Tiered heterogeneous fast layer shared storage substrate apparatuses, methods, and systems |
US9830091B2 (en) * | 2015-02-20 | 2017-11-28 | Netapp, Inc. | Policy-based data tiering using a cloud architecture |
JP2016170729A (ja) | 2015-03-13 | 2016-09-23 | 株式会社東芝 | メモリシステム |
CN106484691B (zh) | 2015-08-24 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 移动终端的数据存储方法和装置 |
EP3270371B1 (en) * | 2016-07-12 | 2022-09-07 | NXP USA, Inc. | Method and apparatus for managing graphics layers within a graphics display component |
US10536522B2 (en) * | 2018-04-30 | 2020-01-14 | EMC IP Holding Company LLC | Data storage system with LUN archiving to cloud using volume-to-object translation |
US20230224153A1 (en) * | 2022-01-13 | 2023-07-13 | Dell Products L.P. | Dynamic cryptographic key management for cached data |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6032224A (en) * | 1996-12-03 | 2000-02-29 | Emc Corporation | Hierarchical performance system for managing a plurality of storage units with different access speeds |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101027668B (zh) * | 2004-07-21 | 2012-01-04 | 海滩无极限有限公司 | 基于块映射表缓冲存储和虚拟文件***的可堆叠文件***模块的分布式存储结构 |
US8447837B2 (en) * | 2005-12-30 | 2013-05-21 | Akamai Technologies, Inc. | Site acceleration with content prefetching enabled through customer-specific configurations |
US7631155B1 (en) * | 2007-06-30 | 2009-12-08 | Emc Corporation | Thin provisioning of a file system and an iSCSI LUN through a common mechanism |
WO2010037117A1 (en) * | 2008-09-29 | 2010-04-01 | Nirvanix, Inc. | Client application program interface for network-attached storage system |
US8397016B2 (en) * | 2008-12-31 | 2013-03-12 | Violin Memory, Inc. | Efficient use of hybrid media in cache architectures |
US8893050B2 (en) * | 2009-01-12 | 2014-11-18 | International Business Machines Corporation | Assembly and output of user-defined groupings |
KR101023883B1 (ko) * | 2009-02-13 | 2011-03-22 | (주)인디링스 | 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템 |
US9355109B2 (en) * | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
US20130346672A1 (en) * | 2012-06-22 | 2013-12-26 | Microsoft Corporation | Multi-Tiered Cache with Storage Medium Awareness |
-
2011
- 2011-08-24 CN CN201180051518.2A patent/CN103493024B/zh active Active
- 2011-08-24 US US14/348,588 patent/US9864685B2/en not_active Expired - Fee Related
- 2011-08-24 EP EP11819255.8A patent/EP2609510A4/en not_active Ceased
- 2011-08-24 WO PCT/CA2011/050515 patent/WO2012024801A1/en active Application Filing
- 2011-08-24 KR KR20137007533A patent/KR101482518B1/ko not_active IP Right Cessation
- 2011-08-24 JP JP2013525099A patent/JP5620581B2/ja not_active Expired - Fee Related
- 2011-08-24 AU AU2011293015A patent/AU2011293015B2/en not_active Ceased
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6032224A (en) * | 1996-12-03 | 2000-02-29 | Emc Corporation | Hierarchical performance system for managing a plurality of storage units with different access speeds |
Also Published As
Publication number | Publication date |
---|---|
AU2011293015B2 (en) | 2015-05-21 |
CN103493024A (zh) | 2014-01-01 |
KR20130105842A (ko) | 2013-09-26 |
EP2609510A4 (en) | 2015-01-21 |
KR101482518B1 (ko) | 2015-01-14 |
AU2011293015A1 (en) | 2013-03-21 |
EP2609510A1 (en) | 2013-07-03 |
US9864685B2 (en) | 2018-01-09 |
JP2013536515A (ja) | 2013-09-19 |
US20140304473A1 (en) | 2014-10-09 |
WO2012024801A1 (en) | 2012-03-01 |
JP5620581B2 (ja) | 2014-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103493024B (zh) | 用于高速缓存分层的方法和*** | |
CN103473251B (zh) | 在使用处理器件的计算环境中提供使用选择性元组版本化的文件***快照的方法和*** | |
US9984006B2 (en) | Data storage systems and methods | |
US12001688B2 (en) | Utilizing data views to optimize secure data access in a storage system | |
CN101743546B (zh) | 用于提供快照的文件***的分层存储管理 | |
US11995336B2 (en) | Bucket views | |
US8762583B1 (en) | Application aware intelligent storage system | |
CN103635900B (zh) | 基于时间的数据分割 | |
CN102460439B (zh) | 通过条带式文件***中的容量平衡进行数据分布 | |
US7631151B2 (en) | Systems and methods for classifying and transferring information in a storage network | |
US10467527B1 (en) | Method and apparatus for artificial intelligence acceleration | |
TW202111585A (zh) | 日誌結構儲存系統 | |
US9189493B2 (en) | Object file system | |
CN107291889A (zh) | 一种数据存储方法及*** | |
TW202111520A (zh) | 日誌結構儲存系統 | |
CN106663047A (zh) | 用于优化的签名比较和数据复制的***和方法 | |
CN106662981A (zh) | 存储设备、程序和信息处理方法 | |
US20070061540A1 (en) | Data storage system using segmentable virtual volumes | |
CN105190533A (zh) | 原位快照 | |
CN105210062A (zh) | 用于分布式数据库***的***范围检查点避免 | |
TW200416589A (en) | Hierarchical storage management using dynamic tables of contents and sets of tables of contents | |
US20210055885A1 (en) | Enhanced data access using composite data views | |
CN118339535A (zh) | 用于存储***的上下文驱动用户界面 | |
CN103098034A (zh) | 用于条件和原子存储操作的装置、***和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
ASS | Succession or assignment of patent right |
Owner name: INTEL CORP . Free format text: FORMER OWNER: NEVEX VIRTUAL TECHNOLOGIES INC. Effective date: 20131223 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20131223 Address after: American California Applicant after: Intel Corporation Address before: Ontario, Canada Applicant before: Nevex Virtual Technologies Inc. |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |