基于同步复制的割接引擎的制作方法

文档序号:25037995发布日期:2021-05-11 17:11阅读:87来源:国知局
基于同步复制的割接引擎的制作方法

相关申请的交叉引用

本申请要求于2018年11月15日提交的、名称为“synchronousreplicationbasedcutoverengine”的美国专利申请no.16/191,582的优先权,该美国专利申请要求于2018年8月2日提交的、名称为“synchronousreplicationbasedcutoverengine”的印度专利申请no.201841029051的优先权,这些申请通过引用并入本文。



背景技术:

很多存储系统可以实现数据复制和/或其他冗余数据访问技术以用于数据丢失保护和无中断客户端访问。例如,第一计算设备可以被配置为向客户端提供对被存储在第一存储设备和/或其他存储设备内的数据的主要访问。在第一计算设备发生故障的情况中,第二计算设备可以被配置为第一计算设备的备份。数据可以从第一计算设备复制到第二计算设备。以这种方式,在第一计算设备发生故障的情况中,第二计算设备可以向客户端提供对复制数据的访问。

存储虚拟机可以用于管理存储(例如,跨集群的一个或多个节点而被存储的多个卷),并且向客户端提供对这样的存储的访问。将存储虚拟机从一个集群迁移到另一集群可能是有益的,诸如用于负载平衡。不幸的是,迁移存储虚拟机会对客户端造成很大破坏。这是因为,客户端对由存储虚拟机托管的存储的访问被停止(quiesce)(阻止),这增加了客户端i/o等待时间,可能导致依赖于存储内的数据的应用超时或遇到错误,等等。

附图说明

图1是示出可以在其中实现本发明的实施例的示例集群网络的组件框图。

图2是示出可以在其中实现本发明的实施例的示例数据存储系统的组件框图。

图3是示出用于基于同步复制的割接的示例方法的流程图。

图4a是示出用于基于同步复制的割接的示例系统的组件框图,其中执行异步复制。

图4b是示出用于基于同步复制的割接的示例系统的组件框图,其中执行同步复制。

图4c是示出用于基于同步复制的割接的示例系统的组件框图,其中执行割接阶段。

图4d是示出用于基于同步复制的割接的示例系统的组件框图,其中客户端访问被割接到复制存储对象。

图5是可以在其中实现本发明的实施例的计算机可读介质的示例。

图6是示出可以在其中实现本发明的实施例的示例计算环境的组件框图。

具体实施方式

现在参考附图描述所要求保护的主题的一些示例,其中在全文中,通常使用相似的附图标记指代相似的元素。在下面的描述中,出于解释的目的,阐述了很多具体细节以便提供对所要求保护的主题的理解。然而,很清楚的是,可以在没有这些具体细节的情况中实践所要求保护的主题。该具体实施方式中的任何内容都不应当被认为是现有技术。

用于迁移存储对象(诸如卷和存储虚拟机)的很多技术过程都对客户端造成破坏。这些迁移过程可能仅限于执行数据从源存储对象到目的地存储对象的异步传输。这些异步传输将对源存储对象的数据的增量变化复制到目的地存储对象。在异步传输完成之后,将从客户端到源存储对象的i/o隔离/停止(阻止)。对于因i/o被阻止(诸如失败或排队等待以后执行)而依赖于对源存储对象的数据的访问的应用和计算机,这将导致显著的客户端等待时间。因此,在客户端从能够访问源存储对象被割接到能够访问目的地存储对象的割接时段期间,由于i/o的隔离/停止,客户端可能会遇到更高的等待时间。这可能会导致应用和计算机超时、崩溃或出现其他操作问题和停机时间。

因此,通过执行非破坏性迁移来改善这些迁移过程,该非破坏性迁移减少了与迁移存储对象相关联的破坏性和客户端等待时间。这一改进通过在迁移过程中另外利用同步复制过程而被实现。使用同步复制的优点是可以使客户端经历的等待时间大大减少。此外,同步复制还用于实现作为卷集合的存储虚拟机的成功的无中断迁移。

在一个实施例中,执行异步复制过程,以将对存储对象的数据的增量变化异步复制到复制存储对象。例如,跨第一集群的多个节点而被存储的存储虚拟机的卷内的数据的变化被异步复制到第二集群处的复制存储虚拟机的复制卷。这是作为将存储虚拟机从第一集群迁移到第二集群的非中断迁移过程的一部分而进行的,以提高性能或更有效地利用存储容量(例如,第二集群可能具有更多可用存储资源和/或处理资源)。

执行异步增量传送,直到割接标准被满足。割接标准可以定义为设置的时间量或要被复制的剩余数据量。因此,响应于割接标准被满足,执行同步复制过程。执行同步复制过程以同步复制以存储对象为目标的操作。这些操作在存储对象上被执行,并且被复制以创建复制操作,这些复制操作被传输给第二集群以用于对复制存储对象执行。响应于从第二集群接收到关于已经接收到复制操作的确认消息,将操作成功完成的确认返回给生成该操作的客户端计算设备。

确认消息的传输基于第二集群接收到复制操作以用于在复制存储对象上随后执行,而不是提交复制操作,因此客户端计算设备的等待时间很短。否则,客户端计算设备将经历更长的等待时间,因为成功的确认消息将在复制操作被提交之后才发送给客户端计算设备。这还允许第二集群对复制操作排队,从而使得复制操作可以按照能够确保第一集群执行对应操作的顺序的从属写入顺序一致性的方式被提交给存储。例如,第一写入操作将数据a写入存储对象,第二写入操作用数据b覆盖数据a。如果第二集群在第一写入操作的复制之前执行第二写入操作的复制,则将产生数据不一致,因为第二集群现在将存储数据a,而第一集群将存储数据b。

