向执行中的程序提供对非本地块数据存储装置的可靠访问的制作方法

xiaoxiao2020-7-22  5

专利名称:向执行中的程序提供对非本地块数据存储装置的可靠访问的制作方法
向执行中的程序提供对非本地块数据存储装置的可靠访问
背景技术
很多公司和其他组织运营将许多计算系统相互连接以支持其操作的计算机网络, 例如协同定位的(如,作为局域网的一部分)或位于多个不同地理位置(如,经由一个或多个私有或公共中间网络而连接)中的计算系统。例如,容纳大量协同定位的互连计算系统的数据中心已经变得平常,例如由单一组织运营以及代表单一组织运营的私有数据中心, 以及由作为企业的实体运营的公共数据中心。一些公共数据中心运营商针对各个客户所拥有的硬件提供网络接入、电源以及安全安装设施,而其他公共数据中心运营商提供“完整服务”设施,该完整服务设施还包括其客户可使用的硬件资源。然而,由于典型数据中心和计算机网络的规模和范围已经增大,提供、掌管和管理相关物理计算资源的任务已变得日益复杂。在针对具有多样需求的许多客户而管理大规模计算资源的方面,商品硬件的虚拟化技术的出现提供了一些好处,允许在多个客户之间高效且安全地共享各种计算资源。例如,诸如由XEN、VMWare或用户模式Linux提供的虚拟化技术之类的虚拟化技术可以允许通过向每个用户提供一个或多个虚拟机,同时还在各个虚拟机之间提供应用隔离度和安全性,来在多个用户之间共享单一物理计算系统,该一个或多个虚拟机是以该单一物理计算系统作为宿主(host)的,其中,每个这种虚拟机都是充当不同逻辑计算系统的软件仿真, 该逻辑计算系统向用户提供他们是给定硬件计算资源的唯一运营商和管理员的错觉。此外,一些虚拟化技术还提供跨越一个或多个物理资源的虚拟资源,例如,具有多个虚拟处理器的、实际上跨越多个不同物理计算系统的单一虚拟机。


