用于操作存储系统的方法和机器可读存储器

文档序号:1921486 发布日期:2021-12-03 浏览:18次 >En<

阅读说明:本技术 用于操作存储系统的方法和机器可读存储器 (Method and machine readable memory for operating a memory system ) 是由 马奥尔·本·达彦 利兰·兹维贝尔 奥姆里·帕尔蒙 于 2016-10-04 设计创作,主要内容包括:提供了用于操作存储系统的方法和机器可读存储器。存储系统包括多个存储系统前端、多个存储系统后端和多个固态驱动器(SSD)代理。每个存储系统前端存在于多个服务器中的一个服务器上。多个服务器中的每个服务器包括多个存储系统后端中的一个或多个存储系统后端。每个存储系统前端能够接收I/O请求并且将与I/O请求相关联的信息中继至相关存储系统后端。相关存储系统后端将与I/O请求相关联的元数据经由SSD代理传送至SSD。(A method and machine-readable memory for operating a storage system are provided. The storage system includes a plurality of storage system front ends, a plurality of storage system back ends, and a plurality of Solid State Drive (SSD) agents. Each storage system front-end resides on one of a plurality of servers. Each of the plurality of servers includes one or more of a plurality of storage system back-ends. Each storage system front end is capable of receiving I/O requests and relaying information associated with the I/O requests to an associated storage system back end. The associated storage system backend transfers metadata associated with the I/O request to the SSD via the SSD proxy.)

用于操作存储系统的方法和机器可读存储器

本申请是申请日为2016年10月4日、国际申请号为PCT/IB2016/001521、发明名称为“电子存储系统”的PCT申请的中国国家阶段申请的分案申请,该中国国家阶段申请进入中国国家阶段的进入日为2018年6月4日,申请号为201680071054.4,其全部内容结合于此作为参考。

相关申请的交叉引证

本专利申请引证并要求于2015年10月5日提交的美国临时申请号62/237,140的优先权和权益。以上申请的全部内容通过引证结合于此。

技术领域

本发明涉及电子存储系统。

背景技术

如参考附图在本申请的其余部分中阐述的,通过与具有本发明的一些方面的这种系统的比较,对文件系统的常规且传统的解决方案的限制和缺点将对本领域中的技术人员变得显而易见。

发明内容

如在权利要求中更加完整阐述的,基本上如附图中的至少一个所示和/或结合附图中的至少一个所描述的,为虚拟化的分布式文件系统提供了系统和方法。

从以下说明和附图将更充分地理解本发明的这些以及其他优点、各个方面和新颖特征,并且理解本发明示出的实施方式的细节。

附图说明

图1示出了存储系统的示例性实施方式的组件。

图2示出了通过存储系统的示例性信息流。

具体实施方式

本文中描述的是存储系统的示例性实施方式,该存储系统包括经由软件和/或固件配置的一个或多个计算装置(例如,服务器群集),以便将一个或多个分布式文件系统提供至客户端应用程序(还可以保存在计算装置上和/或经由一个或多个网络链路通信地耦接至一个或多个计算装置的其他计算装置上)。存储系统的一个或多个文件系统可以跨本地连接的存储器(例如,基于FLASH或其他方式的固态驱动器)和对象存储器(其可以是基于本地和/或基于云的)来分布。

存储系统使客户端应用程序能够经由诸如NFS或SMB的标准化协议和/或安装在一个或多个计算装置上的文件系统驱动程序来访问文件系统。存储系统提供文件系统的高可用性以及文件系统的高可靠性,同时提供灵活性以便防止发生故障时的数据丢失。存储系统提供了有效的并行分布式实现方式,固态驱动器(SSD)和对象存储器之间的分层存储器,以及基于擦除编码的高效保护。

在示例性配置中,存储系统的进程在一个或多个计算装置的每一个上的单个处理核心上运行。例如,对于100个服务器的群集,存储系统的进程可以在构成该群集的100个服务器的每一个上的一个处理核心上运行。然而,运行存储系统进程的每个计算装置的核心的数量可以是灵活的,并且可以基于所需要的性能的量来进行配置。例如,当需要更高的性能时,则存储系统进程可以在每个计算装置的两个核心(而不是一个核心)上运行。

