用于小对象的容错企业对象存储系统的制作方法

文档序号:16595880发布日期:2019-01-14 19:38阅读:187来源:国知局
用于小对象的容错企业对象存储系统的制作方法

本公开总体涉及企业存储系统,并且更具体地涉及用于小对象的容错企业对象存储系统。



背景技术:

企业存储系统(下文中被称为“存储系统”)通常包括各种存储实体,这些存储实体用于存储与对象相关联的数据。存储实体通常包括各种可寻址的数据块。数据块通常指存储实体中存储与对象相关联的数据的最小可寻址的存储器块。典型对象的平均大小有时比数据块的大小大一个数量级。因此,大多数先前可用的存储系统使用跨多个存储实体的若干数据块来存储对象上。这种存储系统在存储小于数据块的大小或具有与数据块的大小相同数量级的对象时通常效率低下。

一些存储系统还提供容错。当需要恢复对象时,这种存储系统通常能够恢复对象。例如,先前可用的存储系统通常响应于在存储与对象相关联的数据的存储实体处检测到数据丢失而恢复对象。在前的存储系统使用用于对象的奇偶校验数据来恢复对象。奇偶校验数据通常存储在跨多个存储实体的奇偶校验块中。奇偶校验块通常指的是存储实体中存储奇偶校验数据的最小可寻址的存储器块。一些先前可用的存储系统在存储空间利用率方面效率低下,因为它们使用了比提供容错所需的奇偶校验块更多的奇偶校验块。

附图说明

为了使本领域普通技术人员能够理解本公开,可以通过参考一些说明性实施方式的各个方面来享有更详细的描述,其中的一些在附图中示出。

图1是根据一些实施方式的企业存储系统环境的示意图。

图2是根据一些实施方式的企业存储系统的框图。

图3a是根据一些实施方式的将小对象写入企业存储系统中的方法的流程图表示。

图3b是根据一些实施方式的将小对象写入企业存储系统中的另一种方法的流程图表示。

图4a是根据一些实施方式的在检测到存储实体处的数据丢失时恢复小对象的方法的流程图表示。

图4b是根据一些实施方式的判断与聚合对象相关联的奇偶校验数据是否包括用于小对象的有效数据的方法的流程图表示。

图5a是根据一些实施方式的从企业存储系统中删除小对象的方法的流程图表示。

图5b是根据一些实施方式的压缩聚合对象的方法的流程图表示。

图6是示出根据一些实施方式的小对象正被写入企业存储系统的示图。

图7是示出根据一些实施方式的小对象正被写入企业存储系统的另一示图。

图8是根据一些实施方式的用有助于小对象的写入、恢复和/或删除的各种模块实现的服务器系统的框图。

根据惯例,附图中所示的各种特征可以不按比例绘制。因此,为了清楚起见,各种特征的大小可以任意扩大或缩小。此外,一些附图可以不描绘给定系统、方法或设备的所有组件。最后,在整个说明书和附图中可以使用相同的附图标记来表示相同的特征。

具体实施方式

为了提供对附图中所示的示例性实施方式的透彻理解,描述了许多细节。然而,附图仅仅示出了本公开的一些示例性方面,并且因此不被认为是限制性的。本领域普通技术人员将理解的是,其他有效方面和/或变型不包括本文描述的所有具体细节。此外,公知的系统、方法、组件、设备和电路尚未被详尽地描述,以免模糊本文描述的示例性实施方式的更相关方面。

在独立权利要求中列出了本发明的各个方面,并且在从属权利要求中列出了优选特征。一个方面的特征可以单独地或与其他方面组合地应用于每个方面。

一些先前可用的容错企业对象存储系统(下文中被称为存储系统)被配置为存储大对象。大对象通常指的是至少比存储系统中的最小可寻址的存储器块(例如,数据的分配单元)大一个数量级的对象。然而,在一些先前可用的存储系统中,由于所利用的误差控制编码的方法,用于小对象的奇偶校验数据通常占用磁盘上与小对象的大小相同的空间量,并且削弱了擦除编码的益处。小对象指的是通常小于存储系统中的最小可寻址的存储器块或与存储系统中的最小可寻址的存储器块相同大小的对象。因此,一些先前可用的存储系统在存储小对象方面效率低下。此外,一些先前可用的存储系统在接收到小对象时并不为这些小对象合成奇偶校验数据。因此,一些先前可用的存储系统在数据丢失的情况下不能恢复小对象,这是因为通常不存在用于小对象的奇偶校验数据。

相比之下,本文公开的各种实施方式实现将小对象写入容错企业对象存储系统,该容错企业对象存储系统以相对有效的方式存储小对象,并且在数据丢失的情况下恢复小对象。例如,在各种实施方式中,写入小对象的方法由被配置为合成奇偶校验数据以保护所存储的数据免于丢失的容错企业对象存储系统执行。下文中,容错企业对象存储系统被称为存储系统。在各种实施方式中,存储系统包括多个存储实体,这些存储实体被配置为以块为基础存储数据。在各种实施方式中,存储系统包括一个或多个处理器。在各种实施方式中,该方法包括将第一对象(例如,小对象)写入分布在多个存储实体上的聚合对象。在一些实施方式中,第一对象的第一大小至少是小于聚合对象的第二大小的数量级,并且在与每个存储实体内可寻址的块单元相同的数量级内。在各种实施方式中,该方法包括响应于将第一对象写入聚合对象来基于第一对象更新与聚合对象相关联的奇偶校验数据。奇偶校验信息存储在一个或多个奇偶校验存储实体中。在各种实施方式中,该方法还包括更新经处理的数据结束偏移指示符,该指示符指示用于聚合对象的奇偶校验数据包括直至并包含第一对象的有效数据。

图1是根据一些实施方式的存储系统环境10的框图。虽然示出了相关的特征,但是本领域普通技术人员将从本公开中理解,为了简洁起见,未示出各种其他特征,并且从而以免模糊本文公开的示例性实施方式的更相关的方面。为此,作为非限制性示例,存储系统环境10包括一个或多个客户端设备20、网络30(例如,诸如互联网之类的公共/外部网络)、和容错企业对象存储系统100(下文中被称为存储系统100)。

在操作中,存储系统100用于存储各种对象。在一些实施方式中,对象指的是任何数据资产。在一些实施方式中,对象包括能够经由客户端设备20向用户呈现的数据资产。例如,对象包括表示电影的视频文件、表示歌曲的音频文件、文本文件等。更一般地,在各种实施方式中,对象包括任何文件类型(例如,.mov、.wma、.mp4、.avi、.mp3、.jpg、.txt、.doc、.docx、.xls、.ppt等)的文件。在一些实施方式中,对象包括表示在客户端设备20处可执行的计算机可读指令集的数据资产。例如,在一些实施方式中,对象包括下载并安装在客户端设备20处的原生应用程序、浏览器插件等。

