结构封装的弹性存储的制作方法

文档序号:16505219发布日期:2019-01-05 08:59阅读:153来源:国知局
结构封装的弹性存储的制作方法

技术领域一般涉及存储系统,尤其涉及弹性存储系统。



背景技术:

在企业和云计算的环境中使用的分布式存储基础架构中,与高性能和集群可扩展性并肩,可靠性和防止数据丢失/不一致是关键要求。

为了满足这些关键要求,弹性存储系统维护信息的冗余副本(复制品),特别是对于操作上关键的数据。当复制的信息从多于一个存储元件可用时,存储被认为是弹性的,到存储元件的路径具有独立的故障模式,并且对存储在存储元件上的对象的更新是一致且持久的。

现有的弹性存储系统通常要求专有的硬件-软件存储区域网络(san)和/或网络附属存储(nas)设备。在每个san/nas接入点处,数据被组织成各种结构,诸如表、命名空间、卷、文件系统等,并且最低级别的原始存储块被统称为同质池化资源。结构使用存储管理软件层(诸如多应用编程接口(api)、访问、协议、安全性规定等)来包含所要求的弹性特性以最小化对于软件的上层的存储管理的复杂性。

附图说明

所描述的实施例在附图的图中通过示例而非限制的方式来示出,其中相同的附图标记指示类似的元件,并且其中:

图1是示出了结构封装的弹性存储系统的一个实施例的框图;

图2是示出了根据如图1所示的结构封装的弹性存储器的一个实施例可以被使用的存储的注册和状态数据的示例的框图;

图3是更详细地示出了如图1所示的结构封装的弹性存储的一个实施例的框图;

图4是示出了根据如图1所示的结构封装的弹性存储的实施例的在交换机中执行的过程的实施例的流程图;

图5-7是示出了根据如图1所示的结构封装的弹性存储的实施例的示例消息流的消息流图;以及

图8示出了典型计算机系统的示例,其中可以全部或部分地实现如本文描述的结构封装的弹性存储的实施例。

所描述的实施例的其他特征从附图和从随后的详细描述将是显而易见的。

具体实施方式

在现有的存储系统中,添加新的存储容量而不将其置于存储管理软件层的权限内是特别麻烦的。因此,当基础设施老化、容量要求增大和/或升级变得必要时,这种san/nas提供的分布式存储的批量更换或大量翻新通常都是唯一可行的选择。

除了不灵活之外,使用存储管理软件层提供的弹性存储的另一个缺点是在确定存储可靠性中缺乏透明度。通常,存储装置的可靠性在硬盘驱动器(hdd)之间和固态驱动器(ssd)之间变化都很大。例如,研究表明两种类型的存储驱动中的磁盘错误率随着时间并且关于不同的写入压力级别而变化。因此,可以理解的是,从一个应用到另一个、以及从对象的一个子集到另一个并且考虑到其他因素(诸如,运行时度量),需要被应用以便实现期望的可用性级别的复制程度可能随时间而极大变化,这取决于所使用的存储装置的类型(例如,ssd,硬盘)。

另外,存储管理软件通常在决定将给定对象存储到何处之前监控集群中所有存储服务器的可靠性级别。虽然那种方法对于静态系统是行得通的,但对于较大或动态的横向扩展系统来说是不可行的。特别是动态系统是一种对于不断增长的集群存储容量的非常流程行且廉价的解决方法并导致存储服务器的数量和类型的频繁变化,这使得很难(即使不是不可能)事先决定在具体可靠性级别将给定对象存储到何处。

为了解决现有的软件存储管理系统中存在的灵活性和透明度的缺乏,所描述的实施例提供了硬件辅助存储管理系统,本文称为结构封装的弹性存储。

在一个实施例中,交换机抽象服务器的存储特性。存储特性包括静态特性和/或随时间不断更新的动态特性。

在一个实施例中,静态特性通常是那些固定的特性,诸如存储技术的类型(例如hdd,ssd)或其他可量化的客观数据,诸如磁盘的数量和存储技术的技术规范,包括驱动制造商对平均故障间隔时间(mtbf)、比特误差率的测量等。

在一个实施例中,服务器的存储特性可以包括预定义的可靠性因子,其起给定存储服务器的可靠性的指示符作用,包括指示在具体操作环境中给定存储服务器相对于另一个存储服务器的可靠性的可靠性因子。

在一个实施例中,交换机更新动态存储特性,即可以随时间改变的特性。例如,交换机更新指示服务器的当前可用性和负载的动态特性,或者可能影响存储服务器可靠性的任何其他动态信息。在一些实施例中,上述可靠性因子可以在管理上或程序上被更新来反映当前可靠性,其可能由于硬件的老化、硬件的配置或操作系统的当前状态等而与过去的可靠性不同。

在一个实施例中,交换机通过交换机的主机结构接口(hfi)向客户端计算节点公开以上提到的存储特性的抽象。