存储系统支持POSIX、NFS和/或其他标准化协议。存储系统的性能随着分配给它的核心和SSD的数量而线性成比例。本地SSD与对象存储器之间的基于策略的数据分层可以用于存储系统的一个或多个文件系统。分层策略可以是用户可配置的并且基于各个文件属性和I/O模式。存储系统为其每一个文件系统提供高可靠的、省空间的擦除编码保护。存储系统及其文件系统使得它们为用户配置的故障数量是灵活的。存储系统操作以寻求计算装置上的工作负荷的最优分布(例如,涉及:使延迟最小化、使生产量最大化、使平均故障间隔时间最大化和/或一些其他性能度量)。

图1示出了存储系统100的示例性实施方式的组件。客户端应用程序101可以生成文件系统请求。如果它是通过TCP/IP网络的NFS请求,则将由生成I/O请求的存储系统NFS服务器103接收。如果它是本地的(例如,POSIX)文件系统调用,则其通过生成I/O请求的文件系统驱动程序105拦截。来自NFS服务器103或文件系统驱动器105的I/O请求随后由存储系统前端107接收,该存储系统前端将该数据中继至多个存储系统后端109中的相关存储系统后端111。后端111将相关信息存储在对象存储器115上,并与SSD代理119进行通信。

存储系统网络文件系统(NFS)服务器103可以为存储系统进行特别配置。任何一个计算装置可以被配置为作为NFS服务器103运行,以便提供对文件系统的文件级别的访问。可以配置存储系统100,使得在应用程序于与NFS服务器103相同的计算装置上运行的情况下通过该应用程序的NFS请求将由NFS服务器103处理以便保证NFS通信总是局部在该服务器上运行,这改善性能和可靠性。

文件系统驱动程序105可以是拦截POSIX文件系统调用并且将它们中继至存储系统前端107的标准的LINUX文件系统驱动程序。文件系统驱动程序105可以低于操作系统高速缓存。

存储系统前端107可以是服务于来自相同服务器上的本地应用程序的I/O的非常薄的无状态层。存储系统前端107可以可操作为接受任何I/O请求,确定哪个后端组件111拥有数据113的相关片段,并且将I/O请求中继至多个后端109中的那个后端111。前端107可以知道一个或多个计算装置的状态,包括任何故障事件或者群集展开进程。

多个存储系统后端109可以负责所有的I/O操作、灵活性、冗余、文件系统操作等。多个存储系统后端109中的每个后端可以仅负责一个或多个文件系统的小部分。文件系统中的每个实体113可以由单个后端组件111拥有。

SSD代理119存在于包含由存储系统100使用的SSD 121的每个服务器上。SSD代理119提供能够访问一个或多个计算装置上的所有后端节点109的SSD 121。

对象存储器网关使多个存储系统后端109能够将信息推送到对象存储器115或者从对象存储器115获得信息。

存储系统100可以操作为在没有任何用户配置的情况下将数据的处理和存储平均分布在系统中的所有硬件资源上(或者根据每个用户配置所期望的进行分布)。文件系统中的每个实体113可以分配给单个后端111,该后端可以保证所有后端109上的最佳的(如通过性能度量测量的)负载平衡。基于专用于存储系统100的资源(例如,处理核心的数量)将后端组件111分配给每个文件系统实体113保证性能是可升级的,并且在一个后端处理多于其他的负载的情况下没有热点发生。存储系统100可以操作为在所有情况下以及在系统中的任何类型的配置改变的情况下(包括由于硬件(例如,服务器或SSD)出故障导致的改变)都保证最佳的负载平衡。因此,从存储系统得出的高性能参数是完全可升级的。

图2示出了通过存储系统100的信息的示例性流程200。在201中,存储系统前端接受来自NFS服务器或文件系统驱动程序的I/O请求。在203中,存储系统前端将I/O请求的数据中继至相关存储系统后端组件。在205中,后端组件将相关信息存储在对象存储器上。在205中,存储系统后端组件与SSD代理进行通信。

可以保持最佳的负载平衡用于系统扩展和系统简化。在209中,当添加SSD时,可以重新分布已经写入系统的数据,以便均匀分散在扩展系统中的所有SSD和磁盘驱动器中的数据。在这种重新分布进程期间和之后,可靠性、可用性和性能可能不受影响。在存储系统100中,数据分布相当于系统的存储资源上的文件系统的完全、最佳的虚拟化。在该虚拟化下,在系统中执行的I/O活动按时充分利用任一点处的所有可利用的物理资源。在任何特定文件系统中引导的写入和读取请求管理整个CPU电源、内部带宽和磁盘容量,几乎消除瓶颈。