一旦存储对象的所有子对象(例如,存储虚拟机的每个卷)处于与复制存储对象的同步复制的稳定状态(例如,操作和复制操作正在被提交给存储),则割接阶段被执行。割接阶段被执行以将客户端从访问存储对象切换到访问复制存储对象。客户端i/o停止的割接阶段的割接窗口比常规迁移技术要短,因为由于存储对象和复制存储对象处于稳定同步状态,因此可以快速执行割接,因此同步任何剩余数据所花费的时间更少。即使两个副本都已经同步(存储对象和复制存储对象同步),也存在等待时间改进/好处,因为复制存储对象(辅助副本)上只有几个挂起的i/o将在割接阶段被耗尽。在割接阶段,这些i/o被耗尽,因此这是i/o被停止的唯一时间段,因为同步复制被用作迁移的基础引擎。

在割接阶段,客户端i/o被停止,并且最后的操作被执行以完成任何挂起的运行中操作和复制操作(例如,运行中操作包括尚未被提交给存储对象和复制存储对象的操作)。任何其他文件系统元数据(诸如网络文件系统(nfs)锁定数据、非幂等性操作的重放缓存等)都将被传输给第二集群。一旦完成,客户端被重定向到复制存储对象。相反,现有的迁移技术将必须执行其他数据复制以将存储对象和复制存储对象置于一致状态。这会增加客户端等待时间,并且不利地影响客户端的吞吐量。相应地,同步复制在割接之前被执行以便减少等待时间并且提高客户端吞吐量,因为减少了客户端i/o停止的时间,因为几乎没有附加数据要复制(例如,只需要耗尽运行中操作并且需要将文件系统元数据复制过来)。

与现有迁移技术相比,这种无中断迁移技术还提供了其他改进。例如,现有迁移技术可能无法以可预测方式在集群之间迁移多个卷。相反,这种无中断迁移技术可以按照可预测方式迁移跨多个节点而被存储的多个卷中的存储虚拟卷。即使每个卷彼此独立并且可以具有不同数据变化率,但迁移仍以可预测方式执行,因为同步复制在割接之前将存储卷和复制存储卷置于同步复制的稳定状态。这也允许指定更宽松的割接标准。否则,仅使用异步复制的现有迁移技术必须符合严格的割接标准,这可能会导致割接尝试失败,而该尝试将在由这样的严格的割接标准设置的时限内无法完成。

为了提供无终端迁移,图1示出了集群网络环境100或网络存储环境的实施例。然而,可以理解,本文中描述的技术等可以在集群网络环境100、非集群网络环境和/或各种其他计算环境(诸如桌面计算环境)内实现。也就是说,包括所附权利要求书的范围的本公开内容并不旨在限于本文中提供的示例。可以理解,如果相同或相似的组件、元素、特征、项目、模块等在后续附图中示出但是先前已经关于先前附图进行了讨论,则其相似(例如,冗余)讨论在描述后续附图时(例如,出于简化和易于理解的目的)可以省略。

图1是示出可以实现本文中描述的技术和/或系统的至少一些实施例的集群网络环境100的框图。集群网络环境100包括通过集群结构106耦合的数据存储系统102和104,诸如体现为私有infiniband、光纤通道(fc)或以太网的计算网络,以促进数据存储系统102和104(以及其中的一个或多个模块、组件等,诸如节点116和118)之间的通信。应当理解,尽管在图1中示出了两个数据存储系统102和104以及两个节点116和118,但是可以设想任何适当数目的这种组件。在一个示例中,节点116、118包括存储控制器(例如,节点116可以包括主或本地存储控制器,而节点118可以包括辅或远程存储控制器),该存储控制器向诸如主机设备108、110等客户端设备提供对被存储在数据存储设备128、130中的数据的访问。类似地,除非本文中另外专门提供,否则本文中引用和/或在附图中示出的其他模块、元素、特征、项目等也是如此。也就是说,本文中公开的特定数目的组件、模块、元素、特征、项目等并不应当以限制的方式来解释。

将进一步认识到,集群网络不限于任何特定地理区域,并且可以本地和/或远程地集群。因此,在一个实施例中,集群网络可以分布在位于多个地理位置的多个存储系统和/或节点上。在一个实施例中,集群网络可以包括驻留在同一地理位置(例如,在数据存储设备的单个现场机架中)的数据存储系统(例如,102、104)。

在所示的示例中,一个或多个主机设备108、110(可以包括例如客户端设备、个人计算机(pc)、用于存储的计算设备(例如,存储服务器)、以及其他计算机或外围设备(例如,打印机))通过存储网络连接112、114耦合到相应数据存储系统102、104。网络连接可以包括局域网(lan)或广域网(wan),其例如利用网络附加存储(nas)协议(诸如用于交换数据分组的通用互联网文件系统(cifs)协议或网络文件系统(nfs)协议)、存储区域网络(san)协议(诸如小型计算机系统接口(scsi)或光纤通道协议(fcp))、对象协议(诸如s3)等。说明性地,主机设备108、110可以是运行应用的通用计算机,并且可以使用客户端/服务器模型与数据存储系统102、104交互以交换信息。也就是说,主机设备可以向数据存储系统请求数据(例如,由网络存储控件管理的存储设备上的数据,该网络存储控件被配置为处理由主机设备为存储设备而发出的i/o命令),并且数据存储系统可以经由一个或多个存储网络连接112、114将请求的结果返回给主机设备。