在各种实施方式中,存储系统100包括一个或多个数据存储实体110、一个或多个奇偶校验存储实体120、以及摄取实体130。数据存储实体110存储与对象相关联的数据。在下文中,与对象相关联的数据被称为对象数据。在一些实施方式中,数据存储实体110包括一个或多个计算机可读存储介质。例如,数据存储实体110包括固态存储器设备、硬盘存储器设备、光盘驱动器、只读存储器和/或基于纳米管的存储设备。在一些实施方式中,数据存储实体110包括执行计算机可读指令的数据服务器。在各种实施方式中,数据存储实体110包括用于存储对象数据的各种数据块(未示出)。如本文所述的,在各种实施方式中,数据块指的是数据存储实体110中的最小可寻址的存储器块(例如,数据的最小分配单元)。在一些实施方式中,数据块是大小等同的(例如,均为2mb)。

在各种实施方式中,奇偶校验存储实体120存储与对象相关联的奇偶校验数据。在一些实施方式中,存储系统100合成用于对象的奇偶校验数据,并将奇偶校验数据存储在奇偶校验存储实体120中。存储系统100利用任何合适的技术来合成奇偶校验数据。在各种实施方式中,存储系统100利用用于对象的奇偶校验数据来在数据存储实体110处发生数据丢失的情况下恢复对象。在一些实施方式中,恢复对象指的是对对象进行重建、重构、还原和/或修复。例如,如果存储对象数据的一部分的数据存储实体110崩溃,则存储系统100利用奇偶校验数据来恢复对象。存储系统100利用任何合适的技术来恢复对象。与数据存储实体110类似,在一些实施方式中,奇偶校验存储实体120包括用于存储奇偶校验数据的一个或多个计算机可读介质。在各种实施方式中,奇偶校验存储实体120包括用于存储奇偶校验数据的各种奇偶校验块(未示出)。在一些实施方式中,奇偶校验块指的是奇偶校验存储实体120中的最小可寻址的存储器块(例如,数据的最小分配单元)。在一些实施方式中,奇偶校验块是大小等同的(例如,均为2mb)。

在各种实施方式中,摄取实体130用作存储系统100的接口。摄取实体130从存储系统100外部的任何设备接收数据/将数据发送到存储系统100外部的任何设备。具体地,摄取实体130从客户端设备20接收数据/将数据发送到客户端设备20。在各种实施方式中,接收/发送数据包括接收/发送对象。替代地或另外地,接收/发送数据包括接收/发送指令。在一些实施方式中,指令包括针对对象执行的操作。示例性指令包括写入对象、读取对象、删除对象、复制对象等。在一些实施方式中,摄取实体130包括使摄取实体130能够执行其功能的硬件和/或软件。在一些示例中,摄取实体130由服务器系统(例如,如图8中所述)实现。

在各种实施方式中,存储系统100利用与分布式擦除编码相关联的各种技术。在一些实施方式中,存储系统100将对象分布在多个(例如,所有)数据存储实体110上。例如,存储系统100在一个数据存储实体110处存储对象数据的前2mb,在另一个数据存储实体110处存储对象数据的下一2mb,等等。在一些实施方式中,即使对象足够小以致于可以存储在单个数据存储实体110处,存储系统100也会将对象分布在多个数据存储实体110上。将对象数据分布在多个数据存储实体110上降低了丢失用于整个对象的对象数据的风险。类似地,在一些实施方式中,存储系统100将用于对象的奇偶校验数据分布在多个(例如,所有)奇偶校验存储实体120上。

在一些实施方式中,存储系统100(例如,摄取实体130)从客户端设备20接收写入请求148。写入请求148包括将小对象150写入(例如,存储)存储系统100中的请求。在一些实施方式中,写入请求148包括小对象150。替代地或另外地,写入请求148包括存储系统100用来提取小对象150的对象标识符(例如,统一资源标识符(uri))和/或链接(例如,统一资源定位器(url))。在一些实施方式中,小对象150指的是小于或大约等于数据块和/或奇偶校验块的大小的对象。换句话说,在一些实施方式中,小对象150指的是小于数据块和/或奇偶校验块或与数据块和/或奇偶校验块具有相同数量级的对象。

在各种实施方式中,摄取实体130将小对象150写入跨多个数据存储实体110存储的聚合对象170。在一些实施方式中,聚合对象170指的是占用跨多个数据存储实体110的一组数据块的相对较大的对象。在这样的实施方式中,摄取实体130通过将用于小对象150的对象数据写入聚合对象170所占用的一个或多个数据块来将小对象150写入聚合对象170。在一些实施方式中,聚合对象170指的是对象的集合。在这样的实施方式中,摄取实体130通过使小对象150包含于集合中来将小对象150写入聚合对象170。在各种实施方式中,聚合对象170至少比小对象150大一个数量级。

在各种实施方式中,摄取实体130为小对象150合成奇偶校验数据。摄取实体130利用任何合适的技术来合成奇偶校验数据。在一些实施方式中,聚合对象170是与占用奇偶校验存储实体120中的一组奇偶校验块的奇偶校验数据相关联的。在这样的实施方式中,摄取实体130将用于小对象150的奇偶校验数据写入与聚合对象170相关联的一个或多个奇偶校验块。在一些实施方式中,摄取实体130更新经处理的数据结束偏移指示符(未示出),以指示用于聚合对象170的奇偶校验数据包括直至小对象150并包括该小对象的有效数据。换句话说,在一些实施方式中,在存储用于小对象150的奇偶校验数据之后,摄取实体130更新经处理的数据结束偏移指示符以指示奇偶校验数据可用于恢复小对象150。

在一些实施方式中,存储系统100向客户端设备20发出(例如,发送)写入确认178(例如,消息)。在一些实施方式中,写入确认178确认存储小对象150的请求。在一些实施方式中,写入确认178指示小对象150已经存储在存储系统100中。另外地或者替代地,写入确认178指示用于小对象150的奇偶校验数据已经被合成并存储在存储系统100中。在一些示例中,写入确认178指示小对象150是容错的。

在各种实施方式中,客户端设备20包括任何合适的计算设备,例如计算机、膝上型计算机、平板设备、上网本、上网亭、个人数字助理、移动电话、智能电话、可穿戴式设备、游戏设备、计算机服务器等。在一些实施方式中,每个客户端设备20(例如,移动计算设备20a、膝上型计算机20b、台式计算机20c、电视20d等)包括一个或多个处理器、一种或多种类型的存储器、显示器和/或其他用户接口组件,例如键盘、触摸屏显示器、鼠标、轨迹板、数码相机和/或任何数量的用于增添功能的补充设备。在一些实施方式中,客户端设备20包括硬件、软件和固件的合适组合,其被配置为提供协议处理、调制、解调制、数据缓冲、功率控制、路由、切换、时钟恢复、放大、解码和误差控制中的至少一些。