在典型实施例中,交换机将参与结构封装的弹性存储的每个存储节点的存储特性抽象为弹性级别的层级中的弹性级别。客户端节点可以经由hfi访问弹性级别的层级。弹性级别的层级通常使用值的范围来表示,其中每个值对应于层级中的单个弹性级别。每个弹性级别被用于表示基于存储节点的当前存储特性存储节点能够存储/复制对象的可靠性的程度。

在一个实施例中,用于弹性级别的层级的值的范围可以被灵活地配置为值的任何任意范围、包括数字或字母数字值,只要值的配置的范围足够粒度以表示交换机可以访问的存储节点的可靠性的全部范围和/或以满足使用结构封装的弹性存储的计算环境的弹性存储要求。

例如,在一个实施例中,代替依赖于实现专有软件存储管理系统的软件栈,计算节点的应用或代表应用的应用接口可以通过带内或带外通信经由hfi向交换机指定哪些数据对象(从小的对象到数千兆字节二进制大的对象)需要在具体弹性级别的弹性存储,而不考虑如何实现弹性存储,包括不考虑对象的存储在何处或被复制的次数。指定的弹性级别的值(诸如从1到5的值的范围中的级别3,或从1到10的值的范围中的级别7等等)反映在结构封装的弹性存储的实施例中被促进的弹性粒度的任意和灵活性质。

在一个实施例中,响应于应用接口指定所请求的弹性存储的具体弹性级别,当使用结构封装的弹性存储来存储/复制数据对象时,存储云/数据中心基础结构动态地提供所要求的弹性级别,这将在下面的描述中进一步详细解释。通过这种方式,交换机结构使存储云/数据中心基础结构能够帮助满足对弹性存储的需求,同时保持灵活性并控制如何满足对于弹性存储的需求。

例如,存储服务器可以实现具体的弹性类型,因为已有许多选项可用(诸如英特尔®快速存储技术企业(英特尔®rste))来实现各种转换映射以跟踪块的各种副本所在的位置,并修复信息并在条件变化时重新映射。此外,使用这样的内部转换/映射,存储服务器可以实现各种固件或基于嵌入式软件的方法,来提供所请求的弹性级别。

在一个实施例中,结构封装的弹性存储封装上述的和其他硬件和基于存储器的弹性协议,并且经由hfi透明地促进应用/中间件的所请求的弹性级别。通过将所请求的弹性级别的实现与软件栈分离,结构封装的弹性存储有利地允许存储服务器不仅在单个装置内而且在不同时间跨不同设备实现后台块重新映射,来充分获益于独立装置的非相关可靠性特性。由于同样的原因,结构封装的弹性存储在恶意应用方面有利地防止持续尝试探测和攻击存储云/数据中心基础结构中的漏洞点。

在以下描述中,示例可以包括如下主题,诸如方法、过程、用于执行方法或过程的动作的部件、设备、交换机和用于结构封装的弹性存储的系统、以及至少一个包括指令的机器可读有形存储介质,指令当由机器或处理器执行时使机器或处理器执行根据本文描述的实施例和示例的方法或过程的动作。

阐述了众多特定细节来提供用于提供结构封装的弹性存储的方法、介质和系统的实施例的详尽解释。然而,对于本领域技术人员显而易见的是,可以在没有这些特定细节中的一个或多个的情况下实现实施例。在其他实例中,没有详细示出众所周知的组件、结构和技术,以免模糊对本说明书的理解。

说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的具体特征、结构或特性可以包括在至少一个实施例中。在说明书中各处出现的短语“在一个实施例中”不一定都指同一个实施例。

在以下图中描绘的方法、过程和逻辑可以包括硬件(例如,电路、专用逻辑、结构等)、软件(诸如在通用计算机系统或专用机器上运行、例如交换机、转发装置)、以及硬件和软件之间的接口(诸如主机结构接口或hfi)、或两者的组合。尽管下面根据一些顺序操作描述了过程和逻辑,但是应当理解的是,所描述的一些操作可以以不同的顺序执行。此外,一些操作可以并行执行而不是顺序执行。

在本文描述的系统、设备和方法的任何一个或多个实施例中,结构封装的弹性存储包括可以访问存储节点和客户端节点的交换机,其中交换机将每个存储节点的特性抽象为弹性级别的层级中的弹性级别,所弹性的抽象级别表示每个存储节点存储对象的可靠性的程度。在从客户端节点接收以指定的弹性级别存储对象的请求、确定哪些存储节点以指定的弹性级别存储对象、并启动消息的复制流程来使对象被存储在以指定的弹性级别存储对象的存储节点上之后,交换机基存储节点的各自的抽象的弹性级别使对象被存储在存储节点中的一个或多个上。