集群数据存储系统102、104上的节点116、118可以包括作为集群而互连以诸如向具有远程位置的企业、云存储(例如,存储端点可以被存储在数据云中)等提供数据存储和管理服务的网络或主机节点。例如,集群网络环境100中的这样的节点可以是作为连接点、再分配点或通信端点而附接到网络的设备。节点可以能够通过网络通信信道发送、接收和/或转发信息,并且可以包括满足任何或所有这些条件的任何设备。节点的一个示例可以是连接到网络的数据存储和管理服务器,其中服务器可以包括特别地被配置为用作数据存储和管理系统中的服务器的通用计算机或计算设备。

在一个示例中,诸如节点116、118等节点的第一集群可以位于第一存储站点上(例如,被配置为提供对包括一个或多个存储设备的第一逻辑分组的第一存储集合的访问的第一组存储控制器)。未示出的第二节点集群可以位于第二存储站点(例如,被配置为提供对包括一个或多个存储设备的第二逻辑分组的第二存储集合的访问的第二组存储控制器)处。第一节点集群和第二节点集群可以根据灾难恢复配置来配置,其中如果在包括灾难节点集群的灾难存储站点处发生灾难,则幸存节点集群提供对灾难节点集群的存储设备的切换访问(例如,如果在第二存储站点处发生灾难,则第一节点集群向客户端设备提供对第二存储集合的存储设备的切换数据访问)。

如在集群网络环境100中所示,节点116、118可以包括协作以为集群提供分布式存储架构的各种功能组件。例如,节点可以包括网络模块120、122和磁盘模块124、126。网络模块120、122可以被配置为允许节点116、118(例如,网络存储控制器)通过存储网络连接112、114与主机设备108、110连接,例如以允许主机设备108、110访问被存储在分布式存储系统中的数据。此外,网络模块120、122可以通过集群结构106提供与一个或多个其他组件的连接。例如,在图1中,节点116的网络模块120可以通过通过节点118的磁盘模块126发送请求来访问第二数据存储设备。

磁盘模块124、126可以被配置为将一个或多个数据存储设备128、130(诸如磁盘或磁盘阵列、闪存或某种其他形式的数据存储)连接到节点116、118。节点116、118可以通过集群结构106互连,例如,以允许集群中的相应节点访问连接到集群中的不同节点的数据存储设备128、130上的数据。通常,例如,磁盘模块124、126根据诸如scsi或fcp等san协议与数据存储设备128、130通信。因此,如从节点116、118上的操作系统所见,数据存储设备128、130看起来像是本地附接到操作系统。以这种方式,不同节点116、118等可以通过操作系统访问数据块,而不是明确地请求抽象文件。

应当理解,尽管集群网络环境100示出了相等数目的网络和磁盘模块,但是其他实施例可以包括不同数目的这些模块。例如,在集群中可以存在互连的多个网络和磁盘模块在网络与磁盘模块之间没有一一对应关系。也就是说,不同节点可以具有不同数目的网络和磁盘模块,同一节点可以具有与磁盘模块不同数目的网络模块。

此外,主机设备108、110可以通过存储联网连接112、114而被与集群中的节点116、118联网。作为示例,被联网到集群的相应主机设备108、110可以请求集群中的节点116、118的服务(例如,以数据分组的形式交换信息),并且节点116、118可以将所请求的服务的结果返回到主机设备108、110。在一个实施例中,主机设备108、110可以与驻留在数据存储系统102、104中的节点116、118(例如,网络主机)中的网络模块120、122交换信息。

在一个实施例中,数据存储设备128、130包括卷132,卷132是将信息作为用于数据的文件系统存储到磁盘驱动器或磁盘阵列或其他存储(例如,闪存)上的实现。在一个示例中,磁盘阵列可以包括所有传统硬盘驱动器、所有闪存驱动器、或传统硬盘驱动器和闪存驱动器的组合。例如,卷可以跨越磁盘的一部分、磁盘集合或部分磁盘,并且通常在存储系统中的磁盘空间上定义文件存储的整体逻辑布置。在一个实施例中,卷可以包括作为驻留在该卷内的分层目录结构中的一个或多个文件的存储数据。

卷通常以可以与特定存储系统相关联的格式来配置,并且相应卷格式通常包括为卷提供功能的特征,诸如为卷形成集群提供能力。例如,在第一存储系统可以将第一格式用于其卷的情况中,第二存储系统可以将第二格式用于其卷。

在集群网络环境100中,主机设备108、110可以利用数据存储系统102、104来存储和取回来自卷132的数据。在该实施例中,例如,主机设备108可以向存储设备102内的节点116中的网络模块120发送数据分组。节点116可以使用磁盘模块124将数据转发到数据存储设备128,其中数据存储设备128包括卷132a。以这种方式,在该示例中,主机设备可以使用通过存储网络连接112而连接的数据存储系统102来访问卷132a,以存储和/或取回数据。此外,在该实施例中,主机设备110可以与数据存储系统104内的节点118中的网络模块122(例如,其可以远离数据存储系统102)交换数据。节点118可以使用磁盘模块126将数据转发到数据存储设备130,从而访问与数据存储设备130相关联的卷132b。

可以理解,可以在集群网络环境100内实现元数据和数据操作的重放。在一个示例中,操作可以在节点116处执行并且在节点118处重放。可以理解,元数据和数据操作的重放可以针对任何类型的计算环境和/或在任何类型的计算环境之间实现,并且可以在物理设备(例如,节点116、节点118、台式计算机、平板计算机、笔记本计算机、可穿戴设备、移动设备、存储设备、服务器等)和/或云计算环境(例如,远离集群网络环境100)之间可传输。

图2是数据存储系统200(例如,图1中的102、104)的说明性示例,其提供了可以实现本文中描述的一个或多个技术和/或系统的组件的实施例的更多细节。数据存储系统200包括节点202(例如,图1中的节点116、118)和数据存储设备234(例如,图1中的数据存储设备128、130)。节点202可以是例如通用计算机,或者是特别地被配置为用作存储服务器的某种其他计算设备。主机设备205(例如,图1中的108、110)可以通过网络216连接到节点202,例如,以提供对被存储在数据存储设备234上的文件和/或其他数据的访问。例如,节点202包括向诸如主机设备205等客户端设备提供对被存储在数据存储设备234内的数据的访问的存储控制器。