图2是根据一些实施方式的存储系统100的框图。如所例示的,在各种实施方式中,数据存储实体110包括各种数据块112。在一些实施方式中,数据块112指的是数据存储实体110中的最小可寻址的存储器块(例如,数据的最小分配单元)。数据块112与数据块大小114相关联。在一些实施方式中,数据块大小114是常数(例如,运行时常数)。在一些示例中,数据块大小114能够由存储系统100的操作员调整。在某些情况下,数据块大小114是几兆字节(例如,2mb)。在特定数据存储实体110处的数据块112的集合被称为数据条带(例如,数据条带116-1、数据条带116-2…数据条带116-n)。

在各种实施方式中,奇偶校验存储实体120包括各种奇偶校验块122。在一些实施方式中,奇偶校验块122指的是奇偶校验存储实体120中的最小可寻址的存储器块(例如,数据的最小分配单元)。奇偶校验块122与奇偶校验块大小124相关联。在一些实施方式中,奇偶校验块大小124是常数(例如,运行时常数)。在一些示例中,奇偶校验块大小124能够由存储系统100的操作员调整。在某些情况下,奇偶校验块大小124是几兆字节(例如,2mb)。如图2所例示的,在各种实施方式中,奇偶校验块大小124等于数据块大小114。然而,在一些实施方式中,奇偶校验块大小124不同于数据块大小114。在特定奇偶校验存储实体120处的奇偶校验块122的集合被称为奇偶校验带(例如,奇偶校验带126-1、奇偶校验带126-2...奇偶校验带126-m)。

聚合对象170与聚合对象大小172相关联。在各种实施方式中,聚合对象大小172至少比数据块大小114和/或奇偶校验块大小124大一个数量级。例如,在一些实施方式中,如果数据块大小114和奇偶校验块大小124是几兆字节,则聚合对象大小172是几千兆字节(例如,超过1gb)。如图2中所示,在各种实施方式中,聚合对象170分布在多个数据存储实体110上。类似地,在各种实施方式中,用于聚合对象170的奇偶校验数据分布在多个奇偶校验存储实体120上。在这样的实施方式中,每个奇偶校验存储实体120为聚合对象170存储不同的奇偶校验数据,以提供额外的弹性等级。

在各种实施方式中,摄取实体130包括写入模块132、恢复模块134、删除模块136、压缩模块137、和数据库138。在各种实施方式中,写入模块132、恢复模块134、删除模块136、和/或压缩模块137以硬件(例如,作为一个或多个专用集成电路(asic))和/或软件(例如,作为由一个或多个中央处理单元执行的一个或多个计算机可读指令集)的方式来实现。在各种实施方式中,数据库138存储经处理的数据结束偏移指示符140。在一些实施方式中,经处理的数据结束偏移指示符140是指示与聚合对象170相关联的奇偶校验块122代表什么的指示符。另外地或替代地,经处理的数据结束偏移指示符140指示部分利用的数据块112中的有效数据的量。在一些实施方式中,经处理的数据结束偏移指示符140包括指示与聚合对象170相关联的奇偶校验数据是否包括用于小对象150的有效数据的值。换句话说,在一些实施方式中,经处理的数据结束偏移指示符140指示摄取实体130是否可以基于奇偶校验数据来恢复小对象150。在各种实施方式中,数据库138存储用于存储在数据存储实体110中的对象的对象名称142。

在各种实施方式中,写入模块132将小对象150写入聚合对象170中。在一些实施方式中,写入模块132接收存储小对象150的写入请求148。当接收到写入请求148时,写入模块132将小对象150写入聚合对象170中。在一些实施方式中,写入请求148包括小对象150。在这样的实施方式中,写入模块132从写入请求148索取小对象150。在一些实施方式中,写入请求148包括标识小对象150的对象标识符(id)(例如,uri)或用于小对象150的链接(例如,url)。在这样的实施方式中,写入模块132利用对象id或链接来获得小对象150。

在各种实施方式中,写入模块132通过将用于小对象150的对象数据写入与聚合对象170相关联的数据块112中而将小对象150写入聚合对象170中。在一些实施方式中,写入模块132为小对象150合成奇偶校验数据。写入模块132利用任何合适的技术来合成用于小对象150的奇偶校验数据。在一些实施方式中,写入模块132将用于小对象150的奇偶校验数据写入与聚合对象170相关联的奇偶校验块122中。

在各种实施方式中,写入模块132更新经处理的数据结束偏移指示符140,以指示用于聚合对象170的奇偶校验数据包括用于小对象150的有效数据。在各种实施方式中,写入模块132为小对象150确定小对象大小152。在一些实施方式中,写入模块132基于与小对象150相关联的元数据来确定小对象大小152。在一些实施方式中,写入模块132通过将经处理的数据结束偏移指示符140的值递增小对象大小152来更新经处理的数据结束偏移指示符140。另外地或者替代地,写入模块132例如将用于小对象150的对象名称142插入(例如,写入)数据库138中,以便跟踪已经写入聚合对象170中的对象。

在一些实施方式中,写入模块132在将小对象150写入聚合对象170中时发出写入确认178。写入确认178指示小对象150已经被写入聚合对象170中。另外地或者替代地,写入确认178指示小对象150是容错的。换句话说,在一些实施方式中,写入确认178指示在数据存储实体110中存储小对象150的一部分的一者处丢失数据的情况下小对象150是可恢复的。

在各种实施方式中,在数据存储实体110中的存储小对象150的一部分的一者处丢失数据的情况下,恢复模块134恢复小对象150。在一些实施方式中,恢复模块134检测用于小对象150的对象数据的一部分已经丢失,例如,由于数据存储实体110中的一者处的数据丢失事件。导致数据丢失的示例性事件包括断电、磁盘故障、数据损坏等。在检测到小对象150的一部分已经丢失时,恢复模块134判断是否能够基于与聚合对象170相关联的奇偶校验数据来恢复小对象150。例如,在一些实施方式中,恢复模块134判断经处理的数据结束偏移指示符140指示与聚合对象170相关联的奇偶校验数据是否包括用于小对象150的有效数据。

在一些实施方式中,如果经处理的数据结束偏移指示符140的值等于已被写入聚合对象170中的各种对象(例如,所有对象)的对象大小之和,则恢复模块134利用奇偶校验数据来恢复小对象150。在这种实施方式中,恢复模块134访问数据库138以标识已经被写入聚合对象170中的对象(例如,所有对象)。在标识对象时,恢复模块134确定已经被写入聚合对象170中的每个对象的对象大小。此后,恢复模块134通过将对象大小(例如,所有对象大小)相加来计算和。如果经处理的数据结束偏移指示符140的值等于该和,则恢复模块134确定与聚合对象170相关联的奇偶校验数据包括用于小对象150的有效数据。因此,恢复模块134能够基于奇偶校验数据来恢复小对象150。恢复模块134利用任何合适的技术来从奇偶校验数据中恢复小对象150。在一些实施方式中,聚合对象大小172表示已经被写入聚合对象170中的所有对象的对象大小之和。在这样的实施方式中,如果经处理的数据结束偏移指示符140的值等于聚合对象大小172,则恢复模块134使用奇偶校验数据来恢复小对象150。

