首页> 中国专利> 归档数据存储系统

归档数据存储系统

摘要

本发明提供一种允许客户存储、检索和删除归档数据对象以及其它操作的具成本效益的、耐久的且可扩展的归档数据存储系统。对于数据存储,在实施方案中,所述系统将数据存储在瞬态数据存储区中且提供可以供后续请求使用的数据对象识别符。对于数据检索,在实施方案中,所述系统创建对应于所述数据检索的作业且提供与所述创建的作业相关的作业识别符。一旦执行所述作业,那么将检索的数据提供在瞬态数据存储区中以使客户能够进行下载。在各个实施方案中,使用诸如负载平衡、批量处理和划分的各种优化技术来调度和执行与存储、检索和删除相关的作业。数据能够进行冗余编码并存储在自描述存储实体中,以增大可靠度同时降低存储成本。数据完整性是通过沿数据路径进行完整性检查而得以确保。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-12

    授权

    授权

  • 2015-05-27

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20130806

    实质审查的生效

  • 2015-05-06

    公开

    公开

说明书

相关申请交叉参考

本申请要求2013年8月8日提交的标题为“DATA STORAGEPOWER MANAGEMENT”的第13/569,591号美国专利申请(代理人案号90204-841816(054900US));2013年8月8日提交的标题为“DATA STORAGE INTEGRITY VALIDATION”的第13/570,151号美国专利申请(代理人案号90204-841810(054600US))和2013年8月8日提交的标题为“ARCHIVAL DATA STORAGE SYSTEM”的第13/570,088号美国申请(代理人案号90204-841806(054000US))的优先权和利益。本申请针对所有目的依引用方式并入下列专利申请的详尽公开内容:与其同时提交的标题为“LOG-BASED DATA STORAGEON SEQUENTIALLY WRITTEN MEDIA”的第13/569,984号共同未决美国专利申请(代理人案号90204-841804(054800US))、与其同时提交的标题为“DATA STORAGE MANAGEMENT FORSEQUENTIALLY WRITTEN MEDIA”的第13/570,057号共同未决美国专利申请(代理人案号90204-841817(055300US))、与其同时提交的标题为“DATA WRITE CACHING FOR SEQUENTIALLYWRITTEN MEDIA”的第13/570,005号共同未决美国专利申请(代理人案号90204-841812(055000US))、与其同时提交的标题为“PROGRAMMABLE CHECKSUM CALCULATIONS ON DATASTORAGE DEVICES”的第13/570,030号共同未决美国专利申请(代理人案号90204-841813(055200US))、与其同时提交的标题为“ARCHIVAL DATA IDENTIFICATION”的第13/569,994号共同未决美国专利申请(代理人案号90204-841807(054300US))、与其同时提交的标题为“ARCHIVAL DATA ORGANIZATION ANDMANAGEMENT”的第13/570,029号共同未决美国专利申请(代理人案号90204-841808(054400US))、与其同时提交的标题为“ARCHIVALDATA FLOW MANAGEMENT”的第13/570,092号共同未决美国专利申请(代理人案号90204-841809(054500US))、与其同时提交的标题为“DATA STORAGE INVENTORY INDEXING”的第13/569,665号共同未决美国专利申请(代理人案号90204-841811(054700US))、与其同时提交的标题为“DATA STORAGE SPACE MANAGEMENT”的第13/569,714号共同未决美国专利申请(代理人案号90204-846202(056100US))、与其同时提交的标题为“DATA STORAGEAPPLICATION PROGRAMMING INTERFACE”的第13/570,074号共同未决美国专利申请(代理人案号90204-846378(056200US))。

背景

随着信息数字化的递增,对耐久的且可靠的归档数据存储服务的需求也在递增。归档数据可以包括由政府、企业、图书馆等维持的归档记录、备份文件、媒体文件等。归档数据存储已带来一些挑战。例如,使用许多常规技术存储潜在的大量数据可造成成本过高。此外,通常期望归档数据存储的耐久度和可靠度相对较高,其进而增大存储数据所需的资源量,从而增大开支。常规技术(诸如磁带)在传统上因为低成本而用于数据备份系统。然而,基于磁带的系统和其它存储系统通常无法充分利用增强数据存储系统的安全性、可靠度和可扩展性的存储技术(诸如数据压缩、错误校正等)的进步。

附图简述

将参考附图描述根据本公开的各个实施方案,其中:

图1示出根据至少一个实施方案的在客户与归档数据存储服务之间的通信的示例性序列。

图2示出根据至少一个实施方案的可以实施归档数据存储服务的示例性环境。

图3示出根据至少一个实施方案的可以连接归档数据存储系统的组件的互连网络。

图4示出根据至少一个实施方案的可以连接归档数据存储系统的组件的互连网络。

图5示出根据至少一个实施方案的用于存储数据的示例性过程。

图6示出根据至少一个实施方案的用于检索数据的示例性过程。

图7示出根据至少一个实施方案的用于删除数据的示例性过程。

图8示出根据至少一个实例的用于描述本文中所描述的数据完整性证实的实施方式的示例性流程。

图9-10示出根据至少一些实例的用于描述本文所描述的数据完整性证实的至少一些特征的方框图。

图11-13示出根据至少一些实例的用于实施本文中所描述的数据完整性证实的至少一些特征的一个或多个过程的示例性流程图。

图14示出用于实施数据存储电力管理且包括被配置来管理硬盘驱动器的操作的归档数据存储系统的示例性架构。

图15示出用于实施数据存储电力管理且包括被配置来管理硬盘驱动器的操作的归档数据存储系统的额外示例性架构。

图16-18示出根据至少几个实例的用于实施本文中所描述的数据存储驱动电力管理的至少一些特征的过程的示例性流程图。

图19示出可实施各个实施方案的环境。

发明详述

在下文描述中,将描述各个实施方案。出于说明目的,陈述具体配置和详情以便透彻理解实施方案。然而,所属技术领域熟练人员还将明白在无具体详情的情况下,可以实行实施方案。此外,可以省略或简化熟知特征以免使所描述的实施方案难以理解。

本文中所描述和所建议的技术包括用于提供具成本效益的、可靠的且可扩展的归档数据存储服务的方法和系统。在实施方案中,归档数据存储系统允许客户使用编程用户界面来存储、检索和删除归档数据对象以及执行元数据和配置操作。

在实施方案中,归档数据存储服务进行操作,使得从服务用户(个人用户或自动用户)的角度来看,数据存储和删除操作似乎是依同步方式进行处理,同时数据检索和某些元数据操作似乎要花更长时间来完成。在实施方案中,当客户请求将数据对象存储在归档数据存储系统中时,系统响应于客户请求而向客户提供数据对象识别符。数据对象识别符可以在后续请求中用来检索、删除或依其它方式参考存储的数据对象。在一些实施方案中,数据对象立即存储在本文中所描述的归档数据存储装置中。在其它实施方案中,数据对象存储在瞬态数据存储区中。如本文中所使用,瞬态数据存储区可与暂时数据存储区或分级数据存储区交换地用来指代用来进行下列动作的数据存储区:在数据对象存储在本文中所描述的归档数据存储装置中之前存储数据对象或用来存储从归档数据存储装置检索的数据对象。瞬态数据存储区可以提供易失性或非易失性(耐久的)存储。在多数实施方案中,虽然可能用于持久性地存储数据,但瞬态数据存储区意在存储数据达短于本文中所描述的归档数据存储系统的时间周期,且可以不比所述数据归档存储系统更具成本效益。在数据存储在瞬态数据存储区中的情况下,可以创建数据存储作业以将数据对象最终存储到归档数据存储系统。接着,在将数据对象识别符提供到客户之后,可以处理数据存储作业中的至少某个。如本文中所使用,“作业”指代对应于客户请求且可以在处理所述请求或提供响应之后执行的数据相关活动。

在实施方案中,当客户请求从归档数据存储系统检索数据对象时,所述系统创建与客户请求相关的数据检索作业且向客户提供作业识别符。在实施方案中,所述请求指定诸如上文所描述在先前存储将检索的数据对象时由系统发布的所述数据对象的数据对象识别符。在提供作业识别符之后,系统可以处理系统中的数据检索作业连同其它作业以便从批处理技术的效率和其它优点获益。客户可以通过从系统接收通知、向系统询问作业识别符等而获悉作业状态,且一旦作业完成那么从指定的瞬态数据存储区下载检索的数据。在实施方案中,某些元数据操作是依相似方式进行处理。

在实施方案中,当客户请求从归档数据存储系统删除数据对象时,系统向客户提供删除确认。在一些实施方案中,立即删除数据对象。在其它实施方案中,在提供删除确认之后(可能在提供确认之后的几天或甚至更长时间),系统创建与客户请求相关的数据删除作业且处理数据删除作业。在一些实施方案中,系统允许一段宽限期以供客户取消、撤销或依其它方式恢复数据对象。

在实施方案中,归档数据存储系统包括处理客户请求和执行诸如认证、授权、使用计量、计帐和计费等功能的前端子系统。此外,前端子系统还可以处理进出归档数据存储系统的批量数据传送。

在实施方案中,归档数据存储系统包括提供用于传入(对于数据存储)和传出(对于数据检索)有效负载数据的瞬态耐久存储或分级区域的直接I/O控制平面。此外,直接I/O控制平面可以提供用于创建、提交和监控与客户请求相关的作业的执行的服务。

在实施方案中,归档数据存储系统包括提供基于队列的负载均衡服务以将峰值抑制到尤其进入归档数据存储系统的平均负载的共同控制平面。在实施方案中,共同控制平面还提供用于作业执行且可以被(下文所描述的)数据平面中的服务用来执行作业规划优化、检查点设置、恢复等的耐久且高效的瞬态存储区。

在实施方案中,归档数据存储系统包括提供涉及长期归档数据存储、检索和删除、数据管理和放置、反熵操作等的服务的数据平面。在实施方案中,数据平面包括多个存储实体,包括存储装置(诸如硬盘驱动器)、存储节点、服务器等。在各个实施方案中,设计存储实体以提供高存储容量和低操作成本。例如,数据平面可以包括具有用来提供增大的硬盘驱动器容量的叠瓦式磁记录(SMR)技术的硬盘驱动器。作为另一实例,电力管理调度可以用来控制哪些硬盘驱动器是在某个给出时间运行以节省与硬件装置相关的电力成本和制冷成本。此外,数据平面还可以提供反熵操作以检测熵效应(例如,硬件故障、数据丢失)和开始反熵例程。

在实施方案中,归档数据存储系统包括出于库存和计帐目的、客户元数据查询、反熵处理等提供关于存储在系统中的数据对象的信息的元数据平面。特定来说,元数据平面可以基于作业完成记录生成冷索引(即,很少更新的索引)。在各个实施方案中,设计元数据平面服务以使用诸如批量处理的技术来产生最小成本开销。

在各个实施方案中,本文中所描述的归档数据存储系统被实施成高效且可扩展。例如,在实施方案中,批量处理和请求合并在各个阶段(例如,前端请求处理、控制平面作业请求处理、数据平面数据请求处理)用来提高效率。对于另一实例,在实施方案中,划分元数据(诸如作业、请求等)的处理以便促进由多个服务实例进行分区的并行处理。

在实施方案中,存储在归档数据存储系统中的数据元素(诸如下文所描述的数据成分、卷等)是自描述的以免对全局索引数据结构的需要。例如,在实施方案中,存储在系统中的数据对象可以通过编码存储位置信息的数据对象识别符来寻址。对于另一实例,在实施方案中,卷可以存储关于哪些数据对象存储在所述卷中的信息以及存储这些卷的存储节点和装置可以共同地报告其库存和硬件信息以提供存储在系统中的数据的全局观点。在这个实施方案中,全局观点仅出于效率目的而提供且无需定位存储在系统中的数据。

在各个实施方案中,实施本文中所描述的归档数据存储系统以改进数据可靠度和耐久度。例如,在实施方案中,数据对象冗余编码成多个数据成分且跨不同数据存储实体存储以提供故障容限。对于另一实例,在实施方案中,数据元素具有多级完整性检查。在实施方案中,父/子关系始终具有用来确保完全的参考完整性的额外信息。例如,在实施方案中,批量数据传输和存储路径是通过在传输之前使发起者对数据预先计算摘要且随后将摘要与数据供应到接收器而受保护。数据传输的接收器负责重新计算、比较且接着向发送器确认包括重新计算的摘要。这些数据完整性检查可以例如由下文结合图2所描述的前端服务、瞬态数据存储服务、数据平面存储实体等来实施。

本公开的实施方案尤其涉及证实或依其它方式验证意在用于存储的数据有效负载或数据有效负载部分的完整性。在一些实例中,归档数据存储服务可以被配置来接收将数据(在一些情况中大量数据)存储在逻辑数据容器或其它归档存储装置中达变化的且通常相对较长的时间周期的请求。在一些实例中,归档数据存储服务可以操作或依其它方式利用许多不同存储装置。例如,归档存储服务可以包括在操作时利用自旋磁介质的一个或多个磁盘驱动器。此外,归档数据存储服务可以包括定位在一个或多个地理位置(例如,可能与不同邮政编码相关)中的一个或多个机柜。每个机柜还可以包括一个或多个或甚至几百个硬盘驱动器,诸如但不限于磁盘驱动器等。

在一些方面中,归档数据存储服务可以通过服务(诸如但不限于网页服务、远程程序执行服务或其它基于网络的数据管理服务)提供一个或多个计算资源的存储、访问和/或放置。例如,用户、客户端实体、计算资源或其它计算装置可以经由归档数据存储服务、数据存储和/或管理进行访问,使得可以实施访问机制和/或将其提供到用户或计算装置。在一些实例中,计算资源服务(诸如由归档数据存储服务提供的计算资源服务)可以包括可通过用户界面(UI)、应用编程界面(API)和/或其它界面以跨一个或多个网络访问的一个或多个计算资源,其中在需要时一个或多个计算资源可扩展和/或易扩展。

在一些实例中,归档数据存储服务可以使用户或客户端实体(诸如但不限于利用归档数据存储服务的第三方服务或与归档数据存储服务相关的其它网页服务)能够更新数据用于可能长且持久的存储。除非上下文另有明确或清楚反驳,否则术语“用户”在本文中用来描述利用归档数据存储服务的任何实体。归档数据存储服务还可以希望确保归档数据的完整性和/或保证归档数据的完整性。为实现这些目的,在一些实例中,一旦数据上传,那么归档数据存储服务可以提供用于识别数据的数据对象识别符。在一些情况中,数据对象识别符还可以包括用于甚至在某段延长时间周期之后证实归档数据的顶级树摘要。此外,数据对象识别符还可以依使得还可以证实其完整性的方式进行配置。

归档数据存储服务可以被配置来对将存储的数据执行操作,使得数据分解成部件、部分或其它标定分组。一旦分离成部件,那么归档数据存储服务可以对部件执行一个或多个加密函数和/或算法(包括但不限于散列函数或其它密码学或其它方法)以产生摘要(还被称为散列值、散列码、检查和等)。在一些实例中,可以证实数据使得归档存储服务可确保存储的数据匹配接收的数据。依此方式,可以验证数据完整性。此外,数据的发送器可能独自确定数据分块大小(即,有效负载的部件的大小)且不被请求维持或存留这个信息。例如,用户或客户端实体可以请求依2兆字节(MB)部分(分块)上传1千兆字节(GB)文件。且在不保留或依其它方式存留使用2MB分块的事实的情况下,仍可以证实数据有效负载。即,至少部分地基于生成一个或多个摘要、检查和、散列码等,对于有效负载的分块和至少一个摘要(在一些实例中至少部分地基于摘要组合),数据随后可以划分成不同大小的分块而不丧失证实能力。

在一些方面中,这可以通过将指示应划分和/或散列数据的方式的指令或算法提供到用户或客户端实体来完成。此外,在一些情况中,归档存储服务可以揭示或依其它方式提供一个或多个API方法调用和/或软件开发包(SDK)以使用户能够适当地依分块上传数据且促进请求的操作次序和/或适当检查和信息的包括。例如,可以请求用户选择至少1MB的分块大小或某个其它预定义大小用于更新数据。如本文中所使用,由用户或客户端实体更新和/或由归档数据存储服务存储的数据可以被称为有效负载。此外,用户可以选择或依其它方式指导归档数据存储服务将有效负载划分成包括1MB的二的幂(例如,1MB、2MB、4MB、8MB、16MB等)的大小。在其它实例中,有效负载可以划分成包括预定义大小(例如,1MB)的其它倍数的大小。其它倍数可以至少部分地基于用来表示数据的树的子的叉度。例如,如果使用二叉树,那么整数倍可以包括二的整数次幂,如果使用三叉树,那么整数倍可以是三的整数次幂,如果使用四叉树(即,每个节点具有四子),那么整数倍可以包括四的整数次幂,依此类推。接着,用户可以遵循用于每次划分生成一个或多个散列树(例如,当划分有效负载时每个部件一个散列树)和/或一个或多个散列值的算法。此外,对于每个1MB分块,用户可以生成独立于选择的分区大小的散列值(或摘要)。在一些实例中,对应于1MB分区分块的这些摘要可以包括在分区的散列树中。此外,在一些实例中,每个分区的散列树的根节点可以连同分区的每个1MB子部件的摘要提供到归档数据存储服务。依此方式,每个子部件可以由归档数据存储服务至少部分地基于1MB摘要来证实,且每个分区可以由归档数据存储服务至少部分地基于每个部件的根摘要来证实。此外,可以由归档数据存储服务至少部分地基于比较接收的最终根散列与由归档数据存储服务确定的顶级散列值而使用与部件的每个根散列中的散列相关的最终根散列。

在至少一个实例中,生成散列树或其它阶层式数据结构(例如,其它类型的二叉树(诸如但不限于B树)和/或其它类型的数据结构(诸如但不限于阵列、记录等))可以包括串联摘要和对串联的摘要运行散列函数。例如,在二叉散列树中,根节点可以具有每个由一个散列值表示的二子。在一些情况中,生成根散列值可以至少部分地基于串联两个子散列值以形成新数据片和进而对新数据片运行散列函数。所得散列值可以表示根散列。因而,有效负载的每个分区可以具有其自身根散列,但其根散列可以用于计算有效负载的顶级散列。在一些实例中,还可能证实有效负载和/或有效负载的部分而不重新调用或依其它方式存留由用户选择的分区大小。

本公开的实施方案尤其涉及确定和/或实施一个或多个调度用于启用、操作、提供电力到或依其它方式控制存储服务的一个或多个存储装置。在一些实例中,存储服务可以是操作或依其它方式利用许多不同计算装置和/或存储装置的归档数据存储服务。例如,归档存储服务可以包括在操作时利用自旋磁介质的一个或多个磁盘驱动器。此外,归档数据存储服务可以包括定位在一个或多个地理位置(例如,可能与不同邮政编码相关)中的一个或多个机柜。每个机柜还可以包括一个或多个或甚至几百个硬盘驱动器,诸如但不限于磁盘驱动器等。此外,旋转硬盘驱动器的介质、操作驱动控制器和/或处理器等通常消耗相对较大量的电力且可是昂贵的。