数据存储设备234可以包括大容量存储设备,诸如磁盘阵列218、220、222的磁盘224、226、228。应当理解,本文中描述的技术和系统不受该示例实施例的限制。例如,磁盘224、226、228可以包括任何类型的大容量存储设备,包括但不限于磁盘驱动器、闪存以及适于存储信息的任何其他类似介质,包括例如数据(d)和/或奇偶(p)信息。

节点202包括通过系统总线242互连的一个或多个处理器204、存储器206、网络适配器210、集群访问适配器212和存储适配器214。数据存储系统200还包括安装在节点202的存储器206中的操作系统208,该操作系统208可以例如实现独立(或廉价)磁盘冗余阵列(raid)优化技术以优化阵列中的故障磁盘的数据的重构过程。

操作系统208还可以管理数据存储系统的通信、以及可以位于集群网络中诸如附接到集群结构215(例如,图1中的106)的其他数据存储系统之间的通信。因此,诸如网络存储控制器等节点202可以响应于主机设备请求以根据这些主机设备请求来管理数据存储设备234(例如,或其他集群设备)上的数据。例如,操作系统208通常可以在数据存储系统200上建立一个或多个文件系统,其中文件系统可以包括实现文件和目录的持久分层名称空间的软件代码和数据结构。作为示例,当新的数据存储设备(未示出)被添加到集群网络系统时,操作系统208被通知在现有目录树中与新数据存储设备相关联的新文件将被存储在何处。这通常被称为“挂载(mount)”文件系统。

在示例数据存储系统200中,存储器206可以包括由处理器204和适配器210、212、214可寻址的用于存储相关的软件应用代码和数据结构的存储位置。处理器204和适配器210、212、214可以例如包括被配置为执行软件代码并且操纵数据结构的处理元件和/或逻辑电路系统。操作系统208(其部分通常驻留在存储器206中并且由处理元件执行)通过调用存储操作以支持由存储系统实现的文件服务等来在功能上组织存储系统。对于本领域技术人员将很清楚的是,其他处理和存储机制(包括各种计算机可读介质)可以用于存储和/或执行与本文中描述的技术有关的应用指令。例如,操作系统还可以利用一个或多个控制文件(未示出)来帮助提供虚拟机。

网络适配器210包括通过网络216将数据存储系统200连接到主机设备205所需要的机械、电气和信令电路系统,该网络可以包括点对点连接或共享介质等,诸如局域网。主机设备205(例如,图1的108、110)可以是被配置为执行应用的通用计算机。如上所述,主机设备205可以根据信息传递的客户端/主机模型来与数据存储系统200交互。

存储适配器214与在节点202上执行的操作系统208协作以访问由主机设备205请求的信息(例如,访问由网络存储控制器管理的存储设备上的数据)。信息可以被存储在任何类型的附加可写介质阵列上,诸如磁盘驱动器、闪存、和/或适合存储信息的任何其他类似介质。在示例数据存储系统200中,信息可以被存储在磁盘224、226、228上的数据块中。存储适配器214可以包括输入/输出(i/o)接口电路系统,该输入/输出(i/o)接口电路系统通过诸如存储区域网络(san)协议(例如,小型计算机系统接口(scsi)、iscsi、hyperscsi、光纤通道协议(fcp))等i/o互连布置耦合到磁盘。该信息由存储适配器214取回并且在必要时由一个或多个处理器204(或存储适配器214本身)处理,然后通过系统总线242转发到网络适配器210(和/或集群访问适配器212,如果发送到集群中的另一节点),在此该信息被格式化为数据分组并且通过网络216返回到主机设备205(和/或通过集群结构215返回到附接到集群的另一节点)。

在一个实施例中,磁盘阵列218、220、222上的信息存储可以被实现为一个或多个存储卷230、232,存储卷230、232由定义磁盘空间的总体逻辑布置的磁盘224、226、228的集群组成。包括一个或多个卷的磁盘224、226、228通常被组织为一组或多组raid。作为示例,卷230包括磁盘阵列218和220的集合,磁盘阵列218和220包括磁盘224和226的集群。

在一个实施例中,为了促进对磁盘224、226、228的访问,操作系统208可以实现文件系统(例如,在任何地方写文件系统),该文件系统在逻辑上将信息组织为磁盘上目录和文件的分层结构。在该实施例中,相应文件可以被实现为被配置为存储信息的一组磁盘块,而目录可以被实现为其中存储有关于其他文件和目录的信息的特殊格式的文件。

无论该数据存储系统200内的基础物理配置如何,都可以将数据存储为物理和/或虚拟卷中的文件,该卷可以与相应卷标识符(诸如文件系统标识符(fsid))相关联,该卷标识符的长度在一个示例中可以为32位。

物理卷对应于其地址、可寻址空间、位置等不变的物理存储设备的至少一部分,诸如一个或多个数据存储设备234(例如,独立(或廉价)磁盘冗余阵列(raid系统))中的至少一些。通常,物理卷的位置不变,因为被用于访问该物理卷的(多个)地址(范围)通常保持不变。

相反,虚拟卷被存储在不同物理存储设备的不同部分的集合上。虚拟卷可以是不同物理存储设备位置的不同可用部分的集合,诸如来自磁盘224、226和/或228中的每个磁盘的一些可用空间。应当理解,由于虚拟卷没有“绑定”到任何一个特定存储设备,所以可以说虚拟卷包括抽象层或虚拟化层,这使它在某些方面可以重新调节大小和/或具有灵活性。