存储系统100中的灵活性可基于保证多个故障的灵活性的分布的节省空间的擦除编码。灵活性可以是由用户可配置的,该用户可以规定条带(stripe)大小和保护级别两者。

存储系统100的保护配置可以是纯逻辑的并且不包括任何物理组件。这与其中一组SSD全部旨在彼此保护的方法相反。例如,认为常规的RAID 5情形由100个SSD组成。这100个SSD可划分为20组,每组五个驱动器,其中,每个RAID 5组中的全部SSD彼此保护。在这种情况下,针对每个RAID 5组,该组中的五个SSD彼此保护,并且该组中的一个SSD保持其他四个SSD的奇偶性。相反,本文中描述的存储系统可以在逻辑级上工作以致全部SSD彼此保护。因而,其仅使用RAID 5组内的五个SSD的逻辑部分。在本文中描述的存储系统中,保护可以是任意到任意,意味着在211中,一旦单个SSD出现故障,则该系统中全部其他SSD参与重建进程。在重建进程结束时,该系统被再次最佳负载平衡用于剩余(非故障)的组件。

在一些情况下,存储系统由于SSD故障、服务器故障或网络问题不能访问SSD。在此情况下,存储系统可以使用擦除编码重新计算来自其他可用组件的丢失数据。这个操作模式在本文中被称为“降级模式”。在几分钟的规定的暂停时间之后,存储系统可以限定存在于丢失的那个组件上的数据并且重建该数据。因为完全分布重建进程,因此该进程包括系统中的全部CPU和全部SSD。在重建进程期间,新的数据被重建到全部现有SSD上。这意味着在该进程结束时,该群集再次被完全平衡。在213中,如果在重建进程开始之前或在重建进程时是有效的时的任一点处,可再次访问丢失组件(例如,由于临时问题的解决),则重建进程可以从未开始或者可以中途中止。例如,一般地,服务器的重新启动不会发起重建进程,而是可以促使降级模式读取几分钟。当通过群集再次检测到重新启动的服务器时,该系统恢复至正常操作模式。即使服务器断开较长时间或者如果在重建进程进行中时返回至联机状态,则也可以中止重建进程并且可以使用在个服务器(直至那个点)上重建的数据。这意味着在终止重建进程之前重建的全部数据是可用的。

当一组服务器由于单个外在故障导致变得难以访问时,在本文中该结果被称为“故障域”。例如,当齿轨转辙器(rack switch)的顶部出故障时可导致故障域,使得该齿轨中的所有服务器都不可访问。存储系统的擦除编码可以被配置为考虑故障域定义,以便保证它的擦除编码条带从未具有来自每个故障域的多于一个代表。至于这种配置,任何单个硬件组件,即使其导致不能同时访问多个服务器,也从未使得系统上的任何数据丢失或数据不可用。

存储系统可告知主人任何操作(诸如,写入、读取等)的成功终止。这种操作的任何后果被安全地离台(de-staged)至SSD。因此,甚至影响整个数据中心的完全同时的电力故障从未导致任何数据不一致或者数据丢失,并且不需要不间断电源(UPS)系统或者特定的非易失性RAM(NVRAM)来达到这个结果。甚至在电源中断之后,存储系统提供即时服务并且不需要长的数据扫描进程。

存储系统可以是可配置的以致每个文件系统单独在SSD上或者分层在SSD上。保持文件系统单独在SSD上传递最佳性能。至于分层的文件系统,只有热数据保持在本地SSD上并且冷数据保持在本地或云基础的对象存储器中。对象存储器是最简单且最大成本效益的存储类型。它可升级为几十个拍字节,但是还是不适于用作主存储器的低执行存储解决方案。通过存储系统执行的分层保证对象存储器仅用于冷数据。这个方法意味着存储系统得益于对象存储器技术的成本效益,但是一般不受其降低的性能的不利影响。这个结合的方法使存储系统是灵活性的,使得它可以根据用户需要和配置来提供最佳性能或者成本效益。为了确定哪个文件应该存储在SSD上并且哪个应该存储在对象存储器上,存储系统可在它的分层进程(诸如,最后一次修改时间或访问时间)中使用各种标准的任意一个或多个。