在本文描述的系统、设备和方法的任何一个或多个实施例中,交换机配置具有弹性级别的层级的主机结构接口(hfi),其中通过hfi获得客户端的对于存储对象的请求中指定的弹性级别。在交换机确定没有存储节点以指定的弹性级别存储对象的情况下,则交换机将请求转发到被配置为访问以指定的弹性级别存储对象的其他存储节点的伙伴交换机。在某些情况下,交换机从无法以指定的弹性级别存储对象的存储节点接收对于存储对象的请求。

在本文描述的系统、设备和方法的任何一个或多个实施例中,交换机配置每个存储节点的特性被抽象成的弹性级别的层级的粒度。当以更大的粒度配置级别的层级时与当以较小粒度配置级别的层级时相比,交换机将存储特性抽象为更大数量的弹性级别。

在本文描述的系统、设备和方法的任何一个或多个实施例中,存储节点存储对象的可靠性的程度表示存储的对象的可用性的保证和防止存储的对象丢失、从存储节点的存储特性推断的可用性的保证和防止丢失中的一个或多个。

在本文描述的系统、设备和方法的任何一个或多个实施例中,交换机可以抽象成弹性级别的存储节点或存储服务器的特性可以包括静态特性和动态特性中的任何一个或多个,其中静态特性是量化存储节点的可靠性轮廓的预定义可靠性因子、包括存储节点的磁盘的数量、以及由存储节点使用的磁盘技术的类型中的任何一个或多个,而其中动态特性是存储节点随时间的负载和可用性中的任何一个或多个。

在本文描述的系统、设备和方法的任何一个或多个实施例中,交换机将存储特性寄存在交换机存储器中,并且交换机处理器被配置为将每个存储服务器的存储的特性抽象为弹性级别的层次的弹性级别。在该系统的一个实施例中,交换机结构被配置为基于存储服务器的各自的抽象的弹性级别使对象被存储在存储服务器中的一个或多个上。

在本文描述的系统、设备和方法的任何一个或多个实施例中,交换机主机结构接口(hfi)被配置为向与交换机通信的客户端公开弹性级别的层级。对于存储对象的客户端请求被排到入口队列,并且交换机处理器还被配置为响应于从客户端接收对于以所请求的弹性级别存储对象的请求来确定哪些存储服务器以所请求的弹性级别存储对象。

在本文描述的系统、设备和方法的任何一个或多个实施例中,交换机结构启动消息的复制流程来使对象被存储在被确定为以所请求的弹性级别存储对象的存储服务器中的任何一个或多个上。在交换机处理器确定通过交换机可访问的任何存储服务器都不以所请求的弹性级别存储对象的情况下,则交换机结构将请求转发到被配置为访问以指定的弹性级别存储对象的其他存储节点的伙伴交换机。在某些情况下,入口队列从无法以所请求的弹性级别存储对象的远程存储服务器接收请求。

在本文描述的系统、设备和方法的任何一个或多个实施例中,交换机配置处理器将每个存储节点的特性抽象成的弹性级别的层级,来向客户端提供不同级别的弹性存储。在本文描述的系统、设备和方法的任何一个或多个实施例中,交换机的处理器还被配置为更新存储在交换机的存储器中的特性来反映存储服务器的特性变化。

在本文所述的系统、设备和方法的任何一个或多个实施例中,用于促进计算环境中的弹性存储的部件包括与具有用于存储对象的部件的存储节点通信的部件、用于与客户端节点通信的部件,客户端节点具有用于请求将对象存储在存储节点上的部件,用于将每个存储节点的特性抽象为弹性级别的层级中的弹性级别的部件,抽象的弹性级别表示每个存储节点存储对象的可靠性的程度,用于从客户端节点接收以所请求的弹性级别存储对象的部件、用于基于存储节点的各自的抽象弹性级别以所请求的弹性级别使对象被存储在存储节点中的一个或多个上的部件。

在本文所述的系统、设备和方法的任何一个或多个实施例中,促进计算环境中的弹性存储的部件还包括用于确定哪些存储节点以指定的弹性级别存储对象的部件,以及用于启动消息复制流程来使对象被存储在以指定的弹性级别存储对象的存储节点上的部件。

在本文描述的系统、设备和方法的任何一个或多个实施例中,促进计算环境中的弹性存储的部件还包括用于配置具有每个存储节点的特性被抽象成的弹性级别的层级的主机结构接口(hfi)的部件,以及用于公开hfi中弹性级别的层级的部件,其中通过hfi获得所请求的弹性级别。

在本文所述的系统、设备和方法的任何一个或多个实施例中,促进计算环境中的弹性存储的部件还包括用于配置每个存储节点的特性被抽象成的弹性级别的层级的粒度的部件,其中以更大粒度配置的层级比以更小粒度配置的层级使存储特性被抽象为的更大数量的弹性级别。

在本文所述的系统、设备和方法的任何一个或多个实施例中,促进计算环境中的弹性存储的部件还包括用于确定没有存储节点以所请求的弹性级别存储对象的部件和用于将请求转发到计算环境中的具有用于与以所请求的弹性级别存储对象的其他存储节点通信的部件的另一系统的部件。