在一些方面中,归档数据存储服务可以被配置来通过变更和/或管理硬盘驱动器电力消耗而最小化与存储服务相关的电力成本和/或制冷成本。仅举例来说,归档数据存储服务可以被配置来在某个给出时间控制可以具有积极自旋的介质的硬盘驱动器的数量。此外,在一些实例中,归档数据存储服务可以被配置来变更旋转速度而非接通或切断驱动器以节省电力。例如,一些驱动器可减慢,且旋转调度可实现使哪些驱动器旋转减慢和哪些驱动器在正常速度下运行。此外,在一些情况中,可以被配置来控制数据存储装置(诸如硬盘驱动器)的数据存储节点可以确定和/或控制哪些硬盘驱动器在运行和哪些硬盘驱动器不运行。如果硬盘驱动器正使其介质自旋、加电和/或掉电,那么其可以被认为在运行。例如,自旋硬盘驱动器可以包括磁盘正旋转的一个驱动器且头部可以使驱动器的位置磁化以在旋转时写入、读取或删除来自驱动器的数据。然而,在其它实例中,驱动器可能已被激活;但,其可能尚未完全旋转。在这个实例中,驱动器可能加电。或者,一旦驱动器已被激活,那么数据存储节点或其它控制器可以去激活驱动器;然而,其可能在驱动器不再自旋之前需花一些时间。这可以被认为掉电。因而,可能有几次驱动器是可操作但不运行的。此外,在一些实例中,激活数据存储装置可以包括将电力提供到当前未接收电力的装置或激活接收电力但处于睡眠模式的装置。因而,数据存储装置可以处于许多状态,包括但不限于关、开、睡眠、掉电或加电。

在一些方面中,数据存储节点可以被配置来确定旋转调度、提供旋转调度和/或激活和去激活存储装置。此外,存储节点可以向存储节点注册服务器、队列或其它库报告这个信息使得可以通知一个或多个存储节点管理器有关执行哪些写入、读取或删除作业。可能至少部分地基于通常将存在用来处理传入的写入请求并将其置于运行的任一个驱动器的足够容量的假设而在任何时间执行写入作业。然而,在一些实例中,存储节点管理器可以请求或或依其它方式被指导在特定驱动器中至少部分地基于其在运行时执行写入作业。在这种情况中,存储节点管理器可以在执行作业之前先从存储节点请求旋转调度或哪些驱动器在运行的至少一个指示。还可能至少部分地基于通常将存在用来依所期望速率处理写入请求的足够运行硬盘驱动器(即使一定数量的驱动器可以不运行)的假设而在任何时间执行写入作业。

在至少一个实例中,旋转调度可以至少部分地基于在相同时间运行的驱动器的百分比或数量。例如,归档存储服务可以确定在任何给出时间仅预定义百分比的驱动器应运行。因而,所有其它驱动器可以处于睡眠或其它低电力状态模式,同时预定义百分比的的驱动器可以运行。此外,至少部分地基于确定的百分比,总数量的驱动器可以分解成组。例如且不限于,如果归档存储服务确定20%驱动器应运行,那么受控制的驱动器集可以分解成五组。依此方式,当每个驱动器组运行时,预定义的20%驱动器将运行。其它80%驱动器可以处于睡眠或其它低电力模式。或者,在需要时,任何其它百分比可以用来计算驱动器组的对应数量(例如,25%将使分解成四组,10%将使分解成10组,50%将使分解成两组等)。此外,在一些方面中,组不一定相等以便容许不允许组之间的相等性的百分比(例如,11%将使分解成9个相等组和一个较小组)。或者,百分比可以四舍五入以容许组之间的相等性。此外,在一些实例中,一小时可以除以所得组数量以确定每组应运行多久。例如,仅出于说明目的使用20%实例,可以调度每组以使其运行达12分钟以容许每组每个小时运行至少一次。此外,为避免电力尖峰或耗尽,在一些实例中,可以对组内的驱动器循序地加电或在相同时间内至少不对所有驱动器加电。或者或此外,可以循序地对运行的组的每个驱动器掉电,同时循序地将激活的下一组的驱动器加电。

在其它实例中,对照百分比,旋转调度可以至少部分地基于在某个给出时间运行的驱动器的预定义数量。此外,旋转调度可以包括依一定速度或间隔沿理论或真实驱动器阵列移动的滑动窗口。可以激活定位在窗口内的驱动器,同时窗口外的驱动器可以处于低电力状态(其可以包括关闭或去激活)。在需要时,驱动器可以在时间线上至少部分地基于其实际位置和/或至少部分地基于某个逻辑映射进行分类。窗口可以被配置来跨越时间线。或者,可以设想滑动窗口内的激活驱动器的其它实例。旋转调度还可以至少部分地基于需求,包括但不限于峰值电力消耗时间(例如,至少部分地基于公共事业公司费用和/或预算)、客户需求、未决作业等。仅举例来说,一个方案可以包括至少部分地基于来自多个存储节点管理器的未决读取请求调度将运行的驱动器。在这个实例中,存储节点注册服务器可以被配置来选择应进入旋转以满足需求的驱动器的数量或百分比。一旦选择驱动器使其进入旋转,那么存储节点注册服务器还可以将已调度驱动器用于旋转的消息发送到存储节点。或者或此外,一旦注册服务器已包括适当的旋转驱动器,那么存储节点管理器可以通知存储节点。

图1示出根据至少一个实施方案的客户102与归档数据存储系统104之间的通信的示例性序列。示例性通信示出可以例如用来将归档数据对象存储到归档数据存储系统且随后从归档数据存储系统检索归档数据对象的请求和响应的序列。在各个实施方案中,所示通信序列可以在诸如下文所描述在图2中所示的环境200中发生。

在各个实施方案中,归档数据存储系统104可以对实体(诸如客户)提供用来与归档数据存储系统104通信的用户界面。在各个实施方案中,这个用户界面可以包括图形用户界面(GUI)、基于网页的界面、编程界面(诸如应用编程界面(API)和/或对应于界面元件的远程程序调用(RPC)集)、界面元件对应于通信协议消息的消息传递界面和/或其合适组合。例如,客户可以使用这个用户界面来存储、检索或删除数据以及获得元数据信息、配置各种操作参数等。在各个实施方案中,归档数据存储系统104可以包括诸如下面图2中所描述用于处理客户请求的前端服务。

在实施方案中,客户装置102(还被简称为“客户”)例如使用如上文所描述的API开始存储数据的请求106。存储请求106可以包括有效负载数据(诸如归档文件)和元数据(诸如有效负载数据的大小和摘要)、用户识别信息(例如,客户帐户识别符)、逻辑存储容器的识别符(结合图2所描述)等。在一些实施方案中,多个存储请求106可以用来请求大有效负载数据的上传,其中多个存储请求中的每个可以包括有效负载数据中的一部分。在其它实施方案中,存储请求106可以包括将上传的多个数据对象。

当接收存储请求106时,在实施方案中,归档数据存储系统104可以将数据存储108在分级存储区中。在一些实施方案中,仅有效负载数据存储在分级存储区中。在其它实施方案中,额外数据(诸如数据对象识别符)可以与有效负载数据存储在一起。在一个实施方案中,创建用于将存储在分级存储装置中的数据移动到如本文中所描述的归档数据存储装置的作业。如本文中所使用,“作业”指代对应于客户请求且可以独立于接收所述请求的时间暂时地执行的数据相关活动。例如,作业可以包括检索、存储和删除数据、检索元数据等。在各个实施方案中,作业可以通过例如在数据中心等内的针对特定客户的所有作业之间可为唯一的作业识别符来识别。可以处理这个作业以将数据对象存储114在归档数据存储装置中。在实施方案中,作业可以结合其它作业(诸如下文所论述的其它数据存储作业或检索作业)执行以优化系统的成本、响应时间、效率、操作性能和其它度量。例如,作业可以通过存储位置进行分类、合并、批量处理或依其它方式优化以改进吞吐量、降低电力消耗等。作为另一实例,可以(例如,通过客户、时间等)划分作业且可以由不同服务实例并行处理每个分区。

在实施方案中,归档数据存储系统104将确认数据存储的响应110发送到客户102(而不管数据是否仅存储在分级存储区中)。因此,从客户的角度来说,存储请求是依同步方式处理。在实施方案中,响应包括可以被后续客户请求用来检索、删除或依其它方式管理数据的数据对象识别符。在一些实施方案中,客户102可以将数据对象识别符存储112在客户端数据存储区、数据存储服务等中。例如,客户102可以维持使数据对象识别符与对应友善名称或全局唯一识别符(GUID)相关的映射。在其它实施方案中,存储请求可以被客户感知为依与下文结合检索请求所描述的方式相似的异步方式处理。

在一些实施方案中,数据对象识别符可以编码(例如,经由加密)可以用来定位存储的数据对象的存储位置信息、可以用来证实有效负载数据完整性的有效负载证实信息(诸如大小、时间戳记、摘要等)、可以用来证实元数据(诸如数据对象识别符自身)完整性的元数据证实信息(诸如错误检测码)、可以用来证实请求的访问的政策信息等。在其它实施方案中,数据对象识别符可以包括上述信息而不进行诸如加密的任何编码。

在实施方案中,客户102例如使用上文所描述的API开始检索存储在归档数据存储系统104中的数据的请求116。检索请求116可以指定与诸如上文所描述在响应110中提供的将检索的数据相关的数据对象识别符。当接收检索请求116时,在实施方案中,归档数据存储系统104创建118用来从本文中所描述的归档数据存储装置检索数据的检索作业。系统可以依与上文结合存储作业所描述的相似的方式创建这个检索作业。

在实施方案中,归档数据存储系统104对响应120提供检索作业的作业识别符。因此,从客户的角度来说,检索请求是依异步方式处理。在一些实施方案中,客户102将作业识别符存储122在客户端存储装置中且可以任选地使用作业识别符向归档数据存储系统询问或轮询检索作业的状态。

在实施方案中,归档数据存储系统104使用用来优化成本的技术(诸如批量处理)结合其它作业(例如,存储作业、检索作业、删除作业等)处理124检索作业。在处理检索作业之后,归档数据存储系统104将检索的数据存储126在与用于存储与上文所论述的存储请求相关的数据的分级存储区相似的分级存储区中。

在实施方案中,在例如于分级存储区中检索请求的数据之后,归档数据存储系统104将通知128提供到客户102。这些通知可以通过客户进行配置且可以包括与检索请求相关的作业识别符、数据对象识别符、至下载位置的路径、客户身份或根据实施的实施方案用来下载检索的数据的任何其它信息。在各个实施方案中,可以由可以是或可以不是归档数据存储系统的部件的通知服务提供这些通知。在其它实施方案中,客户102可以向归档数据存储系统询问或轮询关于作业状态的检索作业识别符。

在实施方案中,在获悉检索作业完成之后,客户102发送下载分级数据的下载请求130。在各个实施方案中,下载请求130可以提供通知中包括的信息,诸如作业识别符、数据对象识别符和其它识别信息,诸如将在实施的实施方案中用来下载分级数据的客户帐户识别符等。响应于下载请求130,归档数据存储系统104可以从分级存储区检索132分级的数据并在响应134中将检索的数据提供到客户102。

图2示出根据至少一个实施方案的可以实施归档数据存储系统的示例性环境200。一个或多个客户202经由网络204连接到归档数据存储系统206。如上文所暗示,除非上下文另有清楚所述,否则术语“客户”指代利用本文中所描述的数据存储服务的客户实体(诸如个人、公司或其它组织)的系统。这些系统可以包括数据中心、主机、个人计算装置、分布式计算环境和其客户可访问实例或能够与归档数据存储系统进行通信的任何其它系统。在一些实施方案中,客户可以指代由还提供归档数据存储系统的计算资源提供者提供的分布式计算系统的机器实例(例如,具有直接硬件访问)或虚拟实例。在一些实施方案中,归档数据存储系统与分布式计算系统成一体且可以包括分布式计算系统的实例(虚拟或机器)或由其实施。在各个实施方案中,网络204可以包括互联网、局域网(“LAN”)、广域网(“WAN”)、蜂窝数据网络和/或其它数据网络。

在实施方案中,归档数据存储系统206提供多租户或多客户环境,其中每个租户或客户可以存储、检索、删除或依其它方式管理分配给客户的数据存储空间中的数据。在一些实施方案中,归档数据存储系统206包括多个子系统或“平面”,每个提供特定服务或功能集。例如,如图2中所示,归档数据存储系统206包括前端208、直接I/O控制平面210、共同控制平面212、数据平面214和元数据平面216。每个子系统或平面可以包括共同地提供特定功能集的一个或多个组件。每个组件可以由一个或多个物理和/或逻辑计算装置(诸如计算机、数据存储装置等)来实施。每个子系统内的组件可以与相同子系统内的组件、其它子系统中的组件或外部实体(诸如客户)进行通信。这些交互中的至少一些是由图2中的箭头指示。特定来说,进出归档数据存储系统206的主要批量数据传送路径是由粗箭头表示。所属技术领域一般人员将明白各个实施方案可以具有少于或多于图2中所示的数量的系统、子系统和/或子组件。因此,图2中的环境200的描绘应被视为本质上是说明性的且不限于本公开的范围。

在说明性实施方案中,前端208实施在归档数据存储系统206与外部实体(诸如本文中所描述的一个或多个客户202)之间提供界面的服务组。在各个实施方案中,前端208提供用来使用户能够依编程方式与归档数据存储系统的各种特征、组件和功能连接的应用编程界面(“API”)。这些API可以是用户界面的部分,其可以包括图形用户界面(GUI)、基于网页的界面、编程界面(诸如应用编程界面(API)和/或对应于界面元件的远程程序调用(RPC)集)、界面元件对应于通信协议消息的消息传递界面和/或其合适组合。

由归档数据存储系统206提供的功能可以包括各种操作参数的数据存储、数据检索、数据删除、元数据操作、配置等。元数据操作可以包括检索针对特定客户存储的数据的目录的请求、数据恢复请求、作业查询等。配置API可以允许客户配置帐户信息、审计日志、政策、通知设置等。客户可以通过将API请求发送到归档数据存储系统而请求执行上述操作中的任一个。相似地,归档数据存储系统可以提供客户请求响应。这些请求和响应可以通过任何合适通信协议(诸如超文字传送协议(“HTTP”)、文件传送协议(“FTP”)等)依任何合适格式(诸如表述性状态转移(“REST”)、简单对象访问协议(“SOAP”)等)来提交。请求和响应可以例如使用Base64编码进行编码、运用加密密钥等加密。

在一些实施方案中,归档数据存储系统206允许客户创建存储一个或多个归档数据对象的一个或多个逻辑结构,诸如逻辑数据容器。如本文中所使用,数据对象广泛地被使用且不一定暗指关于其它数据的任何特定结构或关系。数据对象可以仅是例如位序列。通常,这些逻辑数据结构可以被创建来满足客户的某些业务要求且独立于存储在归档数据存储系统中的数据的物理组织。如本文中所使用,术语“逻辑数据容器”指代数据对象的分组。例如,出于具体目的或在具体时间周期期间创建的数据对象可以存储在相同逻辑数据容器中。每个逻辑数据容器可以包括嵌套的数据容器或数据对象且可以与政策集相关,诸如容器的大小限制、可以存储在容器中的数据对象的最大数量、截止日期、访问控制清单等。在各个实施方案中,可以由客户经由API请求、由系统管理员或由数据存储系统例如基于可配置信息创建、删除或依其它方式修改逻辑数据容器。在实施方案中,例如下述HTTP PUT请求可以用来创建具有与由帐户识别符“accountId”识别的客户相关的名称“logical-container-name”的逻辑数据容器。

PUT/{accountId)/logical-container-name HTTP/1.1

在实施方案中,归档数据存储系统206对客户提供API以将数据对象存储到逻辑数据容器中。例如,在说明性实施方案中,下述HTTPPOST请求可以用来将数据对象存储到给出逻辑容器中。在实施方案中,请求可以指定存储位置的逻辑路径、数据长度、对数据有效负载的参考、数据有效负载的数字摘要和其它信息。在一个实施方案中,API可以允许客户在一次请求中将多个数据对象上传到一个或多个逻辑数据容器。在数据对象为大数据对象的另一实施方案中,API可以允许客户依多个部件上传数据对象,每个部件具有数据对象中的一部分。

POST/{accountId}logical-container-name/data HTTP/1.1

Content-Length:1128192

x-ABC-data-description:"annual-result-2012.xls"

x-ABC-md5-tree-hash:634d9a0688aff95c

在实施方案中,响应于数据存储请求,如果成功地存储数据对象,那么归档数据存储系统206提供数据对象识别符。这个数据对象识别符可以在后续请求中用来检索、删除或依其它方式参考存储的数据对象。在一些实施方案中,这个数据对象识别符可以“自描述”是因为其包括(例如,在加密或不加密的情况下)可以被归档数据存储系统用来定位数据对象而无需额外数据结构(诸如全局命名空间密钥映射)的存储位置信息。此外,在一些实施方案中,数据对象识别符还可以编码可以用来证实后续请求和数据完整性的其它信息,诸如有效负载摘要、错误检测码、访问控制数据和其它信息。在一些实施方案中,归档数据存储系统在将传入数据移动到归档数据存储装置之前将其存储在瞬态耐久数据存储区中。因此,尽管客户可以感知在完成上传请求时的瞬间耐久地存留数据,但到长期存留数据存储区的实际存储可能直到一段时间之后(例如,12小时之后)才开始。在一些实施方案中,实际存储的时序可以取决于数据对象的大小、昼夜循环期间的系统负载、可配置信息(诸如客户与存储服务提供者之间的服务水平协议)和其它因素。

在一些实施方案中,归档数据存储系统206对客户提供API以检索存储在归档数据存储系统中的数据。在这些实施方案中,客户可以开始执行数据检索的作业且可以通过通知或通过向系统轮询作业状态而获悉作业完成与否。如本文中所使用,“作业”指代对应于客户请求且可以独立于接收所述请求的时间暂时地执行的数据相关活动。例如,作业可以包括检索、存储和删除数据、检索元数据等。作业可以通过例如在针对特定客户的所有作业之间可为唯一的作业识别符来识别。例如,在说明性实施方案中,下述HTTP POST请求可以用来开始检索通过数据对象识别符“dataObjectId”识别的数据对象的作业。在其它实施方案中,数据检索请求可以请求检索多个数据对象、与逻辑数据容器相关的数据对象等。

POST/{accountId}/logical-data-container-name/data/{dataObjectId}

HTTP/1.1

在实施方案中,响应于请求,归档数据存储系统206提供在下述响应中对作业指派的作业识别符job-id”。在这个实例中,响应提供到将存储检索的数据的存储位置的路径。

HTTP/1.1202ACCBPTED

Location:/{accountId}/logical-data-container-name/jobs/{job-id}

在任何给出时间点,归档数据存储系统可以具有因各种数据操作未决的许多作业。在一些实施方案中,归档数据存储系统可以采用作业规划和优化技术(诸如批量处理、负载平衡、作业合并等)以优化系统度量,诸如成本、性能、可扩展性等。在一些实施方案中,实际数据检索的时序取决于下述因素,诸如检索的数据的大小、系统负载和容量、存储装置的运行状态等。例如,在一些实施方案中,归档数据存储系统中的至少一些数据存储装置可以根据电力管理调度来激活或撤销激活以例如降低操作成本。因此,存储在当前运行的存储装置(诸如旋转的硬盘驱动器)中的数据的检索可以快于存储在当前不运行的存储装置(诸如消旋的硬盘驱动器)中的数据的检索。

在实施方案中,当数据检索作业完成时,将检索的数据存储在分级数据存储区中且使其可用于客户下载。在一些实施方案中,通过可配置通知服务向客户通知作业状态变更。在其它实施方案中,客户可以通过使用作业识别符向系统轮询而获悉作业状态。在实施方案中,下述HTTP GET请求可以用来使用先前已提供的下载路径下载由通过“job-id”识别的作业检索的数据。

GET/{accountId}/logical-data-container-name/jobs/{job-od}/output

HTTP/1.1

在说明性实施方案中,响应于GET请求,归档数据存储系统206可以在下述HTTP响应中提供检索的数据,其中所述数据的树散列用于证实目的。

HTTP/1.1 200OK

Content-Length:1128192