该分层进程可以进行如下实现。所有文件系统元数据始终存储在SSD上。这意味着任何文件系统元数据操作、文件搜索操作或整个文件系统的完全寻访仅包括访问高执行、低延迟的SSD。任何写入操作被写入至SSD,而不考虑它是否创建新的文件,替换现有文件的内容或者添加至现有文件。数据从SSD移动至数据存储器作为后台异步进程,其从未影响任何I/O操作。对象存储器可以是预置的对象存储器(诸如,商业产品)或者基于公众域代码的系统。对象存储器还可以是基于云的对象服务,诸如,亚马逊网页服务(AWS)Glacier或者谷歌Nearline。当系统必须存储并且可能访问必须保持的大量一致性数据时,这类对象存储器尤其有效,但是实际上很少访问。例如,配置可能需要上个月的SSD上的记录文件的存储量、以及完整的历史性记录文件的存储量。为了实现这个,上个月的记录文件必须存储在高性能、易访问的SSD上,并且历史性记录文件必须存储在对象存储器上。在没有本文中描述的存储系统的性质的情况下,这种情形将需要扫描本地SSD并且将相关数据移动至对象存储器的重要的、特殊的软件实现。然而,存储系统能够通过简单的策略配置支持这类实现。存储系统的一个优势在于它支持在预置的或云中实现的对象系统的多个类型的能力,以及在这种系统之间移动数据的能力(应该需要出现)。存储系统在处理最近记录时结合优良的高性能访问,同时在保留全部历史记录时保持合理的成本点。

当信息从SSD离台至对象存储器时,不从SSD删除实际内容。反而,保留该内容以便能够通过SSD即时、高性能地访问它。从SSD腾出该数据以便为其他内容腾出空间。这仅可以发生在新写入的数据需要空间时。

如本文中使用的,术语“电路(circuits)”和“电路(circuitry)”指的是物理电子组件(即,硬件)以及可配置硬件、由硬件执行的任何软件和/固件(“代码”),和/或与硬件相关联的其他方面。如本文中使用的,例如,具体处理器和存储器可以包括当执行代码的第一个一个或多个线路时的第一“电路”并且可以包括当执行代码的第二个一个或多个线路时的第二“电路”。如本文中使用的,“和/或”意味着由“和/或”连接的列表中的项目的任意一个或多个。例如,“x和/或y”意味着三元素组合{(x),(y),(z)}的任何元素。换言之,“x和/或y”意味着“x和y中的一个或两个”。如另一实例,“x、y和/或z”意味着七元素组合{(x),(y),(z),(x,y),(x,z),(y,z),(x,y,z)}中的任何元素。换言之,“x、y和/或z”意味着“x、y和z中的一个或多个”。如本文中使用的,术语“示例性”意味着用作非限制性实施例、实例或者例证。如本文中使用的,术语“例如(e.g.)”和“例如(for example)”阐述了一个或多个非限制性实施例、实例、或者例证的列表。如本文中使用的,电路“可操作为”执行功能,无论何时电路包括执行该功能的必需的硬件和代码(如果需要),而不管功能的性能是否处于停用或启用(例如,通过用户可配置设置、工厂装饰等)。

因此,本发明可以在硬件、软件、或者硬件和软件的组合中实现。本发明可以至少一个计算系统的集中方式或分布式方式实现,在分布式方式中不同元件分散在几个相互连接的计算机系统上。适合于执行本文中描述的方法的任何类型的计算系统或其他设备是合适的。硬件和软件的典型组合可以是具有程序或其他代码的通用计算系统,当程序或其他代码被下载和执行时,控制计算系统使得其执行本文中描述的方法。另一个典型的实施方式可以包括专用集成电路或者芯片。本发明的其他实施方式可以提供非临时性计算机可读介质和/或存储介质、和/或非临时性机器可读介质和/或存储介质,具有由机器和/或计算机可执行的至少一个代码部分的机器代码和/或计算机程序存储在其上,从而使得机器和/或计算机执行本文中描述的进程。

尽管已经参考某些实施方式描述了本发明,但是本领域中的技术人员将理解,在不背离本发明的范围的情况下,可进行各种改变并且可用等同物进行替换。此外,在不背离本发明的范围的情况下,可进行许多修改以使特定情形或材料适应本发明的教导。因此,本发明旨在不限于所公开的具体实施方式,而且本发明将包括落入所附权利要求的范围内的所有实施方式。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于数据仓库的指标模型管理方法、存储介质和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!