此外,虚拟卷可以包括一个或多个逻辑单元号(lun)238、目录236、qtree235和文件240。这些特征(具体地是luns)尤其允许将其中存储有数据的不同存储位置例如标识并且分组为数据存储单元。这样,lun238可以表征为构成虚拟磁盘或驱动器,虚拟卷内的数据被存储在该磁盘或驱动器上。例如,lun通常被称为虚拟驱动器,从而使得它们可以模拟通用计算机中的硬盘驱动器,而它们实际上包括被存储在卷的各个部分中的数据块。

在一个实施例中,一个或多个数据存储设备234可以具有一个或多个物理端口,其中可以为每个物理端口分配目标地址(例如,scsi目标地址)。为了表示被存储在数据存储设备上的相应卷,可以使用数据存储设备上的目标地址来标识一个或多个lun238。因此,例如,当节点202通过存储适配器214连接到卷230、232时,在节点202与该卷下面的一个或多个lun238之间创建连接。

在一个实施例中,相应目标地址可以标识多个lun,从而使得目标地址可以表示多个卷。例如,可以实现为存储适配器214中的电路系统和/或软件或者实现为驻留在存储器206中并且由处理器204执行的可执行代码的i/o接口可以通过使用标识一个或多个lun238的一个或多个地址连接到卷230。

可以理解,可以为数据存储系统200实现元数据和数据操作的重放。在一个示例中,节点202可以在nvram上执行操作,并且重放该操作以将nvram刷新到存储中。可以理解,元数据和数据操作的重放可以针对任何类型的计算环境和/或在任何类型的计算环境之间实现,并且可以在物理设备(例如,节点202、主机设备205、台式计算机、平板计算机、笔记本计算机、可穿戴设备、移动设备、存储设备、服务器等)和/或云计算环境(例如,远离节点202和/或主机设备205)之间可传输。

基于同步复制的割接引擎的一个实施例由图3的示例性方法300示出,并且结合图4a至图4d的系统400进一步描述。第一计算环境402包括存储对象404,诸如文件、目录、卷、存储虚拟机等,如图4a所示。在一个实施例中,存储对象404可以包括跨第一集群的多个节点而被存储的多个卷的存储虚拟机。第二计算环境406可以将复制存储对象408维持为存储对象404的副本。复制存储对象408可以包括跨第二集群的多个节点而被存储的多个复制卷的复制虚拟机。复制过程可以用于复制存储对象404内的数据并且将指向存储对象404的诸如数据操作和元数据操作(例如,写入/修改操作)等操作复制到复制存储对象408。

可以确定存储对象404应当作为复制存储对象408迁移到第二计算环境406。在一个实施例中,作为迁移的一部分,在第二计算环境406内创建复制存储对象408,并且执行复制过程,以将数据复制到复制存储对象408中。在一个实施例中,可以基于接收到迁移命令而进行该确定。在一个实施例中,对照性能标准来评估第一计算环境402的性能统计,以基于性能统计不满足性能标准而确定应当执行迁移。在一个实施例中,对照存储容量标准来评估第一计算环境402的存储容量统计,以基于存储容量统计不满足存储容量标准而确定应当执行迁移。以这种方式,执行复制过程,以将存储对象404作为复制存储对象408迁移到第二计算环境406。

在302处,执行异步复制过程410,以执行存储对象404的数据从第一计算环境402到复制存储对象408的异步增量传送,直到割接标准被满足,如图4a所示。在一个实施例中,割接标准可以被定义为用于执行异步复制的时间跨度(例如,割接标准对应于将在其间执行异步复制的3分钟的时间跨度)。在一个实施例中,割接标准可以被定义为要被复制的剩余数据量(例如,割接标准对应于要被复制的剩余数据百分比(诸如5%)或要被复制的剩余数据大小(诸如50兆字节))。

在304处,基于割接标准被满足来执行同步复制过程412,以将以存储对象404为目标的操作(例如,数据操作、元数据操作、写入操作等)同步地复制到复制存储对象408,如图4b所示。在同步复制的情况中,直到操作和操作的复制操作都被确认(例如,操作被提交给存储对象404并且第二计算环境406确认接收到复制操作以用于在复制存储对象408上提交),将操作提交给第一计算环境402以在存储对象404上执行的客户端才被确认为操作成功。

在复制过程的实施例中,对存储对象404执行操作(例如,写入操作),然后将操作作为复制操作传输到第二计算环境406以用于对复制存储对象408执行。操作根据定义顺序而被执行。因此,基于执行顺序向复制操作分配序列号。序列号由第二计算环境406用来根据定义顺序在复制存储对象408上强制执行复制操作的执行。具体地,第二计算环境406可以传输确认已经接收到复制操作的消息,从而使得第一计算环境402可以在向存储对象404提交时向客户端确认操作已经成功。第二计算环境406可以将复制操作排队到队列中。第二计算环境406可以基于所分配的序列号来对复制操作进行排序/定序,从而使得已排序的复制操作与第一计算环境402的执行顺序对应。以这种方式,第二计算环境406可以根据类似的执行顺序对复制存储对象408执行复制操作。

在306处,执行割接414以在割接414完成时将操作(例如,写入和读取请求)从以存储对象404为目标定向到以复制存储对象408为目标,如图4c和图4d所示。基于同步复制过程达到针对存储对象404的子对象(例如,存储虚拟机的一个或多个卷的文件、目录、数据块或其他子对象)的同步复制的稳定状态来执行割接414。稳定状态是操作被提交给存储对象404和复制存储对象408两者的状态。