在本文描述的系统、设备和方法的任何一个或多个实施例中,用于促进计算环境中的弹性存储的部件还包括用于从无法以指定的弹性级别对象存储的存储节点接收请求的部件。

在本文所述的系统、设备和方法的任何一个或多个实施例中,用于促进计算环境中的弹性存储的部件还包括用于将存储节点的特性寄存在存储器中以用于由用于确定哪些存储节点以指定的弹性级别存储对象的部件以及用于更新存储器中的寄存的特性来反映存储节点的特性变化的部件的进行后续访问。

在一个实施例中,至少一个计算机可读存储介质包括指令,指令当在交换机、节点、客户端、服务器和接口中的任何一个或多个中的一个或多个处理器上执行时,使得处理器执行本文描述的结构封装的弹性存储的系统、设备和方法中的任何一个或多个实施例。

图1是示出结构封装的弹性存储的一个实施例的框图,包括采用多个存储服务器和交换机域的架构纵览。应当注意的是,图1中和本说明书中其他地方所示的存储服务器和/或交换机域的数量仅是作为示例的;节点、服务器、服务器类型、交换机域等的数量可以取决于实现而相当不同。

在图1所示的实施例中,交换机域1110a中的交换机102经由hfi112/114/116/118与客户端计算节点1104和三个存储节点、存储节点2106、存储节点3108和存储节点4110对接来提供结构封装的弹性存储100。为了说明的目的,每个存储节点是使用不同磁盘技术(dt)的存储服务器,例如,对于存储节点2106,ssd使用非易失性存储器快速(“nvme”)存储协议,其中nvme是用于访问经由外围组件互连高速(pcie)总线附接的非易失性存储介质的逻辑设备接口(http://www.nvmexpress.org),对于存储节点3108,hdd使用串行连接scsi(小型计算机系统接口,缩写为“sas”)存储协议,并且对于存储节点4110,ssd使用串行高级技术附件(“sata”)存储协议。每个存储节点也拥有其他特性,诸如不同的可靠性因子(rf)和磁盘nd的数量,例如,存储节点2106的rf40和nd2、存储节点3108的rf90和nd32、以及存储节点4110的rf60和nd12。

仅作为示例,示出了交换机域1中的一个交换机102。在典型实施例中,诸如交换机域1101a的交换机域可以包含不同配置中的多个交换机来提供结构封装的弹性存储100以用于多个计算节点和多个存储节点。例如,配置实用程序可以将存储服务器和交换机置于静态、动态或混合布置来实现用于交付高弹性级别的结构作为中介的方法,而不依赖于该布置的软件中介(例如文件系统)。

在所示实施例中,为了说明的目的并且仅作为示例,附加的交换机域(例如,交换机域2101b和交换机域3101c)表示可以配置多个交换机域来将结构封装的弹性存储100延伸到与其他交换机寄存的远程服务器/存储节点。在一个实施例中,远程服务器/存储节点起具有它们自己的弹性级别的弹性提供者作用,其可以与本地交换机域中的本地存储服务器中可用的弹性级别不同。在一个实施例中,一个交换机域可以与其他交换机域合作来跨域延伸结构封装的弹性存储。以这种方式,结构封装的弹性存储的实施例可以利用更大的架构和/或动态横向扩展架构来扩展。

在一些实施例中,一个交换机可以与另一个交换机合作来在交换机域内延伸结构封装的弹性存储。例如,使用图1的所示示例,在一个实施例中,存储节点2106可以代表由存储节点2106和存储节点3108组成的多存储服务器组来启动复制。当存储节点2106接收对于用例如0.999999的可用性存储对象的请求但是它只能提供0.999的可用性时,存储节点2106可以使用交换机与能够提供额外的(独立的)0.999可用性的存储节点3108合作,来实现所要求的可用性。例如,存储节点2106可以将对于存储对象的请求转发到交换机102,交换机102进而确定存储节点3108可以用所请求的可用性存储对象。

在一个实施例中,除了其他组件之外,交换机102还包括用于提供结构封装的弹性存储的三个组件:存储注册组件120、可靠性逻辑组件122和入口可靠性队列124。

在一个实施例中,存储注册组件120维护参与结构封装的弹性存储的存储节点的静态和动态特性的更新值。可靠性逻辑组件122可以使用在存储注册组件120中维护的信息来抽象弹性级别的层级中的弹性级别,其表示存储节点可以存储对象的可靠性的程度,即它们是否可以实现如由客户端节点1104请求的指定的弹性级别。

在一个实施例中,存储注册组件120可以被构造为交换存储器中的表,但是存储注册组件120的其他存储器结构也可以被采用,诸如指针阵列或其他机制,只要存储注册组件120中的信息是通过存储节点标识符和/或用于确定与存储节点相关联的抽象的弹性级别的存储节点的任何静态和动态特性可访问的。

在一个实施例中,可靠性逻辑组件122负责管理执行存储和复制任务的弹性消息流,来实现结构封装的弹性存储的指定的弹性级别。在一个实施例中,可靠性逻辑组件122处理来自客户端节点1104的请求来用指定的弹性级别存储对象。在一个实施例中,从入口可靠性队列124接收请求,其中这样的请求从请求客户端节点(例如,客户端节点1104)缓冲。在一个实施例中,这样的请求可能来源于伙伴存储节点或伙伴交换机域,其已经确定它不能满足对于用指定的弹性级别存储对象的请求。

在一个实施例中,使用对于存储对象的排队的请求中指定的弹性级别,可靠性逻辑组件122访问存储注册组件120来确定交换机102是否可以访问可以实现在对于对象被存储的请求中指定的弹性级别的任何存储节点106/108/110。在一个实施例中,可靠性逻辑组件122使用从存储注册组件120获得的信息来确定哪些存储节点可以满足请求,即筛选掉那些不能实现指定的弹性级别并筛选出可以的那些存储节点。

应当注意的是,在可靠性逻辑组件122中用于筛选存储节点的具体算法可以取决于交换机102已经如何被配置来提供结构封装的弹性存储而变化。

例如,在一个实施例中,结构封装的弹性存储可以被配置为对于其他特性优先考虑存储节点的某些静态或动态特性。在一些实施例中,结构封装的弹性存储可以配置存储特性被抽象成的级别层级的任意粒度,其中以更大粒度配置的层级比以更小粒度配置的层级使存储特性被抽象为更大数量的弹性级别。无论所使用的具体算法,给定对于存储对象的请求中指定的弹性级别,并且给定在存储注册组件120中存储的静态和动态特性,可靠性逻辑组件122确定寄存的存储节点中的哪一个或多个可以存储和复制对象,以便实现请求中指定的弹性级别。

一旦确定了可以存储和复制对象的一个或多个寄存的存储节点,可靠性逻辑组件122就启动消息流来将对象存储并复制到所确定的节点。

图2是示出根据如图1中所示的结构封装的弹性存储的一个实施例使用的存储的注册和状态数据的示例的框图。

在所示的场景中,交换机域1中的存储节点202向交换机102的存储注册组件120发送注册存储/负载消息。仅作为示例,在几个存储节点用交换机102寄存之后,存储注册组件120中的值包括静态和动态特性,诸如可靠性因子(rf)、磁盘数量(nd)、磁盘技术(dt)以及几个存储节点(2、3和4)的最近的负载消息以及两个交换机域(2、3)的注册信息。

在一个实施例中,存储注册组件120还可以寄存来自其他交换机域的聚合消息。例如,在图2的所示实施例中,两个交换机域、域2和域3以其rf、nd、dt和当前负载的聚合特性被寄存。使用这些域,可靠性逻辑122可以联合从本地客户端节点到其他交换机域的请求来提供更高的弹性级别,或者为客户端节点提供弹性级别的备选存储选项,该弹性级别可能当前在本地域中不可用。在一个实施例中,客户端节点1104(图1)将存储请求直接发送到远程交换机,即第二级交换机域,诸如域2101b或域3101c,其提供对其他存储服务器节点的访问。

在典型实施例中,每个存储服务器/节点向存储注册组件120提供存储节点自己的rf、nd、dt和可以从中抽象出弹性级别的其他特性。

如前所述,基于专有软件的存储系统因为它们对关于存储节点的当前信息的受限访问而不能准确且有效地确定存储节点的可靠性,特别是在引入了具有完全不同特性的新的和不同类型的存储服务器的大型横向扩展存储系统中。因此,基于专有软件的存储管理系统基于关于存储节点的静态特性的有限信息,或者通过具体存储节点的给定特性的存在或不存在来评估可靠性。相反,结构封装的弹性存储通过直接在交换机中寄存存储节点的rf或可靠性因子来部分地克服了这个问题。

在一个实施例中,rf在每个存储服务器/节点变化并且在从0到100的值中变动。其他实施例使用具有不同范围的rf值。存储服务器/节点的具体rf值取决于存储技术、供应商、实现版本等。在一个实施例中,rf值可以从规格说明书中获得并用交换机寄存。在一个实施例中,寄存与所示出的那些不同的特性和/或其他类型的静态和动态特性来提供可以从中抽象出存储节点的弹性级别附加的或备选的信息。

在一个实施例中,使用存储注册组件120中的寄存的特性210,交换机102的可靠性逻辑组件122可以将每个寄存的存储节点的特性抽象为弹性级别的层级中的弹性级别212。为了便于说明并仅作为示例,图2示出了仅具有三个弹性级别的层级,用数字“1”、“2”和“3”来指明,其中“1”是对于不太可靠(或不能)存储对象的存储节点的最低弹性级别,并且“3”是对于更可靠地存储对象的存储节点的最高的弹性级别。当然,任何具体存储节点的抽象的弹性级别都可以随着时间而变化,取决于对于存储节点注册的动态特性的变化,或者可靠性逻辑的配置的变化,包括对弹性级别的层次的粒度配置的变化。

在所示示例中,节点2具有较低的可靠性因子40、较少数量的磁盘2、并且在50%负载下,相对于其容量,其与节点3相比当前处理更大的负载,而节点3具有更高的可靠性因子90、更多的磁盘数量32、并且在25%下,相对于其容量,其与节点2相比当前处理更小的负载。因此,可以从当前为节点2寄存的特性中抽象出较低的弹性级别1,并且可以从当前为节点3寄存的特性中抽象出更高的弹性级别3。使用该示例,对于入口可靠性队列124上的指定了弹性级别3的任何存储请求,可靠性逻辑122使对象被存储/复制到存储节点3108而不是存储节点2106。

如前所述,可靠性逻辑122可以使用寄存的特性210中的其他变体和具有更大或更小粒度的弹性级别212的其他层级,使对象被存储/复制到参与结构封装的弹性存储的一个或多个不同存储节点。结构封装的弹性存储的实施例是高度可配置和可扩展的,以管理交换机、存储节点和客户端节点的不同和更大的架构、存储节点的不同类型的存储特性的注册、以及提供给客户端节点的弹性级别的层级中的不同粒度。

图3是更详细地示出如图1中所介绍的结构封装的弹性存储的一个实施例的框图。示出了三个消息流:注册消息320、复制/存储请求消息和参数308、以及弹性流程消息和参数310。在典型的实施例中,消息流使用传输层(开放系统互连(osi)模型的第4层,也称为l4,en.wikipedia.org/wiki/osi_model)来实现,来避免在网络架构其他层中做出变化的需要。

在一个实施例中,结构封装的弹性存储中的参与存储节点318向其可访问的交换机(诸如交换机102)发起注册消息320。注册消息320使交换机102将参与存储节点318的存储特性寄存在交换机的存储注册组件120中。当参与存储节点318的特性改变时,附加的注册消息320被发送到交换机102来更新存储的特性。例如,在一个实施例中,如果诸如影响具体存储节点的存储容量的负载因子的动态特性随时间改变,则存储节点将周期性、响应于来自交换机的请求、或响应于通知而生成具有更新的负载因子的新注册消息320来警告存储节点和/或交换机存储节点的当前负载/容量。

在另一示例中,在一个实施例中,当在存储服务器/节点内故障发生,或者比特误差率改变时,存储服务器/节点可以生成新的注册消息320来上传关于其操作状态和/或比特误差率等的新的和更新的信息到交换机中。

在一个实施例中,客户端节点302启动复制/存储请求消息和参数308流程,其指定要存储的对象和从在hfi304上公开给客户端的弹性级别的层级中选择的所请求的弹性级别306。复制/存储请求消息和参数308流程被排队到交换机的入口可靠性队列124,来等候由交换机进行结构封装的弹性存储处理。

在一个实施例中,可靠性逻辑组件122从入口可靠性队列124检索排队的复制/存储请求消息和参数308,来执行结构封装的弹性存储处理。在一个实施例中,可靠性逻辑组件122访问每个寄存的存储节点的存储注册组件120中的当前注册信息。可靠性逻辑组件120继续将参与到结构封装的弹性存储的每个存储节点的当前注册消息抽象为弹性级别的层级中的弹性级别。如果寄存的存储节点的抽象的弹性级别与在所检索的复制/存储请求消息和参数308中指定的所请求的弹性级别306匹配,则可靠性逻辑120将所寄存的存储节点标识为可以为请求中指定的对象提供弹性存储的筛选的存储节点316之一。抽象存储节点的弹性级别并匹配所请求的弹性级别的过程继续直到已经处理了所有寄存的存储节点的寄存的特性。在一个实施例中,可以采用用于优化抽象和匹配过程的不同技术,诸如只在实际上从上次抽象以来存储特性发生了变化时才对存储节点执行抽象。

在一个实施例中,在标识筛选的存储节点316之后或当时,可靠性逻辑组件120发起弹性流程消息和参数310,来为复制/存储请求消息和参数308中指定的对象提供弹性存储。

图4是示出根据如图1中所示的结构封装的弹性存储的实施例在交换机中执行的一些过程的概要纵览的流程图。

在一个实施例中,在过程402中,交换机接收复制存储的请求来将弹性存储中的对象存储到交换机的入口队列中。请求可以来源于客户端节点,或者在某些实例中来自联合的伙伴节点、伙伴交换机或伙伴交换机域。在过程404,交换机检索请求存储对象所按的所请求的弹性级别。

在一个实施例中,在过程406,对于已经用交换机寄存参与结构封装的弹性存储的每个存储节点,交换机将存储节点的当前注册特性抽象为弹性级别。在判定框408,交换机将每个抽象的弹性级别与所请求的弹性级别相比较。在处理框410,匹配的每个寄存的存储节点被标识为可以以所请求的弹性级别存储对象的筛选的存储节点。在框406、408和410中的过程会重复,直到已经处理了是用于存储对象的候选的所有寄存的存储节点。

在一个实施例中,在处理框412,交换机启动到筛选的存储节点的消息的复制流程,并根据存储结果向请求客户端节点返回确认(ack)或不确认(nack)的消息。

图5-7是示出了根据如图1中所示的结构封装的弹性存储的实施例的示例消息流的消息流图。图5示出了用于将存储服务器寄存到交换机的新指令消息的存储服务器/节点注册流程。如所示的,各个节点2、3和4上的存储服务器1、2和3各自向交换机发送注册消息regstorageserver,连同其当前可靠性因子和磁盘技术特性(reliabilityfactor、disktech)一起。作为响应,一旦注册完成,stl交换机就用ack来应答。在某些实例中,如果参数之一是无效的或没有更多空间用于新的注册,则交换机用nack应答。

图6示出了用于将先前寄存的存储服务器更新到交换机的新指令消息的存储服务器/节点注册流程。如所示的,各个节点2、3和4上的存储服务器1、2和3各自向交换机发送注册消息regserverload,连同他们当前的负载和故障特性(load,failuresupdate)。作为响应,一旦注册完成,stl交换机就用ack发送。如同新注册一样,在某些实例中,如果参数之一是无效的或者没有更多空间用于更新注册,则交换机用nack应答。

图7示出了用于存储对象的消息的弹性流程。例如,节点1想要存储对象并指定一组参数:正在复制的对象以及对于要存储的对象所请求的弹性级别。可选地,节点1还可以指定对于由服务器中的磁盘所使用的存储协议/磁盘技术(sashdd,satassd和nvmessd等)的要求。节点1发送带有含有所请求的弹性级别和其他要求的参数的replicatestore消息。一旦请求到达交换机,交换机上的可靠性逻辑组件就基于它们可以提供的弹性级别并且如果指定了则还基于存储技术(诸如对于存储服务器寄存的磁盘技术dt值)来筛选交换机的寄存的存储服务器。一旦交换机筛选了存储服务器,它就将存储请求(regstorageserver)消息指令转发到适当的存储服务器,在这种情况下,节点2上的存储服务器1和节点4上的存储服务器3。存储服务器1和存储服务器3复制写入指令来存储对象的副本(如果需要),并根据存储结果将ack/nack消息返回给交换机。进而,交换机将存储结果中继到发起对存储对象的请求的客户端节点。

图8示出了可以结合本文描述的实施例使用的典型计算机系统的示例。注意,虽然图8示出了数据处理系统(诸如计算机系统)的各种组件,但是不旨在表示互连组件的任何具体的架构或方式,因为这些细节与所描述的实施例没有密切关系。还应当理解的是,具有比在图8中所示组件更少的组件或者在图8中所示组件的更多的组件的其他类型的数据处理系统也可以与所描述的实施例一起使用。图8的数据处理系统可以是适合用作存储管理系统的转发装置、交换机、客户端、服务器等的任何类型的计算装置。如图8中所示,数据处理系统800包括一个或多个总线802,其服务于将系统的各种组件互连。如本领域中已知的,一个或多个处理器803耦合到一个或多个总线802。存储器805可以是dram或非易失性ram,或者可以是闪存或本申请中其他地方描述的其他类型的存储器。使用本领域中已知的技术将该存储器耦合到一个或多个总线802。数据处理系统800还可以包括非易失性存储器807,其可以是hdd或闪存或磁光驱动或磁存储器或光驱或即使从系统移除电源之后也保持数据的其他类型的存储器系统。非易失性存储器807和存储器805都使用已知的接口和连接技术耦合到一个或多个总线802。

显示控制器804耦合到一个或多个总线802,以便接收要在显示装置804上显示的显示数据,显示装置804可以显示本文描述的用户界面特征或实施例中的任何一个。显示装置804可以包括集成的触摸输入来提供触摸屏。

数据处理系统800还可以包括一个或多个输入/输出(i/o)控制器808,其为一个或多个i/o装置提供接口,i/o装置诸如一个或多个鼠标、触摸屏、触摸板、操纵杆和包括本领域已知的输入装置的其他输入装置以及输出装置(例如扬声器)。如本领域中已知的,输入/输出装置809通过一个或多个i/o控制器808耦合。

虽然图8示出非易失性存储器807和存储器805直接耦合到一个或多个总线而不是通过网络接口,但是应当理解的是,数据处理系统可以利用远离系统的非易失性存储器,诸如通过诸如调制解调器或以太网接口或无线接口的网络接口耦合到数据处理系统的网络存储装置,诸如无线wifi收发器或无线蜂窝电话收发器或此类收发器的组合。

如本领域中已知的,一个或多个总线802可以包括一个或多个桥或控制器或适配器来在各种总线之间互连。在一个实施例中,i/o控制器808包括用于控制usb外围设备的usb适配器,并且可以控制以太网端口或无线收发器或无线收发器的组合。

从该描述中显而易见的是,所描述的实施例的方面可以至少部分地以软件实现。也就是说,响应于数据处理系统的处理器执行在诸如存储器805或非易失性存储器807或者此类存储器的组合的有形非暂态存储器中含有的指令序列,本文描述的技术和方法可以在数据处理系统中执行,并且这些存储器中的每一个是机器可读的有形存储介质的形式。

硬连线电路可以与软件指令结合使用于实现各种实施例。因此,技术不限于硬件电路和软件的任何特定组合或由数据处理系统执行的指令的任何具体源。

所描述的实施例的全部或一部分可以用诸如专用逻辑电路的逻辑电路或用微控制器或执行程序代码指令的其他形式的处理核来实现。因此,通过上述讨论所教导的过程可以用诸如机器可执行指令的程序代码来执行,程序代码使执行这些指令的机器执行某些功能。在此上下文中,“机器”通常是将中间形式(或“抽象”)指令转换为处理器特定指令(例如,诸如“虚拟机”(例如java虚拟机)的抽象执行环境)、解释器、公共语言运行时,高级语言虚拟机等)的机器,和/或设计成执行指令的设置在半导体芯片上的电子电路(例如,用晶体管实现的“逻辑电路”),诸如通用处理器和/或专用处理器。通过上述讨论所教导的过程还可以由(在对机器的备选或与机器的组合中)设计成在不执行程序代码的情况下执行过程(或其一部分)的电子电路来执行。