x-ABC-archive-description:"retrieved stuff"

x-ABC-md5-tree-hash:693d9a7838aff95c

[1112192 bytes of user data follows}

在实施方案中,客户可以通过指定与存储在归档数据存储系统中的数据对象相关的数据对象识别符而请求删除所述数据对象。例如,在说明性实施方案中,可以使用下述HTTP请求删除具有数据对象识别符“dataObjectId”的数据对象。在另一实施方案中,客户可以请求删除多个数据对象,诸如与特定逻辑数据容器相关的数据对象。

DELETE/{accountId}/logical-data-container-name/data/{dataObjectId}

HTTP/1.1

在各个实施方案中,数据对象可以响应于客户请求而删除或可以根据用户指定或默认的截止日期自动地删除。在一些实施方案中,数据对象可能在截止时间之后客户不可访问但在超过截止时间的宽限期期间可恢复。在各个实施方案中,宽限期可以基于可配置信息,诸如客户配置、服务水平协议条款等。在一些实施方案中,客户可以具备询问或接收未决数据删除的通知和/或取消未决数据删除中的一个或多个的能力。例如,在一个实施方案中,客户可以设置与逻辑数据容器相关的通知配置,使得客户将接收与逻辑数据容器相关的某些事件的通知。这些事件可以包括数据检索作业请求的完成、元数据请求的完成、数据对象或逻辑数据容器的删除等。

在实施方案中,归档数据存储系统206还提供元数据API用于检索和管理元数据,诸如与逻辑数据容器相关的元数据。在各个实施方案中,可以异步地(其中随后返回结果)或同步地(其中立即返回结果)处理这些请求。

仍参考图2,在实施方案中,上文所论述的API请求中的至少一些是由作为前端208的部件的API请求处理机218来处理。例如,API请求处理机218可以解码和/或解析传入API请求以提取信息(诸如统一资源识别符(“URI”)、请求的动作和相关参数、身份信息、数据对象识别符等)。此外,必要时API请求处理机218调用其它服务(下文所描述)以进一步处理API请求。

在实施方案中,前端208包括可以例如被API处理机218调用以认证API请求的认证服务220。例如,在一些实施方案中,认证服务220可以验证通过API请求提交的身份信息,诸如用户名称和密码、互联网协议(“IP”)地址、信息记录程序、数字证书、数字签名等。在其它实施方案中,认证服务220可以要求客户在挑战-响应认证协议等下提供额外信息或执行额外步骤以认证请求,诸如在多因素认证方案中所要求的。

在实施方案中,前端208包括可以例如被API处理机218调用以根据确定与请求相关的一个或多个政策确定是否容许请求的访问的授权服务222。例如,在一个实施方案中,授权服务222验证请求的数据涉及请求者自身的逻辑数据容器中容纳的数据对象或依其它方式授权请求者访问的数据对象。在一些实施方案中,前端208的授权服务222或其它服务可以至少部分地基于请求中编码的信息(诸如通过数据对象识别符编码的证实信息)检查数据请求的有效性和完整性。

在实施方案中,前端208包括监控每个客户的服务使用信息(诸如使用的数据存储空间、存储的数据对象的数量、处理的数据请求等)的计量服务224。在实施方案中,前端208还包括例如基于由计量服务224收集的计量信息、客户帐户信息等执行计帐和计费相关功能的计帐服务226。例如,基于由客户使用的存储空间、数据对象的大小和数量、提交的请求的类型和数量、客户帐户类型、服务水平协议等,可以对客户收取费用。

在实施方案中,前端208批量处理一些或所有传入请求。例如,在处理(例如,认证、授权、计帐等)请求之前,前端208可以一直等待直到已接收特定数量的请求为止。传入请求的这个批量处理可以用来增大效率。

在一些实施方案中,前端208可以调用由归档数据存储系统的其他子系统提供的服务以进一步处理API请求。例如,前端208可以调用元数据平面216中的服务以完成元数据请求。对于另一实例,前端208可以分别对于数据存储请求和数据检索请求将数据流式传输进出直接I/O控制平面210。

现参考图2中所示的直接I/O控制平面210,在各个实施方案中,直接I/O控制平面210提供创建、追踪和管理因为客户请求创建的作业的服务。如上文所论述,作业指代可以对开始的请求异步地执行的客户开始的活动,诸如数据检索、存储、元数据询问等。在实施方案中,直接I/O控制平面210包括被配置来创建对应于客户请求(诸如从API请求处理机218接收的客户请求)的作业记录或实体且监控作业执行的作业追踪器230。在各个实施方案中,作业记录可以包括与作业执行相关的信息,诸如客户帐户识别符、作业识别符、数据对象识别符、对有效负载数据缓存228(下文所描述)的参考、作业状态、数据证实信息等。在一些实施方案中,作业追踪器230可以收集从多个请求构建作业记录必需的信息。例如,当请求存储大量数据时,数据上传可以分解成多个请求,每个请求上传数据中的一部分。在这种情况中,作业追踪器230可以维持信息以保持追踪上传状态以确保在创建作业记录之前已接收所有数据部件。在一些实施方案中,作业追踪器230还获得与将存储的数据相关的数据对象识别符且将数据对象识别符例如提供到前端服务以返回到客户。在实施方案中,可以从数据平面214服务(诸如下文所描述的存储节点管理器244、存储节点注册服务器248等)获得这个数据对象识别符。

在一些实施方案中,直接I/O控制平面210包括用于存储作业实体或记录的作业追踪器存储区232。在各个实施方案中,作业追踪器存储区230可以由NoSQL数据管理系统(诸如密钥值数据存储区)、关系数据库管理系统(“RDBMS”)或任何其它数据存储系统来实施。在一些实施方案中,可以划分存储在作业追踪器存储区230中的数据以使能够由单独服务实例快速枚举属于具体客户的作业、促进有效批量记录删除、并行处理等。例如,作业追踪器存储区230可以实施根据客户帐户识别符划分且将作业识别符用作范围关键字的表。在实施方案中,作业追踪器存储区230基于时间(诸如作业截止时间)进行进一步细化划分以促进作业截止和清除操作。在实施方案中,可以聚合对作业追踪器存储区232进行的事务以减少总事务数量。例如,在一些实施方案中,作业追踪器230可以在将对应于多个请求的多个作业插入到作业追踪器存储区232中之前执行将多个作业聚合成一个单一聚合作业。

在实施方案中,作业追踪器230被配置来提交作业以例如由共同控制平面212中的服务进行进一步作业调度和规划。此外,作业追踪器230可以被配置来监控作业执行且在作业完成时于作业追踪器存储区232中更新对应作业记录。在一些实施方案中,作业追踪器230还可以被配置来处理客户询问,诸如作业状态询问。在一些实施方案中,作业追踪器230还将作业状态变更的通知提供到客户或归档数据存储系统的其它服务。例如,当数据检索作业完成时,作业追踪器230可以造成向客户通知(例如,使用通知服务)数据可用于下载。作为另一实例,当数据存储作业完成时,作业追踪器230可以通知清除代理234从下文所描述的瞬态有效负载数据缓存228移除与数据存储作业相关的有效负载数据。

在实施方案中,直接I/O控制平面210包括用于对在数据平面214与前端208之间的有效负载数据中转提供瞬态数据存储服务的有效负载数据缓存228。这个数据包括传入的数据未决存储和传出的数据未决客户下载。如本文中所使用,瞬态数据存储区与暂时或分级数据存储区可交换地用来指代用来在将数据对象存储在本文中所描述的归档数据存储装置中之前存储数据对象或用来存储从归档数据存储装置检索的数据对象的数据存储区。瞬态数据存储区可以提供易失性或非易失性(耐久)存储。在多数实施方案中,虽然可能用于持久地存储数据,但瞬态数据存储区希望存储数据达短于归档数据存储系统的时间周期且可能不比本文中所描述的数据归档存储系统具成本效益。在一个实施方案中,被提供用于传入数据和传输数据的瞬态数据存储服务是可以区分的。例如,用于尚未存留在归档数据存储装置中的传入数据的数据存储装置可以提供高于用于已存留在归档数据存储装置中的传出(检索的)数据的数据存储装置的可靠度和耐久度。在另一实施方案中,对于传入数据,瞬态存储装置可是可选的,即,例如当存在具有足够带宽和/或容量来这样做的系统时,传入数据可以直接存储在归档数据存储装置中而非存储在瞬态数据存储装置(诸如有效负载数据缓存228)中。

在实施方案中,直接I/O控制平面210还包括监控作业追踪器存储区232和/或有效负载数据缓存228且移除不再需要的数据的清除代理234。例如,与数据存储请求相关的有效负载数据可以在所述数据存留在永久存储装置(例如,数据平面214)中之后安全地从有效负载数据缓存228移除。在相反路径上,对于客户下载分级的数据可以在可配置时间周期之后(例如,自数据分级起30天)或在客户指示不再需要分级的数据之后从有效负载数据缓存228移除。

在一些实施方案中,当作业状态指示作业完成或中止时,清除代理234从作业追踪器存储区232移除作业记录。如上文所论述,在一些实施方案中,可以划分作业追踪器存储区232以使能够实现更快速清除。在通过客户帐户识别符划分数据的一个实施方案中,当作业完成时,清除代理234可以移除存储特定客户帐户作业的整个表而非每次一个地删除个别作业。在基于作业截止时间进一步细化划分数据的另一实施方案中,在分区中的所有作业截止之后,清除代理234可以批量删除整个作业分区或表。在其它实施方案中,清除代理234可以从其它服务(诸如作业追踪器230)接收造成清除代理234从作业追踪器存储区232和/或有效负载数据缓存228移除作业记录的指令或控制消息(诸如作业完成的指示)。

现参考图2中所示的共同控制平面212。在各个实施方案中,共同控制平面212提供基于队列的负载均衡服务以将峰值抑制到来自I/O控制平面210的平均负载水平(作业)且将可管理工作负载递送到数据平面214。在实施方案中,共同控制平面212包括用于接收由上文所描述的直接I/O控制平面210中的作业追踪器230创建的作业的作业请求队列236、来自数据平面214的服务(例如,存储节点管理器244)检取将执行的工作所用的存储节点管理器作业存储区240和用于依智能方式将作业项目从作业请求队列236传送到存储节点管理器作业存储区240的请求平衡器238。

在实施方案中,作业请求队列236提供用于将项目插入到队列(例如,先进先出(FIFO)或先进后出(FILO))、集或任何其它合适数据结构和从其移除项目的服务。作业请求队列236中的作业条目可以与存储在上文所描述的作业追踪器存储区232中的作业记录相似或不同。

在实施方案中,共同控制平面212还提供允许来自数据平面214的服务(例如,存储节点管理器244、反熵观察者252)执行作业规划优化、检查点设置和恢复的耐久高效作业存储的存储节点管理器作业存储区240。例如,在实施方案中,存储节点管理器作业存储区240通过支持扫描、询问、分类或依其它方式操控和管理存储在存储节点管理器作业存储区240中的作业项目来允许作业优化,诸如批量处理、操作合并等。在实施方案中,存储节点管理器244扫描传入作业且通过数据操作类型(例如,读取、写入或删除)、存储位置(例如,卷、磁盘)、客户帐户识别符等对作业分类。接着,存储节点管理器244可以成批地对作业进行重新排序、合并、分组或依其它方式操控和调度作业用于处理。例如,在一个实施方案中,存储节点管理器244可以在所有读取和删除操作之前批量处理所有写入操作。在另一实施方案中,存储节点管理器224可以执行操作合并。对于另一实例,存储节点管理器224可以将相同对象的多个检索作业合并成一个作业,或取消相同数据对象的存储作业和删除作业,其中删除作业紧随存储作业之后。

在实施方案中,例如,基于作业识别符划分存储节点管理器作业存储区240以便允许多个存储节点管理器244的独立处理且对所有参与的存储节点管理器244提供传入工作负载的均匀分配。在各个实施方案中,存储节点管理器作业存储区240可以由NoSQL数据管理系统(诸如密钥值数据存储区)、RDBMS或任何其它数据存储系统来实施。

在实施方案中,请求平衡器238提供用于将作业项目从作业请求队列236传送到存储节点管理器作业存储区240以便消除工作负载变化和增大系统可用性的服务。例如,请求平衡器238可以在进入作业请求队列236的作业请求激增时依较低速率或依较小粒度从作业请求队列236传送作业项目和在传入作业请求缓和时反之亦然,以便维持存储节点管理器存储区240中的工作负载的水平相对稳定。在一些实施方案中,这个稳定的工作负载水平约等于或低于系统的平均工作负载。

在实施方案中,从存储节点管理器作业存储区240移除完成的作业项目并将其添加到作业结果队列242。在实施方案中,数据平面214服务(例如,存储节点管理器244)负责从存储节点管理器作业存储区240移除作业项目并将其添加到作业结果队列242。在一些实施方案中,作业请求队列242是依与上文所论述的作业请求队列235相似的方式实施。

现参考图2中所示的数据平面214。在各个实施方案中,数据平面214提供与长期归档数据存储、检索和删除、数据管理和放置、反熵操作等相关的服务。在各个实施方案中,数据平面214可以包括任何数量和类型的存储实体,诸如数据存储装置(诸如磁带驱动器、硬盘驱动器、固态装置等)、存储节点或服务器、数据中心等。这些存储实体可以是物理实体、虚拟实体或其任何抽象实体(例如,分布式存储装置和/或计算系统的实例)且可以组织成任何拓扑,包括阶层式或层列式拓扑。相似地,数据平面的组件可以是散布的、本地的或其任何组合。例如,各种计算或存储组件可以在任何数量的数据中心、服务器或数据存储装置的本地或远端,其转而可以在彼此的本地或远端。在各个实施方案中,可以设计物理存储实体以通过控制运行的物理硬件的部分(例如,积极旋转的硬盘驱动器的数量)而最小化电力成本和制冷成本。在实施方案中,物理存储实体实施用来增大存储容量的技术,诸如叠瓦式磁记录(SMR)。

在由图2所示的环境中,一个或多个存储节点管理器244中的每个通过发送和接收数据和控制消息而控制一个或多个存储节点246。每个存储节点246继而控制数据存储装置(诸如硬盘驱动器)的(可能大的)集合。在各个实施方案中,存储节点管理器244可以与一个或多个存储节点246进行通信且存储节点246可以与一个或多个存储节点管理器244进行通信。在实施方案中,存储节点管理器244是由能够执行相对较复杂的计算(诸如摘要计算、数据编码和解码、作业规划和优化等)的一个或多个计算装置来实施。在一些实施方案中,存储节点244是由具有比存储节点管理244小的强大计算能力的一个或多个计算装置来实施。此外,在一些实施方案中,在数据路径中可以不包括存储节点管理器244。例如,数据可以从有效负载数据缓存228直接传输到存储节点246或从一个或多个存储节点246传输到有效负载数据缓存228。依此方式,存储节点管理器244可以将指令传输到有效负载数据缓存228和/或存储节点246而不从有效负载数据缓存228和/或存储节点246直接接收有效负载。在各个实施方案中,存储节点管理器244可以将指令或控制消息发送到本文中所描述的归档数据存储系统206的任何其它组件以引导数据流动。

在实施方案中,存储节点管理器244通过以下步骤用作作业进出数据平面214的入口点:从共同控制平面212(例如,存储节点管理器作业存储区240)拾取作业项目、从有效负载数据缓存228检索分级的数据和执行数据存储作业的必需数据编码和请求适当存储节点246存储、检索或删除数据。一旦存储节点246完成执行请求的数据操作,那么存储节点管理器244可以执行额外处理(诸如数据解码和将检索的数据存储在有效负载数据缓存228中用于数据检索作业),和更新共同控制平面212中的作业记录(例如,从存储节点管理器作业存储区240移除完成的作业并将其添加到作业结果队列242)。

在实施方案中,在数据存储之前,存储节点管理器244根据一个或多个数据编码方案执行数据编码以提供数据冗余、安全性等。这些数据编码方案可以包括加密方案、冗余编码方案,诸如擦除编码、独立磁盘冗余阵列(RAID)编码方案、复制等。同样地,在实施方案中,在数据检索之后,存储节点管理器244执行对应数据解码方案(诸如解密、擦除解码等)以恢复原始数据。

如上文结合存储节点管理器作业存储区240所论述,存储节点管理器244可以实施作业规划和优化(诸如批量处理、操作合并等)以增大效率。在一些实施方案中,在存储节点管理器之间划分作业使得所述分区之间存在很小重叠或不存在重叠。这些实施方案例如通过减小竞争或锁定的概率而促进由多个存储节点管理器进行并行处理。

在各个实施方案中,实施数据平面214以促进数据完整性。例如,处理批量数据流动的存储实体(诸如存储节点管理器244和/或存储节点246)可以证实存储的或检索的数据的摘要、检查错误检测码以确保元数据完整性等。

在各个实施方案中,实施数据平面214以促进归档数据存储系统的可扩展性和可靠度。例如,在一个实施方案中,存储节点管理器244不维持内部状态或维持很小的内部状态使得其可被添加、移除或取代而具有很小不利影响。在一个实施方案中,每个存储装置是能够提供关于存储在其上的数据的信息的自含式且自描述的存储单元。这个信息可以用来在数据丢失的情况下促进数据恢复。此外,在一个实施方案中,每个存储节点246能够收集和报告关于存储节点的信息,包括存储节点的网络位置和连接到一个或多个存储节点注册服务器248和/或存储节点注册服务器存储区250的存储装置的存储信息。在一些实施方案中,存储节点246在系统启动时执行这个自报告且周期性地提供更新信息。在各个实施方案中,这个自报告方法提供动态且最新的目录信息而无需维持可实质上在大量数据对象存储在归档数据系统中时增大的全局名称空间密钥映射或索引。

在实施方案中,数据平面214还可以包括提供存储实体及其存储的数据的目录信息、数据放置服务等的一个或多个存储节点注册服务器248。存储节点注册服务器248可以与提供存储用于存储节点注册服务器248的一个或多个存储节点注册服务器存储区250通信且充当至其的前端服务。在各个实施方案中,存储节点注册服务器存储区250可以由NoSQL数据管理系统(诸如密钥值数据存储区)、RDBMS或任何其它数据存储系统来实施。在一些实施方案中,可以划分存储节点注册服务器存储区250以使能够由多个服务实例进行并行处理。如上文所论述,在实施方案中,存储在存储节点注册服务器存储区250处的信息至少部分地基于由存储节点246自身报告的信息。

在一些实施方案中,存储节点注册服务器248将目录服务提供到例如想要确定联系哪些存储节点246用于数据存储、检索和删除操作的存储节点管理器244。例如,给出由存储节点管理器244提供的卷识别符,存储节点注册服务器248可以基于存储节点注册服务器存储区250中维持的映射提供主控对应于卷识别符的卷成分的存储节点的清单。具体来说,在一个实施方案中,存储节点注册服务器存储区250存储卷识别符或卷成分的清单与主控卷或卷成分的存储节点的端点(诸如域名系统(DNS)名称)之间的映射。

如本文中所使用,“卷”指代可以存储数据对象的数据存储系统内的逻辑存储空间。卷可以通过卷识别符来识别。卷可以驻留在一个物理存储装置(例如,硬盘)或横跨多个存储装置。在后一情况中,卷包括多个卷成分,每个卷成分驻留在不同存储装置上。如本文中所使用,“卷成分”指代物理地存储在存储实体(诸如存储装置)中的卷中的一部分。相同卷的卷成分可以存储在不同存储实体上。在一个实施方案中,当数据通过冗余编码方案(例如,擦除编码方案、RAID、复制)进行编码时,每个编码的数据成分或“分片(shard)”可以存储在不同卷组分中以提供故障容限和隔离。在一些实施方案中,卷成分是通过包括卷识别符和分片时隙识别符的卷成分识别符来识别。如本文中所使用,在冗余编码方案中,分片时隙识别特定数据分片、行或条带。例如,在一个实施方案中,分片时隙对应于擦除编码矩阵行。在一些实施方案中,存储节点注册服务器存储区250还存储关于卷或卷成分的信息,诸如总空间、使用的空间和自由空间、存储的数据对象的数量等。

