首页> 中国专利> 磁盘上数据的小随机更改的高效存储

磁盘上数据的小随机更改的高效存储

摘要

本文所描述的实施例提供了一种方法及系统,用于将数据的小随机修改或更改高效地存储到耦接至网络环境中的主计算机的存储服务器的一个或更多个存储设备中,比如存储在磁盘中。示意性地,数据被存储于主计算机的、可按字节寻址的持久性存储器的区域中并且按照该数据被修改时所采用的粒度被复制(即,拷贝)为磁盘上的区域中的已更改数据,所述粒度例如为可按字节寻址的粒度。为此,每个存储服务器使用这样的数据结构(例如,斐波纳契阵列):该数据结构被配置成将小随机数据更改高效地累积成一个或更多个大的已更改数据块以按照实现磁盘的流式传输带宽的方式存储在磁盘上。

著录项

  • 公开/公告号CN105339885A

    专利类型发明专利

  • 公开/公告日2016-02-17

    原文格式PDF

  • 申请/专利权人 网络装置公司;

    申请/专利号CN201480029740.6

  • 发明设计人 道格拉斯·约瑟夫·桑特里;

    申请日2014-05-22

  • 分类号G06F3/06(20060101);

  • 代理机构北京派特恩知识产权代理有限公司;

  • 代理人徐川;武晨燕

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 14:21:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-01

    授权

    授权

  • 2016-08-10

    著录事项变更 IPC(主分类):G06F3/06 变更前: 变更后: 申请日:20140522

    著录事项变更

  • 2016-05-04

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20140522

    实质审查的生效

  • 2016-02-17

    公开

    公开

说明书

背景

技术领域

本公开内容涉及数据存储,更具体地涉及网络环境中耦接至主计算机的一个或多个磁盘上的数据的小随机更改的高效存储。

背景信息

许多现代计算算法是基于分页的并且在运行在主计算机上的操作系统的内核中实现。分页是一种存储器管理功能,其有助于以块或“页面”的形式将数据存储到主存储器(如磁盘)中以及从主存储器(如磁盘)中检索数据。例如,假定主计算机上执行的应用程序利用基于分页的算法以例如将新结点插入双向链表。该算法的执行可能会产生第一已修改(“脏(dirtied)”)页面(即带有前指针的页面)、第二脏页面(即,带有下一指针的页面)以及包含新插入结点的第三脏页面。页面的修改需要大量(例如,三个)的随机搜索操作以从磁盘中检索这些页面,以及相同次数的附加搜索操作以将已修改页面写回磁盘。因此,期望在基于磁盘的系统上使用避免这样的随机且昂贵操作的数据结构。

可按字节寻址的持久性存储器(如存储类存储器)的出现可以加速:对主存储器的采用以驻留在主计算机的存储器总线上以及对“存储器内”计算的接受。针对持久性(非易失性)可按字节寻址存储器所写的应用程序不会由于随机访问而产生性能损失并且因此表现不同,例如,它们作为上述的可直接按字节寻址的链表持续存在。持久性存储器可以被配置成使主计算机上执行的应用程序能够以可按字节寻址的粒度安全且持续地修改(更改)它们的数据以例如经受住故障。即,应用程序可以执行高频率、小随机存取以更改持久性存储器中的数据。然而,面临灾祸时,即使是持久性存储器中存储的安全且一致的数据也容易受损,因为主计算机中仅有该数据的单个副本。

因此,在经济上有利的是:需要对通过网络连接至主计算机的远程机器的一个或更多个存储设备(如磁盘)上的已更改数据进行复制,从而使得该已更改数据能够在灾祸后得以恢复。然而,磁盘通常会提供良好的流式传输带宽性能(例如,大量顺序块的读/写或“跟踪读取”)却不能较好地执行小随机存取(即,在磁盘寻找之前读写单个磁盘扇区)。换句话说,磁盘可以按照顺序模式或流式传输带宽(streamingbandwidth)模式进行更高效的操作,然而小随机存取(如上述随机搜索操作)会大幅地降低磁盘的性能。因此,有必要对主计算机上的持久性存储器的随机存取、可按字节寻址能力与磁盘的基于块的流式传输带宽能力进行匹配。