在割接414的实施例中,创建操作的应用被停止以暂停该应用生成以存储对象404为目标的操作。执行耗尽操作以完成尚未被提交以存储的挂起操作(例如,运行中操作,诸如尚未由第二计算环境提交给复制存储对象408的复制操作)。协议特定信息(诸如网络文件系统锁定数据和非幂等性操作的重放缓存)被复制到复制存储对象408。由于存储对象404和复制存储对象408与同步复制过程同步,所以需要耗尽(完成)的操作数目相对较少,并且因此来自应用的i/o被停止的时间段很短。

一旦割接414完成,现在将应用和/或其他远程设备切换到访问复制存储对象408而不是存储对象404。以这种方式,客户端i/o401被重定向到第二计算环境406处的复制存储对象408。如果未能迁移存储对象404,则使用由上次异步增量传送创建的快照来执行复制存储对象408到执行上次异步增量传送时的状态的回滚。也就是说,快照用于修改复制存储对象408以包括在对复制存储对象408执行上次异步增量传送之后复制存储对象408所包括的数据。

在一个实施例中,执行时间戳匹配过程,以将文件系统修改操作的时间戳与第一计算环境402和第二计算环境406的元数据匹配。在时间戳匹配过程的实施例中,同步复制以顺序方式处理传入操作(例如,首先在主存储对象上处理操作,然后将其复制到辅存储对象)。

作为处理操作的一部分,主文件系统将修改与存储对象(例如,inode)有关的各种时间戳,诸如mtime(修改时间)、ctime(状态改变时间)和crtime(创建时间)。作为对该操作的响应,同步复制将获取修改后的时间戳(mtime)。同步复制会将修改后的时间戳复制到辅存储对象。当以串行方式处理操作时,诸如如果将每个操作首先写入主存储对象,然后再写入辅存储对象,上述情况也可以很好地适用。但这由于性能考虑而不能用作操作模式,因此数据操作是并行处理的(例如,尽管可以按照顺序方式并行执行多个写入操作)。由于在第二计算环境406处未维持操作的顺序,因此对主存储对象和辅存储对象执行的操作的顺序可以不同。这可能导致主存储对象与辅助存储之间的时间戳不匹配。解决这一不一致问题的一种方法是,当inode上的当前时间戳已经高于当前操作的时间戳时,教导文件系统不要修改时间戳。

在一个实施例中,一种方法包括执行时间戳匹配过程,以将文件系统修改操作的时间戳与第一计算环境402和第二计算环境406的元数据匹配。在一个实施例中,该方法包括对照性能标准来评估第一计算环境402的性能统计,以基于性能统计小于性能标准而确定存储对象404要作为复制存储对象408被迁移到第二计算环境406。在一个实施例中,该方法包括对照容量标准评估第一计算环境402的存储容量统计,以基于存储容量统计小于容量标准而确定存储对象404要作为复制存储对象408被迁移到第二计算环境406。

在一个实施例中,该方法包括在向第二计算环境406传输操作的复制操作以用于对复制存储对象408执行之前,对存储对象404执行该操作,并且包括根据定义顺序执行该操作,并且向复制操作分配序列号,以用于由第二计算环境406强制执行,以基于序列号来根据定义顺序执行复制操作。在一个实施例中,该方法包括基于检测到未能将存储对象作为复制存储对象408迁移到第二计算环境406,使用由上次异步增量传送创建的快照来执行复制存储对象408的回滚。

另一实施例涉及一种计算机可读介质,该计算机可读介质包括被配置为实现本文中提出的一种或多种技术的处理器可执行指令。在图5中示出了以这些方式设计的计算机可读介质或计算机可读设备的示例实施例,其中实现包括其上记录有计算机可读数据506的计算机可读介质508,诸如可记录光盘(cd-r)、可记录数字多功能光盘(dvd-r)、闪存驱动器、硬盘驱动器片等。该计算机可读数据506(诸如包括0或1中的至少一者的二进制数据)进而包括被配置为根据本文中阐述的一个或多个原理进行操作的处理器可执行计算机指令504。在一些实施例中,例如,处理器可执行计算机指令504被配置为执行方法502,诸如图3的示例性方法300中的至少一些。在一些实施例中,例如,处理器可执行计算机指令504被配置为实现系统,诸如图4a-4d的示例性系统400中的至少一些。预期很多这样的计算机可读介质将根据本文中提出的技术进行操作。

图6是示出可以在其中实现本文中描述的技术的实施例的示例操作环境600的图。在一个示例中,本文中描述的技术可以在诸如膝上型计算机、平板计算机、个人计算机、移动设备、可穿戴设备等客户端设备628内实现。在另一示例中,本文中描述的技术可以在被配置为代表客户端设备628和/或其他客户端设备来管理存储和对数据的访问的存储控制器630(诸如节点)内实现。在另一示例中,本文中描述的技术可以在被配置为代表客户端设备628和/或其他客户端设备来管理存储和对数据的访问的分布式计算平台602(诸如云计算环境(例如,云存储环境、多租户平台等))内实现。

在又一示例中,本文中描述的技术中的至少一些在客户端设备628、存储控制器630和分布式计算平台602中的一个或多个上实现。例如,客户端设备628可以通过网络626向存储控制器630传输操作(诸如读取数据和写入数据的数据操作、以及元数据操作(例如,创建文件操作、重命名目录操作、调节大小操作、设置属性操作等))以由存储控制器630在存储时实现。存储控制器630可以存储与托管在本地附接的存储、由通过网络626可访问的其他计算设备托管的远程存储、由分布式计算平台602提供的存储等中的卷或其他数据对象/结构内的操作相关联的数据。存储控制器630可以将数据和/或操作复制到其他计算设备,以便维护一个或多个副本,诸如作为源存储卷的副本而维护的目的地存储卷。这样的副本可以用于灾难恢复和故障转移。

