混合对象存储设备的高速缓存架构和算法的制作方法

文档序号:13518272阅读:131来源:国知局
本发明主要涉及数据存储的方法和系统,更特别地涉及数据系统管理的方法和系统。
背景技术
::随着中央处理器和非易失性存储器技术的进步,将操作系统软件和存储系统软件的功能合并为小存储控制器板以优化存储系统性能并降低总体拥有成本(totalownershipcost,toc)是可行的。在下一代存储系统中,用于管理存储设备的存储服务器和独立磁盘冗余阵列(redundantarrayofindependentdisk,raid)控制器已经被去除。作为替代,单个船上系统(system-on-ship,soc)活动驱动控制器用于管理存储节点,将存储服务器功能转移至存储设备。应用程序可以直接连接存储设备,从而大大降低包括硬件成本和维护成本的整个系统成本。这些混合技术解决方法将不同的存储介质结合到单个存储设备中以同时改进存储性能(以每一美元的每秒输入/输出操作(input/outputoperationspersecond(iops)perdollar(iops/$))衡量)并降低存储成本(以每十亿字节美元($/gb)衡量)。由于不同的存储介质具有不同的性能特性和不同的成本,混合存储设备一般由少量高性能高成本的存储介质和大量低性能低成本的存储介质组成。例如,混合存储设备可以是在单个磁盘外壳中的、包含非易失性随机存取存储器(non-volatilerandomaccessmemory,nvram)半导体芯片和磁盘盘片的混合驱动器。混合存储设备还可以是由单个/多个固态设备(ssd)和单个/多个硬盘驱动器(hdd)组成的存储节点。用在这一节点中的ssd和hdd的数量可以基于所期望的性能或成本来确定。为了充分利用这种混合存储设备中的不同存储介质的优点,要求有效的数据管理和高速缓存算法并且需要考虑特殊的需求。第一,由于这种系统中的该混合存储设备直接附接到网络,并且经常被分布式文件或对象存储系统所管理,所以对于混合数据管理和高速缓存算法来说,在文件或对象级别设计和实施更有效。第二,由于混合存储设备通常具有有限的硬件资源,至关重要是,为这种系统设计的高速缓存架构和算法应当高效且资源需求更少。因此,所需要的是用于有效的混合数据管理和高速缓存算法的方法和系统,该方法和系统至少部分克服了目前方法的不足,并提供了在未来存储系统中有效使用的最少限度资源使用解决方案。而且,结合所附的附图以及该公开文本的背景,其他可取的特征和特性将从随后详细的描述和附随的权利要求书中显著体现。技术实现要素:根据本发明的至少一个实施方式,提供一种用于在数据存储系统的混合存储节点中进行数据存储的方法。所述混合存储节点包括具有不同性能特性的第一存储设备和第二存储设备,其中所述第一设备包括用于高速缓存存储的至少一个高性能非易失性存储器。所述混合存储节点还包括用于管理所述混合存储节点中的数据存储的处理资源。所述方法包括接收从所述混合存储节点读取所存储的信息的读取请求,响应于所述读取请求,访问所述第一存储设备的高速缓存存储和所述第二存储设备的存储,以定位所存储的信息。根据本发明的另一个实施方式,提供一种包括一个或多个混合存储节点的数据存储系统。每个混合存储节点包括第一存储设备和第二存储设备以及处理资源。所述第一存储设备具有第一性能特性,所述第二存储设备具有不同于所述第一性能特性的第二性能特性。所述处理资源管理所述混合存储节点中的数据存储。所述第一性能特性具有比第二性能特性更高的性能,并且所述第一存储设备包括至少一个高性能的用于高速缓存存储的非易失性存储器。所述高速缓存存储用作为第二存储设备的高速缓存。附图说明在附图中,相同的附图标记指的是贯穿各个视图的一致的或功能上相似的元件,并且与以下详细的描述一起合并形成本说明书的部分,附图用于根据本实施方式阐明各种实施方式并用于解释各种原理和优点。图1描绘了常规存储系统以及通常所提出的下一代存储系统的并行式框图。图2示出了根据本实施方式的基于分布式文件/对象的混合存储系统的框图。图3示出了根据本实施方式的用于图2的混合存储系统中的单个存储设备的对象存储架构的分层框图。图4示出了根据本实施方式的用于图2的混合存储系统中的单个活动混合存储节点的高速缓存架构的分层框图。图5示出了根据本实施方式的图2的混合存储系统中在多个存储设备之间的共享高速缓存架构的分层框图。图6示出了根据本实施方式的用于将对象写入图2的混合存储系统中带高速缓存的对象存储的进程流的流程图。图7示出了根据本实施方式的用于从图2的混合存储系统中带高速缓存的对象存储读取对象的进程流的流程图。以及图8描绘了根据本实施方式的在图2的混合存储系统中的硬盘驱动器(hdd)和高速缓存之间加载和降级(destaging)对象的算法的图。本领域技术人员可以理解的是,图中的元件是为了简单和清楚而进行图示的,这些元件并不必然按比例描绘。具体实施方式以下详细的描述仅仅是本质上的示例,并不旨在限制本发明或本发明的应用和用途。而且,不旨在受本发明的之前背景中或以下详细描述中存在的任何理论的束缚。本实施方式的目的在于呈现用于向外扩展的存储集群中的混合存储设备的高速缓存架构和算法。根据本实施方式的混合存储设备可以是带有非易失性存储器(nvm)芯片和磁盘的单个混合驱动器,或者可以是带有一个固态设备(ssd)和一或多个硬盘驱动器(hdd)的一组驱动器。在任选其一的形式中,根据本实施方式的混合存储设备将包含单个片上系统(soc)板以管理混合存储介质。根据本实施方式的soc板通常配备有低功耗的处理器和一定数量的动态随机存取存储器(dram)。根据本实施方式,soc板还可以提供允许混合存储设备直接连接于以太网的以太网接口。存储系统集群可以是基于文件或基于对象的存储系统,该存储系统中的数据存取单元将是文件或对象。在根据本实施方式的混合存储设备的内部,较快介质(如nvm或ssd)用作为较慢介质(磁盘)的高速缓存。与按磁盘块管理数据的常规的高速缓存不同,根据本实施方式的高速缓存架构将建立在文件或对象层的顶部,使得高速缓存能够更好地与上部的分布式文件或对象存储系统集成。而且,根据本实施方式的高速缓存架构和算法通过重新使用索引结构并访问底层文件或对象存储的应用程序编程接口(api)来设计和实施。以这种方式,根据本实施方式的高速缓存架构需要极少的附加资源利用(如用于元数据的仅dram)以利用有限的资源适应混合存储设备的关键约束。根据本实施方式的高速缓存被设计为用于读和写两种操作的通用高速缓存,利用提供读和写操作的进程流以及高速缓存加载和降级策略和算法的soc处理器。常规上,混合存储设备内部的较快介质用于存储文件/对象存储的日志。根据本实施方式,高速缓存架构和算法具有与常规架构和算法的若干不同点。首先,日志主要被设计为用于支持交易,但这可能没有必要,因为本地文件系统(如最初由美国加利福尼亚的oracle公司设计的b-tree文件系统btrfs)可能已经具有类似的功能。使用根据本实施方式的日志,所述高速缓存可以提高所有文件系统上的性能。第二,在常规日志设计中,所有对象写入被执行两次:先将对象数据写入日志,然后将对象数据写入磁盘。在根据本实施方式的高速缓存架构和操作中,只有被选择的对象(小对象和/或热对象)将被写入高速缓存;所有其它对象被写入磁盘而不写入日志。这有利地减少了处理时间和资源,因为如果所有的写入(尤其是大量顺序写入)进入到ssd,则ssd资源的有限空间将快速耗尽,触发处理昂贵的强制清空/驱逐(flush/eviction)操作。第三,已经提交至日志的对象以固定的时间间隔被冲洗到磁盘。根据本实施方式,根据各种高速缓存策略动态地将缓存条目驱逐到磁盘以提高总体的系统性能。以这种方式,只要对象足够热,它们就保留在高速缓存中。第四,常规上日志条目是后续读取操作所看不见的,因为在通常的系统中当对象在被写入磁盘时只能被读取。因此,日志可能对读取性能有负面影响。然而在根据本实施方式的系统中,高速缓存中的条目可以被读取请求访问,从而提高读取性能。以及最后,当hdd中的对象变热时,它们被加载到本实施方式的高速缓存内以提高性能。常规上,对象不能从hdd被加载到日志内。参考图1,框图100显示了从常规存储系统110向下一代存储系统150的演变。常规存储系统110包括带有用于分布式文件存储的客户端服务器114的应用程序服务器112。应用程序服务器112经由网络118与存储服务器116耦接。存储服务器116利用独立磁盘冗余阵列(raid)控制器120来管理存储设备122。元数据服务器124也耦接于网络118,用于管理与存储在存储设备112中的信息相关联的元数据。在下一代存储系统150中,用于管理存储设备122的存储服务器116和raid控制器已经被去除。作为替代,单个片上系统(soc)活动驱动控制器152用于管理存储节点154,该存储节点154经由网络118与应用程序服务器156中的客户端库通信。因此,存储服务器116的功能已经被转移至存储设备,并且应用程序156可以直接与存储设备154连接,从而大大降低包括硬件成本和维护成本的存储系统成本。下一代存储系统150的存储设备154通常是混合存储设备,该混合存储设备包括单个存储设备中的不同存储介质以同时提高存储性能并降低存储成本。如
背景技术
:所讨论的,为了充分利用这种混合存储设备中的不同存储介质,要求有效的数据管理和高速缓存算法,并且需要考虑特殊的需求。第一,由于这种系统中的该混合存储设备直接附接到网络并且经常被分布式文件或对象存储系统所管理,对于混合数据管理和高速缓存算法来说,在文件或对象级别设计和实施更有效。第二,由于混合存储设备通常具有有限的硬件资源,至关重要是,为这种系统设计的高速缓存架构和算法应当是高效的且资源需求更少。图2描绘了根据本实施方式的向外扩展的对象存储集群的架构202的框图200,其解决了对下一代存储系统提出的挑战。该系统的存储节点是活动混合机架(bay)204。每个活动混合机架204包括一个固态设备(ssd)206和多硬盘驱动器(hdd)208作为存储。每个活动混合机架204还包括被称为活动控制板(activecontrollerboard,acb)210的单个soc板,该acb210包括处理资源以管理能够被配置为单对象存储设备或被配置为多对象存储设备的活动混合机架204,每个hdd属于单独的对象存储设备。对象存储集群202还包括活动管理节点212,该活动管理节点212维护对象存储集群202的元数据并且包括在活动管理节点212中运行的被称作网关213的一套模块和进程。经由高速以太网网络118的对象存储集群202为应用程序214提供多个接口。网关213为应用程序214提供存储接口,如s3接口。块接口216允许应用程序214像块设备那样使用所述集群并且通常使用对象存储集群202为虚拟机218提供存储空间。文件接口220允许可移植操作系统接口(portableoperatingsysteminterface,posix)应用程序222像posix文件系统那样使用对象存储集群202。对象接口224可与s3或转换(swift)应用程序226兼容,允许s3或swift应用程序使用对象存储集群202。键-值(key-value)接口228可与动力(kinetic)驱动应用程序230兼容,允许kinetic驱动应用程序使用对象存储集群202。参考图3,分层框图300示出了根据本实施方式的混合存储系统202中的单个存储节点(如硬盘驱动器208)的对象存储架构。对象存储是基于本地文件系统302,并且将每个对象存储为单个文件。对象存储实施索引结构304用于索引和管理对象。例如,索引结构304可以使用哈希(hash)算法,以将对象名称映射到本地文件系统302中的对象文件路径名称306和文件名称。对象存储包含多个集合(collection),并且每个集合与单独的文件夹相对应,该文件夹在本地文件系统302中包含一组对象。对象存储还提供一套类似posix的应用程序编程接口(api)308,允许像文件那样从本地文件系统302存取所述对象。图4示出了根据本实施方式的混合存储系统202中的活动混合存储节点204的高速缓存架构的分层框图400。高速缓存架构是基于框图300所示的对象存储架构,并向原对象存储增加了单独的高速缓存集合402。高速缓存集合402使用类似于多索引结构304和文件系统406的索引结构404和文件系统406。高速缓存集合402位于诸如nvm/ssd206的较快介质上,而其它集合306位于如hdd208的较慢介质上。实施高速缓存管理模块408来管理nvm/ssd206上的高速缓存集合402和hdd上的对象集合306之间的对象。对象api308与框图300中所示的单个设备对象存储相同,允许对象存储应用程序在高速缓存架构的顶部运行而不需要修改。在对象api层308中为应用程序实施诸如强力降级的额外的高速缓存api,以直接在nvm/ssd206上的高速缓存中操纵数据。图5示出了根据本实施方式的在混合存储系统202中的多个存储设备208之中的共享高速缓存架构的分层框图500。每个高速缓存集合402与nvm/ssd206上的本地文件系统406中的单独的文件夹相对应。本地文件系统406可以包含多个文件夹,并且每个文件夹对应不同的高速缓存集合。虽然这些高速缓存集合共享同样的文件系统空间,但它们每个分别属于不同hdd208上的不同对象存储文件系统302。图6示出了600根据本实施方式的用于将对象写入混合存储系统202中带高速缓存的对象存储的进程流的流程图。602一旦接收到对象写入请求,604高速缓存管理模块408首先检测该对象是否已经在高速缓存集合402中,如果是,则606执行对该高速缓存中该对象的更新。604如果该对象不在高速缓存中,则606高速缓存管理模块408进一步检测该对象是否存在于hdd208中。606如果该对象存储于hdd208中,则608直接在hdd208中更新该对象。否则,该对象为新的对象,并根据对象大小、名称、类型或其他对象属性610将其606写入高速缓存或608写入hdd208。参考图7,流程图示出了700根据本实施方式的用于从混合存储系统202中带高速缓存的对象存储中读取对象的进程流。702当对象读取请求被接收,则704高速缓存管理模块408首先检测该对象是否在高速缓存集合402中。如果是,则706从该高速缓存中读取该对象。如果检测到708该对象在hdd208中,则710从hdd208中读取该对象。如果704,708在高速缓存集合402中或在hdd208中没有检测到该对象,则712由高速缓存管理模块408向对象api层返回错误,提示该对象未存于高速缓存管理模块408可访问的文件系统302、406中。图8描绘了800根据本实施方式在混合存储系统202中的hdd208和nvm206高速缓存之间加载和降级对象的算法的示意图。高速缓存管理模块408实现两个元数据结构:fifo队列802和lru列表804。fifo队列802用作为存储对象id的短暂历史缓冲,该对象id已经在预定的最近的时间段内从hdd208被访问过一次,该对象id被存储在fifo队列802的头部805。如果fifo队列802中的对象被第二次访问,则该对象将从hdd208中被加载到nvm206的高速缓存。如果fifo队列802中的对象不再被访问,则该对象将逐渐被移动到fifo队列802的尾部806,并最终随着新对象进入队列中而最终被从fifo队列802中驱逐。事实上,所述fifo队列802充当过滤器,防止在很长的持续时间期间只被访问了一次的对象进入高速缓存,因此有利地避免了高速缓存污染并为真正的热对象保留了高速缓存空间。另一方面,lru列表804通常远大于fifo队列802,并且lru列表804存储当前在高速缓存中的对象id。对象无论何时进入高速缓存,其对象id都被添加到lru列表804的头部808。如果lru列表804中的对象被再次访问,则将该对象移动回到lru列表804的头部808。以这种方式,被频繁访问的热对象保持在lru列表804的头部808处,并且较冷的对象移到lru列表804的尾部810。当nvm206中的高速缓存中的对象从hdd208被拷贝之后,在该nvm206中的高速缓存中的对象被拷贝到nvm206中的高速缓存中之后,该nvm206中的高速缓存中的对象被更新时,该对象为称为“脏对象”,因为该高速缓存具有存储在nvm206中的、与hdd208中存储的对象相比更新的版本。另一方面,“干净对象”是nvm206中的高速缓存中的自从被从hdd208拷贝到高速缓存中以来还未更新的对象。因此,在高速缓存降级期间,如果来自lru列表804的尾部810的对象是脏对象,则将其从高速缓存中驱逐并写入hdd208,因为与脏对象的hdd存储版本相比脏对象的高速缓存版本是更新的对象版本。然而,当干净对象的hdd存储版本与该干净对象的高速缓存版本相同时,该干净对象将从高速缓存中被驱逐而不被写入hdd208。根据本实施方式的一个方面,可以用内存lru列表804来实施高速缓存。然而,根据本实施方式的另一方面,高速缓存还可以不用内存lru列表804来实施。这是因为,根据本实施方式的高速缓存在对象/文件级别,并且所存储对象的访问/修改时间已经被底层文件系统所记录。通过利用文件系统信息并为对象/文件按访问/修改时间排序,高速缓存可以实现与内存lru列表804相似的效果。在实际的实施中,可以根据本实施方式实施内存lru列表804但不在持久存储中备份该lru列表804,因为假使系统崩溃,可以从文件系统信息302、406恢复内存lru列表804。根据本实施方式的另一方面,可以根据当前的高速缓存空间利用和工作量状态来安排高速缓存降级操作。可以设定用于高速缓存空间利用的两个阈值,下阈值和上阈值。如果当前高速缓存空间利用在下阈值下方,则不需要安排高速缓存降级。如果当前高速缓存空间利用在下阈值上方,但低于上部水印,则可在系统202空闲时安排高速缓存降级。如果当前高速缓存空间利用在上阈值上方,则应当以高优先级来安排高速缓存降级。因此,可以看出,本实施方式提供了用于有效混合数据管理和高速缓存算法的改进的用于数据存储的方法和数据存储系统,该方法和系统至少部分克服了常规方法的不足,并提供了在未来存储系统中有效使用的最少限度资源使用解决方案。虽然前面的对本发明的详细描述中已经呈现了示范性实施方式,仍应理解的是,存在大量的变化方式。应当进一步理解的是,示范性实施方式只是举例,并不旨在以任何方式限制本发明的范围、使用范围、操作或配置。更确切地,前述详细的描述将为本领域技术人员提供方便的路线图来实施本发明的示范性实施方式,可以理解的是,在不脱离所附权利要求所提出的本发明的范围的情况下,可以在示范性实施方式中所描述的步骤和方法的功能和布置中进行各种改变。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1