附图说明

通过参考以下结合附图的描述将更好地理解本文中的实施例的上述及其他优点,其中,相同的附图标记表示相同的或功能上类似的元件,在附图中:

图1是网络环境的框图;

图2是网络环境中的主计算机的框图;

图3是碎片的框图;

图4是复制组的框图;

图5是网络环境中的存储服务器的框图;

图6是存储服务器的磁盘上阵列(on-diskarray)的框图;以及

图7是用于将数据的小随机修改或更改存储于存储服务器的一个或更多个磁盘上的示例性简化流程。

具体实施方式

本文所描述的实施例提供了一种系统及方法,用于数据的小随机修改或更改高效地存储到耦接接至网络环境中的主计算机的存储服务器的一个或更多个存储设备(如磁盘)中。示意性地,该数据被存储在主计算机的、可按字节寻址的持久性存储器的区域中并且按照该数据的被修改粒度时所采用的粒度(例如按照可按字节寻址的粒度)被复制(即,拷贝)为磁盘上的区域中的已更改数据。为此,每个存储服务器使用这种数据结构:该数据结构被配置成将小随机数据更改高效地累积成一个或更多个大的已更改数据块以按照实现磁盘的流式传输带宽的方式存储在磁盘上。

在一个或更多个实施例中,数据结构示意性地为磁盘上阵列(例如,斐波纳契阵列),该磁盘上阵列存储于存储服务器上并且通过服务器上执行的用户级进程或代理进行维持。示意性地,阵列可以被组织为一系列的层;阵列由块大小B进行参数化以使得层的大小由该层内的块条目的数量确定。值得注意的是,每个层的条目的数量是该层前面两层的条目的数量之和,例如,第一层(和第二层)的长度为B,则接下来后续层的长度依次为2B、3B、5B、8B等等,即为斐波纳契数列。磁盘上阵列的逻辑表示在持久性存储器中被维持为内核存储阵列。内核存储阵列的一部分被组织成缓冲池,其中的每个缓冲区的大小也为B。缓冲区通过用户级代理示意性地维持为集结区(stagingarea),该集结区用于在小随机数据更改存储到磁盘之前将所述小随机数据更改累积成阵列的大块条目。用户级代理还维持多个磁盘指针,其中,每个磁盘指针引用(指向)阵列的与磁盘上的层的起始位置相对应的层。

在实施例中,阵列的每层按照例如已更改数据的存储基地址进行内部排序,而层间排序是按时间进行的。换句话说,阵列的较高层表示较旧的块条目,例如第一个、最低层容纳内部排序的最新块条目,而最后的、最高层包含内部排序最旧条目。为了维持这些层内的内部排序,用户级代理示意性地执行了归并分类技术,该归并分类技术用于对所累积的(满的)缓冲区的内容以及阵列的升序层的条目的内容进行分类(即,排序)和周期性地归并从而删除重复的条目(例如,约束阵列的大小),同时也合并相邻的条目(例如,减小阵列的大小)。此外,对具有较大条目总数的升序层的周期性归并通过使得能够为磁盘分配大体上长游程的连续磁盘块以及通过实现磁盘的流式传输带宽能力(例如,针对区域的复制和恢复)改善了阵列的磁盘上布局。

描述

图1是可以有利地结合本文所描述的一个或更多个实施例一起使用的网络环境100的框图。环境100可以包括通过计算机网络150耦接至多个(例如,一群)存储服务器500的主计算机200。尽管实施例中的计算机网络150是示意性的以太网网络,但是计算机网络150也可以包括一个或更多个点对点链路、无线链路、共享局域网、广域网或通过公共网络(如公知的互联网)实现的虚拟专用网。环境100还可以包括被配置成管理一群存储服务器500的主服务器160。主服务器160可以位于网络150上的任何地方,如位于主计算机200或存储服务器500上;然而,在实施例中,主服务器160示意性地位于单独的管理计算机上。