在各种实施方式中,删除模块136从聚合对象170中删除对象。在一些实施方式中,删除模块136响应于接收删除对象的删除请求144来删除对象。例如,在将小对象150写入聚合对象170中之后的某个时间,摄取实体130可以接收删除小对象150的删除请求144。在一些实施方式中,删除请求144包括要删除的对象的对象名称142。在一些实施方式中,删除模块136从数据库138中移除删除请求144中所指定的对象名称142。在各种实施方式中,当对象的对象名142从数据库138中被移除时,对象不再能够由存储系统100外部的设备访问。除了从数据库138中删除对象名称142之外,在各种实施方式中,删除模块136将与对应对象相关联的数据块112标记为无效。在一些实施方式中,删除模块136发出指示对象已被删除的删除确认146。

在各种实施方式中,压缩模块137压缩聚合对象170。在一些实施方式中,当聚合对象170看起来稀疏时,压缩模块137确定压缩聚合对象170。例如,在一些实施方式中,当被标记为无效的数据块112的数量或百分比超过阈值(例如,25-50%)时,压缩模块137压缩聚合对象170。在一些实施方式中,压缩模块137通过实例化新的聚合对象并且将有效数据块从聚合对象170迁移到新的聚合对象来压缩聚合对象170。有效数据块指的是存储用于在数据库138中列出的对象的对象数据的数据块112。相比之下,无效数据块指的是这样的数据块112,它们存储用于在数据库138中未列出(因为其对应的对象名称142已经从数据库138中被移除)的对象的数据。

图3a是将小对象写入存储系统的方法300的流程图。在各种实施方式中,方法300被实现为在存储系统处执行的计算机可读指令集。例如,在各种实施方式中,方法300由图2中所示的写入模块132执行。简言之,方法300包括:将小对象写入聚合对象(在方框310处),基于小对象更新聚合对象的奇偶校验数据(在方框320处),以及更新经处理的数据结束偏移指示符以指示用于聚合对象的奇偶校验数据包括用于小对象的有效数据(在方框330处)。

如方框310所示,在各种实施方式中,方法300包括将小对象写入分布在多个数据存储实体上的聚合对象。在各种实施方式中,小对象指的是至少比聚合对象小一个数量级的对象。在一些实施方式中,小对象大小在存储实体的每一者内可寻址的块单元(例如,数据块)的相同数量级内。相比之下,聚合对象至少比数据块大一个数量级。在各种实施方式中,写入小对象包括将与小对象相关联的对象数据写入已经分配给聚合对象的数据块。在一些实施方式中,方法300利用与分布式擦除编码相关联的技术来将小对象写入聚合对象(例如,如关于图1所述的)。

如方框320所示,在各种实施方式中,方法300包括基于小对象更新与聚合对象相关联的奇偶校验数据。在各种实施方式中,方法300包括为小对象合成奇偶校验数据。方法300利用任何合适的技术来合成用于小对象的奇偶校验数据。在合成用于小对象的奇偶校验数据之后,在各种实施方式中,方法300包括将用于小对象的奇偶校验数据写入与聚合对象相关联的奇偶校验块。更一般地,方法300包括响应于将小对象写入聚合对象中来基于小对象更新与聚合对象相关联的奇偶校验数据。在各种实施方式中,奇偶校验数据存储在一个或多个奇偶校验存储实体中。

如方框330所示,在各种实施方式中,方法300包括更新经处理的数据结束偏移指示符,以指示用于聚合对象的奇偶校验数据包括直至小对象并包括小对象的有效数据。在一些实施方式中,方法300通过递增经处理的数据结束偏移指示符的值来更新经处理的数据结束偏移指示符。此外,在一些实施方式中,递增经处理的数据结束偏移指示符的值包括通过小对象的大小来递增其值。

图3b是将小对象写入存储系统中的方法300a的流程图。在各种实施方式中,方法300a被实现为在存储系统处执行的计算机可读指令集。例如,在各种实施方式中,方法300a由图2中所示的写入模块132执行。简言之,方法300a包括:将小对象写入聚合对象中(在方框310处),基于该小对象更新聚合对象的奇偶校验数据(在方框320处),更新经处理的数据结束偏移指示符(在方框330处),以及发送指示小对象已经被写入存储系统中的消息(在方框340处)。

如方框310所示,在各种实施方式中,方法300a包括接收写入请求(在方框312处)。在各种实施方式中,方法300a包括从客户端设备(例如,图1中所示的客户端设备20)接收写入请求。在一些实施方式中,写入请求包括要存储在存储系统中的小对象。在这种实施方式中,方法300a包括从请求中索取小对象。在一些实施方式中,写入请求为小对象指定对象id,或为小对象指定链接。在这样的实施方式中,方法300a包括利用对象id或链接来提取小对象。如方框314所示,在各种实施方式中,方法300a包括将与小对象相关联的对象数据写入与聚合对象相关联的数据块。

如方框320所示,在各种实施方式中,方法300a包括基于小对象更新与聚合对象相关联的奇偶校验数据。在各种实施方式中,方法300a包括合成用于小对象的奇偶校验数据(在方框322处)。方法300a利用任何合适的技术来合成用于小对象的奇偶校验数据。如方框324所示,在各种实施方式中,方法300a包括将用于小对象的奇偶校验数据写入奇偶校验块中。奇偶校验块与存储用于小对象的对象数据的数据块相对应。

如方框330所示,在各种实施方式中,方法300a包括更新经处理的数据结束偏移指示符。在各种实施方式中,方法300a包括确定小对象的大小(在方框332处)。在各种实施方式中,方法300a包括基于与小对象相关联的元数据来确定小对象的大小。在各种实施方式中,方法300a包括通过随着小对象的大小递增其值来更新经处理的数据结束偏移指示符(在方框334处)。已更新的经处理的数据结束偏移指示符指示用于聚合对象的奇偶校验数据包括用于小对象的有效数据。换言之,已更新的经处理的数据结束偏移指示符指示用于聚合对象的奇偶校验数据可用于在存储用于小对象的对象数据的数据块处丢失数据的情况下恢复小对象。在一些实施方式中,一旦被更新,经处理的数据结束偏移指示符的值等于聚合对象的大小。

如方框340所示,在一些实施方式中,方法300a包括发送消息(例如,图1和图2中所示的写入确认178)。在一些实施方式中,消息表示指示小对象已被写入存储系统中的写入确认。另外地或替代地,消息指示小对象是容错的。换句话说,该消息指示在数据丢失的情况下小对象是可恢复的。在各种实施方式中,方法300a包括将消息发送到在方框312处方法300a接收写入请求的同一客户端设备。