在一些实施方案中,数据平面214还包括存储分配器256,其用于至少部分地基于由存储节点注册服务器存储区250维持的信息对存储节点上的存储空间(例如,卷)进行分配以存储新数据对象,以满足数据隔离和故障容限约束。在一些实施方案中,存储分配器256需要人工干预。

在一些实施方案中,数据平面214还包括用于检测熵效应和开始反熵校正例程的反熵观察者252。例如,反熵观察者252可以负责监控所有存储实体(诸如存储节点)的活动和状态、调解活数据或实际数据与维持的数据等。在各个实施方案中,熵效应包括但不限于归因于由重复的写入和重写循环产生的数据碎裂、(例如,磁介质的)硬件磨损的性能退化;归因于硬件/软件故障、环境因素、硬件的物理破坏、随机机会或其它原因的数据不可用性和/或数据丢失。反熵观察者252可以检测这些效应且在一些实施方案中可以抢先地和/或反应性地制定反熵校正例程和/或政策。

在实施方案中,反熵观察者252造成存储节点246对连接到存储节点的存储装置执行周期性反熵扫描。反熵观察者252还可以将请求注入作业请求队列236(和随后作业结果队列242)中以收集信息、恢复数据等。在一些实施方案中,反熵观察者252可以例如对下文所描述的冷索引存储区262和存储节点246执行扫描以确保参考完整性。

在实施方案中,由各种服务(诸如存储节点注册服务器248、存储分配器256、反熵观察者252等)使用存储在存储节点注册服务器存储区250处的信息。例如,存储节点注册服务器248可以在数据存储、检索和删除期间提供数据位置和放置服务(例如,到存储节点管理器244)。例如,给出将存储的数据对象的大小和由存储节点注册服务器存储区250维持的信息,存储节点注册服务器248可以确定将数据对象存储到何处(例如,卷)且提供可以用来生成与数据对象相关的数据对象识别符的数据对象存储位置的指示。作为另一实例,在实施方案中,存储分配器256使用存储在存储节点注册服务器存储区250中的信息来在具体存储节点中创建并放置新卷的卷成分以满足隔离和故障容限约束。作为又一实例,在实施方案中,反熵观察者252使用存储在存储节点注册服务器存储区250中的信息来检测熵效应,诸如数据丢失、硬件故障等。

在一些实施方案中,数据平面214还包括用来追踪存储系统中的孤立数据的孤立数据清除数据存储区254。如本文中所使用,孤立数据是不被任何外部实体参考的存储数据对象。在各个实施方案中,孤立数据清除数据存储区254可以由NoSQL数据管理系统(诸如密钥值数据存储区)、RDBMS或任何其它数据存储系统来实施。在一些实施方案中,存储节点注册服务器248将对象放置信息存储在孤立数据清除数据存储区254中。随后,可以例如由反熵观察者252比较存储在孤立数据清除数据存储区254中的信息与维持在元数据平面216中的信息。在一些实施方案中,如果检测到孤立数据,那么将请求插入共同控制平面212中以删除孤立数据。

现参考图2中所示的元数据平面216。在各个实施方案中,元数据平面216出于目录和计帐目的提供关于存储在系统中的数据对象的信息,以满足客户元数据查询等。在所示实施方案中,元数据平面216包括基于来自共同控制平面212中的作业结果队列242的条目存储关于执行的事务的信息的元数据管理器作业存储区258。在各个实施方案中,元数据管理器作业存储区258可以由NoSQL数据管理系统(诸如密钥值数据存储区)、RDBMS或任何其它数据存储系统来实施。在一些实施方案中,例如基于逻辑数据容器划分和细化划分元数据管理器作业存储区258以促进由多个服务实例(诸如元数据管理器260)进行并行处理。

在说明性实施方案中,元数据平面216还包括用于基于元数据管理器作业存储区258中的记录生成数据对象的冷索引(例如,存储在冷索引存储区262中)的一个或多个元数据管理器260。如本文中所使用,“冷”索引指代很少更新的索引。在各个实施方案中,维持冷索引以降低成本开销。在一些实施方案中,多个元数据管理器260可以周期性地并行读取和处理来自元数据管理器作业存储区258中的不同分区的记录并将结果存储在冷索引存储区262中。

在一些实施方案中,冷索引存储区262可以由可靠且耐久的数据存储服务来实施。在一些实施方案中,冷索引存储区262被配置来处理由客户开始的元数据请求。例如,客户可以发布列举给出逻辑数据容器中容纳的所有数据对象的请求。响应于这个请求,冷索引存储区262可以基于由冷索引262维持的信息提供逻辑数据容器中容纳的所有数据对象的识别符的清单。在一些实施方案中,操作可能要花相对较长的时间周期且当作业完成时可以对客户提供用来检索结果的作业识别符。在其它实施方案中,冷索引存储区262被配置来出于库存、计帐和计费目的处理来自其它服务(例如来自前端208)的查询。

在一些实施方案中,元数据平面216还可以包括存储关于逻辑数据容器的信息(诸如容器所有权、政策、使用等)的容器元数据存储区264。这个信息可以例如被前端208服务用来执行授权、计量、计帐等。在各个实施方案中,容器元数据存储区264可以由NoSQL数据管理系统(诸如密钥值数据存储区)、RDBMS或任何其它数据存储系统来实施。

如本文中所描述,在各个实施方案中,本文中所描述的归档数据存储系统206被实施成高效且可扩展。例如,在实施方案中,批量处理和请求合并在各个阶段(例如,前端请求处理、控制平面作业请求处理、数据平面数据请求处理)被用来改进效率。对于另一实例,在实施方案中,划分元数据(诸如作业、请求等)的处理以促进由多个服务实例进行分区的并行处理。

在实施方案中,存储在归档数据存储系统中的数据元素(诸如下文所描述的数据成分、卷)是自描述以免需要全局索引数据结构。例如,在实施方案中,存储在系统中的数据对象可以通过编码存储位置信息的数据对象识别符来寻址。对于另一实例,在实施方案中,卷可以存储关于哪些数据对象存储在卷中的信息,且存储这些卷的存储节点和装置可以共同地报告其库存和硬件信息以提供存储在系统中的数据的全局观点(诸如由存储在存储节点注册服务器存储区250中的信息证明)。在这个实施方案中,全局观点仅出于效率目的而提供且无需定位存储在系统中的数据。

在各个实施方案中,实施本文中所描述的归档数据存储系统以改进数据可靠度和耐久度。例如,在实施方案中,将数据对象冗余编码成多个数据成分并跨不同数据存储实体进行存储以提供故障容限。对于另一实例,在实施方案中,数据元素具有多级完整性检查。在实施方案中,父/子关系始终具有用来确保完全参考完整性的额外信息。例如,在实施方案中,批量数据传输和存储路径是通过在传输之前使发起者预先计算数据摘要且随后将摘要随数据供应到接收器而受保护。数据传输的接收器负责重新计算、比较且接着向发送器确认包括重新计算的摘要。这些数据完整性检查可以例如由上文所描述的前端服务、瞬态数据存储服务、数据平面存储实体等来实施。

图3示出根据至少一个实施方案的可以连接归档数据存储系统的组件的互连网络300。特定来说,所示实例示出数据平面组件如何连接到互连网络300。在一些实施方案中,互连网络300可以包括胖树互连网络,其中链路带宽朝向树根越来越高或“越来越胖”。在所示实例中,数据平面包括一个或多个数据中心301。每个数据中心301可以包括一个或多个存储节点管理器服务器机柜302,其中每个服务器机柜主控共同地提供诸如结合图2所描述的存储节点管理器的功能的一个或多个服务器。在其它实施方案中,每个存储节点管理器服务器机柜可以主控一个以上存储节点管理器。可以基于诸如成本、可扩展性、冗余和性能要求、硬件和软件资源等因素确定配置参数,诸如每个机柜的存储节点管理器的数量、存储节点管理器机柜的数量等。

每个存储节点管理器服务器机柜302可以具有到用来连接到互连网络300的互连件308的存储节点管理器机柜连接314。在一些实施方案中,使用可以包括柜顶以太网交换机或任何其它类型的网络交换机的网络交换机303实施连接314。在各个实施方案中,互连件308用来实现高带宽和低延时批量数据传送。例如,互连件可以包括克洛斯(Clos)网络、胖树互连件、异步传送模式(ATM)网络、快速或千兆以太网等。

在各个实施方案中,存储节点管理器机柜连接314的带宽可以被配置来实现定位在相同或不同数据中心内的存储节点管理器与存储节点之间的高带宽和低延时通信。例如,在实施方案中,存储节点管理器机柜连接314具有每秒10千兆位(Gbps)的带宽。

在一些实施方案中,每个数据中心301还可以包括一个或多个存储节点服务器机柜304,其中每个服务器机柜主控共同地提供诸如结合图2中所描述的多个存储节点的功能的一个或多个服务器。可以基于诸如成本、可扩展性、冗余和性能要求、硬件和软件资源等因素确定配置参数,诸如每个机柜的存储节点的数量、存储节点机柜的数量、存储节点管理器与存储节点之间的比等。例如,在一个实施方案中,每个存储节点服务器机柜存在3个存储节点,每个数据中心存在30-80个机柜且存储节点/存储节点管理器的比是10:1。

每个存储节点服务器机柜304可以具有到用来连接到互连网络300的互连网络交换机308的存储节点机柜连接316。在一些实施方案中,使用可以包括柜顶以太网交换机或任何其它类型的网络交换机的网络交换机305实施连接316。在各个实施方案中,存储节点机柜连接316的带宽可以被配置来实现定位在相同或不同数据中心内的存储节点管理器与存储节点之间的高带宽和低延时通信。在一些实施方案中,存储节点机柜连接316具有高于存储节点管理器机柜连接314的带宽。例如,在实施方案中,存储节点机柜连接316具有20Gbps的带宽,而存储节点管理器机柜连接314具有10Gpbs的带宽。

在一些实施方案中,数据中心301(包括存储节点管理器和存储节点)经由连接310与其它计算资源服务306(诸如如结合图2所描述的有效负载数据缓存228、存储节点管理器作业存储区240、存储节点注册服务器248、存储节点注册服务器存储区350、孤立数据清除数据存储区254、元数据管理器作业存储区258等)进行通信。

在一些实施方案中,一个或多个数据中心301可以经由数据中心间连接312连接。在一些实施方案中,连接310和312可以被配置来达成硬件资源的有效操作和使用。例如,在实施方案中,每个数据中心的连接310具有30-100Gbps的带宽且数据中心间连接312具有100-250Gbps的带宽。

图4示出根据至少一个实施方案的可以连接归档数据存储系统的组件的互连网络400。特定来说,所示实例示出非数据平面组件如何连接到互连网络300。如所示,可以由一个或多个前端服务器机柜402主控诸如结合图2所描述的前端服务。例如,每个前端服务器机柜402可以主控一个或多个网页服务器。前端服务器机柜402可以经由网络交换机408连接到互连网络400。在一个实施方案中,配置参数(诸如前端服务的数量、每个机柜的服务的数量、前端服务器机柜连接314的带宽等)可以大致上对应于如结合图3所描述的存储节点管理器的配置参数。

在一些实施方案中,可以由一个或多个服务器机柜404主控如结合图2所描述的控制平面服务和元数据平面服务。这些服务可以包括作业追踪器230、元数据管理器260、清除代理232、作业请求平衡器238和其它服务。在一些实施方案中,这些服务包括不处理频繁批量数据传送的服务。最后,本文中所描述的组件可以经由连接410与其它计算资源服务406(诸如如结合图2所描述的有效负载数据缓存228、作业追踪器存储区232、元数据管理器作业存储区258等)进行通信。

图5示出根据至少一个实施方案的用于存储数据的示例性过程500。过程500中的一些或所有(或本文中所描述的任何其它过程或其变化和/或组合)可以在配置有可执行指令的一个或多个计算系统的控制下执行且可以实施为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、硬件或其组合。代码可以例如依计算机程序(包括可由一个或多个处理器执行的多个指令)的形式存储在计算机可读存储介质中。计算机可读存储介质可以是非暂时性的。在实施方案中,如结合图2所描述的归档数据存储系统206的一个或多个组件可以执行过程500。

在实施方案中,过程500包括接收存储归档数据(诸如文档、视频或音频文件等)的数据存储请求502。这个数据存储请求可以包括有效负载数据和元数据,诸如有效负载数据的大小和摘要、用户识别信息(例如,用户名称、帐户识别符等)、逻辑数据容器识别符等。在一些实施方案中,过程500可以包括接收502多个存储请求,每个存储请求包括较大有效负载数据中的一部分。在其它实施方案中,存储请求可以包括将上传的多个数据对象。在实施方案中,过程500的步骤502由服务(诸如如结合图2所描述的前端208的API请求处理机218)来实施。

在实施方案中,过程500包括在接收502请求时处理504存储请求。这个处理可以包括例如验证接收的数据的完整性、认证客户、根据访问控制政策授权请求的访问、执行计量和计帐相关活动等。在实施方案中,这个处理可以由诸如结合图2所描述的前端208的服务来执行。在实施方案中,这个请求可以结合其它请求例如依批量模式进行处理。

在实施方案中,过程500包括将与存储请求相关的数据存储506在分级数据存储区中。这个分级数据存储区可以包括诸如由如结合图2所描述的有效负载数据缓存228提供的瞬态数据存储区。在一些实施方案中,仅有效负载数据存储在分级存储区中。在其它实施方案中,与有效负载数据相关的元数据还可以存储在分级存储区中。在实施方案中,数据完整性在存储在分级数据存储区处之前得以验证(例如,基于摘要)。

在实施方案中,过程500包括例如响应于存储请求而提供508与将存储的数据相关的数据对象识别符。如上文所描述,数据对象识别符可以被后续请求用来检索、删除或依其它方式参考存储的数据。在实施方案中,数据对象识别符可以编码可以用来定位存储的数据对象的存储位置信息、可以用来证实有效负载数据完整性的有效负载证实信息(诸如大小、摘要、时间戳记等)、可以用来证实元数据(诸如数据对象识别符自身)完整性的元数据证实信息(诸如错误检测码)和数据对象识别符中编码的信息等。在实施方案中,数据对象识别符还可以编码用来证实或授权后续客户请求的信息。例如,数据对象识别符可以编码存储数据对象的逻辑数据容器的识别符。在检索这个数据对象的后续请求中,逻辑数据容器识别符可以用来确定请求实体是否有权访问逻辑数据容器且因此容纳在其中的数据对象。在一些实施方案中,数据对象识别符可以基于由客户供应的信息(例如,数据对象的全局唯一识别符(GUID)等)和/或由执行过程500的系统收集或计算的信息(例如,存储位置信息)编码信息。在一些实施方案中,生成数据对象识别符可以包括使用加密私人密钥对上文所描述的信息中的一些或所有进行加密。在一些实施方案中,可以周期性地旋转加密私人密钥。在一些实施方案中,可以在与上文所描述不同的时间生成和/或提供数据对象识别符。例如,可以在创建和/或完成存储作业(下文所描述)之后生成和/或提供数据对象识别符。

在实施方案中,提供508数据对象识别符可以包括在数据实际上存储在存储位置之前确定所述存储位置。例如,这个确定可以至少部分地基于关于既有数据存储实体的库存信息,诸如操作状态(例如,运行或不运行)、可用存储空间、数据隔离要求等。在诸如由图2所示的环境200的环境中,这个确定可以由诸如如上文结合图2所描述的存储节点注册服务器248的服务来实施。在一些实施方案中,这个确定可以包括由诸如如结合图2所描述的存储分配器256的服务分配一个或多个物理存储装置上的新存储空间(例如,卷)。

在实施方案中,可以生成用来表示上文所确定的存储位置的存储位置识别符。这个存储位置识别符可以包括例如卷参考对象,其包括卷识别符成分和数据对象识别符成分。卷参考成分可以识别存储数据的卷且数据对象识别符成分可以识别数据存储在卷中的何处。大体来说,存储位置识别符可以包括识别组织数据的逻辑或物理数据存储拓扑(诸如阶层)内的各种级的成分。在一些实施方案中,存储位置识别符可以指明实际有效负载数据存储到何处或对存储数据之处的参考的链。

在实施方案中,数据对象识别符编码将存储的数据(诸如有效负载数据)中的至少一部分的摘要(例如,散列)。在一些实施方案中,摘要可以至少部分地基于客户提供的摘要。在其它实施方案中,可以基于有效负载数据从头计算摘要。

在实施方案中,过程500包括创建510存储作业用于存留数据到长期数据存储区和调度512存储作业用于执行。在如结合图2所描述的环境200中,步骤508、510和512可以至少部分地由如上文所描述的直接I/O控制平面210和共同控制平面212的组件来实施。具体来说,在实施方案中,作业追踪器230创建作业记录并将作业记录存储在作业追踪器存储区232中。如上文所描述,作业追踪器230可以执行批量处理以减少对作业追踪器存储区232进行的事务的总次数。此外,可以划分或依其它方式优化作业追踪器存储区232以促进并行处理、清除操作等。如上文所描述的作业记录可以包括作业相关信息,诸如客户帐户识别符、作业识别符、存储位置识别符、对存储在有效负载数据缓存228中的数据的参考、作业状态、作业创建和/或截止时间等。在一些实施方案中,可以在生成和/或提供数据对象识别符之前创建存储作业。例如,代替数据对象识别符或除数据对象识别符以外,还可以响应于存储请求而在上述步骤508处提供存储作业识别符

在实施方案中,调度512存储作业用于执行包括执行作业规划和优化,诸如如结合图2的共同控制平面212所描述的基于队列的负载均衡或平衡、作业划分等。例如,在实施方案中,作业请求平衡器238根据调度算法将作业项目从作业请求队列236传送到存储节点管理器作业存储区240以将峰值抑制到来自I/O控制平面210的平均负载水平(作业)且将可管理工作负载递送到数据平面214。作为另一实例,可以划分存储节点管理器作业存储区240以促进由多个工作者(诸如存储节点管理器244)并行处理作业。作为又一实例,存储节点管理器作业存储区240可以提供询问、分类和其它功能以促进批量处理和其它作业优化。

在实施方案中,过程500包括例如由存储节点管理244选择514来自如结合图2所描述的存储节点管理器作业存储区240的存储作业用于执行。存储作业可以与其它作业被选择514用于批量处理或因为上文所描述的作业规划和优化而依其它方式被选择。

在实施方案中,过程500包括从分级存储区(诸如上文结合图2所描述的有效负载数据缓存228)获得516数据。在一些实施方案中,数据完整性可以例如通过验证大小、摘要、错误检测码等进行检查。

在实施方案中,过程500包括获得518一个或多个数据编码方案,诸如加密方案、冗余编码方案,诸如擦除编码、独立磁盘冗余阵列(RAID)编码方案、复制等。在一些实施方案中,这些编码方案演变为适于不同要求。例如,加密密钥可以周期性地旋转且擦除编码方案的伸展因子可以随时间调整到不同硬件配置、冗余要求等。

在实施方案中,过程500包括使用获得的编码方案进行编码520。例如,在实施方案中,对数据加密且对加密的数据进行擦除编码。在实施方案中,结合图2所描述的存储节点管理器244可以被配置来执行本文中所描述的数据编码。在实施方案中,这些编码方案的应用生成多个编码的数据成分或分片,其可以跨不同存储实体(诸如存储装置、存储节点、数据中心等)存储以提供故障容限。在数据可以包括多个部件(诸如在多部件上传的情况中)的实施方案中,每个部件可以如本文中所描述般编码和存储。