如本文中进一步描述的,每个存储服务器500可以体现为:被配置成为主计算机200提供存储服务的计算机(如存储系统)、体现为文件管理器的存储设备或者运行用户级进程的刀片服务器。因此,每个存储服务器500包括耦接至一个或更多个存储设备(如磁盘120)的计算与存储单元。主计算机200可以使用帧170(如以太网帧)内包含的离散消息或碎片300与存储服务器500进行通信,所述离散消息或碎片300使用除其他外包括无线协议和/或以太网协议的多种通信协议通过网络150进行传输。然而,在本文所描述的实施例中,帧170示意性地根据用户数据报协议/互联网协议(UDP/IP)消息传递协议进行封装。

图2是可以有利地结合本文所描述的一个或更多个实施例一起使用的主计算机200的框图。主计算机200示意性地包括处理器210,该处理器210通过存储器总线250连接至持久性存储器220并且通过系统总线240连接至网络适配器230。网络适配器230可以包括通过计算机网络150将主计算机200连接至存储服务器500所需的机械线路、电路和信令线路。网络适配器230还可以包括被配置成按照一个或更多个操作模式通过网络150传输包含碎片300的帧170的逻辑电路,这些操作模式将碎片所包含的信息复制到存储服务器500的磁盘120上。

持久性存储器220可示意性地体现为非易失性存储器,如存储类存储器,非易失性存储器的特征在于:在该存储器中,可按字节对组织为逻辑结构体(比如,文件或区域228)的数据进行寻址。可按字节寻址的持久性存储器220可以包括可由处理器210寻址、用于存储与本文所描述的实施例相关联的软件程序和数据结构的存储位置。处理器210则可以包括:被配置成执行软件程序(比如,用户级程序库225)以及操作数据结构(比如,事务224)的处理单元和/或逻辑电路。操作系统内核226的某些部分通常驻留在持久性存储器220中并由处理单元执行,该操作系统内核226除其他外通过调用用以支持计算机上执行的一个或更多个应用程序222的操作来在功能上组织主计算机。示意性地,应用程序222可以通过包括多个线程的进程来实现。对于本领域技术人员显而易见的是,包括各种计算机可读介质的其他处理和存储器装置可以用于存储并执行与本文的实施例有关的程序指令。

如本文所使用的,区域228可以是物理上受到持久性存储器220支持的、逻辑上连续的地址空间。区域228可以被映射到应用程序(即,进程)的地址空间使得通过应用程序能够对区域228进行修改,如写入。一旦该区域被映射到应用程序的地址空间,用户级程序库225就可以控制对该区域的访问。也就是说,应用程序222可以通过程序库225对本地连接的持久性存储器的区域中存储的数据进行读取和/或写入。因此,用户级程序库225可以起到访问持久性存储器220的控制点的作用,从而规避了操作系统内核226。

在一个或更多个实施例中,用户级程序库225可以将持久性存储器220配置为由操作(比如,STM提交操作(STMcommitoperation))所定义的软件事务存储器(STM),从而确保将数据安全且一致地存储在持久性存储器220的区域228中以及存储在存储服务器500的一个或更多个磁盘120上。为此,用户级程序库225包括由处理器210执行的、实现以下操作的计算机可执行指令:选择用于在其上复制数据的存储服务器。此外,程序库225包括由处理器210执行的、实现以下操作的计算机可执行指令:修改持久性存储器220以提供例如原子性、一致性、隔离性和持久性(ACID)语义或特性。STM系统的ACID特性示意性地在事务(如事务224)的上下文中实现,该事务224自动地将存储器中存储的数据结构(以及与数据结构相关联的数据)从一个正确的ACID状态转移到另一个状态。在实施例中,与事务224相关联的数据结构维持体现为该事务的标识符的序列号(例如,单调递增的数值)。因此,STM系统使得应用程序222能够修改区域228中的数据,从而使得:在持久性存储器220中,该数据(例如,数据结构)自动地从安全一致性状态移至另一个一致性状态。