制品可用于存储程序代码。存储程序代码的制品可以实施为但不限于一个或多个存储器(例如,一个或多个闪存、随机存取存储器(静态、动态或其他))、光盘、cd-rom、dvdrom、eprom、eeprom、磁卡或光卡或适用于存储电子指令的其他类型的机器可读介质。程序代码还可以作为传播介质中实施的数据信号(例如,经由通信链路(例如网络连接))从远程计算机(例如服务器)下载到请求计算机(例如客户端)。

在本文使用时术语“存储器”旨在涵盖所有易失性存储介质,诸如动态随机存取存储器(dram)和静态ram(sram)或在本申请中其他地方描述的其他类型的存储器。计算机可执行指令可以存储在非易失性存储装置上,诸如磁性硬盘、光盘,并且通常由处理器在软件的执行期间通过直接存储器存取过程写入存储器中。本领域技术人员将立即认识到术语“机器可读存储介质”包括由处理器可访问的任何类型的易失性或非易失性存储装置。

根据对计算机存储器内的数据位的操作的算法和符号表示来呈现前述详细描述。这些算法描述和表示是由数据处理领域中的技术人员用于最有效地将他们工作的实质传达给本领域其他技术人员的工具。算法在此并且通常被认为是导致期望结果的操作的自洽序列。操作是要求物理量的物理操纵的操作。经常,尽管不是必须的,这些量采用能够被存储、传输、组合、比较和以其他方式操纵的电或磁信号的形式。主要出于通用的原因,已经证明有时将这些信号称为比特、值、元素、符号、字符、术语、数字等是方便的。