在一些实施方式中,方法300a包括判断小对象的大小是否大于阈值大小。在这样的实施方式中,如果小对象的大小大于阈值大小,则方法300a包括响应于确定小对象的大小大于阈值大小来更新奇偶校验数据(分别由方框320和方框330表示)。然而,在一些实施方式中,如果小对象的大小小于阈值大小,则方法300a包括等待预定量的时间后更新奇偶校验数据和经处理的数据结束偏移指示符。在一些实施方式中,如果要将附加的小对象写入聚合对象并且总对象大小大于阈值大小,则方法300a包括在预定量的时间到期之前更新奇偶校验数据和经处理的数据结束偏移指示符。在这些实施方式中,总对象大小表示两个小对象大小之和。在一些实施方式中,方法300a包括在小对象被写入聚合对象时更新奇偶校验数据,以及在小对象已被写入聚合对象之后更新奇偶校验数据。

图4a是根据一些实施方式的在检测到存储实体处的数据丢失时恢复小对象的方法400的流程图表示。在各种实施方式中,方法400被实现为在存储系统处可执行的计算机可读指令集。例如,在各种实施方式中,方法400由图2中所示的恢复模块134执行。简言之,方法400包括:在存储小对象的数据存储实体处检测数据的丢失(在方框410处),确定经处理的数据结束偏移指示符指示与聚合对象相关联的奇偶校验数据是否包括用于小对象的有效数据(在方框420处),以及基于奇偶校验数据恢复小对象(在方框440处)。

如方框410所示,在各种实施方式中,方法400包括在将小对象存储在聚合对象内的数据存储实体处检测数据丢失。在一些实施方式中,数据的丢失导致用于小对象的对象数据的至少一部分丢失。数据丢失是由于各种原因(例如,断电、磁盘故障、服务器崩溃等)引起的。

如方框420所示,在各种实施方式中,方法400包括判断经处理的数据结束偏移指示符是否指示与聚合对象相关联的奇偶校验数据包括用于小对象的有效数据。换句话说,在各种实施方式中,方法400包括判断用于聚合对象的奇偶校验数据是否包括用于小对象的奇偶校验数据。换句话说,在各种实施方式中,方法400包括判断奇偶校验数据是否可用于适当地恢复小对象。在一些实施方式中,在方框420处,方法400执行图4b中所例示的操作。如果经处理的数据结束偏移指示符指示用于聚合对象的奇偶校验数据包括用于小对象的有效数据,则方法400继续前行到440,否则方法400结束。

如方框440所示,在各种实施方式中,方法400包括基于与聚合对象相关联的奇偶校验数据和/或与聚合对象相关联的剩余对象数据来恢复小对象。方法400利用任何合适的技术来基于奇偶校验数据恢复小对象。在各种实施方式中,恢复小对象包括从奇偶校验数据重建、重构、还原和/或修复小对象。

图4b是根据一些实施方式的判断与聚合对象相关联的奇偶校验数据是否包括用于小对象的有效数据的方法420的流程图表示。在各种实施方式中,方法420在图4a中所示的方框420处执行。简言之,方法420包括:标识聚合对象中的对象(在方框422处),确定表示对象的总大小的和(在方框424处和方框426处),将经处理的数据结束偏移指示符与和进行比较(在方框428处),以及基于比较结果来确定奇偶性数据包括用于小对象的有效数据(在方框430处)。

如方框422所示,在一些实施方式中,方法420包括标识已被写入聚合对象中的一组对象。在各种实施方式中,方法420包括访问数据库(例如,图2中所示的数据库138)以标识已被写入聚合对象中的对象组。在一些实施方式中,对象组包括正恢复的对象和在正恢复的对象之前写入聚合对象中的对象。换句话说,在一些实施方式中,对象组不包括在将被恢复的对象写入聚合对象之后写入聚合对象的对象。

在各种实施方式中,方法420包括标识组中的每个对象的大小(在方框424处)。在各种实施方式中,方法420包括从数据库中索取每个对象的大小。如方框426所示,在各种实施方式中,方法420包括通过将组中所有对象的大小相加来计算和。

如方框428所示,在各种实施方式中,方法420包括判断经处理的数据结束偏移指示符是否等于和。在一些实施方式中,如果经处理的数据结束偏移指示符不等于和,则方法420结束。然而,在一些实施方式中,如果经处理的数据结束偏移指示符等于和,则方法420继续前行到方框430。如方框430所示,在各种实施方式中,方法420包括确定用于聚合对象的奇偶校验数据包括用于小对象的有效数据。因此,用于聚合对象的奇偶校验数据可用于恢复小对象(例如,如图4a中关于方框440所描述的)。

图5a是根据一些实施方式的从存储系统中删除小对象的方法500的流程图表示。在各种实施方式中,方法500被实现为在存储系统处可执行的计算机可读指令集。例如,在各种实施方式中,方法500由图2中所示的删除模块136执行。简言之,方法500包括:确定从聚合对象中删除小对象(在方框510处),从数据库中删除小对象的名称(在方框520处),以及将存储用于该小对象的对象数据的数据块标记为无效(在方框530处)。

如方框510所示,在各种实施方式中,方法500包括确定要从存储小对象的聚合对象中删除小对象。在各种实施方式中,方法500包括从客户端设备接收删除请求以删除特定小对象。在一些实施方式中,删除请求指定要从存储系统中删除的小对象的名称。在一些实施方式中,方法500基于小对象的存在时长来确定删除小对象。在一些实施方式中,方法500基于小对象的使用情况来确定删除小对象。例如,方法500确定删除客户端设备在阈值时间量内未请求的小对象。在一些实施方式中,方法500基于聚合对象的大小(例如,聚合对象的大小是否超过阈值大小)来确定删除小对象。

如方框520所示,在各种实施方式中,方法500包括从数据库(例如,图2中所示的数据库138)中移除小对象的名称。在一些实施方式中,数据库存储已被写入聚合对象中的所有对象的名称。在各种实施方式中,方法500包括将存储小对象的数据块标记为无效,如方框530所示。由于已从数据库中移除了小对象的名称,并且与小对象对应的数据块已被标记为无效,因此客户端设备不再能够访问小对象。因此,在一些实施方式中,如果客户端设备请求小对象,则存储系统返回空值。

图5b是根据一些实施方式的压缩聚合对象的方法550的流程图表示。在各种实施方式中,方法550被实现为在存储系统处可执行的计算机可读指令集。例如,在各种实施方式中,方法550由图2中所示的压缩模块137执行。简言之,方法550包括:确定已被标记为无效的数据块的百分比或数量(在方框560处),判断百分比或数量是否高于阈值(在方框570处),以及基于判断结果来压缩聚合对象(在方框580处)。