示意性地,程序库225可以与应用程序222协作以通过使用STM提交操作来控制对作为事务224存储在持久性存储器220的区域中的数据的访问。在实施例中,应用程序(即,线程)通过对其想要为事务224写入的所有元素(数据)进行组装来启动该事务224;这被称为读/写(r/w)组合的事务。例如,假设事务224涉及在区域228内将新结点插入双向链表。根据持久性存储器200的可按字节寻址的特性,应用程序可以呈现(render)数据的小随机修改或更改;为此,r/w组合中应用程序想要写入(更改)的元素可以包括前指针、下一指针以及新结点,从而引起少量字节的更改数据。然后应用程序222可以与用户级程序库225协作以按照STM提交操作执行事务。提交操作(以及事务)的成功执行会导致对写入组合中的每个元素(数据)同时且原子地进行更改,从而确保持久性存储器的内容安全且一致。在事务224上下文中,程序库225可以精确地确定区域228中发生更改的数据的字节,以及数据字节是如何以及何时发生更改的。在对事务的上下文进行精确认知的基础上,程序库225可以高效地按照修改数据时所采用的粒度(如按照可按字节寻址的粒度)来复制(即,拷贝)更改数据。

在一个或更多个实施例中,程序库225可以通过将更改的数据作为一个或更多个与事务224相关联的碎片300转发至主计算机200的网络适配器230来启动数据的复制。图3是可以有利地结合本文所描述的一个或更多个实施例一起使用的碎片300的框图。示意性地,碎片300可以包括信息,如已更改数据在区域内的开始或基存储器地址310、已更改数据的长度320以及已更改数据的字节串(astringofbytes)330。值得注意的是,碎片300是按照所写入数据的各自实际字节的粒度进行创建的。例如,参考上述结点插入事务,在事务224的上下文中,包含有已更改数据的三个(3)碎片示意性地由程序库创建并且转发至适配器:第一个碎片包括存储器基地址、长度和下一个指针的字节;第二个碎片包括存储基地址、长度和前一个指针的字节,以及第三个碎片包括存储基地址、长度和最近插入结点的字节。按照字节可寻址的粒度(byte-addressablegranularity)复制已更改数据意味着大大地节省了成本,因为时间和计算资源(如网络带宽和网络缓冲空间)没有浪费在对未更改的数据的复制(拷贝)上。

此后,网络适配器230可以通过计算机网络150将每个碎片300转发至多个(一群)远程存储服务器500中的一个,多个(一群)远程存储服务器500具有被组织为区域的复制组的磁盘120的。图4是可以有利地结合本文所描述的一个或更多个实施例一起使用的复制组400的框图。复制组400与区域220相关联并且可以通过例如分配预定数量的与多个远程存储服务器500附接的磁盘120来组织复制组400。将磁盘分配给复制组示意性地通过主服务器160完成。持久性存储器220可以包括多个队列232,所述多个队列232被配置成在碎片300被转发至网络适配器232之前将碎片300存储为例如帧170。程序库225可以根据复制组400的磁盘120组织队列232。

在实施例中,碎片300可以在STM提交操作的上下文中由程序库225创建并根据复制的同步或异步模式由网络适配器230通过网络150转发。在此,碎片(可能分别地)加载到帧170中,由操作系统内核226的网络协议栈进行处理,并且立即由网络适配器230通过网络150发送至为区域的复制组400中所选择的磁盘120提供服务的存储服务器500。示意性地,该发送维持了碎片的时间信息(例如,体现为与碎片相关联的事务标识符)。未决并共同转让的、美国专利申请序列号为(112056-0546)题目为“EfficientReplicationofChangestoaByte-AddressablePersistentMemoryOveraNetwork(通过网络高效复制可按字节寻址的持久性存储器的更改)”中描述了可以有利地结合本文的实施例一起使用的、用于选择区域的复制组中的磁盘的技术的示例,该专利申请通过引用合并到本文中。

图5是可以有利地结合本文所描述的一个或更多个实施例使用的存储服务器500的框图。正如所提到的,存储服务器500可以体现为存储系统、存储设备(文件管理器),或运行用户级进程的刀片服务器(blade)。示意性地,存储服务器500体现为被配置成为主计算机200提供存储服务的计算机。因此,存储服务器500可以包括处理器510,该处理器510通过存储器总线515连接至持久性存储器520并且还通过系统总线550连接至网络适配器530和存储适配器540。网络适配器530可以包括通过计算机网络150将存储服务器500连接至主计算机200所需的机械线路、电路和信令线路。存储适配器540可以包括通过I/O互联装置(如传统的高性能FC串行链接拓扑)耦接至磁盘120的输入/输出(I/O)接口电路。