通过将数据传输到分布式计算平台602,存储控制器630可以将数据或其一部分存储在由分布式计算平台602托管的存储中。在一个示例中,存储控制器630可以在本地将频繁访问的数据存储在本地附接的存储中。访问频率较低的数据可以被传输到分布式计算平台602以被存储在数据存储层608中。数据存储层608可以将数据存储在服务数据存储库620中,并且可以将客户端特定数据存储在分配给这样的数据的客户端数据存储库中,诸如用于存储客户端(1)的数据的客户端(1)数据存储库622和用于存储客户端(n)的数据的客户端(n)数据存储库624。数据存储可以是物理存储设备,或者可以定义为可以跨一个或多个物理存储设备而定义的逻辑存储,诸如数据的虚拟卷、lun或其他逻辑组织。在另一示例中,存储控制器630将所有客户端数据传输并且存储到分布式计算平台602。在又一示例中,客户端设备628直接将数据传输并且存储到分布式计算平台602而无需使用存储控制器630。

存储和对数据的访问的管理可以由一个或多个存储虚拟机(svm)或提供软件即服务(saas)(诸如存储软件服务)的其他存储应用执行。在一个示例中,svm可以诸如由应用服务器层606托管在客户端设备628内、在存储控制器630内、或在分布式计算平台602内。在另一示例中,一个或多个svm可以被托管在客户端设备628、存储控制器630和分布式计算平台602中的一个或多个上。

在分布式计算平台602的一个示例中,一个或多个svm可以由应用服务器层606托管。例如,服务器(1)616被配置为托管用于执行管理客户端(1)数据存储库622内的客户端(1)的数据存储的应用(诸如存储应用)的svm。因此,在服务器(1)616上执行的svm可以通过网络626从客户端设备628和/或存储控制器630接收数据和/或操作。svm执行存储应用以处理操作和/或将数据存储在客户端(1)数据存储库622内。svm可以通过网络626向客户端设备628和/或存储控制器630传输回响应,诸如成功消息或错误消息。以这种方式,应用服务器层606可以使用服务器(1)616、服务器(n)618等来托管svm、服务和/或其他存储应用。

分布式计算平台602的用户界面层604可以向客户端设备628和/或存储控制器630提供对与存储和访问数据和/或由分布式计算平台602提供的其他服务相关联的用户界面的访问。在一个示例中,服务用户界面610可以从分布式计算平台602可访问,以访问由客户端和/或存储控制器订阅的服务,诸如数据复制服务、应用托管服务、数据安全服务、人力资源服务、仓库跟踪服务、会计服务等。例如,客户端用户界面可以被提供给对应客户端,诸如客户端(1)用户界面612、客户端(n)用户界面614等。客户端(1)可以通过客户端(1)用户界面612访问由客户端(1)订阅的各种服务和资源,诸如对网络服务、开发环境、人力资源应用、仓库跟踪应用、和/或由应用服务器层606提供的其他服务和资源的访问,其可以使用被存储在数据存储层608中的数据。

客户端设备628和/或存储控制器630可以订阅由分布式计算平台602提供的某些类型和数量的服务和资源。例如,客户端设备628可以建立订阅以访问三个虚拟机、一定数量的存储、某种类型/数量的数据冗余、某种类型/数量的数据安全性、某些服务级别协议(sla)和服务级别目标(slo)、等待时间保证、带宽保证、用于执行或托管某些应用的访问等。类似地,存储控制器630可以建立订阅以访问分布式计算平台602的某些服务和资源。

如图所示,合并有和/或合并到多种计算设备中的多种客户端(诸如客户端设备628和存储控制器630)可以通过一个或多个网络(诸如网络625)与分布式计算平台602通信。例如,客户端可以合并有和/或合并到至少部分由一个或多个计算设备实现的客户端应用(例如,软件)中。

合适的计算设备的示例包括个人计算机、服务器计算机、台式计算机、节点、存储服务器、存储控制器、膝上型计算机、笔记本计算机、平板计算机或个人数字助理(pda)、智能电话、手机、和合并有一个或多个计算设备组件的消费者电子设备,诸如一个或多个电子处理器、微处理器、中央处理器(cpu)或控制器。合适的网络的示例包括利用有线和/或无线通信技术的网络、以及根据任何合适的联网和/或通信协议(例如,互联网)进行操作的网络。在涉及交付客户支持服务的用例中,标注的计算设备表示客户支持交付过程的终点,即,消费者的设备。

分布式计算平台602(诸如多租户业务数据处理平台或云计算环境)可以包括多个处理层,包括用户界面层604、应用服务器层606和数据存储层608。用户界面层604可以维护多个用户界面,包括图形用户界面和/或基于网络的界面。用户界面可以包括用于服务的服务用户界面610,以提供对该服务的客户端(例如,“租户”)的应用和数据的访问,用户界面还可以包括已经根据用户的特定要求而被专门化/定制的一个或多个用户界面,其可以经由一个或多个api进行访问。

服务用户界面610可以包括使得租户能够管理租户对由分布式计算平台602提供的功能和能力(诸如访问数据、引起特定数据处理操作的执行等)的参与的组件。每个处理层可以用一组计算机、诸如存储虚拟机或存储虚拟服务器等虚拟化计算环境、和/或包括计算机服务器和处理器的计算机组件来实现,并且可以执行由软件应用或指令集的执行而确定的各种功能、方法、过程或操作。

数据存储层608可以包括一个或多个数据存储库,其可以包括服务数据存储库620和一个或多个客户端数据存储库。每个客户数据存储库可以包含租户特定数据,该数据用作提供一系列租户特定业务和存储服务或功能的一部分,包括但不限于erp、crm、电子商务、人力资源管理、工资单、存储服务等。数据存储库可以用任何合适的数据存储技术实现,包括基于结构化查询语言(sql)的关系数据库管理系统(rdbms)、由操作系统托管的文件系统、对象存储等。