图1是示意了示例实施例的网络图,在该示例实施例中,多个计算系统执行程序并访问可靠的非本地块数据存储装置。图2A-2F示意了向客户端提供可靠的非本地块数据存储功能的示例。图3是示意了适于管理向客户端提供可靠的非本地块数据存储功能和由客户端使用可靠的非本地块数据存储功能的示例计算系统的框图。图4示意了块数据存储系统管理器例程的示例实施例的流程图。图5示意了节点管理器例程的示例实施例的流程图。图6示意了块数据存储服务器例程的示例实施例的流程图。图7A-7B示意了程序执行服务系统管理器例程的示例实施例的流程图。图8示意了块数据存储档案管理器例程的示例实施例的流程图。
具体实施例方式描述了用于管理执行中的程序对非本地块数据存储装置的访问的技术。在至少一些实施例中,该技术包括提供块数据存储服务,块数据存储服务使用多个服务器存储系统, 以可靠地存储可由在其他物理计算系统上执行的程序通过一个或多个网络而访问并使用的块数据。块数据存储服务的用户均可以创建一个或多个块数据存储卷,每个块数据存储卷具有指定量的块数据存储空间,并可以发起由一个或多个执行中的程序对这种块数据存储卷(在此也称为“卷”)的使用,其中,至少一些这种卷具有由该多个服务器存储系统中的两个或更多服务器存储系统存储的拷贝,以增强卷对执行中的程序的可靠性和可用性。作为一个示例,在一些实施例中,可以将存储块数据的多个服务器块数据存储系统组织成一个或多个池或其他组,该一个或多个池或其他组中的每一个都具有在地理位置处(例如, 在一个或多个地理上分布的数据中心中的每一个中)协同定位的多个物理服务器存储系统,以及,使用存储在数据中心中的服务器块数据存储系统上的卷的程序可以在该数据中心处的一个或多个其他物理计算系统上执行。下面包括了涉及块数据存储服务的实施例的附加细节,以及,可以通过块数据存储(“BDS”)系统管理器模块的实施例,自动执行用于提供块数据存储服务的至少一些所描述的技术。此外,在至少一些实施例中,通过一个或多个网络访问和使用一个或多个这种非本地块数据存储卷的执行中的程序均可以具有相关的节点管理器,该节点管理器管理程序对这些非本地卷的访问,该节点管理器例如是由块数据存储服务提供的节点管理器模块和 /或结合一个或多个BDS系统管理器模块进行操作的节点管理器模块。例如,作为块数据存储服务的客户的第一用户可以创建第一块数据存储卷,并执行一个或多个计算节点上被指示以访问和使用该第一卷(例如,以串行的方式、以同时的方式或以其他交迭的方式等)的一个或多个程序拷贝。当在计算节点上执行的程序发起对非本地卷的使用时,该程序可以安装或以其他方式被提供有该计算节点本地的且表示该非本地卷的逻辑块数据存储设备, 以便例如允许执行中的程序以同附着至该计算节点的其他任何本地硬件驱动器或其他物理块数据存储设备相同的方式与本地逻辑块数据存储设备进行交互(例如,执行读和写数据访问请求、在卷上实现文件系统或数据库或其他更高级数据结构等)。例如,在至少一些实施例中,可以经由使用GNBD( “全局网络块设备”)技术来使典型逻辑本地块数据存储设备对执行中的程序可用。此外,下面将更详细地讨论,当执行中的程序与典型本地逻辑块数据存储设备进行交互时,相关节点管理器可以通过在一个或多个网络上与存储相关非本地卷的拷贝(例如,以对执行中的程序和/或计算节点透明的方式)的至少一个服务器块数据存储系统进行通信来管理这些交互,以代表执行中的程序执行关于所存储的卷拷贝的交互。此外,在至少一些实施例中,通过节点管理器模块的实施例,自动执行用于管理执行中的程序对非本地块数据存储卷的访问的至少一些所描述的技术。此外,在至少一些实施例中,还可以将至少一些块数据存储卷(或这些卷的部分) 存储在与用于存储卷拷贝的服务器块数据存储系统不同的一个或多个远程档案存储系统上。在各种实施例中,可以由块数据存储服务提供该一个或多个远程档案存储系统(例如,位于远离数据中心的位置处,或者位于具有协同定位的服务器块数据存储系统的池的其他地理位置处),或者可以由远程长期存储服务提供并由块数据存储装置使用该一个或多个远程档案存储系统,以及,在至少一些实施例中,档案存储系统可以存储具有除块数据外的格式的数据(例如,可以将卷的一个或多个段或部分存储为不同的对象)。在各种实施例中,可以以各种方式使用这种档案存储系统,以提供各种优点,如下面更详细地讨论。 在远程长期存储服务提供档案存储系统的一些实施例中,同样作为远程长期存储服务的用户(例如,付费使用远程长期存储服务的远程长期存储服务客户)的块数据存储服务用户(例如,付费使用块数据存储服务的块数据存储服务客户)可以具有档案存储系统(例如响应于来自这些客户的指令)所存储的这些用户的块数据存储卷的至少部分。在其他实施例中,单一组织可以提供块数据存储服务能力和远程长期存储服务能力两者中的至少一些 (例如,以集成的方式,如单一服务的一部分),而在又一些实施例中,可以在不包括对档案数据存储系统的使用的环境下提供块数据存储服务。此外,在至少一些实施例中,在一个或多个档案管理器模块的控制之下自动执行对档案存储系统的使用,该一个或多个档案管理器模块例如是由块数据存储服务提供的档案管理器模块或者被提供以与块数据存储服务的模块相结合进行操作(如,由远程长期存储服务提供以与块数据存储服务进行交互)的档案管理器模块。在一些实施例中,代表程序执行服务来执行至少一些所描述的技术,程序执行服务对代表程序执行服务的多个用户的多个程序的执行进行管理。在一些实施例中,程序执行服务可以在一个或多个地理位置处具有多个协同定位的物理主机计算系统的组(例如, 在一个或多个地理上分布的数据中心中),并可以在这些物理主机计算系统上执行用户的程序(例如,在程序执行服务(“PES”)系统管理器的控制之下),下面对其进行更详细的讨论。在这些实施例中,同样作为块数据存储服务的用户的程序执行服务用户(例如,付费使用程序执行服务的程序执行服务客户)可以执行访问和使用经由块数据存储服务而提供的非本地块数据存储卷的程序。在其他实施例中,单一组织可以提供程序执行服务能力和块数据存储服务能力两者中的至少一些(例如,以集成的方式,如单一服务的一部分), 而在又一些实施例中,可以在不包括程序执行服务的环境下提供块数据存储服务(例如, 向企业或其他组织内部提供以支持该组织的操作)。此外,在各种实施例中,其上执行程序的主机计算系统可以具有各种形式。例如, 多个这种主机计算系统可以在物理位置(例如,数据中心)中协同定位,以及可以由多个节点管理器模块管理,该多个节点管理器模块每一个都与该主机计算系统中的一个或多个主机计算系统的子集相关联。主机计算系统中的至少一些均可以包括充足的计算资源(例如,易失性存储器、CPU周期或其他CPU使用测量、网络带宽、交换空间等)以同时执行多个程序,以及,在至少一些实施例中,计算系统中的一些或全部均可以具有一个或多个物理附着的本地块数据存储设备(例如,硬盘、磁带机等),该物理附着的本地块数据存储设备可以用来存储要执行的程序和/或由这种程序使用的数据的本地拷贝。此外,在一些这种实施例中,主机计算系统中的至少一些均可以作为多个虚拟机计算节点的宿主,该多个虚拟机计算节点均可以代表不同的用户执行一个或多个程序,每个这种主机计算系统都具有执行中的系统管理程序或其他虚拟机监控器为主机计算系统管理虚拟机。对于执行多个虚拟机的主机计算系统,在一些实施例中,针对主机计算系统的相关节点管理模块可以在多个被宿留的(hosted)虚拟机中的至少一个上执行(例如,作为用于主机计算系统的虚拟机监控器的一部分,或者结合用于主机计算系统的虚拟机监控器),而在其他情况下,节点管理器可以在与正被管理的一个或多个其他主机计算系统不同的物理计算系统上执行。在各种实施例中,在其上存储了卷的服务器块数据存储系统也具有各种形式。如前提到的,多个这种服务器块数据存储系统可以例如在物理位置(例如,数据中心)中协同定位,并可以由一个或多个BDS系统管理器模块来管理。在至少一些实施例中,服务器块数据存储系统中的一些或全部可以是类似于执行程序的主机计算系统的物理计算系统,以及在一些这种实施例中,均可以执行服务器存储系统软件以协助在这些服务器存储系统上提供和维持卷。例如,在至少一些实施例中,一个或多个这种服务器块数据存储计算系统可以执行BDS系统管理器的至少一部分,例如,在多个交互的服务器块数据存储计算系统以分布式对等方式提供一个或多个BDS系统管理器模块的情况下。在其他实施例中,服务器块数据存储系统中的至少一些可以是可能缺少物理计算系统的一些I/O组件和/或其他组件的网络存储设备,例如,在由其他远程物理计算系统(例如,由在一个或多个其他计算系统上执行的BDS系统管理器模块)执行在这些服务器存储系统上对卷的至少一些提供和维持的情况下。此外,在一些实施例中,至少一些服务器块数据存储系统均维持多个本地硬盘, 并对一些或所有本地硬盘中的每个本地硬盘的一部分上的至少一些卷加条纹(stripe)。此外,可以使用用于创建和使用卷的各种类型的技术,包括在一些实施例中,使用LVM( “逻辑卷管理器”)技术。如前所述,在至少一些实施例中,一些或所有块数据存储卷均具有存储在两个或更多不同的服务器块数据存储系统上的拷贝,以例如增强卷的可靠性和可用性。通过这样做,单一服务器块数据存储系统的故障可以不导致执行中的程序对卷的访问丢失,因为可以将这些执行中的程序对该卷的使用切换到另一个具有该卷的拷贝的可用的服务器块数据存储系统。在这种实施例中,以各种方式维持多个服务器块数据存储系统上的卷的多个拷贝之间的一致性。例如,在一些实施例中,将服务器块数据存储系统中的一个指定为存储卷的主拷贝,而将其他的一个或多个服务器块数据存储系统指定为存储卷的镜像拷贝,在这种实施例中,具有主卷拷贝的服务器块数据存储系统(称之为卷的“主服务器块数据存储系统”)可以接收并处理对卷的数据访问请求,以及在一些这种实施例中,还可以采取动作来维持其他镜像卷拷贝的一致性(例如,当修改主卷拷贝中的数据时,向其他服务器块数据存储系统发送提供镜像卷拷贝的更新消息,如,以主从计算关系的方式进行)。可以使用各种类型的卷一致性技术,下面包括了附加细节。在至少一些实施例中,所描述的技术包括通过管理对卷的主拷贝和镜像拷贝的使用,为计算节点上的执行中的程序提供对块数据存储卷的可靠并可用的访问。例如,在一些实施例中,执行中的程序的节点管理器可以经由主服务器块数据存储系统独自与主卷拷贝进行交互,例如,如果主卷拷贝负责维持镜像卷拷贝或者如果使用了另一种复制机制。 在这种实施例中,如果在预定的时间量内,主服务器块数据存储系统没有成功响应节点管理器发送的请求(例如,执行中的程序发起的数据访问请求,Ping消息或由节点管理器发起的周期性检查主服务器块数据存储系统是否可用的其他请求等),或如果以其他方式警告节点服务器主卷拷贝不可用(例如,通过来自于BDS系统管理器的消息),节点管理器可自动将其交互切换到镜像服务器块数据存储系统上的镜像卷拷贝中的一个(例如,如果执行中的程序进行的数据访问请求是超时并发起至镜像卷拷贝的切换的那个数据访问请求, 很可能等待稍长的时间以获得对执行中的程序进行的数据访问请求的响应,除此之外,以执行中的程序没有意识到该切换的方式进行)。可以通过各种方式选择镜像卷拷贝,例如, 如果该镜像卷拷贝是仅有的一个,如果先前指示了访问多个镜像卷拷贝的顺序,通过与BDS 系统管理器进行交互来请求对提升哪个镜像卷拷贝充当主卷拷贝的指示等。在其他实施例中,至少一些卷可以具有多个主拷贝,例如,如果卷可用于由多个执行中的程序进行同时读访问并且所产生的数据访问负载散布在卷的多个主拷贝上,在这种实施例中,节点管理器可以选择以各种方式与之进行交互的多个主卷拷贝中的一个(例如,以随机的方式,基于来自BDS系统管理器模块的指令等)。此外,在各个实施例中,BDS系统管理器可以采取各种动作来维持计算节点上的执行中的程序对块数据存储卷的可靠并可用的访问,具体地,如果BDS系统管理器变得意识到具体的服务器块数据存储系统(或具体服务器块数据存储系统上的具体卷)变得不可用,BDS系统管理器可以针对该服务器块数据存储系统存储的一些或所有卷(或者针对具体的不可用卷)采取各种动作以维持其可用性。例如,针对不可用的服务器块数据存储系统上的每个存储的主卷拷贝,BDS系统管理器可以提升已存在的镜像卷拷贝中的一个作为新的主卷拷贝,并且可选地将该变化通知给一个或多个节点管理器(例如,当前使用该卷的执行中的程序的节点管理器)。此外,针对每个存储的卷拷贝,BDS系统管理器可以发起在不同的服务器块数据存储系统上创建该卷的至少一个其他新镜像拷贝,例如通过在另一个可用的服务器块数据存储系统上复制该卷的已存在的拷贝来进行(例如,通过复制主卷拷贝)。此外,在至少一些实施例中,在至少一些情况下,通过使用存储在远程档案存储系统上的卷的至少部分来协助复制该卷的新镜像拷贝,可以获得其他好处(例如,更大的数据可靠性,最小化用于镜像卷拷贝的存储量和/或用以维持卷的全部镜像拷贝的正在进行的处理功率),下面进行更详细的讨论。BDS系统管理器可以通过各种方式变得意识到服务器块数据存储系统的不可用, 例如,基于来自不能接触到服务器块数据存储系统的节点管理器的消息,基于来自服务器块数据存储系统的消息(例如,指示其已遭受故障情况,已开始关闭或已开始故障模式操作等),基于不能接触服务器块数据存储系统(例如,基于对一些或所有服务器块数据存储系统的周期性或持续的监控)等。此外,在各个实施例中,服务器块数据存储系统的不可用可以由各种事件导致,例如,服务器块数据存储系统在其上存储了一个或多个卷的至少部分的一个或多个硬盘或其他存储介质的故障,服务器块数据存储系统的其他组件的故障 (例如,CPU、存储器、风扇等),服务器块数据存储系统的电源故障(例如,单一服务器块数据存储系统的电源故障,一个架的服务器块数据存储系统的电源故障,整个数据中心的电源故障等),阻碍服务器块数据存储系统与节点管理器和/或BDS系统管理器通信的网络或其他通信故障等。在一些实施例中,可以将服务器块数据存储系统的任何组件的故障或问题视为整个服务器块数据存储系统的不可用状况(例如,在服务器块数据存储系统维持多个本地硬盘的实施例中,任何本地硬盘的故障或问题可被视为整个服务器块数据存储系统的不可用状况),而在其他实施例中,只要其能够响应数据访问请求,便不将服务器块数据存储系统视为不可用。此外,在已存在的服务器块数据存储系统变得不可用时,除了将一个或多个卷从该服务器块数据存储系统移动外,在一些实施例中,BDS系统管理器决定将一个或多个卷从已存在的服务器块数据存储系统移动到不同的服务器块数据存储系统,和/或决定在各种其他时刻并出于各种其他理由创建一个或多个卷的新拷贝。可以采用与其他地方更详细地讨论的方式类似的方式来执行对卷的新拷贝的这种移动或创建(例如,通过复制该卷的主拷贝以创建新拷贝,以及通过可选地在至少一些情况下(例如,当正在移动卷拷贝时)移除卷的在先拷贝)。例如,促使卷移动或新卷拷贝创建的情况包括以下非排他列表具体的服务器块数据存储系统可能变得过度使用(例如,基于CPU的使用率、网络带宽、I/O访问、存储装置容量等),例如从而触发一个或多个卷从该服务器块数据存储系统移动;具体的服务器块数据存储系统可能缺少充足的资源以对已存在的卷进行所期望的修改(例如,如果请求扩展已存在的卷的大小,则可能缺少充足的可用存储空间),从而例如触发一个或多个卷从该服务器块数据存储系统移动;具体的服务器块数据存储系统可能需要将会导致其在一段时间内不可用的维护或升级,从而例如触发一个或多个卷从该服务器块数据存储系统暂时或永久移动;基于认识到可以在其他服务器块数据存储系统(例如,具有附加容量的另一服务器块数据存储系统)(对于频繁进行数据修改的卷,使用具有高于平均的盘写入容量的主服务器块数据存储系统;和/或对于大小非常大的卷,使用具有高于平均的存储容量的主服务器块数据存储系统)上更好地供应具体卷的使用模式或卷的其他特性;响应于来自创建了卷或以其他方式与卷相关联的用户的请求(例如,响应于购买对具有增强容量的服务器块数据存储系统的高级访问);在执行程序的不同地理位置(如,另一个数据中心)处提供卷的至少一个新拷贝,从而例如当请求由执行中的程序在另一地理位置处使用卷时,触发从第一地理位置处的服务器块数据存储系统移动和/或拷贝该卷;等等。此外,在移动了卷或者创建了新拷贝之后,在一些实施例和情况中,BDS系统管理器可以在适当时更新一个或多个节点管理器(例如,仅用于当前使用卷的执行中的程序的节点管理器、所有的节点管理器等等)。在其他实施例中,可以以其他方式维持关于卷的各种信息,例如通过具有卷信息数据库的一个或多个拷贝,该卷信息数据库是节点管理器和/ 或BDS系统管理器可进行网络访问的。关于卷的可维持信息的类型的非排他性列表包括以下各项卷的标识符,例如对存储卷的拷贝的服务器块数据存储系统而言唯一的标识符,或者对于块数据存储服务而言全局唯一的标识符;卷的限制访问信息,例如密码或加密密钥, 或者卷的授权用户的列表或其他指示;关于卷的主服务器块数据存储系统的信息,例如网络地址和/或其他访问信息;关于卷的一个或多个镜像服务器块数据存储系统的信息,例如关于如果已存在的主服务器存储系统变得不可用,指示哪一个镜像服务器块数据存储系统将被提升为主系统的排序的信息,网络地址和/或其他访问信息等;关于已经针对卷创建的任何快照卷拷贝的信息,下面将对其进行更详细的描述;关于卷是否对用户而不是卷的创建者可用的信息,以及关于如果卷对用户可用那么在什么情形下可用的信息(例如, 用于只读访问,用于其他用户制造其自己的作为该卷的拷贝的卷,针对其他用户接收对该卷的各种类型的访问的价格信息);等等。除了在服务器块数据存储系统变得不可用时,通过移动或以其他方式复制卷拷贝来维持执行中的程序对块数据存储卷的可靠和有效访问,块数据存储服务还在其他环境中执行其他动作来维持执行中的程序对块数据存储卷的访问。例如,在一些实施例中,如果第一执行中的程序出乎意料地变得不可用,块数据存储服务和/或程序执行服务可以采取动作来使得不同的第二执行中程序(例如,在不同的主机计算系统上执行的相同程序的第二拷贝)附着到不可用的第一程序正在使用的一些或全部块数据存储卷,以使得第二程序可以快速接管不可用的第一程序的至少一些操作。在一些实施例中,第二程序可以是其执行由已存在的第一程序的不可用性发起的新程序,而在其他情况下,第二程序可以是已经正在执行中(例如,如果同时执行多个程序拷贝,以共享工作的总负载,例如接收由负载平衡器转接的不同传入客户请求的多个Web服务器程序,该多个程序拷贝中的一个被选择为第二程序;如果第二程序是正在执行的程序的备用副本,以允许在不可用的情况下从已存在的第一程序进行“热”交换,例如不活跃地使用该备用程序的拷贝,直到发生已存在的第一程序不可用;等等)。此外,在一些实施例中,已存在的卷的附着和正在进行的使用所切换至的第二程序可以在与第一程序相同的地理位置(例如,相同的数据中心)中的另一个主机物理计算系统上,而在其他实施例中,第二程序可以在不同的地理位置处(例如,不同的数据中心,例如与先前或同时移动到该其他数据中心并将为第二程序所用的卷的拷贝相协同)。此外,在一些实施例中,可以采取其他相关动作来进一步便于切换至第二程序,例如, 通过将目的地为不可用的第一程序的一些通信重定向到第二程序。此外,在至少一些实施例中,可以使用其他技术来提供对块数据存储卷的可靠和可用访问,以及提供其他好处,例如出于长期备份和/或其他目的,例如使得可以将所指示的卷的拷贝保存到一个或多个远程档案存储系统(例如,在远离第一地理位置和/或远离主机物理计算系统的第二地理位置处,服务器块数据存储系统在该第一地理位置处存储卷的活跃的主拷贝和镜像拷贝,主机物理计算系统执行使用该卷的程序)。例如,在一些实施例中,可以由可远程网络访问的存储服务来提供档案存储系统。此外,在至少一些情况下,保存到档案存储系统的卷的拷贝可以是卷在特殊时间点处的快照拷贝,然而当正在进行的对该卷的使用导致其存储的块数据内容改变时,该卷的拷贝不自动更新,和/或该卷的拷贝不可以通过与卷相同的方式用于附着到执行中的程序并为该执行中的程序所使用。 从而,作为一个示例,例如可以将卷的长期快照拷贝用作卷的备份拷贝,并且在一些实施例中,还可以将卷的长期快照拷贝用作从该快照拷贝创建的一个或多个新卷的基础(例如, 以使得新卷能够以和快照拷贝相同的块数据存储内容开始)。此外,可以采用各种方式存储档案存储系统处的卷的快照拷贝,以便例如表示卷的更小的段(例如,如果档案存储系统将数据存储为更小的对象而不是数据的大的线性的顺序块)。例如,可以将卷表示为一系列的多个较小的段(卷大小为例如一个千兆字节或一个百万兆字节,段大小为例如几兆字节),以及可以将关于一些或所有段(例如,每个被修改的段)的信息分离地存储在档案存储系统上,例如通过将每个段视为不同的存储对象。 此外,在至少一些实施例中,采用仅对卷的在先快照拷贝的递增改变进行存储的这种方式, 可以创建具体卷的第二和后续快照拷贝,例如通过包括所存储的自在先快照拷贝以来创建或修改的新存储段的拷贝,但如果这些段未被改变,则与在先快照拷贝共享一些先前已存在的段的所存储的拷贝。在这些实施例中,如果后来删除了在先快照拷贝,则可以保留由该在先快照拷贝存储的、被任何后续快照拷贝所共享的先前已存在的段,以供这些后续快照拷贝所使用,同时可以删除由该在先快照拷贝存储的未共享的先前已存在的段。此外,在至少一些实施例中,当在一个时间点处创建卷的快照拷贝时,可以允许执行中的程序继续对主卷拷贝的访问,包括允许对存储在主卷拷贝中的数据的修改,而不将任何这种正在进行的数据修改反映到快照拷贝中,例如在快照拷贝基于在档案存储系统上存储的、一旦快照拷贝创建开始直到快照拷贝创建完成都没有更新的卷段的情况下。例如, 在至少一些实施例中,在发起对卷的快照拷贝的创建并在随后修改该卷的段时,使用写时拷贝(copy-onirite)技术,以例如在初始时在存储主卷拷贝的主服务器块数据存储系统上维持所存储的未修改段和已修改段的拷贝(以及可选地,也在存储卷的一个或多个镜像拷贝的镜像服务器块数据存储系统上进行)。当接收到对档案存储系统已经成功存储卷的快照拷贝(包括未修改段的拷贝)的确认时,便可以删除在主服务器块数据存储系统上的未修改的段拷贝(以及可选地,在镜像服务器块数据存储系统上进行)。此外,在至少一些实施例中,可以通过其他方式使用在档案存储系统上存储的这种卷段或其他卷数据,以例如使用档案存储系统来作为一些或所有卷的主拷贝和/或镜像拷贝的后备存储。例如,在至少一些情况下,可以使用档案存储系统上存储的卷数据来协助维持在多个服务器块数据存储系统上的卷的多个拷贝之间的一致性。作为示例,可以至少部分基于档案存储系统上存储的卷段来创建或更新卷的一个或多个镜像拷贝,以例如最小化或消除访问主卷拷贝以获得至少一些卷段的需要。例如,如果与档案存储系统上已修改的段相比,更快或更可靠地更新了主卷拷贝,便可以通过使用档案存储系统上存储的已知正确的至少一些卷段(例如,来自最近的快照卷拷贝),以及通过访问主卷拷贝来仅获得与在快照卷拷贝的创建之后可能已被修改的段相对应的卷的部分,来创建新的镜像卷拷贝。 类似地,如果档案存储系统上已修改的段可靠地反映出主卷拷贝的当前状态,便可以使用这些已修改的段而不是经由主卷拷贝进行的交互或者与主卷拷贝的交互来更新镜像卷拷贝。此外,在一些实施例中,存储在镜像卷拷贝中的数据量(以及所导致的镜像卷拷贝的大小)可以比存储在卷的主拷贝中的数据量少得多,例如在使用档案存储系统上的卷信息来代替否则可以在这种最小镜像卷拷贝中存储的至少一些数据的情况下。作为一个示例,一旦在一个或多个档案存储系统上创建卷的快照拷贝,在这种实施例中,卷的最小镜像拷贝便不必存储存在于快照卷拷贝中的任何卷数据。当在快照拷贝创建后对主卷拷贝进行修改时,也可以对最小镜像卷拷贝进行一些或所有的这些数据修改(例如,所有的数据修改,仅在档案存储系统上存储的已修改的卷段中没有反映出的数据修改,等等),然后,如果后来需要访问最小镜像卷拷贝,例如在将最小镜像卷拷贝提升为主卷拷贝的情况下,可以通过从档案存储系统(例如,从在先快照卷拷贝)中进行取回,来恢复从最小镜像卷拷贝中丢失的其他数据(例如,卷的未修改的部分)。以这种方式,可以增强卷的可靠性,同时还最小化了在服务器块数据存储系统上针对镜像卷拷贝使用的存储空间的量。在又一个实施例中,可以在档案存储系统上维持卷的确定的拷贝或主拷贝,并且卷的主拷贝和镜像拷贝可以反映卷的高速缓存或其他子集(例如,最近已访问的子集和/ 或期望立刻访问的子集),在这种实施例中,可以使用块数据存储服务的非本地块数据存储卷来提供与远程档案存储系统相比,用于由执行中的程序访问的更接近的卷数据源。此外, 在至少一些这种实施例中,向用户可以将卷描述为具有与档案存储系统上维持的主拷贝相对应的具体大小,然而主拷贝和镜像拷贝的大小更小。此外,在至少一些实施例中,可以使用惰性更新(lazy updating)技术,以立即更新第一数据存储装置中的数据拷贝(例如, 服务器块数据存储系统上的主卷拷贝),而之后在不同的第二数据存储装置(例如,档案存储系统)中更新该相同数据的拷贝,例如,通过以下方式来维持第二数据存储装置处严格的数据一致性在从第二数据存储装置执行任何后续的读操作或对卷的部分的其他访问之前,确保在第二数据存储装置处对卷的该部分的写操作或其他数据修改进行更新(例如, 通过使用写回(write-back)高速缓存更新技术)。例如,当对在档案存储系统上的卷的已修改段进行更新时,或者当更新来自于存储在档案存储系统上的卷的已修改段的镜像卷拷贝时,可以使用这种惰性更新技术。在其他实施例中,当更新档案存储系统上的卷的已修改段时,可以使用其他技术,以例如在对第一数据存储装置中的数据拷贝进行修改时,使用直写(write-through)高速缓存技术来立即更新第二数据存储装置中(例如,在档案存储系统上)的数据拷贝。在档案存储系统上存储的这种快照卷拷贝也提供了各种其他好处。例如,如果将卷的所有主拷贝和镜像拷贝存储在单一地理位置(例如,数据中心)处的多个服务器块数据存储系统上,并且该地理位置处的计算和存储系统变得不可用(例如,整个数据中心掉电)时,在不同远程存储位置处的卷最新的快照拷贝的存在确保了当该地理位置处的计算和存储系统后来变得再次可用(例如,当电恢复时)时,卷的最新版本也是可用的,例如在来自于该地理位置处的一个或多个服务器存储系统的数据丢失的情况下。此外,在这种情况下,基于来自于远程档案存储系统的卷的最新长期快照拷贝,可以在一个或多个新的地理位置处创建卷的一个或多个新拷贝,以例如使得在不可用的地理位置之外的一个或多个执行中的程序拷贝可以访问和使用这些新的卷拷贝。下面包括了涉及档案存储系统的附加细节及其使用。如前所述,在至少一些实施例中,一些或所有的块数据存储卷中均具有存储在单一地理位置处(例如,在执行中的程序将在其中访问该卷的相同数据中心内)的两个或更多不同的服务器块数据存储系统上的拷贝,通过将所有的卷拷贝和执行中的程序放置在相同的数据中心或其他地理位置处,可以维持各种期望的数据访问特性(例如,基于该数据中心或其他地理位置处的一个或多个内部网),例如延时和吞吐量。例如,在至少一些实施例中,所描述的技术可以提供对非本地块数据存储装置的访问,该非本地块数据存储装置具有与本地物理块数据存储设备的访问特性相似或更好的访问特性,但具有大得多的可靠性,该可靠性类似于或超过RAID (“独立/廉价磁盘冗余阵列”)系统和/或专用的SAN(“存储区网络”)的可靠性特性,并且成本低得多。在其他实施例中,可以代之以通过其他方式存储至少一些卷的主拷贝和镜像拷贝,例如在不同的地理位置(例如,不同的数据中心)处存储,以例如即使在整个数据中心都变得不可用时,也进一步维持了卷的可用性。在可以在不同地理位置处存储卷拷贝的实施例中,在一些情况下,用户可以请求接近于具体的卷来执行具体程序(例如,在主卷拷贝所位于的相同数据中心处),或者将具体的卷接近于具体的执行中的程序来放置,以便例如向执行中的程序和主卷拷贝之间的通信提供相对较高的网络带宽和较低的延时。此外,在一些实施例中,以基于费用或其他支付的方式来为至少一些用户提供对一些或所有所描述的技术的使用。例如,用户可以支付一次性费用、周期性(例如,每月) 费用和/或一种或多种类型的基于使用的费用,以使用块数据存储服务来存储和访问卷, 以使用程序执行服务来执行程序,和/或以使用档案存储系统(例如,由远程的长期存储服务提供)来存储卷的长期备份或其他快照拷贝。费用可以基于一种或多种因素和行为,例如以下非排他性列表所指示的因素和行为基于卷的大小,以例如创建卷(例如,当一次性费用时),以具有正在进行的卷的存储和/或卷的使用(例如,每月费用)等;基于卷的非大小特性,例如镜像拷贝的数目、在其上存储了主卷拷贝和/或镜像卷拷贝的服务器块数据存储系统的特性(例如,数据访问速率、存储大小等)、和/或创建卷的方式(例如,空的新卷、作为已存在的卷的拷贝的新卷、作为快照卷拷贝的拷贝的新卷等);基于快照卷拷贝的大小,以例如创建快照卷拷贝(例如,当一次性费用时)和/或具有卷的正在进行的存储 (例如,每月费用);基于一个或多个快照卷拷贝的非大小特性,例如单一卷的快照的数目,快照拷贝是否相对于一个或多个在先快照拷贝而递增等等;基于卷的使用率,例如传送至卷和/或从卷传送的数据量(例如,以反映所使用的网络带宽的量),向卷发送的数据访问请求的数目,附着于卷并使用卷的执行中的程序的数目等等;基于传送至快照和/或从快照传送的数据量,例如以类似于针对卷的方式进行。此外,在各个实施例中,所提供的访问可以具有各种形式,例如一次性购买费用,正在进行的租赁费用和/或基于另一正在进行的订阅标准。此外,在至少一些实施例或情况下,一个或多个用户的第一组可以在基于费用的基础上向其他用户提供数据,以例如为了接收对第一组的一个或多个用户创建的当前卷和/或历史快照卷拷贝的访问而向该其他用户收费(例如,通过允许其产生作为卷和/或快照卷拷贝的拷贝的新卷;通过允许其使用一个或多个已创建的卷;等等),不管是作为一次性购买费用,正在进行的租赁费用和/或基于另一正在进行的订阅。在一些实施例中,块数据存储服务、程序执行服务和/或远程长期存储服务可以提供一个或多个API ( “应用编程接口 ”),以使得可以允许其他程序计划性地初始化要执行的各种类型的操作(例如,在其他程序的用户的指引下)。这种操作可以允许调用先前所描述类型的功能,并且这种操作包括但不限于以下类型的操作创建、删除、附着、去附着或者描述卷;创建、删除、拷贝或者描述快照;指定针对卷和/或快照的访问权或其他元数据; 管理程序的执行;提供支付以获得其他类型的功能;获得与对一个或多个服务的能力的使用有关和/或与为这种使用所支付或所欠的费用有关的报告和其他信息;等等。例如,在程序执行服务的主机计算系统上的执行中的程序和/或客户或其他用户的计算系统可以调用API提供的操作,该客户或其他用户在块数据存储服务和/或程序执行服务所使用的一个或多个地理位置之外。出于示意性的目的,下面描述以特定方式向在特定类型的计算系统上执行的特定类型的程序提供特定类型的块数据存储的一些实施例。这些示例是出于示意性的目的而提供的,并且为了简要进行了简化,并且该发明性的技术可被用在其他各种情况下,其中一些情况将在下面讨论,该技术不限于与虚拟机、数据中心或其他特定类型的数据存储系统、计算系统或计算系统布置一起使用。此外,虽然将一些实施例描述为提供并使用可靠的非本地块数据存储装置,在其他实施例中,可以类似地提供除块数据存储外的各种类型的数据存储。图1是示意了示例实施例的网络图,在该示例实施例中,例如,在块数据存储服务和/或程序执行服务的控制下,多个计算系统执行程序并访问可靠的非本地块数据存储装置。具体地,在本示例中,程序执行服务对位于数据中心100内的各种主机计算系统上的程序的执行进行管理,并且,块数据存储服务使用该数据中心处的多个其他服务器块数据存储系统来向这些执行中的程序提供可靠的非本地块数据存储装置。还可以使用数据中心外部的多个远程档案存储系统来存储至少一些块数据存储卷的至少一些部分的附加拷贝。在本示例中,数据中心100包括多个架105,每个架包括多个主机计算系统,以及在该示例实施例中,还包括可选的架支撑计算系统122。该该示例中,所示意的架105上的主机计算系统lOOa-c均作为一个或多个虚拟机120的宿主,还作为与主机计算系统上的虚拟机相关联的用于管理这些虚拟机的不同的节点管理器模块115的宿主。在本示例中,一个或多个其他主机计算系统135中的每一个也作为一个或多个虚拟机120的宿主。每个虚拟机120可以充当用于针对用户(未示出)执行一个或多个程序拷贝(未示出)的独立计算节点,该用户例如是程序执行服务的客户。此外,该示例数据中心100还包括附加的主机计算系统130a_b,附加的主机计算系统130a_b不包括不同的虚拟机,但是均仍可以充当针对用户而执行的一个或多个程序(未示出)的计算节点。在本示例中,在与主机计算系统130a-b和135不同的计算系统(未示出)上执行的节点管理器模块125与这些主机计算系统相关联,以管理这些主机计算系统提供的计算节点,例如以类似于主机计算系统110 的节点管理器模块115的方式来管理。架支撑计算系统122可以针对其架105本地的其他计算系统以及可能向位于数据中心中的其他计算系统提供各种公用事业服务(例如,长期程序存储、程序执行的计量和其他监控和/或由该架本地的其他计算系统执行的非本地块数据存储访问的计量和其他监控等等)。每个计算系统110、130和135还可以具有一个或多个本地附着的存储设备(未示出),以便例如存储执行中的程序所创建或使用的程序和/ 或数据的本地拷贝,以及每个计算系统110、130和135还可以具有各种其他组件。在本示例中,还示意了可选的计算系统140,可选的计算系统140执行针对程序执行服务的PES系统管理器模块,以协助管理位于数据中心内的主机计算系统(或者可选地, 位于一个或多个其他数据中心160中的计算系统,或者数据中心外部的其他远程计算系统 180)提供的计算节点上的程序执行。如其他地方更详细地讨论的,除了对程序的执行进行管理外,PES系统管理器模块还可以提供多种服务,包括用户账户的管理(例如,创建、删除、计费等);要执行的程序的注册、存储和分发;与程序的执行有关的性能和审核数据的收集和处理;从客户或其他用户获得针对程序的执行的支付;等等。在一些实施例中,PES 系统管理器模块可以与节点管理器模块115和125进行协调以管理与节点管理器模块相关联的计算节点上的程序执行,而在其他实施例中,节点管理器模块115和125可以不协助管理这种程序执行。该示例数据中心100还包括计算系统175,计算系统175执行针对块数据存储服务的块数据存储(“BDS”)系统管理器模块,以协助管理非本地块数据存储装置对在计算节点上执行的程序的可用性,该计算节点由位于数据中心内的主机计算系统提供(或者可选地,在位于一个或多个其他数据中心160中的计算系统或者数据中心外部的其他远程计算系统180上)。具体地,在本示例中,数据中心100包括多个服务器块数据存储系统165的池,该多个服务器块数据存储系统165中的每一个具有用于存储一个或多个卷拷贝155的本地块存储装置。在内部网络185上向在计算节点120和130上执行的程序提供对卷拷贝 155的访问。如在其他地方更详细地讨论的,BDS系统管理器模块可以提供与提供非本地块数据存储功能有关的多种服务,包括用户账户的管理(例如,创建、删除、计费等);块数据存储卷和这些卷的快照拷贝的创建、使用和删除;与块数据存储卷和这些卷的快照拷贝的使用有关的性能和审核数据的收集和处理;从客户或其他用户获得针对块数据存储卷和这些卷的快照拷贝的使用的支付;等等。在一些实施例中,BDS系统管理器模块可以与节点管理器模块115和125进行协调以管理在相关联的计算节点上执行的程序对卷的使用,而在其他实施例中,可以不使用节点管理器模块115和125来管理这种卷使用。此外,在其他实施例中,可以以其他方式构成一个或多个BDS系统管理器模块,例如,具有在单一数据中心中执行的BDS系统管理器的多个实例(例如,以便由位于数据中心内的主机计算系统提供的计算节点上执行的程序共享对非本地块数据存储装置的管理),和/或具有由在一些或所有服务器块数据存储系统165上执行的软件以分布式方式(例如,以对等的方式,而在计算系统175上没有任何单独的集中式BDS系统管理器模块)提供的BDS系统管理器模块的至少一些功能。在该示例中,各种主机计算系统110、130和135、服务器块数据存储系统165和计算系统125、140和175是经由数据中心的一个或多个内部网络185而相互连接的,内部网络185可以包括未示出的各种网络设备(例如,路由器、交换机、网关等)。此外,在本示例中,内部网络185连接到外部网络170 (例如,互联网或其他公共网络),并且,数据中心100 还可以包括数据中心100和外部网络170之间的相互连接处的一个或多个可选设备(未示出)(例如,网络代理、负载平衡器、网络地址转换设备等)。在该示例中,经由外部网络170 将数据中心100连接到一个或多个其他数据中心160,该一个或多个其他数据中心160中的每一个可以包括关于数据中心100而示意的计算系统和存储系统中的一些或全部,以及该数据中心外部的其他远程计算系统180。可以出于各种目的由各方来操作该其他计算系统180,例如由数据中心100的运营商或第三方(例如,程序执行服务和/或块数据存储服务的客户)来操作。此外,该其他计算系统180中的一个或多个可以是块数据存储服务可与之进行交互的档案存储系统(例如,作为远程网络可访问存储服务的一部分),该交互例如处于在该一个或多个其他计算系统180上或在数据中心100的一个或多个计算系统上执行的一个或多个档案管理器模块(未示出)的控制之下,在其他地方对此进行更详细地描述。此外,虽然未在此示出,但是在至少一些实施例中,服务器块数据存储系统165中的至少一些还可以与一个或多个其他网络或其他连接介质相互连接,例如,服务器存储系统165 可在其上共享卷数据(例如,出于复制卷拷贝和/或维持主卷拷贝和镜像卷拷贝之间的一致性的目的)的高宽带连接,其中,在至少一些这种实施例中,这种高宽带连接对各种主机计算系统110、130和135不可用。应当意识到,出于解释的目的,对图1的示例进行了简化,并且,主机计算系统、服务器块数据存储系统和其他设备的数目和组织可以比在图1所示的数目和组织大得多。例如,作为一个示意性实施例,对于每个数据中心,可以有大致4000个计算系统,其中,这些计算系统中的至少一些是均可作为15个虚拟机的宿主的主机计算系统,和/或这些计算系统中的一些是均可存储若干卷拷贝的服务器块数据存储系统。如果每个被宿留的虚拟机执行一个程序,那么这种数据中心一次可以执行多达六万个程序拷贝。此外,根据服务器存储系统的数目、卷的大小以及每个卷的镜像拷贝数目,可以在服务器块数据存储系统上存储成百上千(或更多)个卷。应当意识到,在其他实施例中,可以使用其他数目的计算系统、 程序和卷。图2A-2F示意了向客户提供可靠的非本地块数据存储功能的示例。具体地,图2A 和2B示意了可被用来例如代表块数据存储服务向客户端(例如,执行中的程序)提供可靠的非本地块数据存储功能的服务器块数据存储计算系统的示例,以及图2C-2F示意了使用档案存储系统来存储一些块数据存储卷的至少一些部分的示例。在该示例中,图2A示意了若干服务器块数据存储系统165,每个服务器块数据存储系统165都存储一个或多个卷拷贝155,例如每个卷具有主拷贝和至少一个镜像拷贝。在其他实施例中,如在其他地方详细讨论的,可以使用其他布置,例如通过具有多个主卷拷贝(例如,对于一个或多个程序同时进行的读取访问来说,所有的主卷拷贝都是可用的)和/或具有多个镜像卷拷贝来进行。例如,示例服务器块数据存储系统165和卷拷贝155可以对应于图1的服务器块数据存储系
17统165和卷拷贝155的子集。在该示例中,服务器存储系统16 存储至少三个卷拷贝,包括针对卷A的主拷贝 155A-a、针对卷B的镜像拷贝155B_a和针对卷C的镜像拷贝155C_a。还可以由服务器存储系统16 和其他服务器存储系统165来存储一个或多个其他未在本示例中示出的卷拷贝。 在本示例中,另一示例服务器块数据存储系统16 存储针对卷B的主拷贝155B-b以及针对卷D的镜像拷贝155D-b。此外,示例服务器块数据存储系统165η包括卷A的镜像拷贝 155Α-Ι1和卷D的主拷贝155D-n。从而,如果执行中的程序(未示出)附着到卷A并使用卷 A,针对该执行中的程序的节点管理器将与服务器块数据存储系统16 进行交互,以访问卷A的主拷贝155A-a,例如经由在服务器块数据存储系统16 上执行的服务器存储系统软件(未示出)来进行。类似地,对于附着到卷B和D并使用卷B和D的一个或多个执行中的程序(未示出),针对该执行中的程序的节点管理器将与服务器块数据存储系统16 和 165η分别交互,以分别访问卷B的主拷贝155B-b和卷D的主拷贝155D_n。此外,其他服务器块数据存储系统也可以存在(例如,服务器块数据存储系统165c-165m和/或165ο以及更多服务器块数据存储系统),并且可以存储卷C的主卷拷贝和/或其他主卷拷贝和镜像卷拷贝,然而在本示例中没有对其示出。从而,在本示例中,每个服务器块数据存储系统可以存储一个以上的卷拷贝,并可以存储主卷拷贝和镜像卷拷贝的组合,尽管在其他实施例中, 可以通过其他方式存储卷。图2B示意了与图2A中相似但是在图2A的服务器存储系统16 发生故障或因其他原因变得不可用之后的时间点处的服务器块数据存储系统165。响应于服务器存储系统 165b以及其所存储的卷B的主拷贝和卷D的镜像拷贝的不可用性,已经将所存储的图2B的服务器存储系统165的卷拷贝修改为维持卷B和D的可用性。具体地,由于卷B的主拷贝 155B-b不可用,已经将服务器存储系统16 上的卷B先前的镜像拷贝155B-a提升为卷B 新的主拷贝。因此,如果一个或多个程序先前附着到或者以其他方式与卷B的先前的主拷贝155B-b进行交互,当卷B先前的主拷贝155B-b不可用时,可能已经将这些程序自动转换 (例如,通过与这些程序相关联的节点管理器)到与服务器块数据存储系统16 继续进行的交互,以访问卷B新的主拷贝155B-a,此外,已经在服务器存储系统165c上创建卷B的新的镜像拷贝155B-C。虽然为了简明,未在图2B中示意图2A的服务器存储系统165η的卷A的镜像拷贝 155Α-Π,卷A的镜像拷贝155Α-Π与卷D的主拷贝155D_n —起在服务器存储系统165η上继续可用,从而先前附着到或者以其他方式与卷D的主拷贝155D-n交互的任何程序在服务器存储系统16 变得不可用时,将继续与服务器存储系统165η上的服务器存储系统上的该相同的卷D主拷贝155D-n进行交互,而无需修改。然而,由于在不可用的服务器存储系统 165b上卷D的镜像拷贝155D-b的不可用,在图2B中已经创建了卷D的至少一个附加镜像拷贝,例如服务器存储系统165ο的卷D镜像拷贝155D-0。此外,图2B示意了至少一些卷可以具有多个镜像拷贝,例如还包括先前在服务器存储系统165c上存在(但是在图2A中没有示出)的卷D镜像拷贝155D-C的卷D。图2C-2F示意了使用档案存储系统来存储一些块数据存储卷的至少一些部分的示例。在该示例中,图2C示意了均存储了一个或多个卷拷贝155的多个服务器块数据存储系统165,以例如与服务器块数据存储系统16 变得不可用之前在图2A中示意的示例服务器块数据存储系统165相对应。图2C还示意了例如可以与图1的计算系统180的子集相对应的多个档案存储系统180。具体地,在本示例中,图2C示意了图2A的服务器块数据存储系统16 和165b,虽然在本示例中,针对这些服务器块数据存储系统仅示意了卷B的主拷贝和镜像拷贝。如关于图2A讨论的,服务器存储系统16 存储卷B的主拷贝155B-b,服务器存储系统16 存储卷B的镜像拷贝155B-a。在图2C的示例中,与卷B相关联的用户已请求将卷B新的初始快照拷贝存储在远程档案存储系统中,例如用于长期备份。相应地,已将卷B划分成多个段部分,每个段部分将由档案存储系统分别存储,以例如与档案存储系统的典型或最大存储大小相对应,或者在另一方式中代之以由块数据存储设备来确定。在本示例中,已经将卷B的主拷贝155B-b 划分成N段(155B-bl至155B-bN),并且卷B的镜像拷贝155B_a使用段155B_al至155B_aN 类似地存储了相同的数据。将卷B的N段中的每一段作为单独的数据对象存储在两个示例档案存储系统180a和180b中的一个上,并从而这些多个对应存储的数据对象一起形成了卷B的初始快照卷拷贝。具体地,将卷B的主拷贝的段1155B-bl作为数据对象180B1存储在档案存储系统180a上,段2155B-b2作为数据对象180B2存储在档案存储系统180b上, 段3155B-b3作为数据对象180B3存储在档案存储系统180a上,以及段m55B_bN作为数据对象180BN存储在档案存储系统180a上。在本示例中,由块数据存储服务来执行将卷B划分成多个段,以使得可以将卷B的单个段单独传送到档案存储系统,虽然在其他实施例中, 可代之以将整个卷B发送到档案存储系统,然后档案存储系统将卷划分成多个段,或者如果需要,以其他方式处理卷数据。此外,在本示例中,档案存储系统180b是执行档案管理器模块190以管理档案存储系统的操作的档案存储计算系统,例如管理数据对象的存储和取回,跟踪哪个存储的数据对象与哪个卷相对应,将所传送的卷数据划分成多个数据对象,计量或者以其他方式跟踪档案存储系统的使用等。档案管理模块190可以例如维持关于与具体卷相对应的各种数据对象的各种信息(关于图2F进行更详细地讨论),例如针对卷的每个快照拷贝进行,而在其他实施例中,可代之以其他方式维持这种快照卷拷贝信息(例如,通过服务器块数据存储系统或块数据存储服务的其他模块),在其他实施例中,可以仅使用单一档案存储系统, 或者代之以在多得多的档案存储系统(未示出)上存储与卷B的段相对应的数据对象。此外,在其他实施例中,每个档案存储系统可以执行至少部分档案管理器模块,例如针对每个档案存储系统具有不同的档案管理器模块,或者针对所有的档案存储系统以分布式的对等方式提供档案管理器模块的功能。在其他实施例中,代之,一个或多个档案管理器模块可以在对其他块数据存储设备模块来说本地的(例如,在相同的计算系统上,或者在与执行BDS 系统管理器模块的计算系统相邻的计算系统上)一个或多个计算系统上进行执行,或者代之,可以直接由块数据存储服务的一个或多个其他模块来管理档案存储系统的操作,而不使用档案管理器模块(例如,由BDS系统管理器模块管理)。此外,在至少一些实施例中,档案存储系统可以执行各种增强所存储的数据对象的可靠性的操作,以例如复制多个档案存储系统上的一些或所有数据对象。从而,例如,档案存储系统180b的其他数据对象182b可以包括档案存储系统180a的数据对象180B1、 180B3和180BN中的一个或多个数据对象的镜像拷贝,并且档案存储系统180a的其他数据对象18 可以类似地存储档案存储系统180b的数据对象180B2的镜像拷贝。此外,如在其他地方更详细讨论的,在一些实施例中,在接收到创建卷B的初始快照拷贝的请求之前, 可能已经将卷B的至少一些段存储在档案存储系统上,例如,如果将存储在档案存储系统上表示卷B的段的数据对象用作卷B的备份存储或其他远程长期备份。如果是这样,在该时刻不传送任何附加的卷数据的情况下,可代之以创建在档案存储系统上的快照拷贝,例如,如果档案存储系统上的数据对象表示卷B的段的当前状态,而在其他实施例中,可以采用附加步骤来确保已经存储的数据对象对于卷B的段是最新的。图2D继续图2C的示例,并反映在关于图2C存储初始快照拷贝之后执行的对卷B 的修改。具体地,在本示例中,在创建初始化快照卷拷贝之后,修改卷B,例如由附着到该卷的一个或多个程序(未示出)来修改。在本示例中,在与主卷B拷贝的段3 155B-b3和段N 155B-bN相对应的卷B的至少两部分中修改数据,将被修改的段数据分别示意为数据3a和 Na。在本示例中,在修改主卷B拷贝155B-b后,服务器存储系统16 发起在服务器16 上的卷B的镜像拷贝155B-a的对应更新,以使得将镜像拷贝的段3 155B_a3修改为包括已修改的3a数据,并将镜像拷贝的段N 155B-aN修改为包括已修改的Na数据。从而,在本示例中,将卷B的镜像拷贝维持为与主卷B拷贝相同的状态。此外,在一些实施例中,还可以修改档案存储系统上的数据来反映卷B的改变,即使这些新的卷B数据修改当前不是卷B的任何快照卷拷贝的部分。具体地,由于段3和段N 数据的先前版本是存储在档案存储系统上的初始快照卷拷贝的部分,不对对应的数据对象 180B3和180BN进行修改来反映在初始快照卷拷贝创建之后发生的卷B的数据变化。代之, 可选地,如果拷贝由已修改的卷B数据构成,在本示例中代之将其存储为附加的数据对象, 例如可选的数据对象180B3a,以对应于段3 155B_b3的已修改的3a数据,以及例如可选的数据对象180BNa,以对应于段N 155B_bN的已修改的Na数据。以这种方式,即使当对卷B 的主拷贝和镜像拷贝做出改变时,也能维持初始快照卷拷贝的数据。如果创建了可选的数据对象180B3a和180BNa,可以通过各种方式发起该创建,例如服务器块数据存储系统16 以与针对卷B的镜像拷贝155B-a所发起的更新相同的方式来发起。图2E示意了先前关于图2D描述的实施例的备选实施例。具体地,在图2E的示例中,在以与关于图2D描述的方式所类似的方式将卷的初始快照拷贝存储在档案存储系统上后,再次修改卷B,并且相应地更新服务器存储系统16 上卷B的主拷贝155B-b,以使得将段3 155B-b3和段N 155B-bN更新为分别包括已修改的数据3a和Na。然而,在本实施例中,不将服务器存储系统16 上卷B的镜像拷贝155B-a维持为卷B的完全拷贝。代之, 结合镜像拷贝155B-a使用档案存储系统上卷B的快照卷拷贝来维持卷B的拷贝。从而, 在本示例中,当在创建初始快照卷拷贝之后对卷B的主拷贝155B-b做出修改时,这些修改也对服务器存储系统16 上的镜像拷贝155B-a做出,以使得该镜像拷贝也存储针对段3 155B-a3的已修改3a数据和针对段N 155B_aN的已修改Na数据。然而,卷B的镜像拷贝一开始没有存储卷B的从初始快照卷拷贝创建以来没有被修改过的其他段的拷贝,因为在档案存储系统上卷B的快照拷贝包括了该数据的拷贝。相应地,如果服务器存储系统16 在后来变得不可用(例如,先前结合图2B所讨论的),可以将服务器存储系统16 上卷B的镜像拷贝155B-a提升为卷B新的主拷贝。在本示例实施例中为了完成该提升,使用档案存储系统上卷B的初始快照卷拷贝来恢复卷B的镜像拷贝155B-a的剩余部分,以例如使用所存储的数据对象180B1恢复段155B-al,使用所存储的数据对象180B2恢复段155B_a2等。此外,在该示例中,可以类似地将数据对象180B3a和ISOBNa可选地存储在档案存储系统上,以表示修改后的3a和Na数据。如果这样做,在一些实施例中,一开始也将不把修改过的3a和Na数据存储在针对镜像拷贝155B_a的服务器块数据存储系统16 上,而代之类似地,可以通过与先前针对其他镜像拷贝段描述的方式相类似的方式来从档案存储系统数据对象180B3a和180BNa恢复镜像拷贝段155B_a3和155B_aN。虽然在先前的示例中,当镜像拷贝被提升为新的主卷拷贝时使用卷B的快照卷拷贝来恢复卷B的镜像拷贝,在其他实施例中也可以通过其他方式使用档案存储系统上的快照卷拷贝。例如,以与先前针对恢复镜像卷拷贝描述的方式相类似的方式,可以使用档案存储系统上的快照卷拷贝来创建与初始快照卷拷贝相匹配的卷B的新拷贝,以例如在快照卷拷贝时创建卷B新的镜像拷贝,创建基于卷B的快照卷拷贝的全新卷,协助将卷B从一个服务器块数据存储系统移动到另一个服务器块数据存储系统,等等。此外,当在多个不同的数据中心或其他地理位置中,块数据服务的服务器块数据存储系统不可用时,远程档案存储系统可为所有这些服务器块数据存储系统所用,并因此可被用来基于快照卷拷贝在这些地理位置的任一个中创建新的卷拷贝。图2F继续图2C和2D的示例,在对卷B进行附加修改后后的时间点处继续。具体地,在如关于图2C或2D所描述的做出对段3和段N的修改后,在档案存储系统上创建卷B 的第二快照卷拷贝。随后,对存储在段2和3中的卷B的数据做出修改。相应地,图2F中示意的卷B的主拷贝155B-b包括段1 155B-bl中的原始数据1、在第二快照卷拷贝创建后修改的段2 155B-b2中的数据加、同样在第二快照卷拷贝创建后修改的段3 155B-b3中的数据北、在初始第一快照卷拷贝创建后但是在第二快照卷拷贝创建之后修改的段N 155B-bN 中的数据Na。相应地,在指示要创建卷B的第三快照卷拷贝后,在档案存储系统中创建附加的数据对象,以与从第二快照卷拷贝创建以来修改的两个段相对应,数据对象ISOBh对应于段155B-b2并包括修改后的数据2a,以及段180B;3b对应于段155B_b3并包括修改后的数据3b。此外,在本示例中,没有示出服务器块数据存储系统165a,但是示出了档案管理器模块190维持的信息250的拷贝(例如,存储在档案存储系统180b上或其他地方),以提供关于在档案存储系统上存储的快照卷拷贝的信息。具体地,在本示例中,信息250包括多行 250a-250d,每行与不同的快照卷拷贝相对应。在本示例,每行信息包括针对卷拷贝的唯一标识符、对快照卷拷贝所对应的卷的指示、以及对存储在档案存储系统上的包括快照卷拷贝在内的数据对象的顺序列表的指示。从而,例如,行250a对应于关于图2C讨论的卷B的初始快照卷拷贝,并指示初始快照卷拷贝包括所存储的数据对象180B1、180B2、180B3等等直至180BN。行250b对应于不同卷A的示例快照卷拷贝,卷A包括在本示例中没有示出的各种所存储的数据对象。行250c对应于卷B的第二快照卷拷贝,行250d对应于卷B的第三快照卷拷贝。在本示例中,卷B的第二和第三卷拷贝是递增拷贝而不是完整的拷贝,以使得可以使用所存储的相同数据对象来继续表示卷B从先前的快照卷拷贝以来没有改变的段。 从而,例如,行250c中的卷B的第二快照拷贝指示该第二快照拷贝与卷B的初始快照拷贝共享数据对象180B1和180B2(以及很可能共享从未示出的段4到段N-I的数据对象中的一些或全部)。类似地,行250d中示出的卷B的第三快照拷贝也继续使用与初始快照卷拷贝和第二快照卷拷贝相同的数据对象180B1。
通过在多个快照卷拷贝之间共享公共数据对象,将档案存储系统上的存储量最小化,因为针对每个快照卷拷贝,未改变的卷段(例如,段1)的新拷贝在档案存储系统上没有单独的拷贝。然而,在其他实施例中,一些或所有的快照卷拷贝可以不是递增的,代之,每个快照卷拷贝都包括每个卷段的单独拷贝,而不管段中的数据是否发生改变。此外,当使用可以与一个或多个其他快照卷拷贝共享一个或多个重叠的数据对象的递增快照卷拷贝时,在关于快照卷拷贝采用附加类型的操作时对该重叠的数据对象进行管理。例如,如果后续接收到删除在行250a中指示的卷B的初始快照卷拷贝并相应地释放档案存储系统上不再需要的存储空间的请求,仅在档案存储系统上删除针对该初始快照卷拷贝指示的数据对象中的一些。例如,在创建初始快照卷拷贝之后修改了段3和段N,并从而仅由该初始快照卷拷贝来使用对应的初始快照卷拷贝的存储的数据对象180B3和180BN。从而,如果删除了卷B 的初始快照卷拷贝,可以将这两个数据对象从档案存储系统180a永久性删除。然而,即使删除了卷B的初始快照卷拷贝,也将维持数据对象180B1和180B2,因为其继续是卷B的至少第二快照卷拷贝的一部分。虽然在本示例中未示意,信息250可以包括关于快照卷拷贝的各种其他类型的信息,包括关于哪个档案存储系统存储了每个数据对象的信息,关于允许谁访问快照卷拷贝信息并在什么环境下允许访问的信息等。作为示例,在一些实施例中,一些用户可以创建快照卷拷贝并访问在至少一些环境下可以为至少一些其他用户所用的这些快照卷拷贝,例如,在基于费用的基础上允许该其他用户创建一个或多个具体快照卷拷贝的拷贝。如果这样做,可以将这种涉及访问的信息存储在信息250中或存储在其他地方,并且档案管理器模块190可以使用这种信息来确定是否满足针对与具体快照卷拷贝相对应的信息来做出的请求。备选地,在其他实施例中,可以代之由块数据存储服务的其他模块(例如,BBS系统管理器模块)来管理对快照卷拷贝的访问,以例如防止请求被发送到档案存储系统,除非这些请求经过授权。应当意识到,出于解释的目的,已经对图2A-2F的示例进行了简化,服务器块数据存储系统、档案存储系统和其他设备的数目和构成可以比所描述的大得多。类似地,在其他实施例中,可以通过其他方式来存储和管理主卷拷贝、镜像卷拷贝和/或快照拷贝。图3是示意了适于针对用户来管理对可靠的非本地块数据存储功能的提供和使用的框图。在本示例中,服务器计算系统300执行BDS系统管理器模块340的实施例,以管理向在主机计算系统370上和/或在至少一些其他计算系统上执行的程序提供非本地块数据存储功能,例如,服务器块数据存储系统360提供的块数据存储卷(未示出)。本示例中的每个主机计算系统370还可以执行节点管理器模块380的实施例,以管理在该主机计算系统上执行的程序375对至少一些非本地块数据存储卷的访问,例如,通过与网络385(例如,未示出的数据中心的内部网络,包括计算系统300、360、370以及可选地其他计算系统 390中的至少一些)上的BDS系统管理器模块340协同的方式来进行。在其他实施例中,代之,一些或所有的节点管理器模块380可以管理一个或多个计算系统(例如,其他计算系统 390)。此外,示意了多个服务器块数据存储系统360,每个服务器块数据存储系统360存储了执行中的程序375所使用的至少一些非本地块数据存储卷(未示出),在本示例中,还在网络385上提供对这些卷的访问。一个或多个服务器块数据存储系统360还均可以存储对一个或多个服务器块数据存储系统360的操作进行管理的服务器软件组件(未示出),以及与服务器块数据存储系统360存储的数据有关的各种信息(未示出)。从而,在至少一些实施例中,图3的服务器计算系统300可以对应与图1的计算系统175,图1的节点管理器模块115和125中的一个或多个可以对应于图3的节点管理器模块380,和/或图3的服务器块数据存储计算系统360中的一个或多个可以对应于图1的服务器块数据存储系统165。 此外,在本示例实施例中示意了多个档案存储系统350,该多个档案存储系统350可以存储在服务器块数据存储系统360上存储的至少一些块数据存储卷的至少部分的快照拷贝和/ 或其他拷贝。档案存储系统350还可以与计算系统300、360和370中的一些或所有交互计算系统,并且在一些实施例中,可以是在一个或多个其他外部网络(未示出)上与计算系统 300、360和370进行交互的远程档案存储系统(例如,未示出的远程存储服务的远程档案存储系统)。在至少一些实施例中,该其他计算系统390还可以包括各种类型的其他临近或远程的计算系统,包括客户或块数据存储服务的其他用户经由其与计算系统300和/或370 交互的计算系统。此外,该其他计算系统390中的一个或多个还可以执行PES系统管理器模块,以对主机计算系统370和/或其他主机计算系统390上的程序执行进行协同,或者, 计算系统300或该其他所示出的计算系统中的一个可以代之以执行这种PES系统管理器模块,虽然在本示例中未示意PES系统管理器模块。在本示例实施例中,计算系统300包括CPU( “中央处理单元”)305、本地存储装置 320、存储器330以及各种1/0( “输入/输出”)组件310,在本示例中所示意的I/O组件包括显示器311、网络连接312、计算机可读介质驱动313以及其他I/O设备315 (例如,键盘、 鼠标、扬声器、麦克风等)。在所示意的实施例中,BDS系统管理器模块340在存储器330中执行,并且一个或多个其他程序(未示出)也可以可选地在存储器330中执行。每个计算系统370类似地包括了 CPU 371、本地存储装置377、存储器374和各种 I/O组件372 (例如,与服务器计算系统300的I/O组件310相类似的I/O组件)。在所示意的实施例中,节点管理器模块380在存储器374中执行,以管理在计算系统上的存储器 374中执行的一个或多个其他程序,例如,表示程序执行服务和/或块数据存储服务的客户来进行。在一些实施例中,一些或所有计算系统370可以作为多个虚拟机的宿主,并且如果这样做,每个执行中的程序375可以是在不同的被宿留的虚拟机计算节点上执行的完整虚拟机镜像(例如,具有操作系统和一个或多个应用程序)。节点管理器模块380可以类似地在另一被宿留的虚拟机(例如,管理其他被宿留的虚拟机的特许虚拟机监控器)上执行。 在其他实施例中,执行中的程序拷贝375和节点管理器模块380可以作为在计算系统370 上执行的单一操作系统(未示出)上不同的处理来执行。本示例中的每个档案存储系统350是包括了 CPU 351、本地存储装置357、存储器 354和各种I/O组件352 (例如,与服务器计算系统300的I/O组件310相类似的I/O组件) 的计算系统。在所示意的实施例中,档案管理器模块355在存储器3M中执行,以管理一个或多个档案存储器系统350的操作,例如代表块数据存储服务和/或提供该档案存储系统的不同的存储服务的客户来进行。在其他实施例中,档案管理器模块355可以代之在其他计算系统(例如其他计算系统390中的一个)上或者在与BDS系统管理器模块340相结合的计算系统300上执行。此外,虽然在此没有示意,然而在一些实施例中,例如先前关于图2F所描述的,可以将与档案存储系统350存储的数据有关的各种信息维持在存储器357上或其他地方。此外,虽然在此同样没有示意,然而服务器块数据存储系统360和/或其他计算系统390中的每一个可以类似地包括关于档案存储系统350示意的一些或所有类型的组件,例如,CPU、本地存储装置、存储器和各种I/O组件。如在其他地方更详细地描述的,BDS系统管理器模块340和节点管理器模块380可以采取各种动作来管理针对客户(例如,执行中的程序)的可靠非本地块数据存储功能的提供和使用。在本示例中,BDS系统管理器模块340可以在存储器320上维持数据库325, 数据库325包括关于在服务器块数据存储系统360上和/或在档案存储系统350上存储卷的信息(例如,用于在对卷进行管理中使用),以及还存储关于用户或块数据存储服务的其他方面的各种其他信息(未示出)。在其他实施例中,可以通过其他方式存储关于卷的信息,例如由其计算系统上的节点管理器模块380和/或其他计算系统以分布式的方式进行。 此外,在本示例中,主机计算系统370上的每个节点管理器模块380可以在本地存储装置 377上存储关于附着到主机计算系统并由主机计算系统上的执行中的程序375使用的当前卷的信息,以例如对与提供卷的主拷贝的服务器块数据存储系统360的交互进行协同,以及如果该主卷拷贝变得不可用,确定如何切换到卷的镜像拷贝。虽然没有在此示意,每个主机计算系统还可以包括针对附着到主机计算系统并由在该计算系统上执行的程序所使用的每个卷的不同的逻辑本地块数据存储设备接口,还可以就像与提供本地存储装置377的一个或多个其他本地物理附着的存储设备不可区分一样将其呈现给执行中的程序。应当意识到,计算系统300、350、360、370和390仅是示意性的,并非旨在限制本发明的范围。例如,可以将计算系统300、350、360、370和/或390连接到其他未示出的设备, 包括通过网络385和/或一个或多个其他网络(例如,互联网)或者经由万维网(“Web”) 来进行。更一般地,计算节点或其他计算系统或者数据存储系统可以包括可交互并执行所描述类型的功能的硬件或软件的任何组合,包括但不限于桌上型计算机或其他计算机、数据库服务器、网络存储设备和其他网络设备、PDA、蜂窝电话、无线电话、寻呼机、电子管理器、互联网应用、基于电视的系统(例如,使用机顶盒和/或个人/数字录像机的系统)以及包括适当通信能力的各种其他消费产品。此外,在一些实施例中,可以将所示意的模块提供的功能组合到更少的模块中,或者分布到附加的模块中。类似地,在一些实施例中,可以不提供一些所示意的模块的功能,或者其他附加功能是可用的。还将意识到,虽然将不同的项目示意为在使用时被存储在存储器或存储装置中, 出于存储器管理和数据完整性的目的,这些项目或其部分可在存储器和其他存储装置之间进行转移。备选地,在其他实施方式中,软件模块和/或系统中的一些或全部可在另一个设备上的存储器中执行,并可经由计算机间的通信与所示意的计算系统进行通信。此外,在一些实施例中,可以通过其他方式实现或提供该系统和/或模块中的一些或全部,例如至少部分地以固件和/或硬件来提供,包括但不限于一个或多个应用专用的集成电路(ASIC)、 标准集成电路、控制器(例如,通过执行适当的指令进行,并包括微处理器和/或嵌入式控制器)、可现场编程的门阵列(FPGA)、复杂的可编程逻辑设备(CPLD)等。还可将一些或所有的模块、系统和数据结构存储(例如,作为软件指令或结构数据)在计算机可读介质上, 计算机可读介质例如硬盘、存储器、网络或可被适当的驱动读取或通过适当的连接读取的便携式媒体物件。还可以将系统、模块和数据结构作为在各种计算机可读传输介质上产生
24的数据信号进行传输(例如,作为载波或其他模拟或数字传播信号的一部分),包括基于无线和基于有线/线缆的介质,系统、模块和数据结构可采取各种形式(例如,作为单一或复用的模拟信号的一部分,或作为多个离散数字分组或帧)。在其他实施例中,这种计算机程序产品还可采取其他形式。相应地,可使用其他计算机系统配置来实践本发明。图4是块数据存储系统管理器例程400的示例实施例的流程图。例如,该例程可由图1的块数据存储系统管理器模块175和/或图3的BDS系统管理器模块340提供,以例如提供用于执行中的程序使用的块数据存储服务。在所示意的实施例中,例程可以在单一数据中心或其他地理位置处与多个服务器块数据存储系统进行交互(例如,如果每个这种数据中心或其他地理位置具有在该地理位置处执行的例程的不同的实施例),虽然在其他实施例中,单一例程400可以支持多个不同的数据中心或其他地理位置。所示意的例程的实施例开始于步骤405,在步骤405处接收到请求或其他信息。例程继续到步骤410,确定接收到的请求是否是创建新的块数据存储卷,例如来自于块数据存储服务的用户和/或来自于很可能访问该新卷的执行中的程序,并且如果是,继续到步骤 415,执行卷创建。在所示意的实施例中,步骤415中的例程选择将在其上存储卷的拷贝的一个或多个服务器块数据存储系统(例如,至少部分基于所选择的服务器存储系统的位置和/或能力),在这些所选择的服务器存储系统上初始化卷拷贝,并更新所存储的关于卷的信息以反映出新卷。例如,在一些实施例中,新卷的创建可以包括以特定的方式对每一个所选择的服务器上特定大小的线性存储装置进行初始化,例如,初始化为空白的,以包括另一所指示的卷的拷贝(例如,在相同数据中心或其他地理位置处的另一个卷,或者代之以存储在远程位置处的卷),以包括所指示的快照卷拷贝的拷贝(例如,一个或多个档案存储系统存储的快照卷拷贝,例如通过与档案存储系统进行交互而获得该快照卷拷贝)等。在其他实施例中,针对卷,可以在一个或多个服务器块数据存储系统上创建特定大小的线性存储装置的逻辑块,例如通过使用多个被表示为单一逻辑块的非连续存储区域和/或通过对多个逻辑物理硬盘上的线性存储装置的逻辑块加条纹来进行。为了创建已经存在于另一数据中心或其他地理位置处的卷的拷贝,例程可以例如与在该位置处支持块数据存储服务操作的例程400的另一实例相协同。此外,在一些实施例中,至少一些卷将在多个不同的服务器存储系统上均具有包括至少一个主拷贝和一个或多个镜像拷贝在内的多个拷贝,以及如果这样做,可以选择并初始化多个服务器存储系统。如果在步骤410中代之以确定接收到的请求不是创建卷,则例程代之以继续到步骤420,确定接收到的请求是否要将已存在的卷附着到执行中的程序拷贝,该请求例如从执行中的程序拷贝接收到的请求,或者从代表与执行中的程序拷贝和/或所指示的卷相关联的用户操作的另一计算系统接收到的请求。如果是,例程继续到步骤425,识别存储了卷的拷贝的至少一个服务器块数据存储系统,以及将至少一个识别出的服务器存储系统与执行中的程序相关联(例如,将针对卷的主服务器存储系统与程序在其上执行的计算节点相关联,例如通过使逻辑本地块存储设备安装到表示主卷拷贝的计算节点上来进行)。可以通过各种方式来识别要附着的卷,例如通过该卷的唯一标识符和/或创建或者以其他方式与该卷相关联的用户的标识符来进行。在将卷附着到执行中的程序拷贝后,例程还可以更新所存储的关于卷的信息,以指示执行中的程序的附着,例如,如果一次仅允许单一程序附着到卷,或者如果一次仅允许单一程序对卷进行写访问或其他修改访问。此外,在所指示的实施例中,可以向与执行中的程序相关联的节点服务器提供关于至少一个识别出的服务器存储系统的信息,以例如利于卷对执行中的程序的实际附着,虽然在其他实施例中,节点管理器可以具有对这种信息的其他访问。如果在步骤420中代之以确定接收到的请求不是将卷附着到执行中的程序,则例程继续到步骤430,确定接收到的请求是否是创建所指示的卷的快照拷贝,该请求例如从附着到卷或代之以附着到另一计算系统(例如,由与卷相关联的用户和/或购买了创建另一用户的卷的快照拷贝的权利的用户所操作的计算系统)的执行中的程序接收到的请求。在一些实施例中,可以创建卷的快照卷拷贝,而不管卷是否附着到任何执行中的程序或由任何执行中的程序所使用,和/或不管是否将卷存储在例程400执行处的相同数据中心或其他地理位置。如果确定是,例程继续到步骤435,发起对所指示的卷的快照卷拷贝的创建,例如通过与和一个或多个档案存储系统(例如,在远程存储位置处的档案存储系统,例如结合在一个或多个网络上可以访问的远程长期存储服务)的操作相协同的一个或多个档案管理器模块进行交互来进行。在一些实施例中,可以由第三方远程存储服务响应于来自例程400的指示来执行快照卷拷贝创建,例如,如果远程存储服务已经存储了卷的至少一些段。此外,在至少一些实施例中还可以指定各种其他参数,例如相对于一个或多个其他快照卷拷贝,是否要递增该快照卷拷贝等。如果在步骤430代之以确定接收到的请求不是创建快照卷拷贝,则例程继续到步骤440,确定步骤405中接收到的信息是否是一个或多个服务器块数据存储系统(在其他实施例中,或者一个或多个卷)的故障或其他不可用性的指示。例如,如下关于步骤485所描述的,在一些实施例中,例程可以监控一些或所有服务器块数据存储系统的状态,并基于此来确定不可用性,例如,通过周期性或持续向服务器块数据存储系统发送Ping消息或其他消息来确定是否接收到响应,或者通过以其他方式获得关于服务器存储系统的状态的信息。如果在步骤440中确定接收到的信息指示了一个或多个服务器存储系统的可能故障, 例程继续到步骤445,采取动作维持存储在所指示的一个或多个服务器存储系统上的一个或多个卷的可用性。具体地,在步骤445中,例程确定存储在所指示的一个或多个服务器存储系统上的任何这种卷是否是主卷拷贝,并且针对每个这种主卷拷贝,在另一服务器存储系统上提升该卷的一个镜像拷贝为该卷新的主拷贝。在步骤450中,例程从而使得要在一个或多个其他服务器存储系统上复制每个卷的至少一个新的拷贝,例如通过使用在服务器存储系统上可用的卷的已存在的拷贝来进行,该服务器存储系统不同于被指示为不可用的这些服务器存储系统中的一个服务器存储系统。在其他实施例中,可以代之通过其他方式执行将镜像拷贝提升为主拷贝和/或创建新的镜像拷贝,例如由服务器块数据存储系统通过分布式的方式进行(例如,使用卷的镜像拷贝之间的选举协议(election protocol)) 0 此外,在一些实施例中,镜像卷拷贝可以是仅包括卷的主拷贝的部分的最小拷贝(例如,仅包括从先前创建卷的快照拷贝以来修改过的部分),以及将镜像拷贝提升为主拷贝还可以包括收集新的主拷贝的信息,以使其完整(例如,从最近的快照拷贝收集)。在步骤455中,然后例如针对先前附着到该一个或多个不可用的服务器存储系统上的主卷拷贝的执行中的程序,例程可选地发起一个或多个执行中的程序对从镜像拷贝提升而来的任何新的主卷拷贝的附着,虽然在其他实施例中,这种重新附着到新的主卷拷贝将代之通过其他方式来执行(例如,由与将发生重新附着的执行中的程序相关联的节点管理器进行)。在步骤458中,然后例程更新关于不可用的服务器存储系统上的卷的信息,以例如指示在步骤450中创建的新的卷拷贝和在步骤445中提升的新的主卷拷贝。在其他实施例中,可以通过其他方式来创建新的主卷拷贝,例如通过创建新的卷拷贝来作为主卷拷贝,而不是提升已存在的镜像卷拷贝,虽然这样做可能花比提升已存在的镜像卷拷贝更长的时间。此外,如果在步骤450中没有卷拷贝可用于从其复制新的卷拷贝,例如,如果存储卷的主拷贝和镜像拷贝的多个服务器存储系统都几乎同时出现故障,在一些实施例中,例程可以通过其他方式尝试获得针对该卷的信息来在这样的复制中使用,例如,从在档案存储系统上可用的卷的一个或多个最近的快照卷拷贝获得,从在另一个数据中心或其他地理位置处的卷的拷贝获得等。如果在步骤440中代之以确定接收到的信息不是一个或多个服务器块数据存储系统的故障或其他不可用性的指示,例程代之以继续到步骤460,确定步骤405中接收到的信息是否指示将一个或多个卷移动到一个或多个新的服务器块数据存储系统。如在其他地方更详细地描述的,可以出于各种理由执行这种卷移动,包括至相同地理位置处的其他服务器块数据存储系统(例如,移动已存在的卷到更好地装备以支持该卷的存储系统) 和/或至在一个或多个其他数据中心或其他地理位置的一个或多个服务器数据存储系统。 此外,可以通过各种方式发起卷的移动,例如,由于来自于与该卷相关联的块数据存储系统的用户的请求而发起,由于来自于块数据存储服务的人类操作员的请求而发起,基于自动检测到与正在使用的当前服务器存储系统相比,对于卷来说更好的服务器存储系统而发起 (例如,由于当前服务器存储系统的过度利用和/或新服务器存储系统的欠利用)等。如果在步骤640中确定接收到的信息是要移动一个或多个这种卷拷贝,例程继续到步骤465 并在一个或多个新的服务器块数据存储系统上创建每个所指示的卷的拷贝,例如以与先前关于步骤415讨论的方式相类似的方式(例如,通过使用在服务器块数据存储系统上已存在的卷拷贝,通过使用在一个或多个档案存储系统上卷的快照拷贝或其他拷贝等),以及还在步骤465中更新所存储的针对该卷的信息。此外,在一些实施例中,例程可以采取附加动作来支持移动,例如在创建新的卷拷贝后,从服务器块数据存储系统删除先前的卷拷贝。此外,在一个或多个执行中的程序被附着到正在移动的先前的卷拷贝的情况下,例程可以针对执行中的程序发起正在移动的先前的卷拷贝的去附着,和/或可以发起这种执行中的程序对正在创建中的新卷的重新附着,例如通过向执行中的程序的节点管理器发送相关联的指令来进行,虽然在其他实施例中,节点管理器可代之执行这种动作。如果在步骤460中代之以确定接收到的信息不是移动一个或多个卷的指令,例程代之以继续到步骤485,在适当时执行一个或多个另外指示的操作。在各个实施例中,其他操作可以具有各种形式,例如以下非排他性列表中的一个或多个执行对一些或所有服务器块数据存储系统的监控(例如,通过向服务器块数据存储系统发送Ping消息或其他状态消息,并等待响应);通过响应于确定卷的主拷贝或镜像拷贝不可用来发起置换主卷拷贝和/或镜像拷贝的创建,例如基于所执行的监控,基于从存储卷的主拷贝但不能够更新该卷的一个或多个镜像拷贝的主服务器块数据存储系统接收到的消息,基于从节点管理器接收到的消息等;去附着、删除和/或描述一个或多个卷;删除、描述和/或拷贝一个或多个快照卷拷贝;由用户跟踪卷和/或快照卷拷贝的使用,以例如出于支付目的计量这种使用; 等等。在步骤415、425、435、458、465或485之后,例程继续到步骤495,确定是否继续,例如直到接收到显式的终止指令。如果确定继续,例程返回步骤405,如果确定不继续,例程继续到步骤499并结束。此外,针对至少一些类型的请求,在一些实施例中,例程还检验请求者被授权进行该请求,例如基于针对请求者指定的访问权和/或该请求的相关联的目标(例如,所指示的卷)。在一些这种实施例中,授权检验还可以包括从请求者获得针对所请求的功能的支付(或者检验已经提供了任何这种支付),以例如如果没有提供支付则不执行请求。例如, 在至少一些实施例和情况中可具有相关支付的请求的类型包括创建卷的请求、附着卷的请求、创建快照拷贝的请求、移动所指示的卷的请求(例如,至高级服务器存储系统)以及所指示的操作的其他类型。此外,可以对代表用户采取的一些或所有类型的动作进行监控和计量,例如后来用于针对这些动作中的至少一些确定所对应的基于使用的费用。图5是节点管理器例程500的示例实施例的流程图。例如,可以由图1的节点管理器模块115和/或125的执行,和/或图3的节点管理器模块380的执行来提供例程,以例如管理非本地块数据存储装置的一个或多个执行中的程序所进行的使用。在所示意的实施例中,块数据存储服务通过一个或多个BDS系统管理器模块和多个节点管理器模块以及可选地一个或多个档案管理器模块的组合来提供功能,虽然在其他实施例中,可以使用其他配置(例如,没有节点管理器模块和/或档案管理器模块的单一 BDS系统管理器模块,在没有BDS系统管理器模块的情况下在协同管理器中一起执行的多个节点管理器模块等)。所示意的例程的实施例开始于步骤505中,在步骤505中,接收涉及在相关联的计算节点上的程序执行的请求。例程继续到步骤510,确定该请求是否涉及在所指示的相关联的计算节点上执行一个或多个所指示的程序,该请求例如是来自于程序执行服务和/或与这些程序相关联的用户的请求。如果是,例程继续到步骤515,以获得所指示的程序的拷贝,并在相关联的计算节点上发起程序的执行,在一些实施例中,在步骤515中可以基于作为在步骤505中接收到的请求的一部分发送到例程500的所指示的程序来获得该一个或多个所指示的程序,而在其他实施例中,可以从本地或非本地存储装置检索所指示的程序 (例如,从远程存储设备)。在其他实施例中,例程500可以代之以不执行涉及执行中的程序的操作,例如,如果支持程序执行服务的另一例程代之以代表相关联的计算节点执行这些操作。如果代之以在步骤510中确定接收到的请求是不执行一个或多个所指定的程序, 例程代之以继续到步骤520,确定是否接收到将所指示的卷附着到所指示的执行中的程序, 该请求例如是来自执行中的程序的请求,来自于图4的例程的请求和/或来自于与所指示的卷和/或所指示的执行中的程序相关联的用户的请求。如果是,例程继续到步骤525,获得卷的主拷贝的指示,并将该主卷拷贝关联到计算节点的典型逻辑本地块数据存储设备。 在一些实施例中,例程可以向执行中的程序和/或计算节点指示该典型本地逻辑块数据存储设备,而在其他实施例中,执行中的程序可以代之以发起本地逻辑块数据存储设备的创建。例如,在一些实施例中,例程500可以通过将块设备导入到具体的虚拟机中并安装逻辑本地块数据存储设备,使用GNBD( “全局网络块设备”)技术来使得该逻辑本地块数据存储设备可为虚拟机计算节点所使用。在一些实施例中,例程可以在步骤525采取进一步的动作,例如获得并存储对卷的一个或多个镜像卷拷贝的指示,例如如果主卷拷贝后来变得不可用,允许例程动态附着到镜像卷拷贝。
如果在步骤520中代之以确定步骤505的接收到的请求不是附着所指示的卷,例程代之以继续到步骤530,确定接收到的请求是否是执行中的程序针对所附着的卷的数据访问请求,例如读取请求或写入请求。如果是,例程继续到步骤535,在步骤535,例程识别与数据访问请求相对应的相关主卷拷贝(例如,基于针对该数据访问请求,所执行的程序使用的典型本地逻辑块数据存储设备),并对该主卷拷贝发起所请求的数据访问。如在其他地方更详细地描述的,在一些实施例中,可以使用惰性写入方案,例如通过立即修改实际的主卷拷贝和/或镜像卷拷贝来反映写数据访问请求(例如,总是更新镜像卷拷贝、仅在将镜像卷拷贝提升为主卷拷贝的情况下才更新该镜像卷拷贝等),而不立即修改存储在一个或多个档案存储系统上的对应段以反映该写数据访问请求(例如,以使得当已进行了足够的修改时和/或当请求了对对应信息的读访问时,最终更新存储在档案存储系统上的拷贝)。 在所示意的实施例中,由不同于例程500的例程来执行镜像卷拷贝的维持(例如,由存储主卷拷贝的主服务器块数据存储系统来进行),虽然在其他实施例中,例程500在步骤535中还可以通过向一个或多个镜像卷拷贝发送类似或相同的数据访问请求来协助维持这些镜像卷拷贝。此外,在一些实施例中,可以不将卷存储在档案存储系统上,直到对应的用户显式地进行请求(例如,作为创建卷的快照拷贝的请求的一部分),而在其他实施例中,可以将至少一些卷的至少一些部分维持在档案存储系统上(例如,如果使用档案存储系统的拷贝来作为主卷拷贝和/或镜像卷拷贝的备用存储)。在步骤535之后,例程继续到步骤M0,确定在预定的时限内是否从主服务器块数据存储系统接收到针对步骤535中发送的请求的响应,以例如指示操作的成功。如果没有, 例程确定主服务器块数据存储系统不可用,并继续到步骤M5,发起改变以附着一个镜像卷拷贝来作为新的主卷拷贝,并将针对该镜像卷拷贝的服务器块数据存储系统关联为该卷新的主服务器块数据存储系统。此外,通过与以上关于步骤535指示的方式相类似的方式,例程类似地向该新的主卷拷贝发送数据访问请求,并且还可以在一些实施例中进一步监控是否接收到适当的响应,并且如果没有接收到,再次进行到步骤例如,提升另一个镜像卷拷贝并重复该处理)。在一些实施例中,可以协同例程400来执行发起将镜像卷拷贝作为新的主卷拷贝的改变,例如通过发起与例程400的接触以确定哪个镜像卷拷贝应当变成新的主卷拷贝,通过从例程400接收例程500何时将镜像卷拷贝提升为主卷拷贝的指令(例如,由例程500在步骤M5中发送的主卷拷贝不可用的指示来提示)等。如果在步骤530中代之以确定接收到的请求不是针对所附着的卷的数据访问请求,例程代之以继续到步骤585,在适当时执行一个或多个另外指示的操作。在各个实施例中,该其他操作可以具有各种形式,例如来自例程400的针对一个或多个卷的新的卷信息的指令(例如,一个或多个正被管理的执行中的程序所附着到的卷的新提升的主卷拷贝), 将卷从与例程500相关联的计算节点上的执行中的程序去附着等。此外,在至少一些实施例中,例程还可以执行虚拟机监控器的一个或多个其他动作,例如,如果例程500作为虚拟机监控器的一部分或者以其他方式与虚拟机监控器协同来进行操作,该虚拟机监控器管理一个或多个相关联的虚拟机计算节点。在步骤515、525、545或585之后,或者如果在步骤MO中代之以确定在预定时限内接收到响应,例程继续到步骤595,确定是否继续,例如直到接收到显式的终止指令。如果确定继续,例程返回步骤505,如果确定不继续,例程继续到步骤599并结束。
此外,针对至少一些类型的请求,在一些实施例中,例程还验证请求者被授权进行该请求,例如基于针对请求者指定的访问权和/或该请求的相关目标(例如,所指示的卷)。 在一些这种实施例中,授权验证还可以包括从请求者获得针对所请求的功能的支付(或者检验已经提供了任何这种支付),以例如如果没有提供支付则不执行请求。例如,在至少一些实施例和情况中,可能具有相关联的支付的请求的类型包括执行所指示的程序的请求、 附着卷的请求、执行一些或所有类型的数据访问请求的请求以及其他类型的所指示的操作。此外,可以对代表用户采取的一些或所有类型的动作进行监控和计量,例如后来用于针对这些动作中的至少一些确定所对应的基于使用的费用。图6是服务器块数据存储系统例程600的示例实施例的流程图。例如,可以由服务器块数据存储系统上的软件组件的执行来提供该例程,以例如管理在该服务器存储系统的一个或多个块数据存储卷上的块数据存储(例如,针对图1和/或图2的服务器块数据存储系统165)。在其他实施例中,可以通过其他方式提供该例程的一些或所有功能,例如通过在一个或多个其他计算系统上执行以管理一个或多个服务器块数据存储系统的软件。所示意的例程的实施例开始于步骤605,在步骤405处接收到请求。例程继续到步骤610,以确定接收到的请求是否涉及创建新的卷,例如通过将服务器存储系统的可用存储空间(例如,一个或多个本地硬盘上的存储空间)的块与新指示的卷相关联。例如,该请求可以来自于例程400和/或来自于与正在创建的新卷相关联的用户。如果是,例程继续到步骤615,存储关于新卷的信息,并且在步骤620中初始化针对新卷的存储空间(例如, 所指示大小的存储空间的逻辑线性块)。如在其他地方更详细地描述的,在一些实施例中, 可以基于另一已存在的卷或快照卷拷贝来创建新卷,并且如果这样做,例程在步骤620中可以通过将适当的数据拷贝到用于新卷的存储空间来初始化该存储空间,而在其他实施例中,可以通过其他方式初始化新卷存储空间(例如,以例如将存储空间初始化为默认值,例如全零)。如果在步骤610中代之以确定接收到的请求不是创建新卷,例程代之以继续到步骤625,确定针对存储在服务器存储系统上的已存在的卷,是否已经接收到数据访问请求, 该请求例如来自于与数据访问请求所发起的执行中的程序相关联的节点管理器。如果是, 例程继续到步骤630,执行关于所指示的卷的的数据访问请求。然后,例程继续到步骤635, 在所示意的实施例中,例如如果在当前服务器存储系统上所指示的卷是卷的主卷拷贝,可选地发起针对卷的一个或多个镜像拷贝的对应更新。在其他实施例中,可以通过其他方式维持主卷拷贝和镜像卷拷贝之间的一致性。如其他地方更详细地讨论的,在一些实施例中, 还可以向一个或多个档案存储系统(例如,在远程存储服务处)执行对所存储的至少一些卷的数据内容的至少一些修改,以例如维持这些卷的备用拷贝或其他拷贝,并且如果这样做,例程还可以发起对档案存储系统的更新,以发起针对档案存储系统上的卷的一个或多个拷贝的对应更新。此外,如果例程在步骤635或其他地方确定卷的镜像拷贝不可用(例如,基于在预定时间量内对步骤635中发送的数据访问请求的响应失败,或者例程600发起的周期性检查镜像卷拷贝及其镜像服务器块数据存储系统可用的Ping消息或其他状态消息的响应失败;基于来自于镜像服务器块数据存储系统的、指示其遭受出错的情况或者开始关闭或开始故障模式操作的消息;等等),例程可以例如通过向图4的例程400发送对应消息或者代之以直接发起镜像卷拷贝创建,发起动作来创建卷的新的镜像拷贝。
如果在步骤625中代之以确定接收到的请求不是针对卷的数据访问请求,例程继续到步骤685,在适当时执行一个或多个另外指示的操作。在各个实施例中,这种其他操作可以具有各种形式,例如以下非排他性列表中的一个或多个删除卷(例如,以使得可以使所关联的存储空间可用于其他使用);将卷拷贝到所指示的目的地(例如,到另一个服务器块数据存储系统上的另一个新卷,到一个或多个档案存储系统以用作快照卷拷贝等); 提供关于卷的使用的信息(例如,用于卷使用的计量,例如针对客户进行的基于费用的使用);执行正在进行的针对服务器块数据存储系统的维护或诊断(例如,以对本地硬盘进行磁盘碎片整理);等等。在步骤620、635或685之后,例程继续到步骤695,确定是否继续, 例如直到接收到显式的终止指令。如果确定继续,例程返回步骤605,如果确定不继续,例程继续到步骤699并结束。此外,针对至少一些类型的请求,在一些实施例中,例程还可以验证请求者被授权进行该请求,例如基于针对该请求者指定的访问权和/或请求的相关目标(例如,所指示的卷),而在其他实施例中,例程可以假定从其接收到请求的例程(例如,节点管理器例程和/ 或BDS系统管理器例程)之前已经对该请求授权。此外,可以对代表用户采取的一些或所有类型的动作进行监控和计量,例如后来用于针对这些动作中的至少一些确定所对应的基于使用的费用。图7A和7B是PES系统管理器例程700的示例实施例的流程图。例如,可以通过图1的PES系统管理器模块140的执行来提供该例程。在其他实施例中,可代之以通过其他方式提供例程700的一些或所有功能,例如通过作为块数据存储服务的一部分的例程400。在所示意的实施例中,例程开始于步骤705,在步骤705处,接收到状态消息或涉及程序执行的其他请求。例程继续到步骤710,确定接收到的消息或请求的类型,如果在步骤710中确定该类型是执行程序的请求(例如,来自于用户或执行中的程序),例程继续到步骤720以选择在其上执行所指示的程序的一个或多个主机计算系统,例如从对程序执行可用的候选主机计算系统的组中选择。在一些实施例中,可以依照用户指令或其他所指示的感兴趣的标准来选择该一个或多个主机计算系统。然后,例程继续到步骤725,例如通过与同所选择的主机计算系统相关联的节点管理器进行交互,由所选择的每个主机计算系统发起程序的执行。在步骤730中,然后,例程可选地执行一个或多个内务(houseke印ing) 任务(例如,监控用户的程序执行,例如出于计量和/或其他计费目的)。如果在步骤710中代之以确定接收到的请求是将新程序注册为可用于后续执行, 例程代之以继续到步骤740,存储程序的指示和针对其使用的相关管理信息(例如,涉及被授权使用该程序的用户的访问控制信息和/或用户的授权类型),并且在一些情况下还可以存储程序的至少一个集中式的拷贝。然后,例程继续到步骤745,以可选地发起向一个或多个主机计算系统分发所指示的程序的拷贝以供后续使用,以例如允许这些主机计算系统通过从这些主机计算系统的本地存储装置检索所存储的拷贝来快速启动程序。在其他实施例中,可以通过其他方式来存储(例如,在一个或多个远程档案存储系统上)所指示的程序的一个或多个拷贝。如果在步骤710代之以确定在步骤705中接收到关于一个或多个主机计算系统的状态消息,例程代之以继续到步骤750,更新关于这些主机计算系统的信息,以例如跟踪执行中的程序的使用和/或关于主机计算系统的其他状态信息(例如,非本地块数据存储卷的使用)。在一些实施例中,节点管理器模块将周期性地发送状态消息,而在其他实施例中, 可以在其他时间发送状态消息(例如,只要相关改变发生)。在又一些其他实施例中,例程 700可以代之以根据需要从节点管理器模块和/或主机计算系统请求信息。状态消息可以包括各种类型的信息,例如当前在具体计算系统上执行的程序的数目和标识、当前存储在具体计算系统上的本地程序仓库中的程序拷贝的数目和标识、非本地块数据存储卷的附着和/或其他使用、针对计算系统的关于性能和关于资源的信息(例如,CPU、网络、磁盘、存储器的利用率等)、针对计算系统的配置信息以及涉及具体计算系统上的硬件或软件的错误或故障情况的报告。如果例程在步骤705中代之以确定接收到另一类型的请求或消息,例程代之以继续到步骤785,在适当时执行一个或多个其他所指示的操作。例如,这种其他操作可以包括挂起或终止当前执行中的程序的执行,以及以其他方式管理程序执行服务的管理方面(注册新用户、确定和获得针对用户的程序执行服务的支付等)。在步骤745、750或785之后, 例程继续到步骤730,可选地执行一个或多个内务处理任务。然后,例程继续到步骤795,确定是否继续,例如直到接收到显式的终止指令。如果确定继续,例程返回步骤705,如果确定不继续,例程继续到步骤799并结束。虽然在此没有示意,在至少一些实施例中,程序执行服务可以提供执行程序的各种附加类型的功能,例如协同块数据存储服务来进行。在至少一些实施例中,可以发起程序的一个或多个拷贝或实例在一个或多个计算系统上的执行,以响应于对这些程序实例的立即执行的当前执行请求。备选地,该发起可以基于先前接收到的程序执行请求,该先前接收到的程序执行请求调度或以其他方式保留这些程序实例的将来执行,用于现如今。可以通过各种方式接收程序执行请求,例如直接从用户接收(例如,经由程序执行服务提供的交互控制台或其他GUI),或者从用户的执行中的程序接收,该用户自动发起其他程序的一个或多个实例或其本身的执行(例如,经由程序执行服务提供的API,例如使用Web服务的 API)。程序执行请求可以包括在对程序的一个或多个实例的执行的发起中使用的各种信息,例如,先前注册或者以其他方式提供来用于将来的执行的程序的指示,以及要同时执行的程序的实例的数目(例如,表达为实例的单一期望数目,表达为所期望的实例的最小和最大数目等)。此外,在一些实施例中,程序执行请求可以包括各种其他类型的信息,例如以下信息用户账户的指示或者先前注册的用户的其他指示(例如,用于在识别先前存储的程序和/或确定所请求的程序实例执行是否被授权中使用);用于在向程序执行服务提供对程序实例执行的支付中使用的支付源的指示;先前支付或针对程序实例执行的其他授权的指示(例如,一段时间内有效的先前购买的订购,针对多个程序执行实例,针对一定量的资源使用率等);和/或要立即执行和/或存储以供后续执行的程序的可执行拷贝或其他拷贝。此外,在一些实施例中,程序执行请求还可以包括用于一个或多个程序实例的执行的各种其他类型的偏好和/或要求。这种偏好和/或要求可以包括在所指示的地理和/或逻辑位置中执行一些或所有程序实例的指示,例如在多个数据中心中容纳可用的多个计算系统的那一个数据中心中,在彼此临近的多个计算系统上,和/或在与具有其他所指示的特性(例如,提供所指示的块数据存储卷的拷贝)的计算系统临近的一个或多个计算系统上。图8是档案管理器例程800的示例实施例的流程图。例如,可以由图3的档案管理器模块355中的一个的执行、图2C-2F的档案管理器模块190的执行和/或图1的计算系统180上的一个或多个档案管理器模块(未示出)的执行来提供该例程。在其他实施例中,可以代之以其他方式提供例程800的一些或所有功能,例如通过作为块数据存储服务的一部分的例程400提供。在所示意的实施例中,档案存储系统将数据成段存储,每一段对应于块数据存储卷的一部分,然而在其他实施例中,可以通过其他方式存储数据。所示意的例程800的实施例开始于步骤805,在步骤805处接收到信息或请求。然后,例程继续到步骤810,确定请求或信息是否被授权,例如请求者是否已经为基于费用的访问提供支付,或者是否具有执行所指示的请求的访问权。如果在步骤815中确定请求或信息被授权,例程继续到步骤820,否则返回步骤805。在步骤820中,例程确定接收到的请求是否是存储所指示的卷的新快照拷贝。如果是,例程继续到步骤825,获得卷的多个卷段, 存储每个段作为档案存储系统数据对象,然后存储关于与快照卷拷贝相关联的段的数据对象的信息。如在其他地方更详细地讨论的,可以通过各种方式获得卷的段,例如通过在步骤 805中作为多个不同的块来接收,在步骤805中作为要在步骤825中分成多段的单一的大的块数据组来接收,在步骤825中作为单独的段或要被分成多段的单一的大的块数据组来检索,先前存储在档案存储系统上等等。如果在步骤820中代之以确定接收到的请求不是存储新的快照卷拷贝,则例程继续到步骤830,确定接收到的请求是否是存储对与先前快照卷拷贝的改变进行反映的卷的递增快照拷贝。如果是,例程继续到步骤835,识别从卷的先前快照拷贝以来发生改变的快照段,并以与先前关于步骤825讨论的方式所类似的方式获得已改变的快照段的拷贝。 然后,例程继续到步骤840,存储已改变的段的拷贝,并存储关于新的已改变的段和先前的其他未改变的段的信息,该先前的其他未改变的段的对应数据对象与新的快照卷拷贝相关联。可以通过各种方式识别从先前的快照卷拷贝以来发生改变的段,例如由存储了卷的主拷贝和/或镜像拷贝的服务器块数据存储系统识别(例如,通过跟踪针对卷的任何写数据访问请求或其他修改请求)。如果在步骤830中代之以确定接收到的请求不是存储递增快照卷拷贝,则例程继续到步骤845,确定该请求是否是提供快照卷拷贝的一个或多个段,例如从对应的所存储的数据对象提供。如果是,例程继续到步骤850,检索针对所指示的快照卷拷贝段的数据,并向请求者发送检索到的数据。例如,这种请求可以是通过检索快照卷拷贝的所有段来基于已存在的快照卷拷贝创建新卷的一部分,检索快照卷拷贝的段的子集来恢复最小镜像卷拷贝的一部分等。如果在步骤845中代之以确定接收到的请求不是提供一个或多个快照卷拷贝段, 则例程继续到步骤855,确定接收到的请求是否是执行针对不是快照卷拷贝的一部分的一个或多个卷段的一个或多个数据访问请求,以例如针对表示具体卷段的一个或多个数据对象执行读数据访问请求和/或写数据访问请求(例如,如果这些所存储的数据对象充当这些卷段的备用存储)。如果是,例程继续到步骤860,执行所请求的针对所存储的对应于所指示的卷段的数据对象的数据访问请求。如在其他地方更详细地讨论的,在至少一些实施例中,当修改所存储的数据对象时可以使用惰性更新技术,以使得可以不立即执行写数据访问请求,如果这样做,在完成后来针对相同数据对象的读数据访问请求之前,可以执行该一个或多个先前的写数据访问请求以确保严格的数据一致性。如果在步骤855中代之以确定接收到的请求不是执行针对一个或多个卷段的数据访问请求,则例程继续到步骤885,在适当时执行一个或多个其他所指示的操作。例如, 这种其他操作可以包括重复接收与正在对卷执行的修改相对应的信息,以更新表示该卷的所对应的存储的数据对象(例如,作为备用存储或用于其他目的),并采取适当的对应动作,响应删除或以其他方式修改所存储的快照卷拷贝的请求,响应用户管理账户(具有提供档案存储系统的存储服务)的请求等。在步骤825、840、850、860或885之后,例程继续到步骤895,确定是否继续,例如直到接收到显式的终止指令。如果确定继续,例程返回步骤 805,如果确定不继续,例程继续到步骤899并结束。如上所述,针对至少一些类型的请求,在一些实施例中,例程可以验证请求者被授权进行该请求,例如基于针对该请求者指定的访问权和/或请求的相关目标(例如,所指示的卷),而在其他实施例中,例程可以假定从其接收到请求的例程(例如,节点管理器例程和/或BDS系统管理器例程)之前已经对该请求授权。此外,在至少一些实施例中,可以对代表用户采取的一些或所有类型的动作进行监控和计量,例如后来用于针对这些动作中的至少一些来确定所对应的基于使用的费用。在以下文献中,可以找到涉及可与所描述的技术一起使用的程序执行服务的示例实施例的操作的附力口细节题为"Managing Execution Of Programs By Multiple Computing Systems”,于2006年3月31日递交,申请号为11/395,463的美国专利申请;题为"Executing Programs Based on User-Specified Constraints,,,于 2007 年 9 月 6 日递交,申请号为11/851,345的美国专利申请,该申请是申请号为11/395,463的美国专利 iitW^^^S^^if ; 1 !! "Managing Communications Between Computing Nodes", 于2008年6月M日递交,申请号为12/145,411的美国专利申请,通过参考的形式将以上每个申请在此整体并入。此外,在以下申请中可以找到涉及远程存储服务的一个示例的操作的附加细节,该远程存储服务可以用来存储快照卷拷贝或者以其他方式提供远程档案存储系统题为"Distributed Storage System With Web Services Client Interface,,, 于2007年7月5日公布,公布号为2007/0156842的美国专利申请,在此以参考的方式将其整体并入,该申请要求2005年12月四日递交的申请号为60/7M,7 的美国专利申请的优先权。此外,可以在以下专利中找到涉及用户提供对该用户的程序或针对其他用户的其他数据的付费访问的一个示例的附加细节题为“ftOviding Configurable Pricing for Execution of Software Images”,于 2007 年 12 月 21 日提交,申请号为 11/963,331 的美国专利申请,在此以参考的方式将其整体并入,如在其他地方更详细地讨论的,在此可以类似地将其用于用户针对卷和/或快照拷贝的各种类型的付费访问来向其他用户收费。此外,如前所述,一些实施例可以使用虚拟机,并且如果这么做,要由程序执行服务来执行的程序可以包括整个虚拟机图像(image)。在这种实施例中,要执行的程序可以包括整个操作系统、文件系统和/或其他数据,并且可能地,一个或多个用户层过程。在其他实施例中,要执行的程序可以包括相互操作以提供一些功能的一个或多个其他类型的可执行程序。在又一些其他实施例中,要执行的程序可以包括物理或逻辑的指令和数据集合,该指令和数据集合可以在所提供的计算系统上本地执行,或者通过转换器的方式或其他软件实现的硬件提取方式执行。更一般地,在一些实施例中,要执行的程序可以包括一个或多个应用程序、应用框架、库、档案、类文件、脚本、配置文件、数据文件等。此外,如前所述,在至少一些实施例和情况下,卷可以从一个服务器存储系统迁移或移动到另一个服务器存储系统。可以使用各种技术来移动卷,并且可以以各种方式发起这种移动。在一些情况下,该移动可以反映与在其上存储卷的服务器存储系统有关的问题 (例如,服务器存储系统和/或对该服务器存储系统的网络接入的故障)。在其他情况下,可以执行该移动以便提供要存储在已存在的服务器存储系统上的其他卷拷贝,例如用于更高优先级的卷,或者以便合并卷拷贝在有限数目的服务器存储系统上的存储,以便例如使存储卷拷贝的原始服务器存储系统可以因例如维护、节能等原因而关闭。作为一个特定的示例,如果存储在服务器存储系统上的一个或多个卷拷贝需要比从该服务器存储系统可用的资源更多的资源,则可以将一个或多个卷拷贝迁移到具有附加资源的一个或多个其他服务器存储系统。可用资源的过度使用可能由于各种原因而发生,例如一个或多个服务器存储系统具有比所期望的少的资源,一个或多个服务器存储系统使用比所期望(或所允许)的多的资源,或者在一些实施例中,相对于一个或多个保留或存储的卷拷贝的可能资源需求, 故意过度调拨一个或多个服务器存储系统的可用资源。例如,如果卷拷贝的所期望的资源需求处于可用资源之内,则最大资源需求可能超过可用资源。如果卷存储或使用所需的实际资源超过可用资源,也可能发生可用资源的过度使用。应当意识到,在一些实施例中,可通过替代的方式提供以上讨论的例程所提供的功能,例如,在更多例程中进行拆分或合并成更少的流程。类似地,在一些实施例中,所示出的例程可提供与所描述的相比更多或更少的功能,例如,代之,当其他所示出的例程分别缺少或包括这种功能时,或当所提供的功能数量发生变化时。此外,虽然可以将不同的操作示意为通过具体的方式(例如,串行或并行)和/或以具体的顺序执行,在其他实施例中,也可以通过其他顺序以及以其他方式执行该操作。类似地,在其他实施例中,可以通过其他方式构建以上讨论的数据结构,例如,通过将单一数据结构拆分成多个数据结构,或者通过将多个数据结构合并成单一数据结构,并且可以存储与所描述的相比,更多或更少的信息 (例如,当其他示意的数据结构代之以分别缺少或包括这种信息,或者当所存储的信息的量或类型发生改变时)。从以上描述中应当意识到,虽然此处出于示意的目的描述了特定的实施例,但是在不脱离本发明的精神和范围的情况下,可做出各种修改。相应地,本发明仅由所附权利要求及其中记载的要素限定。此外,虽然下面以特定权利要求的形式呈现了本发明的特定方面,但是发明人可以想到以任何可用权利要求的形式呈现本发明的各个方面。例如,虽然当前可能仅将本发明的一些方面记载为体现在计算机可读介质中,但是其他方面同样可以如此体现。条款1. 一种供块数据存储服务的计算系统向执行中的程序提供远程块数据存储能力的方法,所述方法包括接收发起第一执行中的程序对非本地块数据存储的访问的请求,所述非本地块数据存储由块数据存储服务提供,第一程序在多个计算系统中的第一计算系统上执行,所述多个计算系统在地理位置上协同定位并共享一个或多个内部网络,所述块数据存储服务使用所述多个计算系统中的第一组的多个其他计算系统,作为向多个执行中的程序提供块数据存储的块数据存储系统,第一计算系统不是所述第一组的一部分;以及在对第一计算系统对内部网络的访问进行管理的、块数据存储服务的第一节点管理器模块的控制之下,
接收由第一执行中的程序发起的、对第一计算系统的逻辑本地存储设备的一个或多个数据访问请求,所述第一计算系统的逻辑本地存储设备表示由块数据存储服务提供的非本地块数据存储; 通过代表第一执行中的程序在内部网络上与第二计算系统进行交互以对第一块数据存储卷执行接收到的数据访问请求,自动响应接收到的数据访问请求,所述第一块数据存储卷具有存储在第二计算系统上的主拷贝和存储在第三计算系统上的镜像拷贝,所述第二计算系统和所述第三计算系统都是第一组块数据存储系统的一部分,内部网络上的交互是以对第一执行中的程序透明的方式来执行的;在对第一块数据存储卷执行接收到的数据访问请求之后,自动确定第二计算系统上的第一块数据存储卷的主拷贝不可用;以及在接收到由第一执行中的程序发起的、对第一计算系统的逻辑本地块存储设备的一个或多个其他数据访问请求之后,通过代表第一执行中的程序在内部网络上与第三计算系统进行交互以对第三计算系统上的第一块数据存储卷镜像拷贝执行其他数据访问请求, 自动响应接收到的其他数据访问请求。条款2.根据条款1的方法,还包括在块数据存储服务的系统管理器模块的控制之下,管理由块数据存储服务向多个执行中的程序提供块数据存储,所述管理步骤包括创建多个块数据存储卷,所述多个块数据存储卷中的每一个由多个执行中的程序中的一个或多个使用,创建每个块数据存储卷的创建包括将块数据存储卷的主拷贝存储在多个块数据存储系统中的一个上,并包括将块数据存储卷的镜像拷贝存储在所述多个块数据存储系统中的另一个上,多个程序在具有多个相关联的节点管理器模块的多个计算系统上执行;通过当存储所创建的块数据存储卷中的一个块数据存储卷的主拷贝的块数据存储系统基于从执行中的程序接收到的写数据访问请求,执行对存储在该主拷贝中的块数据的修改时,执行对存储在所述一个块数据存储卷的镜像拷贝中的块数据的修改,来维持块数据存储卷的镜像拷贝;以及通过当所创建的块数据存储卷中的一个块数据存储卷的主拷贝变得不可用时,将所述一个块数据存储卷的镜像拷贝提升为所述一个块数据存储卷的新的主拷贝,来维持对块数据存储卷的访问。条款3.根据条款2的方法,其中,所述多个程序由所述多个计算系统中的第二组的多个计算系统上的程序执行服务来执行,其中,第二组计算系统与第一组计算系统不同, 第一计算系统作为多个虚拟机的宿主,所述多个虚拟机中的每一个能够执行至少一个程序,其中,第一执行中的程序是所述多个程序中的一个,并且是由所述多个虚拟机中以第一计算系统作为宿主的至少一个虚拟机执行的虚拟机图像,以及,第一节点管理器模块作为第一计算系统的虚拟机监控器的一部分而执行。条款4. 一种用于向执行中的程序提供块数据存储功能的计算机实现方法,所述方法包括接收由第一执行中的程序发起的、对第一计算系统本地的块存储设备的第一组一个或多个数据访问请求的一个或多个指示,第一程序在所述第一计算系统上执行,所述本地的块存储设备是表示由不同的第二数据存储系统在一个或多个网络上提供的非本地块数据存储卷的逻辑设备;通过代表第一执行中的程序在所述一个或多个网络上与第二数据存储系统进行交互,以使得对由第二数据存储系统提供的块数据存储卷所存储的块数据执行第一组数据访问请求,来自动响应接收到的第一组数据访问请求的指示;确定所述第二数据存储系统所提供的块数据存储卷已经变得不可用,并自动识别包含所述第二数据存储系统所提供的块数据存储卷的镜像拷贝在内的第三数据存储系统, 所述第三数据存储系统与所述第一计算系统和所述第二数据存储系统不同;接收由所述第一执行中的程序发起的、对所述第一计算系统上的本地块存储设备的第二组一个或多个其他数据访问请求的一个或多个指示;以及通过代表所述第一执行中的程序在所述一个或多个网络上与所述第三数据存储系统进行交互,以使得对所识别的第三数据存储系统上的块数据存储卷镜像拷贝执行第二组数据访问请求,来自动响应接收到的第二组数据访问请求的指示。条款5.根据条款4的方法,还包括在接收到所述第一组一个或多个数据访问请求的指示之前,将块数据存储卷附着到第一计算系统,以供第一执行中的程序使用,所述将块数据存储卷附着到第一计算系统包括将第一计算系统的逻辑本地块数据存储设备与所述第二数据存储系统所提供的块数据存储卷相关联。条款6.根据条款5的方法,还包括在将块数据存储卷附着到第一计算系统之前, 创建块数据存储卷,所述创建步骤是通过以下操作来进行的将所创建的块数据存储卷的主拷贝存储在第二数据存储系统上,并将所述块数据存储卷的镜像拷贝存储在第三数据存储系统上,以使得对所存储的块数据存储卷的主拷贝执行对所述第二数据存储系统所提供的块数据存储卷执行第一组数据访问请求。条款7.根据条款6的方法,其中,块数据存储卷由块数据存储服务提供,创建块数据存储卷由块数据存储服务的系统管理器模块响应于来自与第一执行中的程序相关联的用户的请求而执行,以及,将块数据存储卷附着到第一计算系统由块数据存储服务的节点管理器模块执行,所述节点管理器模块管理第一计算系统对所述一个或多个网络的访问。条款8.根据条款4的方法,还包括在确定所述第二数据存储系统所提供的块数据存储卷已变得不可用之后,自动发起在第四数据存储系统上对块数据存储卷的另一拷贝的创建,所述第四数据存储系统与所述第一计算系统不同以及与所述第二数据存储系统和所述第三数据存储系统不同。条款9.根据条款8的方法,其中,所述第二数据存储系统所提供的块数据存储卷基于以下至少一项变得不可用所述第二数据存储系统的故障、与所述第二数据存储系统的连接的故障、以及所述第二数据存储系统不能够可靠地访问所存储的块数据存储卷。条款10.根据条款4的方法,其中,执行第一组数据访问请求中的至少一个数据访问请求包括修改存储在第二数据存储系统上的块数据存储卷中的块数据,以及还包括通过修改第三数据存储系统上的块数据存储卷的镜像拷贝中存储的块数据,维持所述第三数据存储系统上的块数据存储卷的镜像拷贝。条款11.根据条款4的方法,其中,第一计算系统和第二数据存储系统是在单一地理位置处协同定位的多个计算系统的子集,其中,所述多个计算系统包括由块数据存储服务提供的多个块数据存储系统,以及,第二数据存储系统和第三数据存储系统都是所述多个块数据存储系统中的不同的块数据存储系统。 条款12.根据条款11的方法,其中,多个计算系统协同定位的单一地理位置是数据中心,所述方法还包括在位于数据中心外部的远程存储服务的一个或多个档案数据存储系统上创建块数据存储卷的至少一个拷贝。条款13.根据条款11的方法,其中,第一程序由程序执行服务来执行,所述程序执行服务在所述多个计算系统中的多个计算系统上执行针对多个用户的多个程序,第一计算系统是多个虚拟机的宿主,所述多个虚拟机中的每一个能够执行至少一个程序,其中,第一执行中的程序是所述多个程序中的一个,并且是由所述多个虚拟机中以第一计算系统作为宿主的至少一个虚拟机执行的虚拟机图像,以及,接收第一组数据访问请求的指示、接收第二组其他数据访问请求的指示、以及自动响应接收到的第一组和第二组数据访问请求的指示是作为执行第一计算系统的虚拟机监控器的一部分来执行的,第一计算系统包括第一执行中的程序可用的一个或多个其他实际本地存储设备。条款14. 一种计算机可读介质,所述计算机可读介质的内容使一个或多个计算系统能够通过执行包括以下步骤的方法来向执行中的程序提供块数据存储功能接收由在第一计算系统上执行的第一程序发起的、对块数据存储卷的一个或多个数据访问请求的一个或多个指示,所述块数据存储卷由通过一个或多个网络而与第一计算系统分开的第二块数据存储系统提供;通过发起对第二块数据存储系统上的块数据存储卷执行数据访问请求,来自动响应接收到的数据访问请求的指示;在与第一计算系统和第二块数据存储系统不同的一个或多个第三块数据存储系统中的每一个上自动创建块数据存储卷的镜像拷贝;以及在第二数据存储系统所提供的块数据存储卷变得不可用之后,通过对在第三块数据存储系统中的至少一个上创建的块数据存储卷镜像拷贝执行其他数据访问请求,来自动响应由第一程序发起的、对块数据存储卷的一个或多个所述其他数据访问请求的一个或多个接收到的指示。条款15.根据条款14的计算机可读介质,其中,执行第一组数据访问请求、自动创建块数据存储卷的镜像拷贝、以及执行第二组其他数据访问请求是由块数据存储服务的系统管理器模块自动执行的,第一程序通过与逻辑块数据存储设备进行交互来发起对块数据存储卷的数据访问请求,所述逻辑块数据存储设备是第一计算系统本地的并表示第二块数据存储系统所提供的块数据存储卷,其中,在第一程序与逻辑本地块数据存储设备进行交互之后,由与第一计算系统相关联的块数据存储服务的节点管理器模块来执行对由第一程序发起的数据访问请求的接收,以及,自动响应接收到的数据访问请求的指示是通过发起在所述一个或多个网络上发送接收到的数据访问请求、部分地在节点管理器模块的控制之下执行的。条款16.根据条款14的计算机可读介质,其中,在响应接收到的数据访问请求的指示时,第二块数据存储系统存储块数据存储卷的主拷贝,以及所述方法还包括在对接收到的其他数据访问请求的指示进行自动响应之前自动确定块数据存储卷的主拷贝已经变得不可用,选择在第三块数据存储系统中的一个块数据存储系统上的块数据存储卷的镜像拷贝,并将所选择的在所述第三块数据存储系统上的块数据存储卷的镜像拷贝提升为块数据存储卷的当前主拷贝。条款17.根据条款16的计算机可读介质,其中,在所述一个或多个第三块数据存储系统的每一个上自动创建块数据存储卷的镜像拷贝包括在自动响应于接收到的数据访问 请求的指示之前,在所述第三块数据存储系统中的一个块数据存储系统上创建块数据存储卷的第一镜像拷贝,其中,自动响应于接收到的数据访问请求的指示还包括执行关于块数据存储卷的第一镜像拷贝的数据访问请求,块数据存储卷的第一镜像拷贝是所选择的镜像拷贝,在所述一个或多个第三块数据存储系统的每一个上自动创建块数据存储卷的镜像拷贝还包括在确定块数据存储卷的主拷贝已经变得不可用时,在所述第三块数据存储系统的另一个块数据存储系统上创建块数据存储卷的第二镜像拷贝。条款18.根据条款14的计算机可读介质,其中,第二块数据存储系统在自动响应于接收到的数据访问请求的指示时,存储块数据存储卷的主拷贝,所指示的由第一程序发起的一个或多个数据访问请求是由第一程序发起的第二组数据访问请求,所述方法还包括在接收第二组数据访问请求的指示之前在第四块数据存储系统上创建块数据存储卷的初始主拷贝,所述第四块数据存储系统与第一计算系统以及第二块数据存储系统和所述一个或多个第三块数据存储系统不同;自动响应第一程序发起的第一组一个或多个数据访问请求的一个或多个接收到的指示,所述响应是通过执行与在第四块数据存储系统上创建的主拷贝有关第一组数据访问请求来进行的,所述第一组数据访问请求由第一程序在第二组数据访问请求之前发起; 以及在响应第一组数据访问请求的指示后,确定将块数据存储卷的主拷贝从第四块数据存储系统移动至第二块数据存储系统,以使得可以在将块数据存储卷的主拷贝移动至第二块数据存储系统之后,关于所移动的第二块数据存储系统上的块数据存储卷的主拷贝来执行第一程序发起的对块数据存储卷的数据访问请求。条款19.根据条款18的计算机可读介质,其中,基于至少以下之一来确定将块数据存储卷的主拷贝从第四块数据存储系统移动至第二块数据存储系统自动确定第二块数据存储系统在提供块数据存储卷的主拷贝方面比第四块数据存储系统更有能力,以及从块数据存储服务的与块数据存储卷相关联的用户接收到的请求。条款20.根据条款14的计算机可读介质,其中,第一程序是在多个主机计算系统上由程序执行服务执行的多个程序中的一个,所述多个程序代表交换所支付的费用的程序执行服务的用户,所述费用由所述用户支付,第一计算系统是所述多个主机计算系统中的一个,第一程序对块数据存储卷的使用是通过与程序执行服务的用户所提供的费用相交换来执行的,代表程序执行服务的用户对第一程序进行执行。条款21.根据条款14的计算机可读介质,其中,所述计算机可读介质是以下至少之一存储内容的计算系统的存储器,以及包括所产生的包含内容在内的存储数据信号的数据传输介质。条款22.根据条款14的计算机可读介质,其中,所述内容是当执行时使得一个或多个计算系统执行所述方法的指令。条款23. —种被配置为向执行中的程序提供块数据存储功能的系统,所述系统包括一个或多个存储器;以及块数据存储系统管理器模块,被配置为提供块数据存储服务,所述块数据存储服务使用多个块数据存储系统来存储块数据存储卷,所述块数据存储卷由所述块数据存储服务的用户创建,并且是在一个或多个网络上代表与所述用户相关联的一个或多个执行中的程序来访问的,所述提供块数据存储服务包括创建一个或多个块数据存储卷,以供一个或多个执行中的程序使用,创建每个块数据存储卷包括创建块数据存储卷的主拷贝,所述主拷贝存储在多个块数据存储系统中的一个块数据存储系统上;通过对于数据访问请求中的每一个,在针对数据访问请求的一个块数据存储卷的主拷贝可用的情况下,发起对可用的主拷贝执行数据访问请求,来响应均由执行中的程序之一发起的针对所创建的块数据存储卷之一的数据访问请求;以及响应于接收到的指示,创建块数据存储卷中的第一块数据存储卷的新拷贝,所述第一块数据存储系统的主拷贝存储在块数据存储系统中的第一块数据存储系统上,所创建的新拷贝存储在与所述第一块数据存储系统不同的一个或多个其他数据存储系统上。条款24.根据条款23的系统,其中,创建第一块数据存储卷还包括创建在所述多个块数据存储系统中的第二块数据存储系统上存储的第一块数据存储卷的镜像拷贝,所述第二块数据存储系统与所述第一块数据存储系统以及所述一个或多个其他数据存储系统不同,以及,响应数据访问请求还包括对于由执行中的程序之一发起的针对所述第一块数据存储卷的每个数据访问请求,在所述第一块数据存储卷的主拷贝不可用的情况下,发起对在所述第二块数据存储系统上存储的第一块数据存储卷的镜像拷贝执行访问请求。条款25.根据条款对的系统,其中,响应数据访问请求还包括对于由所述执行中的程序之一发起的针对第一块数据存储卷的每个数据访问请求,如果第一块数据存储卷的主拷贝可用,则发起对在所述第二块数据存储系统上存储的第一块数据存储卷的镜像拷贝执行数据访问请求。条款沈.根据条款对的系统,其中,响应数据访问请求还包括对于由执行中的程序之一发起的针对第一块数据存储卷的初始数据访问请求,第一块数据存储系统上所述第一块数据存储卷的主拷贝不可用,将存储在第二块数据存储系统上的第一块数据存储卷的镜像拷贝提升为第一块数据存储卷的新的主拷贝,来代替第一块数据存储系统上第一块数据存储卷的主拷贝,使得对第二块数据存储系统上第一块数据存储卷的提升后的新的主拷贝执行发起对存储在第二块数据存储系统上的第一块数据存储卷的镜像拷贝执行初始数据访问请求,以及使得对第二块数据存储系统上第一块数据存储卷的提升后的新的主拷贝执行在所述初始数据访问请求之后由执行中的程序之一发起的针对第一块数据存储卷的数据访问请求。条款27.根据条款26的系统,其中,将存储在第二块数据存储系统上的第一块数据存储卷的镜像拷贝提升为第一块数据存储卷的新的主拷贝还包括创建第一块数据存储卷的第二镜像拷贝,所述第二镜像拷贝存储在多个块数据存储系统中与第一和第二块数据存储系统不同的第三块数据存储系统上,以及,响应在初始数据访问请求之后由所述执行中的程序之一发起的针对第一块数据存储卷的每个数据访问请求还包括发起对在第三块数据存储系统上存储的第一块数据存储卷的第二镜像拷贝执行数据访问请求。条款28.根据条款23的系统,其中,接收到的响应于其而创建第一块数据存储卷的新拷贝的指示基于对将第一块数据存储卷的主拷贝从第一块数据存储系统移动到不同的第二块数据存储系统的确定,其中,所述一个或多个其他数据存储系统是第二块数据存储系统,其中,在第二块数据存储系统上创建第一块数据存储卷的新拷贝包括将在第二块数据存储系统上创建的新拷贝指定为第一块数据存储卷的新的主拷贝,以及,由块数据存储系统管理器模块提供块数据存储服务还包括在创建第一块数据存储卷的新拷贝之后, 通过发起对在第二块数据存储系统上存储的第一块数据存储卷的新的主拷贝执行附加数据访问请求,来响应均由所述执行中的程序之一发起的针对第一块数据存储卷的一个或多个附加数据访问请求。条款29.根据条款洲的系统,其中,对将第一块数据存储卷的主拷贝从第一块数据存储系统移动到第二块数据存储系统的确定是基于以下至少一项来进行的自动确定第二块数据存储系统比第一块数据存储系统更能够提供一个或多个执行中的程序对第一块数据存储卷的主拷贝的访问;以及从块数据存储服务的与第一块数据存储卷相关联的用户接收到的请求。条款30.根据条款23的系统,其中,接收到的响应于其而创建第一块数据存储卷的新拷贝的指示是使用远离第一块数据存储卷的存储服务创建第一块数据存储卷的快照拷贝的请求,所述一个或多个其他数据存储系统是作为远程存储服务的一部分的档案数据存储系统,以及,创建第一块数据存储卷的新拷贝包括与远程存储服务进行交互,以创建新的第一块数据存储卷拷贝作为第一块数据存储卷的快照拷贝。条款31.根据条款23的系统,还包括多个块数据存储系统,所述多个块数据存储系统是在单一地理位置处协同定位的,以及还包括远程存储服务,所述远程存储服务使用不同于所述单一地理位置的位置处的多个其他数据存储系统,所述其他数据存储系统存储除块数据之外的格式的数据,以及,由块数据存储系统管理器模块提供块数据存储服务还包括针对一个或多个所创建的块数据存储卷中的每一个,将块数据存储卷的多个部分存储在远程存储服务的所述多个其他数据存储系统中的一个或多个上,所存储的多个部分中的每一个表示已由一个或多个数据访问请求修改的块数据存储卷的部分。条款32.根据条款23的系统,还包括多个节点管理器模块,所述多个节点管理器模块中的每一个与一个或多个执行中的程序相关联,所述节点管理器模块中的每一个管理由一个或多个相关联的执行中的程序发起的、对一个或多个所创建的块数据存储卷的数据访问请求,所述管理是通过在一个或多个网络上向块数据存储服务转发这些数据访问请求来进行的。条款33.根据条款23的系统,还包括程序执行服务系统管理器模块,所述程序执行服务系统管理器模块被配置为提供程序执行服务,所述程序执行服务使用多个主机计算系统来针对所述程序执行服务的用户执行多个程序,由所述程序执行服务执行的多个程序包括使用所创建的一个或多个块数据存储卷的一个或多个执行中的程序。条款34.根据条款23的系统,其中,所述系统包括第一计算系统,第一计算系统包括所述一个或多个存储器中的至少一个存储器,以及,块数据存储系统管理器模块包括由第一计算系统使用所述至少一个存储器执行的软件指令。
条款35.根据条款23的系统,其中,块数据存储系统管理器模块由用于提供块数据存储服务的一个或多个装置构成,所述块数据存储服务使用多个块数据存储系统来存储块数据存储卷,所述块数据存储卷由所述块数据存储服务的用户创建,并且是在一个或多个网络上代表与所述用户相关联的一个或多个执行中的程序来访问的,提供块数据存储服务包括创建一个或多个块数据存储卷,以供一个或多个执行中的程序使用,创建每个块数据存储卷包括创建块数据存储卷的主拷贝,所述主拷贝存储在多个块数据存储系统中的一个块数据存储系统上;