持久性存储器520可以示意性地体现为非易失性存储器,如存储类存储器,该非易失性存储器具有可以由处理器510寻址的、用于存储与本文所描述的实施例相关联的软件程序和数据结构的存储位置。处理器510则可包括被配置成执行软件程序(如用户级进程或代理525)并且操作数据结构(如内核存储阵列)的处理单元和/或逻辑电路。在实施例中,内核存储阵列(in-corestoragearray)是本文所描述的磁盘上阵列的逻辑表示。操作系统内核526的某些部分通常驻留在持久性存储器220中并由处理单元执行,该操作系统内核526除其他外通过调用用以支持服务器上执行的用户级代理525的操作来在功能上组织存储服务器。对本领域技术人员显而易见的是,包括各种计算机可读介质的其他处理和存储器装置可以用于存储并执行与本文中的实施例有关的程序指令。

在一个或更多个实施例中,磁盘上阵列600可以体现为有源斐波那契阵列,该有源斐波那契阵列被配置成将区域(如区域228)的小随机数据更改高效地累积成一个或更多个大的已更改数据块从而以实现磁盘的流式传输带宽的方式将这些已更改数据块存储在磁盘120上。示意性地,小随机数据更改由应用程序222(与用户级程序库225协作)呈现为事务224,该事务224是根据STM提交操作执行的。程序库225可以通过将更改的数据作为(帧170内的)一个或更多个碎片300(通过网络适配器230)转发至主计算机200的网络适配器230来启动数据的复制。碎片300中的已更改数据可以由存储服务器的网络适配器530接收并加载至持久性存储器520从而由与阵列600相关的用户级代理525进行处理。为此,用户级代理525包括计算机可执行指令,该计算机可执行指令由处理器510执行以实现管理并维持阵列600的操作。

图6是可以有利地结合本文所描述的实施例一起使用的磁盘上阵列600的框图。在实施例中,针对存储服务器500的磁盘120上存储的每个区域228提供了磁盘上(斐波纳契)阵列600。阵列600被示意性地组织为一系列的存储层610;该阵列通过块大小B进行参数化,以使得层的大小由层内块条目612的数量来确定。值得注意的是,每个层610的条目的数量为该层前面两层的条目612的数量之和,例如,第一层(和第二层)的长度为B,接下来后续的层的长度依次为2B、3B、5B、8B等等,即为斐波纳契数列。磁盘上阵列的逻辑表示在持久性存储器中被维持为内核存储阵列。该内核存储阵列的一部分被组织为缓冲池620,其中的每个缓冲区622的大小也为B。因此,块条目612和缓冲区622都由块大小B进行参数化,该块大小B示意性地为50兆字节的(大)块大小。缓冲区622由用户级代理525维持为集结区,该集结区用于在(包含在碎片300中的)小随机数据更改存储到磁盘120之前将所述小随机数据更改累积成阵列600的(大)块条目612。用户级代理525还维持多个磁盘指针600,其中,每个磁盘指针630引用(指向)阵列600的层610,该层610与用于将缓冲区622作为一个或更多个块条目612存储在磁盘120上的层的起始位置相对应。

在实施例中,每个缓冲区622中所累积的碎片300按照例如碎片中所包含的已更改数据的存储基地址310进行内部排序。通过使用与碎片300(帧170内)的相对时间信息有助于这样的排序。示意性地,相对时间信息可以体现为与每个碎片相关联的事务标识符或在其他实施例中体现为时间戳、链表或序列号。通过例如已更改数据的存储基地址310对阵列600的每层610进行内部排序,而只有层间排序是按照时间进行的。换句话说,阵列的较高的层610表示较旧的块条目,例如第一个、最低层包含内部排序的最新的块条目,而最后的、最高层包含内部排序的最旧的条目。为了维持这些层内的内部排序,用户级代理525示意性地执行了归并分类技术,该归并分类技术用于对所累积的(满的)缓冲区622的内容以及阵列的升序层的条目的内容进行分类(即,排序)和周期性地归并从而删除重复的条目(例如,约束阵列的大小),同时也合并相邻的条目(例如,减小阵列的大小)。应该注意的是,这里所使用的周期性归并表示响应于触发事件如满的缓冲区622进行归并;可替代地,触发事件还可以表示(manifest)为预定时间间隔,使得归并可以是数据驱动(例如,当碎片的帧到达时)和/或时间驱动的。对具有较大条目总数的升序层的周期性归并通过使得能够为磁盘分配大体上长游程的连续磁盘块以及通过实现磁盘的流式传输带宽能力(例如,针对区域的复制和恢复)改善了阵列的磁盘上布局。