在实施方案中,过程500包括确定522这些编码的数据成分的存储实体。例如,在由图2所示的环境200中,存储节点管理器244可以通过使用卷识别符询问存储节点注册服务器248而确定用来存储编码的数据成分的多个存储节点246。这个卷识别符可以是与将存储的数据相关的存储位置识别符的部件。在实施方案中,响应于使用给出卷识别符进行询问,存储节点注册服务器248返回用来存储编码的数据成分的存储节点246的网络位置(包括端点、DNS名称、IP地址等)的清单。如结合图2所描述,存储节点注册服务器248可以基于来自存储节点246自身的自报告的和动态提供的和/或更新的库存信息确定这个清单。在一些实施方案中,这个确定基于数据隔离、故障容限、负载平衡、电力节省、数据局部性和其它考虑因素。在一些实施方案中,存储注册服务器248可以造成例如通过调用如结合图2所描述的存储分配器256而分配新存储空间。

在实施方案中,过程500包括造成524将编码的数据成分存储在确定的存储实体处。例如,在由图2所示的环境200中,存储节点管理器244可以请求上文确定的存储节点246中的每个将数据成分存储在给出存储位置处。存储节点246中的每个在从存储节点管理器244接收存储数据成分的存储请求之后可以造成数据成分存储在连接的存储装置中。在一些实施方案中,数据对象识别符中的至少一部分依编码的或未编码的形式与数据成分中的所有或一些存储在一起。例如,数据对象识别符可以存储在每个数据成分的标头中和/或存储在卷成分中存储的卷成分索引中。在一些实施方案中,存储节点246可以执行批量处理或其它优化以处理来自存储节点管理器244的请求。

在实施方案中,存储节点246将指示是否成功地存储数据的确认发送到请求存储节点管理器244。在一些实施方案中,当出于某个原因请求无法完成时,存储节点246返回错误消息。例如,如果存储节点接收存储到相同存储位置的两个请求,那么一个或两个请求可能失败。在实施方案中,存储节点246在存储数据之前执行证实检查且如果证实检查失败,那么返回错误。例如,数据完整性可以通过检查错误检测码或摘要进行验证。作为另一实例,存储节点246可以例如基于卷索引验证由存储请求识别的卷被存储节点存储和/或卷具有用来存储数据成分的足够空间。

在一些实施方案中,当存储节点管理器244从请求的存储节点246的至少一个子集(存储法定集合)接收肯定确认时,认为数据存储已成功。在一些实施方案中,存储节点管理器244可以等到接收法定集合确认为止才移除重试作业必需的状态。这个状态信息可以包括未接收其确认的编码数据成分。在其它实施方案中,为改进吞吐量,存储节点管理器244可以在接收确认的法定集合之前移除重试作业必需的状态。

在实施方案中,过程500包括更新526元数据信息,包括例如由数据平面214维持的元数据(诸如用于存储装置的索引和存储空间信息、存储在存储节点注册服务器存储区250处的映射信息等)、由控制平面210和212维持的元数据(诸如作业相关信息)、由元数据平面216维持的元数据(诸如冷索引)等。在各个实施方案中,此类元数据信息中的一些可以经由批量处理和/或定期地更新以降低性能和成本影响。例如,在数据平面214中,可以更新由存储节点注册服务器存储区250维持的信息以提供新存储的数据的卷识别符和存储数据成分的存储节点246的额外映射,如果这个映射不存在的话。对于另一实例,可以更新存储装置的卷索引以反映新添加的数据成分。

在共同控制平面212中,完成的作业的作业条目可以从存储节点管理器作业存储区240移除并添加到作业结果队列242,如结合图2所描述。在直接I/O控制平面210中,作业追踪器存储区232中的作业记录的状态可以例如通过监控作业结果队列242的作业追踪器230来更新。在各个实施方案中,无法完成的作业可以重试多次。例如,在实施方案中,可以创建新作业以将数据存储在不同位置处。作为另一实例,可以更新既有作业记录(例如,在存储节点管理器作业存储区240、作业追踪器存储区232等中)以促进相同作业的重试。

在元数据平面216中,可以更新元数据以反映新存储的数据。例如,完成的作业可以从作业结果队列242推送到元数据管理器作业存储区258且由元数据管理器260进行批量处理以生成诸如存储在冷索引存储区262中的更新索引。对于另一实例,出于计量和计帐目的,可以更新客户信息以反映变更。

最后,在一些实施方案中,一旦成功地完成存储作业,那么可以例如由如结合图2所描述的清除代理234移除与存储作业相关的作业记录、有效负载数据和其它数据。在一些实施方案中,这个移除可以通过批量处理、并行处理等来处理。

图6示出根据至少一个实施方案的用于检索数据的示例性过程500。在实施方案中,如结合图2所描述的归档数据存储系统206的一个或多个组件共同地执行过程600。

在实施方案中,过程600包括接收602检索通过上文所描述的过程500存储的数据的数据检索请求。这个数据检索请求可以包括诸如通过上文所描述的过程500的步骤508提供的数据对象识别符或可以用来识别将检索的数据的任何其它信息。

在实施方案中,过程600包括在接收602请求之后处理604数据检索请求。这个处理可以包括例如认证客户、根据访问控制政策授权请求的访问、执行计量和计帐相关活动等。在实施方案中,这个处理可以由诸如结合图2所描述的前端208的服务来执行。在实施方案中,这个请求可以结合其它请求例如依批量模式进行处理。

在实施方案中,处理604检索请求可以至少部分地基于检索请求中包括的数据对象识别符。如上文所描述,数据对象识别符可以编码存储位置信息、有效负载证实信息(诸如大小、创建时间戳记、有效负载摘要等)、元数据证实信息、政策信息等。在实施方案中,处理604检索请求包括例如使用私人加密密钥和使用用来证实检索请求的解码信息中的至少一些解码数据对象识别符中编码的信息。例如,政策信息可以包括可以用来证实检索请求的请求实体具有执行请求的访问的所要权限的访问控制信息。作为另一实例,元数据证实信息可以包括可以用来验证数据对象识别符或其成分的完整性的错误检测码,诸如循环冗余检查(“CRC”)。

在实施方案中,过程600包括创建606对应于数据检索请求的数据检索作业和例如响应于数据检索请求而提供608与数据检索作业相关的作业识别符。在一些实施方案中,创建606数据检索作业与如结合图5中所示的过程500的步骤510所描述般创建数据存储作业相似。例如,在实施方案中,作业追踪器230可以创建包括数据对象识别符中编码的至少某个信息和/或额外信息(诸如作业截止时间等)的作业记录并将作业记录存储在作业追踪器存储区232中。如上文所描述,作业追踪器230可以执行批量处理以减少对作业追踪器存储区232进行的事务的总次数。此外,可以划分或依其它方式优化作业追踪器存储区232以促进并行处理、清除操作等。

在实施方案中,过程600包括调度610上述创建的数据检索作业。在一些实施方案中,调度610数据检索作业用于执行包括诸如结合图5的过程500的步骤512所描述般执行作业规划和优化。例如,数据检索作业可以提交到作业队列中且被调度用于至少部分地基于成本、电力管理调度等而结合其它作业一起进行批量处理。对于另一实例,数据检索作业可以基于数据局部性等而与其它检索作业合并在一起。

在实施方案中,过程600包括例如由存储节点管理器244选择612来自如结合图2所描述的存储节点管理器作业存储区240的数据检索作业用于执行。检索作业可以与其它作业一起被选择612用于批量处理或因为上文所描述的作业规划和优化而依其它方式被选择。

在实施方案中,过程600包括确定614存储通过存储过程(诸如上文所描述的过程500)生成的编码数据成分的存储实体。在实施方案中,存储节点管理器244可以以与结合上述过程500的步骤522所论述相似的方式确定多个存储节点246以检索编码数据成分。例如,这个确定可以基于负载平衡、电力节省、效率和其它考虑因素。

在实施方案中,过程600包括确定616可以用来解码检索的数据的一个或多个数据解码方案。通常,这些解码方案对应于在先前存储原始数据时应用于原始数据的编码方案。例如,这些解码方案可以包括使用加密密钥解密、擦除解码等。

在实施方案中,过程600包括造成618从在过程600的步骤614中确定的存储实体检索编码数据成分中的至少一些。例如,在由图2所示的环境200中,负责数据检索作业的存储节点管理器244可以请求上述确定的存储节点246的子集以检索其对应数据成分。在一些实施方案中,需要最小数量的编码数据成分来重建原始数据,其中所述数量可以至少部分地基于用来编码数据(例如,擦除编码的伸展因子)的数据冗余方案来确定。在这些实施方案中,可以选择存储节点的子集使得检索的编码数据成分不小于最小数量。

在从存储节点管理器244接收检索数据成分的请求之后,存储节点246的子集中的每个存储节点可以例如通过检查存储位置识别符(其是数据对象识别符的部件)的完整性、验证存储节点确实保存请求的数据成分等而证实请求。在成功证实之后,存储节点可以至少部分地基于存储位置识别符定位数据成分。例如,如上文所描述,存储位置识别符可以包括包括卷识别符成分和数据对象识别符成分的卷参考对象,其中卷参考成分用来识别存储数据的卷且数据对象识别符成分可以识别数据存储在卷中的何处。在实施方案中,存储节点例如从连接的数据存储装置读取数据成分且将检索的数据成分发送到请求检索的存储节点管理器。在一些实施方案中,数据完整性是例如通过验证数据成分识别符或其一部分与由与检索作业相关的数据成分识别符所指示的相同而进行检查。在一些实施方案中,存储节点可以结合数据成分检索执行批量处理或其它作业优化。

在实施方案中,过程600包括使用在过程600的步骤616处确定的一个或多个数据解码方案解码620至少最小数量的检索的编码数据成分。例如,在一个实施方案中,可以擦除解码且接着解密检索的数据成分。在一些实施方案中,例如使用数据对象识别符中编码的有效负载完整性证实信息(例如,大小、时间戳记、摘要)对重建的数据执行数据完整性检查。在一些情况中,检索作业可能由于检索的数据成分小于最小数量、数据完整性检查失败等而失败。在这些情况中,可以依与结合图5所描述相似的方式重试检索作业。在一些实施方案中,原始数据包括多个数据部件且编码并存储每个部件。在这些实施方案中,在检索期间,可以检索和解码(例如,擦除解码和解密)每个数据部件的编码数据成分以形成原始部分且可以组合解码的部件以形成原始数据。

在实施方案中,过程600包括将重建的数据存储在分级存储区(诸如结合图2所描述的有效负载数据缓存228)中。在一些实施方案中,存储622在分级存储区中的数据可以供客户下载达一段时间周期或供客户无限期地下载。在实施方案中,在数据存储在分级存储区中之前,可以(例如,使用摘要)检查数据完整性。

在实施方案中,过程600包括将检索作业完成的通知提供624到检索请求的请求者或者依其它方式被配置来接收这个通知的另一个或多个实体。可以个别地或成批地提供这些通知。在其它实施方案中,可以在例如从客户轮询请求之后提供检索作业状态。

图7示出根据至少一个实施方案的用于删除数据的示例性过程700。在实施方案中,如结合图2所描述的归档数据存储系统206的一个或多个组件共同地执行过程700。

在实施方案中,过程700包括接收702删除诸如通过上文所描述的过程500存储的数据的数据删除请求。这个数据检索请求可以包括诸如通过上文所描述的过程500的步骤508提供的数据对象识别符或可以用来识别将删除的数据的任何其它信息。

在实施方案中,过程700包括在接收702请求之后处理704数据删除请求。在一些实施方案中,处理704与上文所描述的过程500的步骤504和过程600的步骤604相似。例如,在实施方案中,处理704至少部分地基于数据删除请求中包括的数据对象识别符。

在实施方案中,过程700包括创建706对应于数据删除请求的数据检索作业。创建这个检索作业可以与结合过程500的步骤510所描述般创建存储作业和结合过程600的步骤606所描述般创建检索作业相似。

在实施方案中,过程700包括提供708数据删除的确认。在一些实施方案中,可以响应于数据删除请求而提供这个确认以便提供同步处理数据删除请求的感知。在其它实施方案中,提供与数据删除作业相关的作业识别符可以与提供数据检索请求的作业识别符相似。

在实施方案中,过程700包括调度708数据删除作业用于执行。在一些实施方案中,实施数据删除作业的调度708可以与上文所描述结合过程500的步骤512和结合过程600的步骤610所描述的实施相似。例如,可以合并和/或批量处理紧密定位的数据的数据删除作业。对于另一实例,可以对数据删除作业指派比数据检索作业低的优先级。

在一些实施方案中,存储的数据可以具有由客户指定或默认设置的相关截止时间。在这些实施方案中,可以创建706删除作业且在数据的截止时间之时或临近数据的截止时间之时自动地对其进行调度710。在一些实施方案中,截止时间还可以与宽限期相关,在其期间数据仍可用或可恢复。在一些实施方案中,可以在截止时间之前、之时或之后提供未决删除的通知。

在一些实施方案中,过程700包括例如由存储节点管理器244选择712来自如结合图2所描述的存储节点管理器作业存储区240的数据删除作业用于执行。删除作业可以与其它作业一起被选择712用于批量处理或因为上文所描述的作业规划和优化而依其它方式被选择。

在一些实施方案中,过程700包括确定714存储通过存储过程(诸如上文所描述的过程500)生成的数据成分的数据成分存储实体。在实施方案中,存储节点管理器244可以依与结合上文所描述的过程600的步骤614所论述类似的方式确定多个存储节点246以检索编码数据成分。

在一些实施方案中,过程700包括造成716删除数据成分中的至少一些。例如,在由图2所示的环境200中,负责数据删除作业的存储节点管理器244可以识别存储将删除的数据的数据成分的存储节点的集合且请求那些存储节点的至少一个子集删除其各自数据成分。在从存储节点管理器244接收删除数据成分的请求之后,存储节点246的子集中的每个存储节点可以例如通过检查存储位置识别符(其是数据对象识别符的部件)的完整性、验证存储节点确实保存请求的数据成分等而证实请求。在成功证实之后,存储节点可以从连接的存储装置删除数据成分并将指示操作是否成功的确认发送到存储节点管理器244。在实施方案中,可以成批地执行多个数据删除作业使得可以整体地删除紧密定位在一起的数据对象。在一些实施方案中,当存储节点管理器244从存储节点246的至少一个子集接收肯定确认时,认为数据删除已成功。子集的大小可以被配置来确保以后无法从未删除的数据成分重建数据。可以依与分别结合过程500和过程600所描述的数据存储作业和数据检索作业的重试相似的方式重试失败的或未完成的数据删除作业。

在实施方案中,过程700包括更新718元数据信息,诸如结合过程500的步骤526所描述的信息。例如,执行删除操作的存储节点可以更新存储信息,包括索引、自由空间信息等。在实施方案中,存储节点可以对存储节点注册服务器或存储节点注册服务器存储区提供更新。在各个实施方案中,此类元数据信息中的一些可以经由批量处理和/或定期地更新以降低性能和成本影响。

图8描绘可以实施用于证实数据完整性的技术的说明性流程800。这些技术在下文结合图9-13进行更详细描述。返回到图8,在说明性流程800中,操作可以由归档数据存储服务的一个或多个处理器来执行和/或执行操作的指令可以存储在归档数据存储服务的一个或多个存储器中。在需要时,流程800可以开始于802,其中归档数据存储服务可以接收数据有效负载804的一个或多个部件。在一些实例中,数据有效负载804可以包括任何数量的部件;然而,在这个实例中,示出两个部件:部件1和部件2。部件1和部件2中的每个可以分别包括数据806和808。在一些情况中,部件1和部件2的大小可以由上传者来选择和/或可以相同。然而,在一些实例中,数据有效负载804的最后一个部件可以与所有其它大小一致的部件大小不同(例如,在此如图8中所示,其中部件1大于部件2)。在810处,流程800可以生成有效负载804的部件的子部件。在一些实例中,子部件的大小可以由归档数据存储服务预定义(例如,1MB)。

在一些实例中,流程800可以在812处计算每个子部件的摘要。各自摘要可以存储为数据结构的节点814,诸如但不限于在818处生成的数据结构816。仅举例来说,数据结构816可以包括一个或多个子部件摘要(例如,在节点814处)和/或一个或多个部件摘要(例如,部件1摘要820和部件2摘要822)。此外,在824处,流程800可以确定数据结构816的根的根摘要826。在一些实例中,可以至少部分地基于串联部件摘要和计算串联摘要的摘要而确定或生成根摘要826。流程800可以结束于828,其中归档数据存储服务可以验证接收的有效负载804匹配存储的有效负载830。在一些实例中,存储的有效负载可以包括至少部分地基于在接收时组合部件806、808和/或子部件中的每个而确定的数据832。在一些实例中,验证数据有效负载可以至少部分地基于比较根摘要826与从上传者接收的第二根摘要。

图9描绘可以实施用于证实数据完整性的额外技术的说明性数据结构900。说明性数据结构900只是可以用来实施本文中所描述的技术的许多不同类型的数据结构中的一个。仅举例来说,用户或客户端实体可能希望将数据有效负载902上传到归档数据存储服务。接着,归档数据存储服务可以被配置来接收数据有效负载902(依一个或多个部件)且允许用户在某一时刻(例如,紧接上传之后或一段时间之后,在一些情况中,在一段相对长的时间之后)验证存储在归档数据存储服务中的数据实际上与在不从用户请求任何大小划分信息的情况下上传的数据有效负载902相同。换句话来说,归档数据存储服务可以提供用户可以返回以便检索存储的数据的数据对象识别符;然而,用户可以无需存储除数据对象识别符以外的任何信息。

在一些实例中,为从用户接受数据,归档数据存储服务可以请求用户提供如同图9的数据结构900的树摘要。假设数据结构900可以根据各个实施方案依多种方式执行。例如,可以提供数据结构900中所示的所有数据。作为替代方案,在数据结构900可单独地从叶节点的数据建构而成的实施方案中,可以提供叶节点的数据而不提供其它更高级节点的信息。此外,归档数据存储服务可以依算法、API和/或SDK的形式提供用于生成数据结构900的指令。在一些实例中,可以对上传分块的大小和其各自偏移强加限制。例如,数据有效负载902的分块或部件可以限于1MB的二的幂。此外,在一些实例中,在特定上传内,每个分块的确定大小可以不变更。此外,对于每个接收的部件,归档数据存储服务可以至少部分地基于由用户使用的相同算法计算其自身摘要,且提供每个部件的摘要。在存储作业完成之后,归档数据存储服务可以提供依数据对象识别符的形式的顶级摘要值。在一些实例中,数据检索可以依相似方式实施,其中对分块大小和偏移的约束是将其限于1MB的二的幂,消息前置有消息中数据的摘要和在作业完成之后可用的顶级摘要。然而,至少部分地基于这个实施方式,数据有效负载902应能够独立于由用户选择的分块大小进行验证或证实。摘要可以通过将加密散列函数(诸如与SHA-1、SHA-2、MD5、MD6等相关的加密散列函数)、检查和或错误检测码(诸如循环冗余检查等)应用于有效负载数据中的至少一部分来计算。