如方框560所示,在一些实施方式中,方法550包括确定聚合对象中已标记为无效的数据块的百分比。在各种实施方式中,方法550包括对无效数据块的数量进行计数,并将无效数据块的数量除以数据块的总数量以确定百分比。在各种实施方式中,方法550包括判断百分比是否高于阈值,如方框570所示。在一些实施方式中,阈值是可由存储系统的管理员配置(例如,经由管理员控制台)的常数。在一些示例中,阈值范围从25%到50%。如果百分比低于阈值,则方法550包括等待直到百分比高于阈值。然而,如果百分比高于阈值,则方法550继续前行到方框580。

在各种实施方式中,方法550包括压缩聚合对象,如方框580所示。在一些实施方式中,压缩聚合对象包括实例化新的聚合对象(如方框582所示),并将有效数据块迁移到新的聚合对象(如方框584所示)。在一些实施方式中,实例化新的聚合对象指的是创建新的聚合对象。在一些实施方式中,迁移有效数据块指的是将存储在有效数据块中的数据从旧的聚合对象复制到新的聚合对象。在各种实施方式中,当有效数据块已经被迁移到新的聚合对象时,方法550包括清除旧的聚合对象。

更一般地,在一些实施方式中,方法550包括确定聚合对象的稀疏等级。在一些实施方式中,无效数据块的百分比指示稀疏等级。在一些实施方式中,如果稀疏性等级超过了阈值,则方法550包括压缩聚合对象(如方框580所示)。然而,在一些实施方式中,如果稀疏等级低于阈值,则方法550包括延迟压缩直到稀疏性等级超过阈值。

图6是示出根据一些实施方式的正被写入存储系统600的小对象的示图。在各种实施方式中,存储系统600类似于图1和图2正所例示的存储系统100。例如,在各种实施方式中,存储系统600包括第一数据存储实体610-1、第二数据存储实体610-2、和奇偶校验存储实体620。在一些实施方式中,数据存储实体610包括特定数据块大小614的数据块612。在图6的示例中,数据块大小614是2mb。类似地,在一些实施方式中,奇偶校验存储实体620包括特定奇偶校验块大小624的奇偶校验块622。在图6的示例中,奇偶校验块大小624是2mb。在图6的示例中,数据块大小614和奇偶校验块大小624是相等的。然而,在一些实施方式中,数据块大小614和奇偶校验块大小624是不同的。

如图6正所示,在时间t1,存储系统600确定写入对象a。例如,在一些实施方式中,存储系统600从客户端设备接收存储对象a的请求。在图6的示例中,对象a具有1mb的大小。对象a作为图1和图2中所示的小对象150,例如,因为对象a的大小小于数据块大小614。在一些实施方式中,存储系统600将对象a写入第一数据块612-1。由于对象a的大小是数据块大小614的一半,所以对象a仅占用第一数据块612-1的一半。

在各种实施方式中,存储系统600合成用于对象a的奇偶校验数据,并将奇偶校验数据写入第一奇偶校验块622-1。如图6中所示,在各种实施方式中,对象a的大小为1mb,并且用于对象a的奇偶校验数据占用第一奇偶校验块622-1中可用的1mb的存储空间。在各种实施方式中,一旦存储了用于对象a的奇偶校验数据,存储系统600更新经处理的数据结束偏移指示符640的值。在一些实施方式中,存储系统600将经处理的数据结束偏移指示符640的值递增对象a的大小。因此,在图6的示例中,存储系统600将经处理的数据结束偏移指示符600的值设置为1mb。

在时间t2,存储系统600确定写入对象b。在图6的示例中,对象b具有3mb的大小。例如,对象b作为图1和图2中所示的小对象,因为对象b的大小与数据块大小614具有相同的数量级。在一些实施方式中,存储系统600将1mb的对象b写入第一数据块612-1中,并且将对象b的剩余2mb写入第二数据块612-2中。在各种实施方式中,存储系统600合成用于对象b的奇偶校验数据,并将用于对象b的奇偶校验数据写入第一奇偶校验块622-1中。在时间t2,第一奇偶校验块622-1包括用于对象a和对象b的奇偶校验数据。存储系统600将经处理的数据结束偏移指示符640递增对象b的大小。因此,在写入用于对象b的奇偶校验数据之后,将经处理的数据结束偏移指示符640设置为4mb。

在时间t3,存储系统600确定写入对象c。在图6的示例中,对象c具有2mb的大小。在一些实施方式中,存储系统600将对象c写入第三数据块612-3中。此外,在各种实施方式中,存储系统600合成用于对象c的奇偶校验数据,并将奇偶校验数据写入第二奇偶校验块622-2。此外,在一些实施方式中,存储系统600将经处理的数据结束偏移指示符640递增对象c的大小。因此,在写入用于对象c的奇偶校验数据之后,将经处理的数据结束偏移指示符640设置为6mb。如经处理的数据结束偏移指示符640所示,在时间t3,存储系统600存储6mb的对象数据,但是仅存储4mb的奇偶校验数据。

在时间t4,存储系统600确定写入对象d。在图6的示例中,对象d具有2mb的大小。在一些实施方式中,存储系统600将对象d写入第四数据块612-4中。在各种实施方式中,存储系统600合成用于对象d的奇偶校验数据,并将奇偶校验数据写入第二奇偶校验块622-2。此外,存储系统600将经处理的数据结束偏移指示符640递增对象d的大小。因此,在写入用于对象d的奇偶校验数据之后,将经处理的数据结束偏移指示符640设置为8mb。如所例示的,在写入用于对象d的奇偶校验数据之后,存储系统600存储8mb的对象数据和4mb的奇偶校验数据。

在图6的示例中,奇偶校验数据的量在时间t3和t4保持在4mb不变。换句话说,在对象d被写入存储系统600中之前和之后紧接着的奇偶校验数据的量保持在4mb不变。因此,在一些实施方式中,在没有经处理的数据结束偏移指示符640的情况下,存储系统600无法判断存储在第二奇偶校验块622-2中的奇偶校验数据是否包括用于对象d的有效数据。然而,在各种实施方式中,存储系统640基于经处理的数据结束偏移指示符640来判断第二奇偶校验块622-2是否包括用于对象d的有效数据。在图6的示例中,如果经处理的数据结束偏移指示符640的值为6mb,则存储系统600确定第二奇偶校验块622-2包括用于对象c而非对象d的有效数据。然而,如果经处理的数据结束偏移指示符640的值为8mb,则存储系统600确定第二奇偶校验块622-2包括用于对象c和对象d的有效数据。因此,在图6的示例中,如果经处理的数据结束偏移指示符640的值为8mb,则存储系统600能够在检测到在第四数据块612-4处丢失数据时恢复对象d。