图7是可以有利地结合本文中所描述的实施例一起使用的示例性简化流程,该流程用于将数据的小随机修改或更改存储到耦接至网络环境中的主计算机的存储服务器的一个或更多个磁盘。流程700从步骤705处开始并进行到步骤710,在步骤710中已更改数据内容被加载至阵列的缓冲区。作为响应,用户级代理会立即向主计算机确认接收到已更改数据。示意性地,尽管在实施例中每次只有一个缓冲区主动地接收已更改数据,但是每个缓冲区都可以被配置成从多个碎片接收已更改数据。在步骤715处,缓冲区的已更改数据内容通过例如已更改数据的存储器基地址进行排序。示意性地,归并分类技术可以用于基于缓冲区(和层)中的已更改数据的存储器地址按照顺序(升序或降序)对该数据进行排序。在步骤720处,做出关于缓冲区是否已满的判定。如果缓冲区未满,则过程返回至710。然而,如果缓冲区已满,则在步骤725处用户级代理选择阵列的层存储缓冲内容。示意性地,用户级代理维持表示哪个层已满以及哪个层为空的元数据。

在步骤730处,做出关于所选择的层是否为空的判定。如果该层为空,则在步骤735处用户级代理选择磁盘指针以访问阵列的该层和磁盘上所对应的起始位置。在实施例中,存储缓冲内容的首要选择是层1,即,如果层1为空,则用户级代理选择磁盘指针指向层1。在步骤740处,缓冲区的内容然后被写到对应于该层(例如,层1)的磁盘上的起始位置,并且程序会在步骤750处结束。应该注意的是,缓冲区示意性地分配了磁盘的长的连续物理部分使得能够以流的方式从所选择的磁盘指针所引用的起始位置处开始写出整个缓冲内容。

然而,如果所选择的阵列的层不是空的(即,已满),则在步骤745处根据归并分类技术将缓冲区的内容与层的块条目的内容归并,并且流程继续到步骤735。在实施例中,用户级代理使用例如2边归并分类算法实现归并分类技术,该算法在对缓冲区的内容以及所选择的层的块条目的内容进行归并和分类时以及对层到层的归并和分类时检查已更改数据的存储基地址。换句话说,归并分类技术的实现取决于缓冲内容的存储基地址是否与层内容的基地址相同。当分类期间遇到了重复或重叠的内容时,最年轻的(即,缓冲区的内容)被保留而最旧的(即,磁盘上的层+1的内容)被删除,由于它们已经在主计算机上重写并且不再合法。此外,当遇到相邻(邻近的)块条目具有重叠的存储器地址范围时,这些条目被合并,即组合成一个条目。例如,如果层1不是空的,则缓冲区被归并,用层1来填充层2。在此,层1的磁盘上(块条目)内容从磁盘中被检索出并且加载至存储服务器的持久性存储器,其中,所检索的内容被归并且分类,使得缓冲区的内容填充到层2。所产生的归并且分类的内容会写入磁盘的与层2对应的起始位置处。

应当注意的是,斐波纳契阵列的特点是,始终可以获得两个层中的一个;阵列的另一个特点是:层要么是完全填满的要么是空的。一旦将已更改数据加载至缓冲区,则对阵列进行核查以确定是否需要归并(例如,基于元数据的当前状态)。如果阵列的两个相邻的层被完全填充,则认为它们是不安全的。为了使得它们安全,这些层被归并到向上的(up)下一个层,即,下一个升序层。因此,阵列的相邻层使用归并分类技术周期性地彼此归并。阵列的斐波纳契数列布置便利于这样的归并:每个层的大小为该层前面两个层的大小之和。为了确保层始终是可用的,该布置保证在任何给定的时刻只有两个相邻的层被填充。