然而,应该记住,所有这些和类似术语都与适当的物理量相关联,并且仅仅是应用这些量的方便标签。除非明确以别的方式陈述为从上面的讨论中显而易见,否则应理解为,在整个描述中,利用诸如“处理”或“计算”或“演算”或“确定”或“显示”等术语的讨论指的是计算机系统或类似电子计算装置的动作和过程,其将在计算机系统的寄存器和存储器内表示为物理(电子)量的数据操纵和转换成类似地表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示装置内的物理量的其他数据。

所描述的实施例还涉及用于执行本文描述的操作的设备。该设备可以被专门构造以用于所要求的目的,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。无论哪种方式,该设备提供用于执行本文所述的操作的部件。计算机程序可以被存储在计算机可读存储介质中,诸如但不限于任何类型的盘,包括软盘、光盘、cd-rom和磁光盘、只读存储器(rom)、ram、eprom、eeprom、磁卡或光卡、或适用于存储电子指令的任何类型的介质,并且每个介质都耦合到计算机系统总线。

本文呈现的过程和显示并非固定地与任何具体计算机或其他设备相关。根据本文的教导,各种通用系统可以与程序一起使用,或者可以证明构造更专用的设备来执行所描述的操作是方便的。各种这些系统所需的结构从本申请中提供的描述将是显而易见的。另外,不参考任何具体编程语言描述实施例。应当理解的是,可以使用各种编程语言来实现如本文所述的实施例的教导。

在前述说明书中,已经参考特定示例性实施例描述了实施例。明显的是,在不脱离如所附的权利要求中阐述的实施例的更广泛的精神和范围的情况下,可以对所描述的实施例进行各种修改。因此,说明书和附图被视为说明性意义而非限制性意义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1