图7是示出根据一些实施方式的小对象正被写入存储系统700的示图。在各种实施方式中,存储系统700类似于图1和图2中所例示的存储系统100。例如,在各种实施方式中,存储系统700包括第一数据存储实体710-1、第二数据存储实体710-2、和奇偶校验存储实体720。在一些实施方式中,数据存储实体710包括特定数据块大小714的数据块712。在图7的示例中,数据块大小714是2mb。类似地,在各种实施方式中,奇偶校验存储实体720包括特定奇偶校验块大小724的奇偶校验块722。在图7的示例中,奇偶校验块大小724是2mb。在图7的示例中,数据块大小714和奇偶校验块大小724是相等的。然而,在一些实施方式中,数据块大小714和奇偶校验块大小724是不同的。

在时间t10,存储系统700确定写入对象w。例如,在一些实施方式中,存储系统700从客户端设备接收存储对象w的请求。在图7的示例中,对象w具有2mb的大小。例如,因为对象w的大小与数据块大小714具有相同的数量级,所以对象w作为图1和图2中所示的小对象150。在各种实施方式中,存储系统700将对象w写入第一数据块712-1中。由于对象w的大小等于数据块大小714,所以对象w占用整个第一数据块712-1。

在各种实施方式中,存储系统700合成用于对象w的奇偶校验数据,并将奇偶校验数据写入第一奇偶校验块722-1中。如图7中所示,对象w的大小是2mb,并且用于对象w的奇偶校验数据占用第一奇偶校验块722-1中可用的整个2mb存储空间。一旦存储用于对象w的奇偶校验数据,存储系统700更新经处理的数据结束偏移指示符740的值。在一些实施方式中,存储系统700将经处理的数据结束偏移指示符740的值增加对象w的大小。因此,在图7的示例中,存储系统700将经处理的数据结束偏移指示符700的值递增2mb。

在时间t11,存储系统700确定写入对象x。例如,在一些实施方式中,存储系统700从客户端设备接收存储对象x的请求。在图7的示例中,对象x具有100kb的大小。例如,因为对象x的大小小小于数据块大小714,所以对象x作为图1和图2中所示的小对象150。在各种实施方式中,由于第一数据块712-1已满,所以存储系统700将对象x写入第二数据块712-2中。由于对象x的大小远小于数据块大小714,所以对象x仅占用第二数据块712-2的一部分。

在各种实施方式中,存储系统700合成用于对象x的奇偶校验数据,并将奇偶校验数据写入第一奇偶校验块722-1中。如图7中所示,尽管对象w和x的总大小是2.1mb,但是在一些实施方式中,用于对象w和x的奇偶校验数据只占用2mb的存储空间。一旦存储用于对象x的奇偶校验数据,存储系统700更新经处理的数据结束偏移指示符740的值。在一些实施方式中,存储系统700将经处理的数据结束偏移指示符740的值递增对象x的大小。因此,在图7的示例中,存储系统700将经处理的数据结束偏移指示符700的值递增100kb。

在时间t12,存储系统700确定写入对象y。在图7的示例中,对象y具有30kb的大小。与对象x类似,对象y也作为图1和图2中所示的小对象150,例如,因为对象y的大小小小于数据块大小714。存储系统700将对象y写入第二数据块712-2中。存储系统700合成用于对象y的奇偶校验数据,并将用于对象y的奇偶校验数据写入第一奇偶校验块722-1。因此,在时间t12,第一奇偶校验块722-1包括用于对象w、x和y的奇偶校验数据。存储系统700将经处理的数据结束偏移指示符740递增对象y的大小。因此,在该示例中,在写入用于对象y的奇偶校验数据之后,经处理的数据结束偏移指示符740被设置为2.13mb。

在时间t13,存储系统700确定写入对象z。在图7的示例中,对象z具有120kb的大小。存储系统700将对象z写入第二数据块712-2中。此外,存储系统700合成用于对象z的奇偶校验数据,并将奇偶校验数据写入第一奇偶校验块722-1中。此外,存储系统700将经处理的数据结束偏移指示符740递增对象z的大小,因此,在写入用于对象z的奇偶校验数据之后,经处理的数据结束偏移指示符740被设置为2.25mb。值得注意的是,如经处理的数据结束偏移指示符740所指示的,存储系统700存储2.25mb的对象数据,但只存储2mb的奇偶校验数据。

在图7的示例中,奇偶校验数据的量在时间t11和t12保持在2mb不变。换句话说,在对象y被写入存储系统700中之前和之后紧接着的奇偶校验数据的量保持在2mb不变。因此,在各种实施方式中,在没有经处理的数据结束偏移指示符740的情况下,存储系统700无法判断存储在第一奇偶校验块722-1中的奇偶校验数据是否包括用于对象y的有效数据。然而,在各种实施方式中,存储系统700基于经处理的数据结束偏移指示符740的值来判断第一奇偶校验块722-1是否包括用于对象y的有效数据。在图7的示例中,如果经处理的数据结束偏移指示符740的值为2.1mb,则存储系统700确定第一奇偶校验块722-1包括用于对象w和x而非对象y的有效数据。然而,如果经处理的数据结束偏移指示符740的值为2.13mb,则存储系统700确定第一奇偶校验块722-1包括用于对象w、x和y的有效数据。因此,在该示例中,如果经处理的数据结束偏移指示符740的值为2.13mb,则存储系统700能够在检测到在第二数据块712-2处丢失数据时恢复对象y。

类似地,奇偶校验数据的量在时间t12和t13保持在2mb不变。换句话说,在对象z被写入存储系统700之前和之后紧接着的奇偶校验数据的量保持在2mb不变。因此,在一些实施方式中,在没有经处理的数据结束偏移指示符740的情况下,存储系统700无法判断存储在第一奇偶校验块722-1中的奇偶校验数据是否包括用于对象z的有效数据。然而,在各种实施方式中,存储系统700基于经处理的数据结束偏移指示符740的值来判断第一奇偶校验块722-1是否包括用于对象z的有效数据。在图7的示例中,如果经处理的数据结束偏移指示符740的值为2.13mb,则存储系统700确定第一奇偶校验块722-1包括用于对象w、x和y而非对象z的有效数据。然而,如果经处理的数据结束偏移指示符740的值为2.25mb,然后存储系统700确定第一奇偶校验块722-1包括用于对象w、x、y和z的有效数据。因此,在该示例中,如果经处理的数据结束偏移指示符740的值为2.25mb,则存储系统700能够在检测到在第二数据块712-2处丢失数据时恢复对象z。

图8是根据一些实施方式的服务器系统800的框图,该服务器系统是用存储系统(例如,图1和图2中所示的存储系统100)的一个或多个组件实现的。虽然示出了某些特定特征,但是本领域普通技术人员将从本公开中理解,为了简洁起见,并未示出各种其他特征,以免模糊本文公开的实施方式的更相关方面。为此,作为非限制性示例,在一些实施方式中,服务器系统800包括一个或多个处理单元(cpu)802、网络接口803、存储器810、编程接口808、和用于互连这些组件和各种其他组件的一个或多个通信总线804。