图9的数据结构900可以示出数据有效负载902的适当摘要树部,其中用户已选择依单部件上传数据有效负载。因而,在这个实例中,不存在供用户选择的部件大小。然而,所得根摘要906应可使用本文中所描述的技术来计算,即使用户已选择依多个部件上传数据有效负载902和即使用户已选择归档数据存储服务未知和/或用户未记录的部件大小。在这个实例中,为简单起见,将假设数据有效负载902的大小是7MB。因而,且因为用户已请求依一个部件上传整个有效负载902,所以数据有效负载902可以划分成七个1MB分块:子分块1-子分块7。然而,在一些实例中,如果有效负载902的大小无法被1Mb整除,那么最后一个分块(子分块7)可以小于1MB。归档数据存储服务可以至少部分地基于散列树算法对于每个1MB分块(即,子分块1-子分块7)生成散列值(或摘要)。这些散列值中的每个可以依数据结构900的最低子节点级908来表示。为生成第二子节点级910的节点,归档数据存储服务可以串联每对第二级节点子且对串联的数据运行散列函数。换句话来说,数据结构的最低级908可以包括有效负载数据的摘要,而父节点可以包括摘要的摘要。上移数据结构,所描述的操作可以重复直到生成根摘要906为止。

如所描述,在一些情况中,归档数据存储服务可以提供有效负载902的个别部件的中间根摘要。然而,在这个实例中,因为有效负载不分解成部件,所以归档数据存储服务仅可以将根摘要906提供到用户。在一些情况中,然而归档数据存储服务还可以提供每个生成的1MB摘要。因而,用户或归档数据存储服务应能够验证数据已至少部分地基于比较彼此生成的根摘要906而正确地上传(包括依1MB子部件级)。

图10描绘可以实施用于证实数据完整性的额外技术的另一说明性数据结构1000。如参考图9所述,说明性数据结构1000只是可以用来实施本文中所描述的技术的许多不同类型的数据结构中的一个。仅举例来说,用户或客户端实体可能希望将数据有效负载1002上传到归档数据存储服务。接着,归档数据存储服务可以被配置来接收数据有效负载1002(在这个实例中,依两个部件)且允许用户验证存储在归档数据存储服务中的数据实际上与上传的数据有效负载1002相同。这个证实可以在不从用户请求任何大小划分信息的情况下完成。换句话来说,归档数据存储服务可以提供用户可以返回以便检索存储的数据的数据对象识别符;然而,用户可以无需存储除数据对象识别符以外的任何信息以便请求和/或证实存储的数据。

在生成数据结构1000中,用户或归档数据存储服务可以再次将数据分解成子部件;然而,在这个实例中,每个部件(部件1或部件2)可以单独地分解(例如,部件1的子部件1-子部件4和子部件1-子部件3)。此外,每个子部件的摘要可以生成且在子级1004包括在数据结构中,并且串联摘要的摘要可以生成且在第一父级1006包括在数据结构中。然而,在这个实例中,因为有效负载1002已分解成两个部件,所以可以生成每个部件的顶级摘要。因而,可以生成部件1摘要1008和部件2摘要1010可以生成且包括在数据结构1000中。此外,随着有效负载1002上传,子部件摘要(例如,在1004的那些)和部件摘要(例如,在1008的那些)中的每个可以包括在上传中。此外,可以依与生成其它父节点相同的方式生成根摘要1012。即,至少部分地基于串联子摘要和对串联的信息运行散列函数。在这个实例中,这个过程将引起串联部分1摘要1008和部件2摘要1010以生成部件级摘要。接着,归档数据存储服务可对部件级摘要运行散列函数以生成根摘要1006。在一些实例中,可以在上传开始和上传完成时接收根摘要。此外,归档数据存储服务可以生成其自身版本的数据结构1000和/或根摘要1006以便证实数据完整性。此外,在一些实例中,由归档数据存储服务生成的根摘要1006可以作为用户可以用来作出读取、删除或索引查看请求的数据对象识别符的部件提供到用户。

在一些实例中,归档数据存储服务可以假设数据损坏可在系统的任何地方发生和/或可以由硬件错误(bug)、位翻转造成和/或归因于由归档数据存储服务或用户实施的软件代码的错误。出于至少这个理由,归档数据存储服务可以查看数据路径和操作中的所有或子集以确保贯穿系统提供数据完整性和检测损坏的数据。在一些情况中,这可以应用于数据有效负载(例如,存储在归档数据存储服务中)和元数据。因而,还可以对数据对象识别符执行数据完整性证实以确保删除数据的请求不指向错误数据。

在一些方面中,归档数据存储服务206可以被配置来预期选择的或依其它方式确定的摘要函数可以接受用于数据完整性证实。在一些实例中,摘要函数不可以用于与数据变换相关的一些情况。否则,它可以被选择和/或提供以结合证实归档数据存储服务的数据和/或元数据中的一些、所有或部分一起使用。此外,如所述,在一些实例中,发起者(即,用户)可以在传输之前预先计算数据有效负载1002的摘要且接着然后可以再次将摘要随数据供应到归档数据存储服务。接着,归档数据存储服务可以重新计算摘要(例如,顶级摘要)、与从发起者接收的摘要比较和/或确认通过将归档数据存储服务生成的摘要提供到用户而证实数据完整性。此外,每次数据细分和/或聚合(例如,子部件、部分、部件级摘要和/或根摘要)可以通过对聚合数据的拆分计算独立摘要和比较摘要或甚至通过执行逐位比较而进行重新证实。换句话来说,给出任何大小的任何数据有效负载,可以执行计算以生成任何数量或类型的拆分或聚合摘要,且因此证实数据和/或部件。

此外,在一些方面中,数据变换(诸如但不限于擦除编码或加密)可通过执行逆变换进行重新证实。接着,逆变换的结果可以通过比较摘要和/或逐位比较进行交叉检查。因而,变换的数据可以包括两个摘要。两个摘要中的一个可以证明变换的数据的完整性且另一摘要可以证明原始数据的完整性。在一些实例中,可以参考内容的参考项目(诸如但不限于数据对象识别符)可以包括参考的数据的摘要。此外,归档数据存储服务还可以包括关于参考的父节点的信息。在一些情况中,来自控制平面且存留在存储节点注册服务器存储区250中的消息、数据对象识别符和/或其它数据结构可以包括自证实摘要。这些摘要可以在创建结构之后生成和/或在检索之后或行动之前验证。在一些实例中,这防止诸如代码错误、存储器损坏或位衰减等事件将数据对象检索命令翻转成删除命令。此外,在返回路径上,归档数据存储服务可以被配置来重新证实返回到客户的数据匹配请求和/或在执行期间归因于代码错误或其它等而不发生置换。

图11-13示出示例性流程图,其示出用于提供数据完整性证实的各自过程1100-1300。这些过程示出为逻辑流程图,其中的每个操作表示可依硬件、计算机指令或其组合实施的操作的序列。在计算机指令的背景下,操作表示存储在一个或多个计算机可读存储介质上且在由一个或多个处理器执行时执行所列举操作的计算机可执行指令。大体上,计算机可执行指令包括执行特定功能或实施特定数据类型的例程、程序、对象、成分、数据结构等。描述操作的次序并不希望被解释为限制性,且任何数量的所描述操作可依任何次序进行组合和/或并行以实施过程。

此外,过程中的一些、任一个或所有可以在配置有可执行指令的一个或多个计算机系统的控制下执行且可以实施为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用)、硬件或其组合。如上述,代码可以例如依计算机程序(包括可由一个或多个处理器执行的多个指令)的形式存储在计算机可读存储介质上。计算机可读存储介质可以是非暂时性的。

在一些方面中,图2中所示的一个或多个归档数据存储服务206的API请求处理机218、有效负载数据缓存228、存储节点管理器244和/或存储节点246可以执行图11的过程1100。过程1100可以开始于在1102处提供用于请求数据存储的函数调用(例如,到归档数据存储服务的用户或客户端实体)。函数调用可以是用于与归档数据存储服务交互和/或连接的API或SDK的部件。过程1100可以包括在1104处从远程计算装置(即,用户)接收数据有效负载的多个部分。在一些情况中,每个部分的大小可以一致。在其它情况中,每个部分的大小可以一致,但最后一个部分可以不同除外。此外,大小可以由用户来选择或依其它方式确定。过程1100可以包括在1106处接收每个部分的大小的指示。在一些实例中,在1104和1106处执行的动作可以一起执行为单动作。然而,可以施加关于部分大小的一些约束。诸如,在一些实例中,部分可以限于一致大小(即,其可以被要求是相同大小);然而,最后一个部分可以是数据有效负载的余部(即,有效负载减去彼此一致大小的部分)。例如,大小选择可以限于1MB或1MB的整数倍。在其它实例中,大小可以限于1MB或1MB的二的幂。

过程1100还可以包括在1108处生成有效负载的部分中的至少一些的预定义大小的一个或多个子部分。如上述,对于部分大小,虽然子部分大小可以预定义且可以是常数,但最后一个子部分可以是不同大小。预定义大小可以是1MB或任何其它大小。过程1100可以包括在1110处至少部分地基于子部分计算一个或多个摘要或散列值。摘要可以至少部分地基于公布的或依其它方式提供的算法来计算。在一些实例中,过程1100可以包括在1112处生成数据结构的根节点。数据结构可以至少部分地基于如上文所描述的子部分摘要和/或聚合摘要。过程1100可以包括在1114处确定数据结构的顶级摘要。顶级摘要可以至少部分地基于数据结构的根节点和/或基于与数据部分中的一个相关的父节点。过程1100可以包括在1116处提供被配置来使远程计算装置能够生成数据结构的指令。依此方式,用户可以生成数据结构连同归档数据存储服务。接着,过程1100可以包括在1118处接收由远程计算装置生成的顶级摘要。过程1100可以结束于在1120处验证存储的数据有效负载匹配接收的数据有效负载。换句话来说,过程1100可以证实或验证数据完整性。

图12示出另一示例性流程图,其示出用于证实数据完整性的过程1200。在一些方面中,图2中所示的一个或多个归档数据存储服务206的API请求处理机218、有效负载数据缓存228、存储节点管理器244和/或存储节点246可以执行图12的过程1200。过程1200可以开始于在1202处接收数据有效负载的一个或多个部件。如上述,部件可以是任何大小。然而,在一些实例中,部件大小可以限于1MB或1MB的倍数。依此方式,数据结构可以独立于选择的大小而组成。过程1200可以包括在1204处生成一个或多个部件的子部件。此外,这些子部件可以是任何大小或可以限于1MB或其它大小限制,诸如但不限于2MB、10MB等。过程1200可以包括在1206处基于子部件计算值。在一些情况中,所述值可以是散列值、摘要或其它加密结果。在一些实例中,过程1200可以包括在1208处生成数据结构的根节点。过程1200可以包括在1210处至少部分地基于遍历数据结构到根节点而确定数据结构的顶级值。

在一些实例中,过程1200还可以包括在1212处存储数据有效负载。有效负载可以至少部分地基于组合在1202处接收的一个或多个部件中的每个而进行存储。因而,在一些情况中,归档数据存储服务206直到所有部件的数据传输完成为止才可能在1212处存储有效负载。过程1200可以包括在1214处证实存储的数据有效负载匹配接收的数据有效负载。这可以通过比较接收的顶级值与计算的顶级值来执行。过程1200可以包括在1216处提供包括顶级值的数据对象识别符。识别符随后可以被用户用来检索和/或删除存储的数据有效负载。在一些实例中,过程1200可以包括在1218处接收对存储的有效负载的请求。存储的有效负载可以依(与每个方法步骤证实数据完整性)相似方式提供回到用户。然而,在一些情况中,过程1200可以结束于在1220处验证在提供存储的数据有效负载之前所述有效负载未变更。

图13示出另一示例性流程图,其示出用于证实数据完整性的过程1300。在一些方面中,图2中所示的一个或多个归档数据存储服务206的API请求处理机218、有效负载数据缓存228、存储节点管理器244和/或存储节点246可以执行图13的过程1300。过程1300可以开始于在1302处提供用于进行方法调用以对数据执行操作的指令。在一些实例中,这些方法调用可以经由一个或多个API揭示或在一个或多个SDK中提供。过程1300可以包括在1304处使用验证算法基于数据对象分成第一分区的第一划分而执行第一操作。在一些实例中,第一分区可以包括1MB或其它一致大小的分块,其可以用来生成数据结构,诸如但不限于摘要的散列树或其它二叉树。在一些实例中,第一操作可以包括通过网络从用户接收数据。过程1300可以包括在1306处基于第一分区验证数据对象以生成第一验证值(例如,散列码、检查和等)。过程1300还可以包括在1308处利用相同验证算法至少部分地基于数据对象分成第二分区的第二划分而对数据对象执行第二操作。第二分区可以是与第一分区不同的大小。至少部分地基于第二分区,过程1300可以包括在1310处验证数据对象以生成第二值。在此,第二操作还可以包括将数据传输到归档数据存储服务。第二验证值(如同第一验证值)可以包括但不限于分区摘要、通过聚合分区摘要形成的摘要的摘要和/或数据结构的顶级摘要。过程1300可以结束于在1312处确定第二验证值是否等于第一验证值。这可以至少部分地基于比较两个值而确定。在一些实例中,如果正确地执行验证算法且数据维持其完整性,那么预期两个值相等。即,独立于两个分区集的大小(即,第一划分和第二划分),验证值应相等。

图14描绘可以实施用于存储驱动器旋转调度的技术的说明性架构1400。在说明性架构1400中,归档数据存储系统1402可以提供一个或多个归档服务,包括但不限于归档数据存储、批量作业处理、数据检索、数据管理、存储装置管理和/或旋转调度。在一些方面中,归档数据存储系统1402可以确定和/或存储旋转调度1404。如上述,旋转调度1404可以指示激活哪些驱动器和何时激活。此外,旋转调度1404可以至少部分地基于多个因素来确定和/或可以由数据存储节点管理器和/或数据存储节点提供。在一些实例中,旋转调度1404可以提供到控制器1406。在一些实例中,控制器1406可以包括上述一个或多个存储节点。或者或此外,控制器1406可以包括但不限于专用存储器控制器、小型计算机系统界面(SCSI)控制器、集成驱动器电子装置(IDE)控制器、光纤通道控制器、串行连接SCSI控制器等。此外,控制器1406可是这些控制器的抽象体、或经由所列协议与这些驱动器控制器进行通信的某种“超级控制器”。仅举例来说,控制器1406可以被配置来至少部分地基于一个或多个指令1410控制机柜1408的一个或多个硬盘驱动器(hard drive)(或硬盘驱动器(harddisk drive)(HDD))组或其它配置。例如,指令1412可以对应于将对HDD组1执行的动作,指令1414可以对应于HDD组2,依此类推。依此方式,控制器1406可以被配置来至少部分地基于调度1404对每个HDD组执行不同指令。

在一个非限制性实例中,控制器1406可以遵循调度1404以至少部分地基于被标记为“开(ON)”的指令1418激活HDD组4。即,指令1418可以对应于HDD组4且可以指示HDD组4应运行达一段预定时间量。如上述,每组可以运行的时间量可以至少部分地基于多个因素(包括但不限于一小时中的一部分)、至少部分地基于存储节点的分组和/或一些按需请求。在预定义时间周期已截止之后,控制器1406可以沿指令1410的链下移“开”指令1418使得下一个可以运行的是HDD组5。因而,指令1420被标记为“加电”以指示可以调度HDD组5以在将来某个时间点开始加电。相似地,指令1416被标记为“掉电”以指示HDD组3在运行之后仍可以掉电。在至少一个实例中,在预定义时间之后(例如,至少部分地基于调度),控制器1406可以使指令下移一位使得指令1418可以被标记为“开”,且HDD组5可以变为激活。其它案例和/或实例可能用于调度驱动器的旋转。例如,每个HDD组可以仅包括单存储驱动器使得每个HDD组可以包括一个或多个驱动器且不限于每组包括多个驱动器的案例。此外,如上述,可以至少部分地基于同时激活多个驱动器而处理额外指令以免电力消耗尖峰。例如,在需要时,可以调度被调度来在一段特定周期期间旋转的组中驱动器以每次激活一个驱动器或依子组激活。此外,HDD组(和/或个别硬盘驱动器)可以非如所示般列出和/或可以不依任何特定次序。例如,控制器106反而可以追踪表、图表、索引等,其驱动器或组已在一段特定周期期间激活且随机地(或按需地)重复循环在所述周期期间尚未激活的驱动器的激活。因此,控制器1406可以自由确定应激活哪些驱动器和何时激活而不受图14中所示的分组或清单限制。

图15描绘可以实施用于存储驱动器旋转调度的额外技术的说明性架构1500。在说明性架构1500中,归档数据存储系统1502可以提供一个或多个归档服务,包括但不限于归档数据存储、批量作业处理、数据检索、数据管理、存储装置管理和/或旋转调度。因而,在一些方面中,归档数据存储系统1502可以确定和/或存储旋转调度1504。如上述,旋转调度1504可以指示激活存储装置的哪些驱动器(例如,归档数据存储系统1504的驱动器)和/或在哪些时间周期期间激活。此外,旋转调度1504可以至少部分地基于多个因素来确定和/或可以由如上文所描述的数据存储节点管理器224和/或数据存储节点提供。