通过对于数据访问请求中的每一个,在针对数据访问请求的一个块数据存储卷的主拷贝可用的情况下,发起对可用的主拷贝执行数据访问请求,来响应均由所述执行中的程序之一发起的针对所创建的块数据存储卷之一的数据访问请求;以及响应于接收到的指示,创建块数据存储卷中的第一块数据存储卷的新拷贝,第一块数据存储系统的主拷贝存储在块数据存储系统中的第一块数据存储系统上,所创建的新拷贝存储在与所述第一块数据存储系统不同的一个或多个其他数据存储系统上。条款36. —种供块数据存储服务的计算系统管理执行中的程序对远程存储的块数据的访问的方法,所述方法包括接收发起所指示的程序的第一拷贝对非本地块数据存储的访问的请求,所述非本地块数据存储由块数据存储服务提供,所述第一程序拷贝在多个计算系统中的第一计算系统上执行,所述多个计算系统在第一地理位置处协同定位并共享一个或多个内部网络,所述块数据存储服务使用所述多个计算系统中的第一组多个其他计算系统,作为向多个执行中的程序提供块数据存储的块数据存储系统,所述第一计算系统不是所述第一组的一部分;以及响应于接收到的请求,将第一块数据存储卷附着到第一计算系统,以供执行中的第一程序拷贝使用,所述第一块数据存储卷具有在第二计算系统上存储的主拷贝并具有在第三计算系统上存储的镜像拷贝,所述第二计算系统和所述第三计算系统都是第一组块数据存储系统的一部分,将第一块数据存储卷附着的步骤包括将第一计算系统的第一逻辑本地块存储设备与第一块数据存储卷相关联;以及在块数据存储服务的系统管理器模块的控制之下,通过以下操作来管理向多个执行中的程序提供块数据存储在接收到由执行中的第一程序拷贝发起的、对第一逻辑本地块存储设备的一个或多个数据访问请求的指示之后,通过对第一块数据存储卷的主拷贝和镜像拷贝执行数据访问请求来进行自动响应,数据访问请求的执行使得对存储在第一块数据存储卷上的块数据进行一个或多个修改,以便在第一块数据存储卷的主拷贝和镜像拷贝中的每一个上维持相同的所存储的块数据;在执行数据访问请求之后,自动确定第一程序拷贝的执行已经终止,并响应于所述确定,自动维持所指示的程序对第一块数据存储卷的访问,所述维持访问的步骤包括在不同的第四计算系统上发起对所指示的程序的第二拷贝的执行并将第一块数据存储卷附着到第四计算系统,以供执行中的第二程序拷贝使用,所述附着步骤包括将第四计算系统的第二逻辑本地块存储设备与第一块数据存储卷相关联;以及
在接收到由执行中的第二程序拷贝发起的、对第二逻辑本地块存储设备的一个或多个其他数据访问请求的指示之后,通过对第一块数据存储卷的主拷贝和镜像拷贝执行所述其他数据访问请求来进行自动响应,数据访问请求的执行使得对存储在第一块数据存储卷上的块数据进行一个或多个进一步修改,以便第一块数据存储卷的主拷贝和镜像拷贝都存储相同块数据。条款37.根据条款36的方法,其中,将第一块数据存储卷附着到第一计算系统由管理第一计算系统对内部网络的访问的、块数据存储服务的节点管理器模块来执行,所述方法还包括在节点管理器模块的控制之下接收由执行中的第一程序拷贝发起的、对第一逻辑本地块存储设备的数据访问请求;以及通过在内部网络上与系统管理器模块进行交互以提供数据访问请求的指示,来便于执行数据访问请求,在内部网络上进行交互是以对执行中的第一程序拷贝透明的方式来执行的。条款38.根据条款37的方法,其中,多个程序由所述多个计算系统中的第二组多个计算系统上的程序执行服务来执行,其中,第二组计算系统与第一组计算系统不同,其中,第一计算系统是多个虚拟机的宿主,所述多个虚拟机中的每一个能够执行至少一个程序,其中,所指示的程序是所述多个程序中的一个,并且是由所述多个虚拟机中以第一计算系统作为宿主的至少一个执行的虚拟机图像,以及,节点管理器模块作为第一计算系统的虚拟机监控器的一部分而执行。条款39. —种用于管理执行中的程序对块数据存储功能的访问的计算机实现方法,所述方法包括接收由在第一计算系统上执行的第一程序的第一拷贝发起的第一组一个或多个数据访问请求的一个或多个指示,所述第一组一个或多个数据访问请求是针对访问存储在非本地块数据存储卷上的块数据的,所述块数据存储卷由不同的第二数据存储系统在一个或多个网络上提供,并附着到第一计算系统,以便第一执行中的程序拷贝经由与第一计算系统本地的第一逻辑块存储设备的交互来发起针对块数据存储卷的数据访问请求,所述第一逻辑块存储设备表示块数据存储卷;通过代表第一执行中的程序拷贝与第二数据存储系统进行交互,以发起对由所述第二数据存储系统提供的块数据存储卷执行第一组数据访问请求,来自动响应接收到的第一组数据访问请求的指示;在确定第一程序拷贝已变得不可用之后,识别在其上执行第一程序的第二拷贝的第三计算系统,并将块数据存储卷附着到第三计算系统,以便第二程序拷贝能够访问第三计算系统本地的第二逻辑块存储设备,所述 第三计算系统与所述第一计算系统和所述第二数据存储系统不同,所述第二逻辑块存储设备表示块数据存储卷;接收由第二执行中的程序拷贝经由与第三计算系统上的第二逻辑本地块存储设备的交互而发起的针对块数据存储卷的第二组一个或多个其他数据访问请求的一个或多个指示;以及通过代表第二执行中的程序拷贝与第二数据存储系统进行交互,以发起对第二数据存储系统上的块数据存储卷执行第二组数据访问请求,来自动响应接收到的第二组数据访问请求的指示。条款40.根据条款39的方法,还包括自动确定第一程序拷贝已变得不可用, 第一程序拷贝的不可用性基于以下至少一项第一计算系统的故障、与第一计算系统的连接的故障、以及第一计算系统不能够继续执行第一程序拷贝。条款41.根据条款40的方法,其中,识别在其上执行第一程序的第二拷贝的第三计算系统以及将块数据存储卷附着到第三计算系统是自动执行以维持第一程序对块数据存储卷的访问的,访问的自动维持是响应于对第一程序拷贝已变得不可用的自动确定而执行的。条款42.根据条款39的方法,其中,确定第一程序拷贝已变得不可用、识别在其上执行第一程序的第二拷贝的第三计算系统、以及将块数据存储卷附着到第三计算系统中的至少一个是响应于从与第一程序和块数据存储卷相关联的用户接收到的一个或多个指示而执行的。条款43.根据条款39的方法,其中,识别在其上执行第一程序的第二拷贝的第三计算系统包括在确定第一程序拷贝已变得不可用之后,发起在第三计算系统上对第二程序拷贝的执行。条款44.根据条款39的方法,其中,第一程序的第一拷贝是第一程序的在多个不同计算系统上执行的多个拷贝之一,其中,所述多个拷贝中的至少一个是所述多个拷贝中的一个或多个其他拷贝的备选拷贝,以及,识别在其上执行第一程序的第二拷贝的第三计算系统包括基于作为至少一个备选拷贝之一的第二拷贝,选择第一程序的第二拷贝。条款45.根据条款39的方法,还包括在将块数据存储卷附着到第一计算系统之前,在第二数据存储系统上创建块数据存储卷,并在不同的第四块数据存储系统上创建块数据存储卷的镜像拷贝,以及,响应第一组数据访问请求和第二组数据访问请求还包括发起对所创建的镜像拷贝执行第一组数据访问请求和第二组数据访问请求。条款46.根据条款39的方法,还包括在接收到所述一个或多个数据访问请求的指示之前,将块数据存储卷附着到第一计算系统,以供第一执行中的程序拷贝使用,将块数据存储卷附着的步骤包括将第一逻辑块存储设备与由第二数据存储系统提供的块数据存储卷相关联,并由节点管理器模块执行,所述节点管理器模块管理第一计算系统对所述一个或多个网络的访问,所述节点管理器模块是先前响应于来自与第一执行中的程序相关联的用户的请求而创建块数据存储卷的块数据存储服务的一部分。条款47.根据条款39的方法,其中,第一和第三计算系统以及第二数据存储系统是在第一地理位置处协同定位的多个计算系统的子集,其中,所述多个计算系统包括由块数据存储服务提供的多个块数据存储系统,第二数据存储系统和第三数据存储系统都是所述多个块数据存储系统中的不同的块数据存储系统。条款48.根据条款47所述的方法,其中,第一地理位置是数据中心,第一程序由程序执行服务来执行,所述程序执行服务针对所述多个计算系统中位于数据中心处的多个计算系统上的多个用户执行多个程序,第一计算系统是多个虚拟机的宿主,所述多个虚拟机中的每一个能够执行至少一个程序,其中,第一执行中的程序是所述多个程序中的一个,并且是由所述多个虚拟机中以第一计算系统作为宿主的至少一个虚拟机执行的虚拟机图像, 接收第一组数据访问请求的指示、接收第二组其他数据访问请求的指示、以及自动响应接收到的第一组和第二组数据访问请求的指示是作为执行第一计算系统的虚拟机监控器的一部分来执行的,第一计算系统包括第一执行中的程序可用的一个或多个其他实际本地存储设备。条款49. 一种计算机可读介质,所述计算机可读介质的内容使一个或多个计算系统能够通过执行包括以下步骤的方法来管理由执行中的程序对块数据存储功能的访问针对在第一计算系统上执行的第一程序,提供对非本地块数据存储卷的访问,所提供的访问使得第一程序能够发起针对块数据存储卷的数据访问请求,块数据存储卷正由第二块数据存储系统提供,第二块数据存储系统通过一个或多个网络与第一计算系统分开;自动响应第一程序发起的针对块数据存储卷的一个或多个数据访问请求的一个或多个接收到的指示,响应包括发起与在第二块数据存储系统上的块数据存储卷有关的数据访问请求的执行;当在第一计算系统上执行的第一程序变得不可用之后,代替向第一程序提供的访问,为在第三计算系统上执行的第二程序提供对块数据存储卷的访问;以及自动响应第二程序发起的针对块数据存储卷的一个或多个其他数据访问请求的一个或多个接收到的指示,响应包括发起与在第二块数据存储系统上的块数据存储卷有关的所述其他数据访问请求的执行;条款50.根据条款49的计算机可读介质,其中,第一程序和第二程序是单一程序的正在执行的拷贝,为第一程序提供访问包括以第一执行中的程序经由与在第一计算系统本地的第一逻辑块存储设备的交互而发起针对块数据存储卷的数据访问请求的方式,将块数据存储卷附着到第一计算系统,所述第一逻辑块存储设备表示块数据存储卷,为第二程序提供访问包括识别在其上执行第二程序的第三计算系统,并以第二程序访问在第三计算系统本地的第二逻辑块存储设备的方式,将块数据存储卷附着到第三计算系统,所述第二逻辑块存储设备表示块数据存储卷,以及第一程序和第二程序对块数据存储卷的数据访问请求是访问存储在块数据存储卷上的块数据。条款51.根据条款50的计算机可读介质,其中,第一计算系统和第二计算系统以及第二块数据存储系统位于单一地理位置处,第一计算系统和第二块数据存储系统为一个或多 个网络所分开,由块数据存储服务的系统管理器模块自动执行对与第二块数据存储系统上的块数据存储卷有关的数据访问请求和所述其他数据访问请求的执行,由块数据存储服务的节点管理器模块执行为第一执行程序提供对块数据存储卷的访问,所述节点管理器模块与第一计算系统相关联并管理第一执行中的程序对一个或多个网络的访问,以及通过发起在所述一个或多个网络上向第二块数据存储系统发送接收到的数据访问请求,部分地在节点管理器模块的控制之下,执行对接收到的数据访问请求的指示的自动响应。条款52.根据条款51的计算机可读介质,其中,节点管理器模块执行为第二执行中的程序提供对块数据存储卷的访问,节点管理器还管理第二执行中的程序对所述一个或多个网络的访问,第三计算系统和第一计算系统是单一物理计算系统的一部分,以及通过发起在所述一个或多个网络上向第二块数据存储系统发送接收到的其他数据访问请求,部分地在节点管理器模块的控制之下,执行对接收到的所述其他数据访问请求的指示的自动响应。
条款53.根据条款49的计算机可读介质,其中,所述计算机可读介质是以下至少之一存储内容的计算系统的存储器,以及包括所产生的包含内容在内的存储数据信号的数据传输介质。条款54.根据 条款49的计算机可读介质,其中,所述内容是当执行时使得一个或多个计算系统执行所述方法的指令。条款55. —种被配置为管理执行中的程序对块数据存储功能的访问的系统,所述系统包括一个或多个存储器;以及块数据存储系统管理器模块,被配置为提供块数据存储服务,所述块数据存储服务使用多个块数据存储系统来存储块数据存储卷,所述块数据存储卷由所述块数据存储服务的用户创建,并且是在一个或多个网络上代表与所述用户相关联的一个或多个执行中的程序来访问的,提供块数据存储服务包括创建一个或多个块数据存储卷,以供一个或多个执行中的程序使用,每个块数据存储卷存储在多个块数据存储系统中的一个块数据存储系统上;在向所述一个或多个执行中的程序中的第一执行中的程序提供对所创建的块数据存储卷中的第一块数据存储卷的访问之后,通过发起对第一所创建的块数据存储卷执行一个或多个数据访问请求,来响应由第一程序发起的、对第一所创建的块数据存储卷的所述一个或多个数据访问请求;以及在第一程序变得不可用,并且向不同的第二执行中的程序提供对第一所创建的块数据存储卷的访问以替换向不可用的第一程序提供的访问之后,通过发起对第一所创建的块数据存储卷执行一个或多个其他数据访问请求,来响应由第二程序发起的、对第一所创建的块数据存储卷的所述一个或多个其他数据访问请求。条款56.根据条款55的系统,其中,第一程序和第二程序是单一程序的正在执行的拷贝,其中,向第一程序提供访问包括将第一块数据存储卷附着到执行第一程序的第一计算系统,以便第一执行中的程序经由与第一计算系统本地的第一逻辑块存储设备的交互来发起针对第一块数据存储卷的数据访问请求,所述第一逻辑块存储设备表示第一块数据存储卷;以及,向第二程序提供访问包括识别在其上执行第二程序的第三计算系统,并将第一块数据存储卷附着到第三计算系统,以便第二程序能够访问第三计算系统本地的第二逻辑块存储设备,所述第二逻辑块存储设备表示第一块数据存储卷;以及,第一程序和第二程序针对第一块数据存储卷的数据访问请求是针对访问存储在块数据存储卷上的块数据的。条款57.根据条款56的系统,其中,第一块数据存储卷存储在块数据存储系统中的第一块数据存储系统上,第一计算系统和第三计算系统以及第一块数据存储系统位于单一地理位置处,并被一个或多个网络所分开,以及,所述系统还包括块数据存储服务的一个或多个节点管理器模块,所述一个或多个节点管理器模块与第一程序和第二程序相关联, 以管理第一程序和第二程序对所述一个或多个网络的访问,使得通过发起在所述一个或多个网络上向第一块数据存储系统发送数据访问请求和其他数据访问请求,部分地在所述一个或多个节点管理器模块的控制之下,执行对所述数据访问请求和对所述其他数据访问请求的响应。
条款58.根据条款55的系统,其中,第一块数据存储卷的第一拷贝存储在块数据存储系统中的第一块数据存储系统上,其中,对第一块数据存储卷的第一拷贝执行由第一程序发起的对数据访问请求的执行,其中,第一程序在第一计算系统上执行,所述第一计算系统在第一位置处与第一块数据存储系统协同定位,第二程序在不同的第二地理位置处的第二计算系统上执行,以及,向第二执行中的程序提供对第一所创建的块数据存储卷的访问包括发起在第二地理位置处将第二计算系统附着到第二块数据存储系统,所述第二块数据存储系统存储第一块数据存储卷的第二拷贝。条款59.根据条款55的系统,其中,所述系统包括第一计算系统,第一计算系统包括所述一个或多个存储器中的至少一个存储器,以及,块数据存储系统管理器模块包括由第一计算系统使用所述至少一个存储器执行的软件指令。条款60.根据条款55的系统,其中,块数据存储系统管理器模块由用于提供块数据存储服务的一个或多个装置构成,所述块数据存储服务使用多个块数据存储系统来存储块数据存储卷,所述块数据存储卷由块数据存储服务的用户创建,并且是在一个或多个网络上代表与所述用户相关联的一个或多个执行中的程序来访问的,提供块数据存储服务包括创建一个或多个块数据存储卷,以供一个或多个执行中的程序使用,每个块数据存储卷存储在 所述多个块数据存储系统中的一个块数据存储系统上;在向所述一个或多个执行中的程序中的第一执行中的程序提供对所创建的块数据存储卷中的第一块数据存储卷的访问之后,通过发起对第一所创建的块数据存储卷执行一个或多个数据访问请求,来响应由第一程序发起的、对第一所创建的块数据存储卷的所述一个或多个数据访问请求;以及在第一程序变得不可用,并且向不同的第二执行中的程序提供对第一所创建的块数据存储卷的访问以替换向不可用的第一程序提供的访问之后,通过发起对第一所创建的块数据存储卷执行一个或多个其他数据访问请求,来响应由第二程序发起的、对第一所创建的块数据存储卷的所述一个或多个其他数据访问请求。
权利要求
1.一种用于向执行中的程序提供块数据存储功能的计算机实现方法,所述方法包括 接收由第一执行中的程序发起的、对第一计算系统本地的块存储设备的第一组一个或多个数据访问请求的一个或多个指示,第一程序在所述第一计算系统上执行,本地的块存储设备是表示由不同的第二数据存储系统在一个或多个网络上提供的非本地块数据存储卷的逻辑设备;通过代表所述第一执行中的程序在所述一个或多个网络上与所述第二数据存储系统进行交互,以使得对由所述第二数据存储系统提供的块数据存储卷所存储的块数据执行第一组数据访问请求,来自动响应接收到的第一组数据访问请求的指示;确定所述第二数据存储系统所提供的块数据存储卷已变得不可用,并自动识别包含所述第二数据存储系统所提供的块数据存储卷的镜像拷贝在内的第三数据存储系统,所述第三数据存储系统与所述第一计算系统和所述第二数据存储系统不同;接收由所述第一执行中的程序发起的、对所述第一计算系统上的本地块存储设备的第二组一个或多个其他数据访问请求的一个或多个指示;以及通过代表所述第一执行中的程序在所述一个或多个网络上与所述第三数据存储系统进行交互,以使得对所识别的第三数据存储系统上的块数据存储卷镜像拷贝执行所述第二组数据访问请求,来自动响应接收到的第二组数据访问请求的指示。
2.根据权利要求1所述的方法,还包括在接收所述第一组一个或多个数据访问请求的指示之前,将块数据存储卷附着到所述第一计算系统,以供所述第一执行中的程序使用, 所述将块数据存储卷附着到所述第一计算系统包括将所述第一计算系统的逻辑本地块存储设备与所述第二数据存储系统所提供的块数据存储卷相关联。
3.根据权利要求1所述的方法,还包括在确定所述第二数据存储系统所提供的块数据存储卷已变得不可用之后,自动发起在第四数据存储系统上对所述块数据存储卷的另一拷贝的创建,所述第四数据存储系统与所述第一计算系统不同以及与所述第二数据存储系统和所述第三数据存储系统不同。
4.一种被配置为向执行中的程序提供块数据存储功能的系统,包括 一个或多个存储器;以及块数据存储系统管理器模块,被配置为提供块数据存储服务,所述块数据存储服务使用多个块数据存储系统来存储块数据存储卷,所述块数据存储卷由所述块数据存储服务的用户创建,并且是在一个或多个网络上代表与所述用户相关联的一个或多个执行中的程序来访问的,所述提供块数据存储服务包括创建一个或多个块数据存储卷,以供一个或多个执行中的程序使用,创建每个块数据存储卷包括创建块数据存储卷的主拷贝,所述主拷贝存储在多个块数据存储系统中的一个块数据存储系统上;通过对于数据访问请求中的每一个,在针对数据访问请求的一个块数据存储卷的主拷贝可用的情况下,发起对可用的主拷贝执行数据访问请求,来响应均由执行中的程序之一发起的针对所创建的块数据存储卷之一的数据访问请求;以及响应于接收到的指示,创建块数据存储卷中的第一块数据存储卷的新拷贝,所述第一块数据存储系统的主拷贝存储在块数据存储系统中的第一块数据存储系统上,所创建的新拷贝存储在与所述第一块数据存储系统不同的一个或多个其他数据存储系统上。
5.根据权利要求4所述的系统,其中,创建第一块数据存储卷还包括创建在所述多个块数据存储系统中的第二块数据存储系统上存储的第一块数据存储卷的镜像拷贝,所述第二块数据存储系统与所述第一块数据存储系统以及所述一个或多个其他数据存储系统不同,以及,响应数据访问请求还包括对于由执行中的程序之一发起的针对所述第一块数据存储卷的每个数据访问请求,在所述第一块数据存储卷的主拷贝不可用的情况下,发起对在所述第二块数据存储系统上存储的第一块数据存储卷的镜像拷贝执行数据访问请求。
6.根据权利要求5所述的系统,其中,响应数据访问请求还包括对于由所述执行中的程序之一发起的针对第一块数据存储卷的每个数据访问请求,如果第一块数据存储卷的主拷贝可用,则发起对在所述第二块数据存储系统上存储的第一块数据存储卷的镜像拷贝执行数据访问请求。
7.根据权利要求4所述的系统,其中,接收到的响应于其而创建第一块数据存储卷的新拷贝的指示基于对将第一块数据存储卷的主拷贝从第一块数据存储系统移动到不同的第二块数据存储系统的确定,其中,所述一个或多个其他数据存储系统是第二块数据存储系统,其中,在第二块数据存储系统上创建第一块数据存储卷的新拷贝包括将在第二块数据存储系统上创建的新拷贝指定为第一块数据存储卷的新的主拷贝,以及,由块数据存储系统管理器模块提供块数据存储服务还包括在创建第一块数据存储卷的新拷贝之后,通过发起对在第二块数据存储系统上存储的第一块数据存储卷的新的主拷贝执行附加数据访问请求,来响应均由所述执行中的程序之一发起的针对第一块数据存储卷的一个或多个附加数据访问请求。
8.根据权利要求4所述的系统,其中,块数据存储系统管理器模块由用于提供块数据存储服务的一个或多个装置构成,所述块数据存储服务使用多个块数据存储系统来存储块数据存储卷,所述块数据存储卷由所述块数据存储服务的用户创建,并且是在一个或多个网络上代表与所述用户相关联的一个或多个执行中的程序来访问的,提供块数据存储服务包括创建一个或多个块数据存储卷,以供一个或多个执行中的程序使用,创建每个块数据存储卷包括创建块数据存储卷的主拷贝,所述主拷贝存储在多个块数据存储系统中的一个块数据存储系统上;通过对于数据访问请求中的每一个,在针对数据访问请求的一个块数据存储卷的主拷贝可用的情况下,发起对可用的主拷贝执行数据访问请求,来响应均由所述执行中的程序之一发起的针对所创建的块数据存储卷之一的数据访问请求;以及响应于接收到的指示,创建块数据存储卷中的第一块数据存储卷的新拷贝,第一块数据存储系统的主拷贝存储在块数据存储系统中的第一块数据存储系统上,所创建的新拷贝存储在与所述第一块数据存储系统不同的一个或多个其他数据存储系统上。
9.一种用于管理执行中的程序对块数据存储功能的访问的计算机实现方法,所述方法包括接收由在第一计算系统上执行的第一程序的第一拷贝发起的第一组一个或多个数据访问请求的一个或多个指示,所述第一组一个或多个数据访问请求是针对访问存储在非本地块数据存储卷上的块数据的,所述块数据存储卷由不同的第二数据存储系统在一个或多个网络上提供,并附着到第一计算系统,以便第一执行中的程序拷贝经由与第一计算系统本地的第一逻辑块存储设备的交互来发起针对块数据存储卷的数据访问请求,所述第一逻辑块存储设备表示块数据存储卷;通过代表第一执行中的程序拷贝与第二数据存储系统进行交互,以发起对由所述第二数据存储系统提供的块数据存储卷执行第一组数据访问请求,来自动响应接收到的第一组数据访问请求的指示;在确定第一程序拷贝已变得不可用之后,识别在其上执行第一程序的第二拷贝的第三计算系统,并将块数据存储卷附着到第三计算系统,以便第二程序拷贝能够访问第三计算系统本地的第二逻辑块存储设备,所述第三计算系统与所述第一计算系统和所述第二数据存储系统不同,所述第二逻辑块存储设备表示块数据存储卷;接收由第二执行中的程序拷贝经由与第三计算系统上的第二逻辑本地块存储设备的交互而发起的针对块数据存储卷的第二组一个或多个其他数据访问请求的一个或多个指示;以及通过代表第二执行中的程序拷贝与第二数据存储系统进行交互,以发起对第二数据存储系统上的块数据存储卷执行第二组数据访问请求,来自动响应接收到的第二组数据访问请求的指示。
10.根据权利要求9所述的方法,还包括自动确定第一程序拷贝已变得不可用,第一程序拷贝的不可用性基于以下至少一项第一计算系统的故障、与第一计算系统的连接的故障、以及第一计算系统不能够继续执行第一程序拷贝。
11.根据权利要求9所述的方法,其中,识别在其上执行第一程序的第二拷贝的第三计算系统包括在确定第一程序拷贝已变得不可用之后,发起在第三计算系统上执行第二程序拷贝。
12.根据权利要求9所述的方法,还包括在将块数据存储卷附着到第一计算系统之前,在第二数据存储系统上创建块数据存储卷,并在不同的第四块数据存储系统上创建块数据存储卷的镜像拷贝,以及,响应第一组数据访问请求和第二组数据访问请求还包括发起对所创建的镜像拷贝执行第一组数据访问请求和第二组数据访问请求。
13.根据权利要求9所述的方法,还包括在接收一个或多个数据访问请求的指示之前,将块数据存储卷附着到第一计算系统,以供第一执行中的程序拷贝使用,将块数据存储卷附着的步骤包括将第一逻辑块存储设备与由第二数据存储系统提供的块数据存储卷相关联,并由节点管理器模块执行,所述节点管理器模块管理第一计算系统对所述一个或多个网络的访问,所述节点管理器模块是先前响应于来自与第一执行中的程序相关联的用户的请求而创建块数据存储卷的块数据存储服务的一部分。
14.一种被配置为管理执行中的程序对块数据存储功能的访问的系统,所述系统包括一个或多个存储器;以及块数据存储系统管理器模块,被配置为提供块数据存储服务,所述块数据存储服务使用多个块数据存储系统来存储块数据存储卷,所述块数据存储卷由所述块数据存储服务的用户创建,并且是在一个或多个网络上代表与所述用户相关联的一个或多个执行中的程序来访问的,提供块数据存储服务包括创建一个或多个块数据存储卷,以供一个或多个执行中的程序使用,每个块数据存储卷存储在多个块数据存储系统中的一个块数据存储系统上;在向所述一个或多个执行中的程序中的第一执行中的程序提供对所创建的块数据存储卷中的第一块数据存储卷的访问之后,通过发起对第一所创建的块数据存储卷执行一个或多个数据访问请求,来响应由第一程序发起的、对第一所创建的块数据存储卷的所述一个或多个数据访问请求;以及在第一程序变得不可用,并且向不同的第二执行中的程序提供对第一所创建的块数据存储卷的访问以替换向不可用的第一程序提供的访问之后,通过发起对第一所创建的块数据存储卷执行一个或多个其他数据访问请求,来响应由第二程序发起的、对第一所创建的块数据存储卷的所述一个或多个其他数据访问请求。
15.根据权利要求14所述的系统,其中,第一程序和第二程序是单一程序的正在执行的拷贝,其中,向第一程序提供访问包括将第一块数据存储卷附着到执行第一程序的第一计算系统,以便第一执行中的程序经由与第一计算系统本地的第一逻辑块存储设备的交互来发起针对第一块数据存储卷的数据访问请求,所述第一逻辑块存储设备表示第一块数据存储卷;以及,向第二程序提供访问包括识别在其上执行第二程序的第三计算系统,并将第一块数据存储卷附着到第三计算系统,以便第二程序能够访问第三计算系统本地的第二逻辑块存储设备,所述第二逻辑块存储设备表示第一块数据存储卷;以及,第一程序和第二程序针对第一块数据存储卷的数据访问请求是针对访问存储在块数据存储卷上的块数据的。
全文摘要
本发明描述了用于管理执行中的程序对非本地块数据存储装置的访问的技术。在一些情况下,块数据存储服务使用多个服务器存储系统来可靠地存储块数据,该块数据在一个或多个网络上可由其他物理计算系统上执行的程序来访问。用户可以创建均由至少两个服务器块数据存储系统存储的块数据存储卷,并且可以发起一个或多个执行中的程序对这种卷的使用,例如,通过使在第一卷拷贝变得不可用的情况下能够自动切换到第二卷拷贝来以可靠的方式发起。在一些情况下,一组存储了块数据卷的多个服务器块数据存储系统可以在数据中心协同定位,并且使用在其中存储的卷的程序可以在该数据中心处的其他物理计算系统上执行。
文档编号G06F13/00GK102177508SQ200980140118
公开日2011年9月7日 申请日期2009年8月7日 优先权日2008年8月8日
发明者彼得·N·德桑蒂斯, 泰特·安德鲁·塞尔坦, 罗兰·帕特森-琼斯, 阿特勒·诺曼·约尔根森, 马修·S·加曼 申请人:亚马逊技术有限公司

最新回复(0)