根据本发明的一个实施例,分布式计算平台602可以是由实体操作以便向多个租户提供一组业务相关应用、数据存储和功能的多租户和服务平台。这些应用和功能可以包括企业用来管理其运营的各个方面的应用和功能。例如,应用和功能可以包括提供对商业信息系统的基于网络的访问,从而允许具有浏览器和互联网或内联网连接的用户查看、输入、处理或修改某些类型的商业信息或任何其他类型的信息。

在一个实施例中,所描述的方法和/或其等同物可以用计算机可执行指令来实现。因此,在一个实施例中,非暂态计算机可读/存储介质配置有算法/可执行应用的所存储的计算机可执行指令,该指令在由(多个)机器执行时,使得(多个)机器(和/或相关组件)执行该方法。示例机器包括但不限于处理器、计算机、在云计算系统中操作的服务器、在软件即服务(saas)架构中配置的服务器、智能电话等。在一个实施例中,计算设备用被配置为执行任何公开的方法的一种或多种可执行算法来实现。

应当理解,本文中描述的进程、架构和/或过程可以在硬件、固件和/或软件中被实现。还应当理解,本文中阐述的规定可以适用于体现为或包括存储系统的任何类型的专用计算机(例如,文件主机、存储服务器和/或存储服务设备)和/或通用计算机,包括独立计算机或其部分。此外,本文中的教导可以被配置为各种存储系统架构,包括但不限于网络附接的存储环境、和/或直接附接到客户端或主机的存储区域网络和磁盘组件。因此,除了被配置为执行存储功能并且与其他设备或系统相关联的任何子系统,存储系统应当被广泛地包括这样的布置。

在一些实施例中,本公开中描述和/或示出的方法可以全部或部分地在计算机可读介质上实现。计算机可读介质可以包括被配置为实现本文中提出的一种或多种方法的处理器可执行指令,并且可以包括用于存储该数据的任何机制,该机制之后可以由计算机系统读取。计算机可读介质的示例包括(硬)驱动器(例如,经由网络附接存储(nas)可访问)、存储区域网络(san)、易失性和非易失性存储器,诸如只读存储器(rom)、随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)和/或闪存、光盘只读存储器(cd-rom)、cd-r、可重写光盘(cd-rw)、dvd、盒式磁带、磁带、磁盘存储、光学或非光学数据存储设备、和/或可以用于存储数据的任何其他介质。

尽管已经用特定于结构特征或方法动作的语言描述了主题,但是应当理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。而是,上述特定特征和动作被公开作为实现至少一些权利要求的示例形式。

本文中提供来实施例的各种操作。描述某些或所有操作的顺序不应当解释为暗示这些操作必定与顺序有关。鉴于本说明书的益处,将理解替代排序。此外,可以理解,并非在本文中提供的每个实施例中必须存在所有操作。而且,应当理解,在一些实施例中并非所有操作都是必需的。

此外,使用标准应用或工程技术以产生软件、固件、硬件或其任何组合以控制计算机以实现所公开的主题,可以将所要求保护的主题实现为方法、装置或制品。本文中使用的术语“制品”旨在涵盖从任何计算机可读设备、载体或介质可访问的计算机应用。当然,可以在不背离所要求保护的主题的范围或精神的情况中对该配置进行很多修改。

如在本申请中使用的,术语“组件”、“模块”、“系统”、“接口”等通常旨在指代计算机相关实体,其是硬件、硬件和/或硬件的组合、软件或执行软件。例如,组件包括在处理器上运行的进程、处理器、对象、可执行文件、执行线程、应用或计算机。作为说明,在控制器上运行的应用和控制器都可以是组件。驻留在进程或执行线程内的一个或多个组件和组件也可以位于一个计算机上,或者分布在在两个或更多个计算机之间。

此外,“示例性”在本文中用来表示用作示例、实例、说明等,并且不一定是有利的。如在本申请中使用的,“或”旨在表示包括性的“或”而不是排他性的“或”。另外,在本申请中使用的“一个(a)”和“一个(an)”通常被解释为意指“一个或多个”,除非另有说明或从上下文中清楚地指向单数形式。而且,a和b等中的至少一个通常是指a或b和/或a和b两者。此外,如果使用“包括(includes)”、“具有(having)”、“具有(has)”、“具有(with)”或其变体,则这样的术语旨在以类似于术语“包括(comprising)”的方式是包括性的。

在不脱离所要求保护的主题的范围或精神的情况中,可以对本公开进行很多修改。除非另有说明,否则“第一”、“第二”等均并非暗示时间方面、空间方面、顺序等。相反,这样的术语仅用作特征、元素、项目等的标识符、名称等。例如,第一信息集和第二信息集通常对应于信息集a和信息集b或两个不同或两个相同的信息集或同一信息集。

此外,尽管已经关于一个或多个实现示出和描述了本公开,但是基于对本说明书和附图的阅读和理解,本领域其他技术人员将能够想到等同的变更和修改。本公开包括所有这样的修改和变更,并且仅由所附权利要求的范围限制。特别是关于上述组件(例如,元素、资源等)执行的各种功能,除非另有说明,否则用于描述这样的组件的术语旨在与执行所描述的组件的指定功能的任何组件对应(例如,在功能上等效),即使在结构上不等同于所公开的结构。另外,虽然可能已经仅针对几种实现中的一种实现公开了本公开的特定特征,但是根据任何给定或特定应用可能期望的和有利的,这种特征可以与其他实现的一个或多个其他特征组合。

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