有利地是,磁盘上阵列(斐波纳契阵列)通过将小的随机数据更改转化成到磁盘的流写入操作解决了将小随机高频率数据更改到磁盘的高效存储问题,而同时又通过例如周期性归并将需要用于存储这些更改的磁盘的大小进行了约束。这个周期性归并的过程具有至少两个期待的效果。首先,重复内容的发现和删除约束了阵列(即,磁盘)的大小,同时相邻的条目的合并减小了阵列的大小。在阵列的稳定状态下,每层通常不是空的,而是不足额(空缺)逐层递增。通常,阵列可以达到这样的高度:它的顶层足够空使得其在不溢出的情况下仅吸收两个较低层。周期性归并的第二个有益效果是改善了磁盘布局。通过归并到块条目的连续较大层,大体上长游程的磁盘块可以被分配以在存储(或恢复)区域时能够实现磁盘的全部流式传输带宽。

然而,已经示出并描述了示例性的实施例,用于将数据的小的随机修改或更改高效地存储到耦接至网络环境中的主计算机的存储服务器的一个或更多个存储设备如磁盘,需要理解的是,可以在本文的实施例的主旨和范围内做出各种其他调整和修改。例如,本文已经描述了与已更改数据在有源(斐波纳契)阵列上的存储有关的实施例。然而,在更广泛的意义上,这些实施例并不限于此,并且实际上使得能够将有源阵列拷贝到最近分配的阵列(具有磁盘上相应的位置)以提供区域如区域228的快照(snapshot)。在此,持久性存储器520的一部分分配给新阵列(即,快照阵列)并且有源阵列根据例如写时拷贝(copy-on-write)操作被拷贝到快照阵列和在磁盘上的相应的位置以创建快照。一旦创建了快照,用户级代理525就会增加快照的版本序列并且将所增加的版本序列(以及快照的名字)记录到阵列的快照的目录中。此外,层相关的元数据(例如,引用次数)可以通过用户级代理525进行管理以保护快照阵列中的层,防止其被有源阵列删除;因此,层的引用次数增加以表示对其只读。

在实施例中,区域228的快照可以跨越(spanacross)复制组400的存储服务器,作为指挥者的主服务器160(或任意存储服务器500)可以向作为对等的每个存储服务器500中针对区域228的有源阵列请求事务标识符(例如,指挥者收集每个对等所报告的事务标识符)。然后,指挥者可以从一组报告的事务标识符中选出最低的事务标识符,使得所选择的标识符至所报告的最低标识符之间存在完整的序列。每个对等存储服务器(peerserver)贡献至少一个事务标识符给所选择的标识符到组合中的最低层标识符之间的序列。然后指挥者将所选择的事务标识符作为“捕捉点”向对等存储服务器发布(例如,广播),作为接收到该捕捉点的响应,对等服务器创建了上面描述的各自的有源阵列的快照。每个对等存储服务器还可以将捕捉点之后出现的所有碎片从各自的快照阵列中逐出。一旦完成,每个对等存储服务器可以响应指挥者,而指挥者则向主计算机200确认复制组快照已完成。最后,对等存储服务器可以将有源阵列归并到快照阵列。

上述描述针对具体的实施例。然而,显而易见的是,在达到这些优点的一部分或全部的情况下,可以对所描述的实施例做出其他变型或修改。例如,显然可以预期的是,本文所描述的存储类存储器除其他之外可以从下列项中选出:SONOS闪存、纳米晶体闪存、铁电RAM(FeRAM)、磁性RAM(MRAM)、相变RAM(PCRAM)、电阻RAM(RRAM)、固态电解质RAM以及聚合物/有机RAM。

同样可以预期的是,本文所描述的部件和/或元件可以实现为在有形(非持久性)计算机可读介质(例如,磁盘和/或CD)上编码的软件,使程序指令在计算机、软件、固件或上述项的组合上执行。因此,这种描述应当仅作为示例性的,而并非限定本文中的实施例的范围。因此,所附权利要求的目的在于涵盖本文的实施例的真实主旨和范围内的所有这样的变型和修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号