在一些方面中,控制器1506可以被配置来控制一个或多个硬盘驱动器(1508(1)、...、1508(N)(被统称为“硬盘驱动器1508”)。仅举例来说,硬盘驱动器1508是依阵列或有序清单示出;然而,可以预想任何排序和/或其它组织用于确定哪些特定硬盘驱动器1508或硬盘驱动器集是在其它特定硬盘驱动器1508(或硬盘驱动器集)之前还是之后。例如,阵列可以被控制器用于指向将激活的下一个硬盘驱动器(例如,至少部分地基于某个逻辑映射)且不被用于对硬盘驱动器1508排序。然而,在其它实例中,阵列可以用来动态地对硬盘驱动器排序(例如,当实施按需旋转调度时)。

在一些实例中,可以预想窗口1510(或滑尺)用于激活硬盘驱动器1508。至少部分地基于预定义时间周期,窗口1510可以例如在每个周期沿阵列移动以变成窗口1512、1514和1516。换句话来说,窗口1510可以表示在第一周期期间运行或由控制器1506激活的硬盘驱动器1508。即,举例来说且不限于,在第一周期期间,硬盘驱动器1508(1)-1508(5)可以运行(即,提供电力或脱离睡眠模式)。在图15中所示的实例中,在第一周期结束时,窗口1510可以移动以变成窗口1512,其中硬盘驱动器1508(2)-1508(6)变为运行。在一些实例中,当发生过渡时(即,窗口1510滑动),硬盘驱动器1508(1)可以在控制器1506激活硬盘驱动器1508(6)之前掉电。依此方式,与操作硬盘驱动器1508的阵列相关的电力消耗可以不超过特定电平。

此外,在一些方面中,窗口1510、1512、1514、1516可以由长度1518界定。所述长度可以至少部分地基于需求、总硬盘驱动器1508的百分比、总硬盘驱动器1508的预定数量、某个预定电平的电力消耗、温度、成本等来确定。此外,窗口可以被配置来最小化硬盘驱动器1508的电力消耗、最小化与硬盘驱动器1508相关的操作成本和/或最大化硬盘驱动器1508的操作寿命(例如,硬盘驱动器1508在出故障或依其它方式进行检修、进行修复或进行取代之前将工作多久)。因而,长度1518可以贯穿旋转调度1504恒定或其可以是动态的。在一些实例中,一旦窗口1510到达硬盘驱动器1508的阵列的末端,那么窗口1510可以循环回到开端。这可以绘画般地表示为环形阵列,其中硬盘驱动器1508(1)将接续硬盘驱动器1508(N)。此外,在一些实例中,可以根本不使用如图15中所示的阵列。实际上,任何其它形式或类型的数据结构可以用来依使得旋转调度1504可以确定和/或控制在何时激活哪些硬盘驱动器1508的方式组织硬盘驱动器1508。此外,硬盘驱动器1508中的每个实际上可以是一个或多个硬盘驱动器的组而非单驱动器。在这个案例中,控制器1506还可以被配置来使硬盘驱动器组内的每个单硬盘驱动器的激活交错以便限制电力尖峰或其它潜在电力消耗问题。

在一些实例中,硬盘驱动器1508可以依诸如通过阵列1520所示的逻辑次序来配置。硬盘驱动器1508还可以依诸如通过说明性物理机柜1522所示且可以与逻辑次序不同的物理次序配置在服务器中或在机柜上。即,硬盘驱动器1508实际上可以依与逻辑阵列1520中所示的次序相反所示的次序定位在物理机柜1522上。因此,随着调度1504沿逻辑次序1520移动窗口1510,硬盘驱动器1508可以至少部分地基于其逻辑次序和/或其物理位置激活或依其它方式加电。此外,矩阵1524可以根据调度1504指示在每个单位时间激活哪些硬盘驱动器1508。在一些实例中,矩阵1524中的每行或列可以表示服务器或机箱中的物理机柜使得相邻行可以表示相邻机柜。此外,在一些实例中,可以提供和/或实施一个或多个约束使得可以确保硬盘驱动器1508在矩阵1524上的均匀分布或其它分布。例如,为均匀地分布启用的硬盘驱动器1508,条件或约束可以指示可以不激活在矩阵1524的其它硬盘驱动器1508的特定距离内的特定温度、年限、位置、振动量等的硬盘驱动器1508。例如,调度1504可以指示激活特定硬盘驱动器1508;然而,条件可以指导归档数据存储服务1502修改指示或提供指令以替代地激活不同硬盘驱动器1508。

如参考图15所描述,在一些方面中,总数量的硬盘驱动器1508可以分成预定义数量的组。接着,这些组可以至少部分地基于旋转调度1504进入旋转操作和停止旋转操作。这种方法可以允许存储节点注册服务器248确定何时和何处进行新写入操作或何时可能执行读取或删除操作。在一些实例中,数据存储节点管理器224可能未知这个知识且可以遵循存储节点注册服务器248的指导。然而,在其它实例中,可以按需地确定旋转调度804。例如,至少部分地基于来自一个或多个数据存储节点管理器224的读取请求,存储节点注册服务器248可以选择应进入旋转的多个硬盘驱动器808且接着将消息发送到数据存储节点。或者,数据存储节点管理器224可以直接联系数据存储节点。在一些实例中,特定约束可以影响旋转调度1504,包括但不限于非希望目的、时间太久、对具有仅一个未完读取请求的驱动器的请求。

图16-18示出示例性流程图,其示出用于提供数据存储电力管理的各自过程1600-1800。这些过程示出为逻辑流程图,其中的每个操作表示可依硬件、计算机指令或其组合实施的操作的序列。在计算机指令的背景下,操作表示存储在一个或多个计算机可读存储介质上且在由一个或多个处理器执行时执行所列举操作的计算机可执行指令。大体上,计算机可执行指令包括执行特定功能或实施特定数据类型的例程、程序、对象、成分、数据结构等。描述操作的次序并不希望被解释为限制性,且任何数量的所描述操作可依任何次序进行组合和/或并行以实施过程。

此外,过程中的一些、任一个或所有可以在配置有可执行指令的一个或多个计算机系统的控制下执行且可以实施为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用)、硬件或其组合。如上述,代码可以例如依计算机程序(包括可由一个或多个处理器执行的多个指令)的形式存储在计算机可读存储介质上。计算机可读存储介质可以是非暂时性的。

在一些方面中,图2中所示的归档数据存储服务206的存储节点管理器244、存储节点246、存储节点注册服务器存储区250和/或其他数据存储装置或集合可以执行图16的过程1600。过程1600可以开始于在1602处将归档数据存储服务206的一个或多个数据存储装置分类成组。在一些实例中,每组可以是数据存储装置子集或子集部件。此外,分类可以涉及确定将至少部分地基于存储装置的特性(诸如但不限于位置、电力消耗、年限、速度、成本等)分组在一起的存储装置的量或百分比。过程可以包括在1604处根据调度修改组的电力状态。调度可以被配置来确保一定量的数据存储装置平均处于掉电状态。掉电状态可以是低电力状态、睡眠模式、掉电状态、关状态等。此外,将处于掉电状态的装置的量可以至少部分地基于所要电力消耗电平和/或与操作归档数据存储服务206相关的成本。此外,在一些实例中,调度可以被接收或依其它方式至少部分地基于存储节点注册服务器存储区250、存储节点注册服务器248和/或数据存储节点。

在一些实例中,过程1600还可以包括在1606处获得一批数据处理请求。数据处理请求可以是一批或有限分组请求的部件或其可以是较同步操作的队列的部件。此外,该批请求可以包括读取请求、索引清单请求、写入请求、删除请求等。过程1600可以包括在1608处理该批请求。在一些实例中,处理请求可以包括在1610处识别处于掉电状态且在通电时将可用来为请求服务的存储装置。此外,处理请求还可以包括在1612处在根据调度修改包括处于加电状态的识别的存储装置(例如,来自1610)的组时为请求服务。即,一旦识别的存储装置加电或依其它方式启用,那么归档数据存储服务206可以为请求服务(例如,从存储装置读取数据或从存储装置删除数据)。此外,在一些情况中,1608、1610和/或1612的动作可以处理为单动作、两个动作或三个单独动作。在一些实例中,过程1600可以结束于1612。然而,在其它实例中,过程1600可以结束于使处于加电状态的存储装置组掉电。或者或此外,过程1600可以包括在1614处在使包括识别的存储装置的组加电之前和/或在为请求服务之前使处于加电状态的存储装置组掉电。

图17示出另一示例性流程图,其示出用于数据存储电力管理的过程1700。在一些方面中,图2中所示的归档数据存储服务206的存储节点管理器244、存储节点246、存储节点注册服务器存储区250和/或其他数据存储装置或集合可以执行图17的过程1700。过程1700可以开始于在1702处从数据存储节点246、存储节点注册服务器248或存储节点注册服务器存储区250接收旋转调度、执行规程或其它类型的时间表。如所述,调度可以由数据存储节点246来执行。如上文所述,调度可以包括哪些存储装置(或硬盘驱动器)启用或依其它方式加电和何时启用或依其它方式加电的指令。在一些实例中,调度还可以包括对可以被配置来通过使磁盘减速、停止或加速和/或通过经由移除电信号停用存储装置而管理每个存储装置的电力消耗的装置控制器的指令。过程1700可以包括在1704处至少部分地基于调度管理一个或多个存储装置的电力。

过程1700还可以包括在1706处识别与存储装置相关的一批请求的一个或多个数据处理请求。如上文所述,请求可以依单批接收。此外,可以在1708处成批地处理请求。然而,在一些实例中,可以成批地接收且循序地处理请求,但可能直到归档数据存储服务206已完成该批请求中的一些或所有为止才接收新请求。过程1700可以包括在1710处识别处于低电力模式且能够在加电时为请求服务的数据存储装置。此外,过程1700可以结束于一旦使识别的存储装置基于调度加电就为请求服务。依此方式,调度可以控制存储装置的电力管理,同时该批请求可以影响调度。依此方式,可以认为本文中所描述的数据存储电力管理是按需的。此外,在一些方面中,在1708处处理数据处理请求可以包括1710和/或1712的动作。因而,所述动作均可以依单动作执行。

图18示出另一示例性流程图,其示出用于证实数据完整性的过程1800。在一些方面中,图2中所示的归档数据存储服务206的存储节点管理器244、存储节点246、存储节点注册服务器存储区250和/或其他数据存储装置或集合可以执行图18的过程1800。过程1800可以开始于在1802处接收被配置来使能够与访问存储装置同步而管理一个或多个存储装置的电力消耗的全局时间信号。即,全局时间信号可以被归档数据存储服务206用来正确地对何时管理每个存储装置的电力计时。此外,归档数据存储服务206可以利用全局时间信号以确定何时访问数据存储装置。因而,在一些实例中,两个动作可以同步使得在已管理存储装置的电力消耗之后访问存储装置,从而其开、加电或依其它方式可访问而无明显延迟。过程1800可以包括在1804处获得与在与第二存储装置不同的时间启用第一存储装置相关的调度,其中两个存储装置中的每个是存储装置集的部件。换句话来说,调度可以包括指示所述集的哪些存储装置应加电和何时加电(包括但不限于第一装置和第二装置应何时加电)的信息。过程1800还可以包括在1806处识别访问存储装置集的一批请求中的请求。如上文所述,请求可以包括读取请求、写入请求、删除请求、索引清单请求等。过程1800可以包括在1808处至少部分地基于调度确定启用哪个存储装置。所述确定可以包括选择第一存储装置、第二存储装置或由归档数据存储服务206控制或管理的存储装置集中的任何其它存储装置。此外,过程1800可以结束于在1810处至少部分地基于来自1808的确定管理确定的存储装置的电力消耗。

上文描述用于证实数据完整性的说明性方法和系统。可以但无需至少部分地由诸如上文所示的架构实施这些系统和方法中的一些或所有。

图19示出根据各个实施方案的用于实施方面的示例性环境1900的方面。如将明白,尽管基于网页的环境用于说明目的,但可以酌情使用不同环境来实施各个实施方案。环境可以包括电子客户端装置1902,其可包括可操作以通过适当网络1904发送和接收请求、消息或信息并将信息递送回到装置用户的任何适当装置。这些客户端装置的实例包括个人计算机、手机、手持消息传递装置、膝上型计算机、机顶盒、个人数据助理、电子书阅读器等。网络可包括任何适当网络,包括内联网、互联网、蜂窝网络、局域网或任何其它这种网络或其组合。用于这个系统的组件可至少部分地取决于选择的网络和/或环境的类型。用于经由这个网络进行通信的协议和组件是熟知的且本文中将不再详细论述。可通过有线或无线连接和其组合实现通过网络进行通信。在这个实例中,网络包括互联网,因为环境包括用于接收请求并响应于其而为内容服务的网页服务器1906,但对于其它网络,所属技术领域一般人员将明白可使用为相似目的服务的替代装置。

说明性环境包括至少一个应用服务器1908和数据存储区1910。应了解,可存在多个应用服务器、层或其它元件、过程或组件,其可以链接或依其它方式配置,可交互以执行诸如从适当数据存储区获得数据的任务。如本文中所使用,术语“数据存储区”指代能够存储、访问和检索数据的任何装置或装置组合,其可以包括在任何标准分布式或群集式环境中的任何组合和数量的数据服务器、数据库、数据存储装置和数据存储介质。应用服务器可包括用于根据需要与数据存储区集成以执行客户端装置的一个或多个应用的方面、处理应用的大量数据访问和业务逻辑的任何适当硬件和软件。应用服务器提供与数据存储区协作的访问控制服务,且能够生成传送到用户的内容(诸如文字、图形、音频和/或视频),在这个实例中其可以通过网页服务器依HTML、XML或另一适当结构化语言服务于用户。可由网页服务器处理所有请求和响应的处理以及客户端装置1902与应用服务器1908之间的内容的递送。应了解,网页服务器和应用服务器不做要求且仅是示例性组件,因为可对如在本文别处所论述的任何适当装置或主机执行本文中所论述的结构化代码。

数据存储区1910可包括用于存储涉及特定方面的数据的多个单独数据表、数据库或其它数据存储机制和介质。例如,所示数据存储区包括用于存储生产数据1912和用户信息1916的机制,其可用来为生产端的内容服务。数据存储区还被示出为包括用于存储日志数据1914的机制,其可用于报告、分析或其它这种目的。应了解,可存在可能需要存储在数据存储区中诸如用于页面图像信息和访问权信息的许多其它方面,其可酌情存储在上列机制中的任一个或数据存储区1910中的额外机制中。数据存储区1910可通过与其相关的逻辑操作,以接收来自应用服务器1908的指令,且响应于其而获得、更新或依其它方式处理数据。在一个实例中,用户可以提交对特定类型项目的搜索请求。在这种情况中,数据存储区可以访问用户信息以验证用户身份,且可访问目录详情信息以获得关于所述类型项目的信息。接着,可诸如依列在网页上且用户能够经由用户装置1902上的浏览器查看的结果将信息返回到用户。可在浏览器的专用页面或窗口中查看特定关注项目的信息。

每个服务器通常将包括提供用于一般地管理和操作所述服务器的可执行程序指令的操作系统,且通常将包括存储在由所述服务器的处理器执行时允许所述服务器执行其预期功能的指令的计算机可读存储介质(例如,硬盘驱动器、随机存取存储器、只读存储器等)。操作系统的合适实施方式和服务器的一般功能已知或可市售,且容易由所属技术领域一般人员特别地鉴于本公开来实施。

一个实施方案中的环境是利用使用一个或多个计算机网络或直接连接以经由通信链路互连的多个计算机系统和组件的分布式计算环境。然而,所属技术领域一般人员将明白,这个系统同样可在具有少于或多于图19中所示的数量的组件的系统中很好地操作。因此,应认为图19中的系统1900的描绘本质上是说明性的,且不限于本公开的范围。

可鉴于下列条款描述本公开的示例性实施方案:

1.一种用于提供具成本效益的且耐久的归档数据存储服务的计算机实施方法,其包括:

在配置有可执行指令的归档数据存储系统的一个或多个计算机系统的控制下,

通过网络从请求者系统接收将数据对象存储到所述归档数据存储系统中的存储请求;

造成将所述数据对象存储在所述归档数据存储系统中;

提供与数据对象相关的数据对象识别符;

结合检索所述数据对象的检索请求,接收所述数据对象识别符;

创建对应于所述检索请求的检索作业;

将所述检索作业添加到未决作业的集合;

依一批或多批处理所述未决作业集合;和

提供所述检索的数据对象。

2.根据条款1所述的计算机实施方法,其还包括创建对应于所述存储请求的存储作业和将所述存储作业添加到所述未决作业集合,且其中造成存储所述数据对象包括造成将所述数据对象存储在分级存储装置中。

3.根据条款1所述的计算机实施方法,其还包括提供与所述检索作业相关的检索作业识别符且其中提供所述检索的数据对象包括依一个或多个部件将所述检索的数据对象传输到在对所述数据对象的请求中指定所述检索作业识别符的请求者系统。

4.根据条款1所述的计算机实施方法,其还包括在成功地完成所述检索作业之后提供所述检索作业完成的通知。

5.根据条款2所述的计算机实施方法,其中提供所述检索的数据对象包括从所述分级存储区检索所述数据对象。

6.根据条款1所述的计算机实施方法,其还包括至少部分地基于所述数据对象中的至少一部分的摘要证实所述数据对象的完整性。

7.一种计算机实施方法,其包括:

在配置有可执行指令的一个或多个计算机系统的控制下,

接收检索数据对象的数据检索请求,所述数据检索请求指定数据对象识别符;

创建对应于所述数据检索请求的数据检索作业;

提供与所述数据检索作业相关且可用于获得关于所述数据检索作业的信息的作业识别符;和

在提供所述作业识别符之后,至少部分地使用所述数据对象识别符处理所述数据检索作业以提供对所述数据对象的访问。

8.根据条款7所述的计算机实施方法,其中响应于存储所述数据对象的先前存储请求而提供所述数据对象识别符。

9.根据条款7所述的计算机实施方法,其中处理所述数据检索作业包括:

选择所述数据检索作业用于执行;

至少部分地基于所述数据对象识别符,确定用于存储一个或多个编码数据成分的一个或多个存储实体,所述一个或多个编码数据成分是至少部分地基于所述数据对象而生成;

造成从所述确定的检索所述一个或多个编码数据成分中的至少一些;和

解码所述检索的编码数据成分以获得所述检索的数据对象。

10.根据条款9所述的计算机实施方法,其中选择所述数据检索作业至少部分地基于批量处理调度。

11.根据条款10所述的计算机实施方法,其中所述批量处理调度用来增大效率。

12.根据条款7所述的计算机实施方法,其还包括响应于指定所述作业识别符的作业状态请求而提供所述数据检索作业的状态。

13.一种用于提供归档数据存储服务的系统,其包括:

一个或多个归档数据存储装置;

瞬态数据存储区;

一个或多个处理器;

存储器,其包括在由所述一个或多个处理器执行时造成所述一个或多个处理器共同地进行至少以下步骤的可执行指令:

接收存储数据对象的数据存储请求;

造成将所述数据对象存储在所述瞬态存储区中;

提供与所述数据相关的数据对象识别符,所述数据对象识别符编码可用来定位所述数据对象的至少存储位置信息;和

在提供所述数据对象识别符之后,造成将所述数据对象存储在由所述存储位置信息指定的位置中。

14.根据条款13所述的系统,其中所述可执行指令在由所述一个或多个处理器执行时还造成所述一个或多个处理器共同地创建对应于所述数据存储请求的数据存储作业,且其中造成将所述数据对象存储在由所述存储位置信息指定的位置中包括至少部分地基于所述存储位置信息处理所述数据存储作业。

15.根据条款14所述的系统,其中处理所述数据存储作业包括至少部分地基于批量处理调度而调度所述作业用于执行。

16.根据条款13所述的系统,其中造成将所述数据对象存储在由所述存储位置信息指定的位置中包括:

从所述瞬态存储区获得所述数据对象;

获得一个或多个数据编码方案;

使用所述一个或多个编码方案编码所述数据对象以获得多个编码的数据成分;和

造成将所述多个编码的数据成分存储在所述一个或多个归档数据存储装置中的至少一些中。

17.根据条款13所述的系统,其中所述数据对象识别符编码可用来证实所述数据对象的完整性的至少数据证实信息。

18.根据条款17所述的系统,其中所述可执行指令在由所述一个或多个处理器执行时还造成所述一个或多个处理器至少部分地基于所述数据证实信息共同地证实所述数据对象的完整性。

19.一种或多种具有共同地存储在其上的可执行指令的非暂时性计算机可读存储介质,所述可执行指令在由归档数据存储系统的一个或多个处理器执行时造成所述系统进行至少以下步骤:

接收多个数据检索请求,所述多个数据检索请求中的每个指定将检索的数据对象的数据对象识别符;

造成创建数据检索作业,每个数据检索作业对应于接收的数据检索请求;

造成提供作业识别符,每个作业识别符对应于数据检索作业且可用来获得关于所述数据检索作业的信息;

造成聚合所述数据检索作业的至少一个子集以形成作业批;和

在造成提供所述作业识别符之后,造成处理对应于所述数据检索作业子集的所述作业批。

20.根据条款19所述的一种或多种计算机可读存储介质,其中所述指令还致使所述系统造成聚合所述多个数据检索请求的至少一个子集以形成请求批,且造成至少部分地基于对应于所述数据检索请求子集的数据对象识别符证实所述请求批。

21.根据条款19所述的一种或多种计算机可读存储介质,其中所述指令还致使所述系统造成至少部分地基于电力管理调度处理所述数据检索作业中的至少一些。

22.根据条款19所述的一种或多种计算机可读存储介质,其中其中所述指令还致使所述系统造成划分所述数据检索作业以促进并行处理。

23.根据条款19所述的一种或多种计算机可读存储介质,其中其中所述指令还致使所述系统提供对对应于所述多个数据检索请求的所述数据对象中的至少一些的访问。

24.根据条款23所述的一种或多种计算机可读存储介质,其中其中所述指令还致使所述系统造成证实对应于所述多个数据检索请求的所述数据对象中的至少一些的数据完整性。

25.一种用于数据完整性验证的计算机实施方法,其包括:

在配置有可执行指令的一个或多个计算机系统的控制下,

结合对归档数据存储服务的请求,从远程计算装置接收数据有效负载的多个部分;