在一些实施方式中,网络接口803被提供用于,除其他用途外,在云托管网络管理系统与包括一个或多个兼容设备的至少一个专用网络之间建立和维护元数据通道。在一些实施方式中,通信总线804包括互连和控制系统组件之间的通信的电路。存储器810包括高速随机存取存储器,例如dram、sram、ddrram或其他随机存取固态存储器设备,并且可以包括非易失性存储器,例如一个或多个磁盘存储设备、光盘存储设备、闪速存储器设备、或其他非易失性固态存储设备。存储器810可选地包括位于(一个或多个)cpu802远处的一个或多个存储设备。存储器810包括非暂态计算机可读存储介质。

在一些实施方式中,存储器810或存储器810的非暂态计算机可读存储介质存储以下程序、模块和数据结构或其子集,包括:可选的操作系统830、写入模块832、恢复模块834、删除模块836、压缩模块837、和数据库838。在各种实施方式中,写入模块832、恢复模块834、删除模块836、压缩模块837、和数据库838分别类似于如图2中所示的写入模块132、恢复模块134、删除模块136、压缩模块137和数据库138。在各种实施方式中,数据库838存储经处理的数据结束偏移指示符840(例如,图1中所示的经处理的数据结束偏移指示符140)和对象名称842(例如,图1中所示的对象名称142)。

操作系统830包括用于处理各种基本系统服务和用于执行与硬件相关的任务的程序。

在一些实施方式中,写入模块832被配置为将小对象写入聚合对象中。例如,如图1和图2中所示,写入模块832将小对象150写入聚合对象170中。在各种实施方式中,写入模块832还为合成用于小对象的奇偶校验数据,并将奇偶校验数据写入与聚合对象相关联的奇偶校验块中。一旦写入用于小对象的奇偶校验数据,写入模块832更新经处理的数据结束偏移指示符840。例如,在各种实施方式中,写入模块832将经处理的数据结束偏移指示符840递增小对象的大小。在一些实施方式中,写入模块832执行图3a中所示的方法300和/或图3b中所示的方法300a。为此,在各种实施方式中,写入模块832包括指令和/或逻辑832a、以及启发式和元数据832b。

在各种实施方式中,恢复模块834被配置为恢复小对象(例如,图1和图2中所示的小对象150)。在一些实施方式中,恢复模块834检测到对象数据中与小对象相关联的至少一部分已经丢失。在一些实施方式中,恢复模块834基于剩余的对象数据和/或与小对象相关联的奇偶校验数据来恢复小对象。在各种实施方式中,如果经处理的数据结束偏移指示符840指示用于聚合对象的奇偶校验数据包括用于小对象的有效数据,则恢复模块834基于奇偶校验数据恢复小对象。例如,在一些实施方式中,恢复模块834执行图4a中所示的方法400,和/或图4b中所示的方法420。为此,在各种实施方式中,恢复模块834包括指令和/或逻辑834a、以及启发式和元数据834b。

在各种实施方式中,删除模块836被配置为从存储系统(例如,聚合对象)删除对象(例如,小对象)。在一些实施方式中,删除模块836将该对象的名称从数据库838中删除,并将与该对象相关联的数据块标记为无效。删除模块836使用任何适当的(一种或多种)技术将数据块标记为无效。在一些实施方式中,删除模块836执行图5a中所示的方法500。为此,在各种实施方式中,删除模块836包括指令和/或逻辑836a、以及启发式和元数据836b。

在各种实施方式中,压缩模块837被配置为执行对聚合对象的压缩。在一些实施方式中,当无效数据块的数量/百分比超过阈值时,压缩模块837执行压缩。更一般地,在一些实施方式中,当聚合对象看起来稀疏时,压缩模块837压缩聚合对象。例如,在一些实施方式中,当聚合对象的稀疏等级大于阈值时,压缩模块837压缩聚合对象。在一些实施方式中,压缩模块837通过实例化新的聚合对象以及将有效数据块从聚合对象迁移到该新的聚合对象来执行对聚合对象的压缩。在各种实施方式中,压缩模块837执行图5b中所示的方法550。为此,在各种实施方式中,压缩模块837包括指令和/或逻辑837a、以及启发式和元数据837b。

总之,本文公开的各种实施方式提供了能够存储小对象的容错企业对象存储系统。在各种实施方式中,容错企业对象存储系统将小对象写入分布在多个存储实体上的聚合对象。在一些实施方式中,小对象至少比聚合对象小一个数量级,并且小对象在存储实体的每一者中可寻址的块单元的相同数量级内。在一些实施方式中,响应于将小对象写入聚合对象中,存储系统基于小对象来更新与聚合对象相关联的奇偶校验数据。在各种实施方式中,存储系统更新经处理的数据结束偏移指示符,其指示用于聚合对象的奇偶校验数据包括直至小对象并包括小对象的有效数据。

虽然上文描述了在所附权利要求范围内的实施方式的各个方面,但应当清楚的是,上述实施方式的各种特征可以以各种形式体现,并且上述任何特定结构和/或功能都仅仅是说明性的。基于本公开,本领域技术人员应当理解,本文所述的方面可以独立于任何其他方面来实施,并且可以以各种方式组合这些方面中的两个或更多个。例如,可以使用本文阐述的任何数量的方面来实施装置和/或实践方法。此外,除了本文阐述的方面中的一个或多个之外,可以使用其他结构和/或功能来实践这种装置和/或实践这种方法。

还应当理解,尽管术语“第一”、“第二”等在本文中用于描述各种元素,但是这些元素不应受到这些术语的限制。这些术语仅用于区分一个元素与另一个元素。例如,第一接触可以被称为第二接触,并且类似地,第二接触可以被称为第一接触,这改变了描述的含义,只要“第一接触”的所有出现被一致地重命名并且第二接触的所有出现被一致地重命名。第一接触和第二接触都是接触,但是它们不是相同的接触。

本文中使用的术语仅用于描述特定实施例,并且不旨在限制权利要求。如在实施例和所附权利要求的描述中所使用的,除非上下文明确指出,否则单数形式“一”、“一个”和“所述”也旨在包括复数形式。还应理解,本文所使用的术语“和/或”指代并包含一个或多个关联列表项的任何和所有可能的组合。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整数、步骤、操作、元素和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组的存在。

如本文所使用的,术语“如果”可以被解释为“在……的情况下”或“在……时”或“响应于确定……”或“根据确定”或“响应于检测到……”,所述条件先例为真,这取决于上下文。类似地,短语“如果确定[陈述的条件先例为真]”或“如果[陈述的条件先例为真]”或“在[陈述的条件先例为真]时”可以被解释为“在确定……时”或“响应于确定”或“根据确定”或“在检测到……时”或“响应于检测到……”,所述条件先例为真,这取决于上下文。

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