对于所述多个部分的至少一个子集的每个部分,生成预定义大小的一个或多个子部分;

至少部分地基于所述一个或多个子部分计算一个或多个摘要;

生成阶层式数据结构的至少一个根节点,其中节点表示至少所述一个或多个摘要;

确定与所述阶层式数据结构的根节点相关的所述阶层式数据结构的顶级摘要;

接收由所述远程计算装置生成且对应于所述数据有效负载的顶级摘要;和

至少部分地基于比较所述接收的顶级摘要与所述确定的顶级摘要,验证存储的数据有效负载匹配对应于所述接收的多个部分的接收的数据有效负载。

26.根据条款25所述的计算机实施方法,其还包括将指令提供到所述远程计算装置,所述指令被配置来使所述远程计算装置能够生成所述阶层式数据结构且提供所述接收的顶级摘要。

27.根据条款25所述的计算机实施方法,其中所述数据有效负载的所述多个部分从所述远程计算装置接收作为电子请求的部件,以存储所述数据有效负载。

28.根据条款27所述的计算机实施方法,其还包括对所述远程装置提供函数调用以作出所述电子请求,且其中所述电子请求包括至少所述提供的函数调用。

29.根据条款25所述的计算机实施方法,其中所述阶层式数据结构包括至少一个二叉树。

30.根据条款25所述的计算机实施方法,其还包括接收所述多个部分中的每个的大小的指示。

31.一种用于数据完整性验证的计算机实施方法,其包括:

在配置有可执行指令的一个或多个计算机系统的控制下,

接收数据有效负载的一个或多个部件;

对于所述一个或多个部件的至少一个子集的每个部件,生成子部件;

至少部分地基于所述生成的子部件计算值;

至少部分地基于所述计算值生成数据结构的至少一个根节点;和

确定与所述数据结构的所述根节点相关的所述数据结构的顶级值。

32.根据条款31所述的计算机实施方法,其还包括:

将所述数据有效负载存储在归档数据存储装置中;和

至少部分地基于所述确定的顶级值和接收的顶级值,证实所述存储的数据有效负载匹配对应于所述接收的一个或多个部件的接收的数据有效负载。

33.根据条款31所述的计算机实施方法,其中所述子部件生成为第一预定义大小,且其中所述接收的一个或多个部件是等于所述第一预定义大小的整数倍的第二大小。

34.根据条款33所述的计算机实施方法,其中所述整数至少部分地基于所述数据结构的分支的叉度。

35.根据条款31所述的计算机实施方法,其还包括提供用于识别所述数据有效负载的数据对象识别符,所述数据对象识别符包括所述数据结构的所述顶级值。

36.根据条款35所述的计算机实施方法,其还包括:

接收对所述存储的数据有效负载的请求;和

至少部分地基于所述顶级值,验证在提供所述存储的数据有效负载之前所述数据有效负载未变更。

37.根据条款31所述的计算机实施方法,其还包括:

将第一存储装置的数据有效负载存储到第二存储装置;和

至少部分地基于所述顶级值,验证存储在所述第二存储装置中的所述数据有效负载匹配所述第一存储装置的所述数据有效负载。

38.根据条款31所述的计算机实施方法,其还包括:

至少部分地基于第二生成的子部件,重新划分所述数据有效负载,所述第二生成的子部件与所述生成的子部件不同;和

至少部分地基于所述顶级值,验证所述重新划分的数据有效负载匹配存储的数据有效负载,所述存储的数据有效负载至少部分地基于所述接收的数据有效负载。

39.一种用于验证数据完整性的系统,其包括:

至少一个存储器,其存储计算机可执行指令;和

至少一个处理器,其被配置来访问所述至少一个存储器,其中所述至少一个处理器被配置来执行所述计算机可执行指令以共同地进行至少以下步骤:

存储至少一个数据分块,所述数据包括多个分块;

生成所述至少一个数据分块的至少一个子分块;

存储对应于所述子分块的至少一个摘要;

至少部分地基于对应于所述子分块的所述存储的摘要,生成数据结构;和

将所述生成的数据结构的顶级摘要提供到计算装置。

40.根据条款39所述的系统,其中所述至少一个处理器还被配置来执行所述计算机可执行指令以至少部分地基于由所述计算装置指示的预定义大小从所述计算装置接收所述至少一个数据分块。

41.根据条款40所述的系统,其中依电子请求从所述计算装置接收所述至少一个数据分块,以至少部分地基于由所述系统提供的指令格式存储所述数据。

42.根据条款39所述的系统,其中所述顶级摘要被前置于被配置来识别所述数据的识别符。

43.根据条款42所述的系统,其中所述至少一个处理器还被配置来执行所述计算机可执行指令以:

存储包括所述多个分块的所述数据;

接收将所述数据提供到所述计算装置的请求,所述请求包括所述识别符;和

在将所述数据提供到所述计算装置之前,至少部分地基于所述顶级摘要,证实所述数据。

44.根据条款42所述的系统,其中所述至少一个处理器还被配置来执行所述计算机可执行指令以:

生成所述识别符的摘要;和

在依指令参考所述识别符之前,至少部分地基于所述识别符的所述生成的摘要,证实所述识别符。

45.一种或多种存储用于验证数据完整性的计算机可执行指令的计算机可读介质,所述计算机可执行指令在由一个或多个处理器执行时配置所述一个或多个处理器以执行以下操作,包括:

结合数据对象执行第一数据操作,所述第一数据操作至少部分地基于所述数据对象分成第一分区的第一划分;

至少部分地基于所述第一分区,使用数据验证算法验证所述数据对象以生成第一验证值;

结合所述数据对象执行第二数据操作,所述第二数据操作至少部分地基于所述数据对象分成第二分区的第二划分,所述第二分区与所述第一分区不同;

使用所述数据验证算法验证所述数据对象以生成第二验证值;和

确定所述第二验证值是否匹配所述第一验证值。

46.根据条款45所述的一种或多种计算机可读介质,其中使用所述数据验证算法包括依预定大小生成所述数据的一个或多个分区。

47.根据条款46所述的一种或多种计算机可读介质,其中所述第一分区中的至少一个或所述第二部分中的至少一个具有等于所述预定大小的倍数的大小,所述倍数是与所述第一数据对象相关的数据结构的叉度的整数取幂的结果。

48.根据条款45所述的一种或多种计算机可读介质,其中所述指令还配置所述一个或多个处理器以执行包括提供用于进行方法调用以执行所述第一数据操作或所述第二数据操作中的至少一个的指令的操作。

49.根据条款45所述的一种或多种计算机可读介质,其中所述第一数据操作或所述第二数据操作中的至少一个是通过网络传送所述数据对象。

50.根据条款49所述的一种或多种计算机可读介质,其中通过所述网络依部件传送所述对象。

51.根据条款45所述的一种或多种计算机可读介质,其中所述第一操作包括至少接收所述数据对象且所述第二操作包括将所述数据对象至少存储在归档数据存储装置中。

52.根据条款51所述的一种或多种计算机可读介质,其中所述指令还配置所述一个或多个处理器以执行包括至少部分地基于所述第二验证值确保所述数据对象的完整性的操作。

53.根据条款51所述的一种或多种计算机可读介质,其中所述指令还配置所述一个或多个处理器以执行包括至少部分地基于所述第二分区确保所述数据对象的完整性的操作。

54.一种用于管理存储装置电力的计算机实施方法,其包括:

在配置有可执行指令的一个或多个计算机系统的控制下,

将归档数据存储系统的数据存储装置分类成组,每组包括所述数据存储装置的子集;

根据调度修改所述组的电力状态,所述调度被配置来确保预定量的所述数据存储装置平均处于掉电状态;

获得一批数据处理请求;和

针对所述请求的至少一个子集的每个请求通过至少以下步骤来处理所述数据处理请求批:

识别处于所述掉电状态且在处于加电状态时可用来为所述请求服务的数据存储装置;和

在根据所述调度修改包括处于所述加电状态的所述识别的数据存储装置的组时,为所述请求服务。

55.根据条款54所述的计算机实施方法,其中所述组指示至少一定量的所述子集的所述数据存储装置。

56.根据条款54所述的计算机实施方法,其中修改所述组的所述电力状态包括至少将指令提供到被配置来使所述组的所述数据存储装置加电或掉电中的至少一个的存储装置控制器。

57.根据条款54所述的计算机实施方法,其中所述数据处理请求批包括存储数据的请求、删除数据的请求或读取数据的请求中的至少一个。

58.根据条款54所述的计算机实施方法,其中为所述请求服务包括从所述识别的数据存储装置至少读取或删除数据。

59.根据条款54所述的计算机实施方法,其还包括在修改包括处于所述加电状态的所述识别的数据存储装置的所述组之前,使处于所述加电状态的组中存储装置掉电。

60.一种用于管理存储装置电力的计算机实施方法,其包括:

在配置有可执行指令的一个或多个计算机系统的控制下,

至少部分地基于调度,管理一个或多个数据存储装置的电力;

识别一批的数据处理请求,所述请求与所述一个或多个数据存储装置相关;和

通过至少以下步骤处理所述数据处理请求:

识别处于低电力状态且能够在处于较高电力状态时为所述请求服务的数据存储装置;和

在使所述识别的数据存储装置至少部分地基于所述调度加电时,为所述请求服务。

61.根据条款60所述的计算机实施方法,其中所述调度被配置来保持预定量的所述数据存储装置处于所述低电力状态。

62.根据条款60所述的计算机实施方法,其还包括由被配置来执行与所述数据存储装置相关的数据处理作业的数据存储节点实施所述调度。

63.根据条款60所述的计算机实施方法,其还包括从被配置来管理与所述数据存储装置相关的数据处理作业的存储节点注册服务器接收所述调度。

64.根据条款60所述的计算机实施方法,其中至少部分地基于所述批来处理所述数据处理请求。

65.根据条款60所述的计算机实施方法,其中所述数据处理请求是读取请求、写入请求或删除请求中的至少一个。

66.一种用于管理存储装置电力的系统,其包括:

至少一个存储器,其存储计算机可执行指令;和

至少一个处理器,其被配置来访问所述至少一个存储器,其中所述至少一个处理器被配置来执行所述计算机可执行指令以共同地进行至少以下步骤:

存储与调度相关的信息用于管理一个或多个存储装置的电力;

识别与所述一个或多个存储装置相关的请求,所述请求包括在请求批中;

通过执行额外计算机可执行指令处理所述请求以至少进行以下步骤:

确定能够为所述请求服务的暂时去激活的存储装置;和

在至少部分地基于所述调度激活所述确定的存储装置时,为所述请求服务。

67.根据条款66所述的系统,其中所述调度指示同时暂时去激活至少一定量的所述一个或多个存储装置。

68.根据条款66所述的系统,其中所述请求与所述批的其它请求一起被处理。

69.根据条款66所述的系统,其中所述调度被配置来进行以下至少一者:最小化与所述一个或多个存储装置相关的成本,最小化所述一个或多个存储装置的电力消耗,或最大化所述一个或多个存储装置的操作寿命。

70.根据条款66所述的系统,其中所述调度是从被配置来管理与所述一个或多个存储装置相关的请求的组件接收。

71.根据条款66所述的系统,其中为所述请求服务包括至少部分地基于访问所述一个或多个存储装置的请求而至少修改所述调度。

72.一种或多种存储用于管理存储装置电力的计算机可执行指令的计算机可读介质,所述计算机可执行指令在由一个或多个处理器执行时配置所述一个或多个处理器以执行以下操作,包括:

在与一个或多个存储装置的至少一个第二存储装置不同的时间,获得与启用所述一个或多个存储装置的至少一个第一存储装置相关的调度;

识别访问所述一个或多个存储装置的请求批中的请求;

至少部分地基于所述调度和所述请求,确定激活至少所述第一存储装置或所述第二存储装置中的哪个;和

至少部分地基于所述确定,管理所述一个或多个存储装置的至少所述第一或第二存储装置的电力消耗。

73.根据条款72所述的一种或多种计算机可读介质,其中所述指令还配置所述一个或多个处理器以执行包括接收被配置来使能够与至少访问所述一个或多个存储装置的同步而管理所述一个或多个存储装置的所述电力消耗的全局时间信号的操作。

74.根据条款73所述的一种或多种计算机可读介质,其中管理所述电力消耗包括至少部分地基于所述全局时间信号使至少所述第一或第二存储装置至少断电或通电。

75.根据条款73所述的一种或多种计算机可读介质,其中访问所述一个或多个存储装置包括至少部分地基于所述全局时间信号至少读取来自至少所述第一或第二存储装置的数据、将数据写入到至少所述第一或第二存储装置或删除至少所述第一或第二存储装置的数据。

76.根据条款72所述的一种或多种计算机可读介质,其中所述调度指示多个存储装置中的至少一个在每个可操作存储装置的操作的相同时间或期间可操作。

77.根据条款72所述的一种或多种计算机可读介质,其中所述旋转调度确保与所述一个或多个存储装置相关的温度或振动的相等分布。

78.根据条款72所述的一种或多种计算机可读介质,其中确定激活至少所述第一存储装置或所述第二存储装置中的哪个至少部分地基于避热或避振中的至少一个。

79.根据条款72所述的一种或多种计算机可读介质,其中对于特定服务器,所述旋转调度至少部分地基于特定分布对所述特定服务器的所述一个或多个存储装置分组以激活或去激活所述特定服务器的所述一个或多个存储装置。

各个实施方案还可在各种操作环境中实施,其在一些情况中可包括可用来操作多个应用中的任一个的一个或多个用户计算机、计算装置或处理装置。用户或客户端装置可包括多个通用个人计算机中的任一个,诸如运行标准操作系统的桌上型或膝上型计算机、以及运行移动软件且能够支持多种联网和消息传递协议的蜂窝、无线和手持装置。这个系统还可包括出于诸如开发和数据库管理的目的而运行多种市售操作系统中的任一个和其它已知应用的多个工作站。这些装置还可包括能够经由网络进行通信的其它电子装置,诸如虚拟终端机、瘦客户端、游戏系统和其它装置。

多数实施方案利用所属技术领域熟练人员将熟悉用于使用多种市售协议中的任一个(诸如TCP/IP、OSI、FTP、UPnP、NFS、CIFS和AppleTalk)支持通信的至少一个网络。所述网络可是例如局域网、广域网、虚拟私人网络、互联网、内联网、外联网、公共交换电话网络、红外网络、无线网络和其任何组合。

在利用网页服务器的实施方案中,网页服务器可运行多种服务器或中间层应用中的任一个,包括HTTP服务器、FTP服务器、CGI服务器、数据服务器、Java服务器和商业应用服务器。服务器还可能响应于来自用户装置的请求而诸如通过以下步骤执行程序或脚本:执行可以实施为依任何编程语言(诸如C、C#或C++)或任何脚本语言(诸如Perl、Python或TCL)以及其组合写入的一个或多个脚本或程序的一个或多个网页应用。服务器还可以包括数据库服务器,包括不限于从和市售的数据库服务器。

环境可包括如上文所论述的多种数据存储区以及其它存储器和存储介质。这些装置可驻留在多个位置中,诸如在计算机中的一个或多个的本地或跨网络远离计算机中的任一个或所有的存储介质上(和/或驻留在其中)。在实施方案的特定集中,信息可以驻留在所属技术领域熟练人员熟悉的存储区域网络(“SAN”)中。相似地,用于执行专用于计算机、服务器或其它网络装置的功能的任何必需文件可以酌情存储在本地和/或远端。在系统包括计算机化装置的情况下,每个这种装置可包括可以经由总线电耦接的硬件元件,所述元件包括例如至少一个中央处理单元(CPU)、至少一个输入装置(例如,鼠标、键盘、控制器、触屏或小键盘)和至少一个输出装置(例如,显示装置、打印机或扬声器)。这个系统还可以包括一个或多个存储装置,诸如磁盘驱动器、光学存储装置和固态存储装置,诸如随机存取存储器(“RAM”)或只读存储器(“ROM”)以及可移动媒体装置、存储卡、闪存卡等。

这些装置还可包括如上文所描述的计算机可读存储介质阅读器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等)和工作存储器。计算机可读存储介质阅读器可连接或被配置来收纳计算机可读存储介质,其表示用于暂时地和/或更持久地容纳、存储、传输和检索计算机可读信息的远程、本地、固定和/或可移动的存储装置以及存储介质。系统和各种装置通常还将包括定位在至少一个工作存储器装置内的多个软件应用、模块、服务或其它元件,包括操作系统和应用程序,诸如客户端应用或网页浏览器。应明白,替代实施方案可以具有上文所描述的大量变化。例如,还可以使用自定义硬件和/或可以依硬件、软件(包括便携式软件,诸如小应用)或两者实施特定元件。此外,可以采用到其它计算装置(诸如网络输入/输出装置)的连接。

用于容纳代码或代码部分的存储介质和计算机可读介质可包括所属技术领域中已知或使用的任何适当介质,包括依用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术实施的存储介质和通信介质,诸如但不限于易失性和非易失性、可移动和不可移动介质,包括可用来存储所期望信息且可由系统装置访问的RAM、ROM、EEPROM、快闪存储器或其它存储器技术、CD-ROM、数字多功能光盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储装置或任何其它介质。基于本文中所提供的本公开和教学内容,所属技术领域一般人员将明白用来实施各个实施方案的其它方式和/或方法。

因此,本说明书和附图被认为是说明性而非限制性意义。然而,将明显的是,在不背离如权利要求书中所陈述的本发明的更广精神和范围的情况下,可对本发明作出各种修改和变更。

其它变化是在本公开的精神内。因此,虽然所公开技术可具有各种修改和替代构造,但其某些所示实施方案已在附图中示出且已在上文详细描述。然而,应了解,不希望将本发明限于所公开的一个或多个具体形式,恰恰相反,本发明将覆盖落在如随附权利要求书中所定义的本发明的精神和范围内的所有修改、替代构造和等效物。

除非本文中另有指明或上下文另有明确反驳,否则在描述所公开实施方案的上下文中(尤其在下列权利要求书的上下文中)术语“一(a)”和“一个(an)”和“所述”以及相似项的使用应被解释为覆盖单数和复数两者。除非另有说明,否则术语“包括(comprising)”、“具有”、“包括(including)”和“容纳/包括(containing)”应被解释为开放式术语(即,意指“包括但不限于”)。术语“连接”应被解释为部分地或全部地容纳在内、附接到或接合在一起,即使存在一些中介物。除非本文中另有指明,否则本文中的值范围的列举仅希望用作个别地参考落在所述范围内的每个单独值的速记方法,且每个单独值好像其在本文中个别地列举般并入本说明书中。除非本文中另有指明或上下文另有明确反驳,否则本文中所描述的所有方法可依任何合适次序执行。除非另有声明,否则本文中所提供的任何和所有实例或示例性语言(例如,“诸如”)的使用仅希望更好地阐明本发明的实施方案且并非将限制强加于本发明的范围。本说明书中的语言不应被解释为指示任何非要求元件是实行本发明所必要的。

本文中描述本公开的优选实施方案,包括发明人已知是用于实行本发明的最佳模式。在阅读前文描述之后,所属技术领域一般人员将明白优选实施方案的变化。发明人预期熟练技术人员酌情采用这些变化,且发明人希望不同于如本文中所具体描述般地实行本发明。因此,本发明包括在适用法律允许的情况下随附于其的权利要求书中所列举的标的物的所有修改和等效物。此外,除非本文中另有指明或上下文另有清楚反驳,否则本发明涵盖上文所描述的元件的所有可能变化的任何组合。

本文中所列的所有参考案(包括公开案、专利申请和专利)是依引用方式并入本文中,就好像每个参考案被个别地且具体地指示依引用方式并入和其全部内容在本文中得以陈述般。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号