本申请要求于2015年11月23日提交的题为“用于文件访问协议存储的同步复制”的美国非临时专利申请no.14/948,653的优先权,其通过引用并入本文。
背景技术:
存储环境可以使用文件访问协议(诸如网络文件系统协议、公共互联网文件系统协议、虚拟化网络附接存储等)向客户端提供对数据的访问。在示例中,存储环境可以包括一个或多个存储控制器,其被配置为向客户端提供对这种存储控制器所拥有的存储设备内的数据的访问。例如,第一存储控制器可以向客户端提供对第一存储设备内的数据的访问。第二存储控制器可以向客户端提供对第二存储设备内的数据的访问。
可以在第一存储控制器和第二存储控制器之间建立同步复制关系,其可以在存储控制器和/或存储设备发生故障或变得不可用的情况下,改善数据丢失保护并减轻客户端服务中断。例如,数据可以从第一存储设备被复制到第二存储设备(例如,复制到第二存储控制器可访问但最初由第一存储控制器拥有的存储设备),使得第二存储控制器可以在第一存储控制器发生故障的情况下,向客户端提供对第二存储设备内的复制数据的故障转移访问。在同步复制的示例中,目标为第一存储设备的写入请求可以被分割成要在第一存储设备上执行的本地写入请求和要在第二存储设备上执行的远程写入请求(例如,可以首先在第一存储设备上执行本地写入请求,并且在完成本地写入请求时,可以在第二存储设备上执行远程写入请求)。一旦本地写入请求和远程写入请求二者均完成,就可以将写入请求完成通知返回提供给发布写入请求的客户端。遗憾的是,同步复制可以在文件系统内实现,因此对文件系统的改变可能使同步复制不可操作。附加地,同步复制可能仅以粗粒度级别(诸如卷级别或存储控制器级别)可用,因此本该用于存储操作和客户端数据访问的资源可能会被与粗粒度同步复制相关联的开销不期望地消耗(例如,卷可以包括客户端想要复制的一些文件和客户端对复制它不感兴趣的其他文件,但是卷级别复制会复制卷的所有文件)。
附图说明
图1是示出根据本文中阐述的一个或多个提供的示例集群网络的组件框图。
图2是示出根据本文中阐述的一个或多个提供的示例数据存储系统的组件框图。
图3是示出了同步复制的示例性方法的流程图。
图4a是示出了用于同步复制的示例性计算设备的组件框图,其中接收数据文件操作。
图4b是示出了用于同步复制的示例性计算设备的组件框图,其中并行地本地实现数据文件操作并且远程实现复制数据文件操作。
图4c是示出了用于同步复制的示例性计算设备的组件框图,其中向主机提供数据文件操作完成通知。
图5a是示出了用于同步复制的示例性计算设备的组件框图,其中接收独立元数据文件操作。
图5b是示出了用于同步复制的示例性计算设备的组件框图,其中本地实现独立元数据文件操作。
图5c是示出了用于同步复制的示例性计算设备的组件框图,其中完成独立元数据文件操作的本地实现。
图5d是示出了用于同步复制的示例性计算设备的组件框图,其中远程实现复制独立元数据文件操作。
图5e是示出了用于同步复制的示例性计算设备的组件框图,其中完成复制独立元数据文件操作的远程实现。
图5f是示出了用于同步复制的示例性计算设备的组件框图,其中向主机提供独立元数据文件操作完成通知。
图6a是示出了用于同步复制的示例性计算设备的组件框图,其中接收从属元数据文件操作。
图6b是示出了用于同步复制的示例性计算设备的组件框图,其中使从属元数据文件操作排队,并且清空进行中的数据操作。
图6c是示出了用于同步复制的示例性计算设备的组件框图,其中执行从属元数据文件操作的本地实现。
图6d是示出了用于同步复制的示例性计算设备的组件框图,其中完成从属元数据文件操作的本地实现。
图6e是示出了用于同步复制的示例性计算设备的组件框图,其中远程实现复制从属元数据文件操作。
图6f是示出了用于同步复制的示例性计算设备的组件框图,其中完成复制从属元数据文件操作的远程实现。
图6g是示出了用于同步复制的示例性计算设备的组件框图,其中向主机提供从属元数据文件操作完成通知。
图7是根据本文中阐述的一个或多个提供的计算机可读介质的示例。
具体实施方式
现在参考附图描述所要求保护的主题的一些示例,其中相同的附图标记通常始终用于指代相同的元素。在以下描述中,为了解释的目的,阐述了很多具体细节以便提供对所要求保护的主题的理解。然而,可以很明显的是,可以在没有这些具体细节的情况下实践所要求保护的主题。本详细描述中的任何内容都不被认为是现有技术。
提供了用于同步复制的一种或多种技术和/或计算设备。可以为通过文件访问协议(诸如网络文件系统(nfs)协议、通用互联网文件系统(cifs)协议、虚拟化网络附接存储(nas)等)访问的存储提供同步复制。可以在文件系统上方提供同步复制,使得文件操作可以在到达文件系统之前被拦截,因此同步复制可以不受对文件系统的改变(例如,文件系统升级、从第一文件系统到第二文件系统的改变等)的影响,和/或同步复制可以是文件系统不可知的(例如,同步复制功能可以与各种类型的文件系统兼容)。
可以以相对更精细的粒度级别来提供同步复制,诸如针对单个文件、逻辑单元号(lun)、或者文件或lun的一致性组,其可以减少处理资源和网络带宽,否则处理资源和网络带宽将浪费在相对较粗糙的粒度同步上,该相对较粗糙的粒度同步同步比所期望的更多的文件、lun或数据(例如,卷级别同步可以复制卷的所有文件,而不管卷是否包括不需要复制的一些文件)。同步复制可以并行实现数据文件操作,实现独立于数据文件操作的独立元数据文件操作(例如,独立元数据文件操作被本地实现,然后在对客户端回应之前被远程实现),并且在实现依赖于这种数据文件操作的从属元数据文件操作之前,清空进行中的数据文件操作。
为了提供用于同步复制的上下文,图1示出了集群网络环境100或网络存储环境的实施例。然而,可以理解,本文中描述的技术等可以在集群网络环境100、非集群网络环境和/或各种其他计算环境(诸如桌面计算环境)内实现。也就是说,本公开(包括所附权利要求的范围)并不意在限于本文中提供的示例。应当理解,在相同或相似的组件、元件、特征、项目、模块等在后面的附图中示出但是先前关于先前的附图进行讨论的情况下,对其的类似(例如,冗余)讨论可以在描述后续附图时被省略(例如,为了简单和易于理解的目的)。
图1是示出可以实现本文中描述的技术和/或系统的至少一些实施例的示例集群网络环境100的框图。示例环境100包括通过集群结构106耦合的数据存储系统或存储站点102和104,集群结构106诸如被实现为专用infiniband的计算网络、光纤通道(fc)或以太网网络,集群结构106支持存储系统102和104(以及其中的一个或多个模块、组件等(诸如节点116和118))之间的通信。应当理解,尽管在图1中示出了两个数据存储系统102和104以及两个节点116和118,但是可以设想任何合适数目的这样的组件。在一个示例中,节点116、118包括为诸如主机设备108、110等客户端设备提供对存储在数据存储设备128、130内的数据的访问的存储控制器(例如,节点116可以包括主或本地存储控制器,并且节点118可以包括辅或远程存储控制器)。类似地,除非在本文中另外具体提供,否则对于在本文中引用和/或在附图中示出的其他模块、元件、特征、项目等也是如此。也就是说,本文中公开的特定数目的组件、模块、元件、特征、项目等并不意在以限制的方式来解释。
还将认识到,集群网络不限于任何特定地理区域,并且可以在本地和/或远程被集群。因此,在一个实施例中,集群网络可以跨越位于多个地理位置的多个存储系统和/或节点而分布;而在另一实施例中,集群网络可以包括驻留在相同地理位置(例如,在数据存储设备的单个现场机架中)的数据存储系统(例如,102、104)。
在所示示例中,一个或多个主机设备108、110(可以包括例如客户端设备、个人计算机(pc)、用于存储的计算设备(例如,存储服务器)以及其他计算机或外围设备(例如,打印机))通过存储网络连接112、114耦合到相应的数据存储系统102、104。网络连接可以包括例如利用网络附加存储(nas)协议(诸如通用因特网文件系统(cifs)协议或网络文件系统(nfs)协议等)来交换数据分组的局域网(lan)或广域网(wan)。说明性地,主机设备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、128连接,例如,以允许主机设备108、110访问存储在分布式存储系统中的数据。此外,网络模块120、122可以通过集群结构106提供与一个或多个其他组件的连接。例如,在图1中,第一节点116的第一网络模块120可以通过经由第二节点118的第二数据模块126发送请求来访问第二数据存储设备130。
数据模块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的数据存储设备128和节点118的数据存储设备130之间(例如,以文件或lun的粒度级别)同步数据文件操作和元数据文件操作。可以理解,同步复制可以针对和/或在任何类型的计算环境之间被实现,并且在物理设备(例如,节点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被通知在现有目录树中与新数据存储设备相关联的新文件将被存储在哪里。这通常被称为“挂载”文件系统。
在示例数据存储系统200中,存储器206可以包括由处理器204和适配器210、212、214可寻址用于存储相关的软件应用代码和数据结构的存储位置。例如,处理器204和适配器210、212、214可以包括被配置为执行软件代码和操纵数据结构的处理元件和/或逻辑电路。部分通常驻留在存储器206中并且由处理元件执行的操作系统208通过调用存储操作以支持由存储系统实现的文件服务等来功能性地组织存储系统。对于本领域技术人员来说很清楚的是,可以使用包括各种计算机可读介质的其他处理和存储机制来存储和/或执行与本文中描述的技术有关的应用指令。例如,操作系统也可以利用一个或多个控制文件(未示出)来帮助虚拟机的提供。
网络适配器210包括需要通过计算机网络216将数据存储系统200连接到主机设备205的机械、电气和信令电路,计算机网络216可以包括点对点连接或共享介质等,诸如局域网。主机设备205(例如,图1的108、110)可以是被配置为执行应用的通用计算机。如上所述,主机设备205可以根据信息传递的客户端/主机模型来与数据存储系统200交互。
存储适配器214与在节点202上执行的操作系统208协作以访问由主机设备205请求的信息(例如,访问由网络存储控制器管理的存储设备上的数据)。信息可以存储在任何类型的可写入介质(诸如磁盘驱动器、闪存、和/或适用于存储信息的任何其他类似介质)的附接阵列上。在示例数据存储系统200中,信息可以存储在磁盘224、226、228上的数据块中。存储适配器214可以包括通过i/o互连布置耦合到磁盘的输入/输出(i/o)接口电路,i/o互连布置诸如存储区域网络(san)协议(例如,小型计算机系统接口(scsi)、iscsi、hyperscsi、光纤通道协议(fcp))。信息由存储适配器214检索,并且如果需要的话,在通过系统总线242转发到网络适配器210(和/或集群访问适配器212(如果发送到集群中的另一节点))之前由一个或多个处理器204(或存储适配器214本身)处理,其中信息被格式化为数据分组并且通过网络连接216返回到主机设备205(和/或返回到通过集群结构215附接到集群的另一节点)。
在一个实施例中,阵列218、220、222上的信息存储可以被实现为一个或多个存储“卷”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、q树235和文件240。例如,这些特征等(但是特别体地是luns)允许其中存储有数据的不同的存储器位置被标识并且被分组为数据存储单元。这样,lun238可以被表征为构成虚拟磁盘或驱动器,在虚拟磁盘或驱动器上虚拟卷内的数据被存储在聚合内。例如,lun通常被称为虚拟驱动器,使得它们从通用计算机模拟硬盘驱动器,而实际上它们包括存储在卷的各个部分中的数据块。
在一个实施例中,一个或多个数据存储设备234可以具有一个或多个物理端口,其中每个物理端口可以被指派目标地址(例如,scsi目标地址)。为了表示存储在数据存储设备上的相应卷,可以使用数据存储设备上的目标地址来标识一个或多个lun238。因此,例如,当节点202通过存储适配器214连接到卷230、232时,创建节点202与该卷下的一个或多个lun238之间的连接。
在一个实施例中,相应目标地址可以标识多个lun,使得目标地址可以表示多个卷。例如,可以实现为存储适配器214中的电路和/或软件或者实现为驻留在存储器206中并且由处理器204执行的可执行代码的i/o接口可以通过使用标识lun238的一个或多个地址来连接到卷230。
可以理解,可以针对数据存储系统200来实现同步复制。在示例中,可以在节点202(例如,第一存储控制器)和另一节点(例如,第二存储控制器)之间建立同步复制关系。以这种方式,可以在节点202和另一节点之间同步(例如,以文件或lun的粒度级别来同步)数据文件操作和元数据文件操作。可以理解,同步复制可以针对任何类型的计算环境和/或在任何类型的计算环境之间被实现,并且在物理设备(例如,节点202、主机205等)和/或云计算环境(例如,在节点202和/或主机205的远程)之间可以是可传送的。
同步复制的一个实施例由图3的示例性方法300来示出。在302处,可以在托管本地存储的第一存储控制器和托管远程存储的第二存储控制器之间建立同步复制关系。在示例中,可以根据灾难恢复关系来配置本地存储控制器(例如,在本地网络集群内被托管)和远程存储控制器(例如,在远程网络集群内被托管),使得幸存的存储控制器可以向客户端提供对与故障存储控制器相关联的复制数据的故障转移访问(例如,可以由幸存的存储控制器执行切换操作,以便获得包括复制数据的存储的所有权)。同步复制关系可以指定:用于提交给本地存储的指向本地存储控制器的文件操作(诸如数据文件操作(例如,写入操作)或元数据文件操作(例如,针对lun操作的设置属性、改变所有权操作、改变权限操作、创建操作、取消链接操作、调整大小操作或改变文件系统元数据的其他操作)将被同步复制到远程存储控制器,诸如用于提交给远程存储(例如,在将文件操作完成通知提供回发布文件操作的主机之前,提交给本地存储和远程存储二者以进行同步)。
在304处,可以接收针对本地存储的文件操作。文件操作可以对应于文件访问协议(例如,nfs、cifs、虚拟化nas等)。在示例中,可以在文件操作被递送到文件系统之前,拦截文件操作(例如,网络模块可以从主机接收包括文件操作的主机请求,并且拦截器可以拦截从网络模块传递到数据模块以供实现的文件操作)。可以评估配置高速缓存,以确定文件操作的目标对象是否被设置用于同步复制(例如,拦截器可以查询配置高速缓存,以确定由文件操作写入的文件是否被设置用于同步复制,因为可以以文件级别粒度或任何其他粒度级别来设置同步复制。)在306处,可以分割文件操作以创建针对远程存储的复制文件操作。例如,分割器可以响应于拦截器确定目标对象被设置用于同步复制而分割文件操作。
在308处,响应于文件操作对应于数据文件操作以及复制文件操作对应于复制数据文件操作(例如,文件操作是数据文件操作,诸如写入操作),数据文件操作可以在本地存储上本地实现,并行地,复制数据文件操作在远程存储上远程实现。因为可以接收并处理相对较大数目的数据文件操作,所以数据文件操作可以并行地实现(例如,被传递到本地存储控制器,以便本地提交给本地存储,并且被发送到远程存储控制器,用于远程提交,而不管是否已完成本地提交),这可以改善客户端响应时间,因为复制数据文件操作可以被发送到远程存储控制器以提交给远程存储,而无需首先等待本地存储控制器将数据文件操作成功提交给本地存储的确认。
在310处,响应于文件操作对应于与数据文件操作独立的(例如,独立于从进行中的跟踪日志所标识的进行中的数据文件操作)独立元数据文件操作以及复制文件操作对应于复制独立元数据文件操作,可以在本地存储上实现独立元数据文件操作。在示例中,独立元数据文件操作可以被定序为与数据文件操作并行,因为独立元数据文件操作不依赖于数据文件操作(例如,所有权或访问权限的改变可以不依赖于进行中的数据文件操作)。响应于接收到针对独立元数据文件操作的完成通知,可以在远程存储上实现复制独立元数据文件操作(例如,可以避免复制独立元数据文件操作被发送到远程存储控制器,直到接收到完成通知)。
响应于接收到针对独立元数据文件操作的完成通知以及针对复制独立元数据文件操作的远程完成通知,文件操作完成通知可以被发送到提交文件操作的主机。以这种方式,可以针对与数据文件操作独立的元数据文件操作来实现同步复制,使得一旦本地存储控制器和远程存储控件二者均已经成功完成元数据文件操作,并且由此第一存储和第二存储处于同步状态,就通知主机成功完成元数据文件操作。
在312处,响应于文件操作对应于依赖于数据文件操作(例如,进行中的数据文件操作)的从属元数据文件操作以及复制文件操作对应于复制从属元数据文件操作,可以使从属元数据文件操作排队。例如,从属元数据文件操作可以包括文件从第一大小到第二大小的文件大小调整操作。文件大小调整操作可以关于对第一大小和第二大小之间的偏移的待发生写入操作互相依赖,其否则可能导致在本地存储和远程存储之间文件的文件大小上的差异(例如,待发生写入操作可以覆盖文件大小调整操作)。以这种方式,依赖于未清空的进行中的数据文件操作的从属元数据文件操作可以在队列内排队。相应地,在执行从属元数据文件操作之前,可以清空(例如,完成)进行中的数据文件操作。响应于进行中的数据文件操作被清空,可以使从属元数据文件操作和/或其他排队的从属元数据文件操作离队,以在本地存储上实现(例如,并且同步复制到远程存储)。
以这种方式,可以在本地存储上实现从属元数据文件操作。响应于接收到针对从属元数据文件操作的完成通知,可以在远程存储上实现复制从属元数据文件操作。当正在实现使从属元数据文件离队的操作时,在离队的从属元数据文件操作被完成和/或同步复制到远程存储之后,使传入数据文件操作排队,以供后续实现。响应于接收到针对从属元数据文件操作的完成通知以及针对复制从属元数据文件操作的远程完成通知,文件操作完成通知可以被发送到提交文件操作的主机。
在示例中,元数据文件操作可以相对于彼此串行地实现。例如,可以接收第一元数据文件操作和第二元数据文件操作。可以相对于第一元数据文件操作串行地实现第二元数据文件。以这种方式,针对在相同或相似时间到达的元数据文件操作,可以在本地存储和远程存储之间维持数据一致性。
在示例中,文件操作可以对应于单个统一互联网文件访问协议(例如,可以使用线上协议(over-the-wireprotocol)接收spinnp文件操作)。例如,单个统一互联网文件访问协议可以对应于tcp/ip上的会话层,并且具有用于在本地存储和远程存储之间的复制的协议。相应地,文件操作可以被隧道传输(例如,实际客户端操作的有效载荷可以被隧道传输)到单个复制接口中(例如,针对各种客户端操作的单个包装器)以供实现。以这种方式,不同类型的文件操作可以被映射到单个包装器中以供实现,而不是针对不同的文件操作类型具有单独的一对一映射,这可以提高效率。
图4a至图4c示出了可以由系统400实现同步复制的网络存储环境的示例。如图4a所示出的,可以配置本地存储控制器406(例如,在定位在第一建筑物、城市或位置内的第一存储集群内被托管),以向主机402(诸如客户端设备)提供对存储在本地存储408内的数据的访问。本地存储控制器406可以能够通过网络410与远程存储控制器412(例如,在定位在第二建筑物、城市或位置内的第二存储集群内被托管)通信。
本地存储控制器406和远程存储控制器412可以被配置为灾难恢复搭档,使得幸存的存储控制器可以响应于标识另一存储控制器的故障而执行切换操作(例如,以获得由故障存储控制器拥有的存储设备的所有权),以便代替故障存储控制器向客户端提供对复制数据的故障转移访问。以这种方式,可以减少客户端数据访问中断。
可以在本地存储控制器406和远程存储控制器412之间(诸如在本地存储408和远程存储414之间)建立同步复制关系。同步复制关系可以指定:针对本地存储408的数据文件操作和/或元数据文件操作将既在本地存储408处实现,又被复制到远程存储414,诸如在将完整的消息提供回主机402之前。可以以相对较精细的粒度级别(诸如在每个文件或lun的基础上)来指定同步复制关系。
在示例中,如图4a所示出的,数据文件操作404可以由本地存储控制器406接收。图4b示出了由本地存储控制器406和远程存储控制器412并行实现的数据文件操作404。例如,数据文件操作404可以由本地存储控制器406在本地实现422。数据文件操作404可以被复制420到远程存储控制器412,作为由远程存储控制器412远程实现424的复制数据文件操作。在示例中,数据文件操作404的本地实现422和复制数据文件操作的远程实现424可以并行执行(例如,复制数据文件操作可以被发送到远程存储控制器412以用于远程实现424,而不管本地实现422是否完成)。如图4c所示出的,一旦本地实现422完成430并且远程实现完成432,数据文件操作完成通知450就可以被发送到主机402。
图5a至图5f示出了网络存储环境的示例,针对该网络存储环境,同步复制可以由系统500实现。如图5a所示出的,本地存储控制器506(例如,在定位在第一位置内的第一存储集群内被托管)可以被配置为向主机502提供对存储在本地存储器508内的数据的访问。本地存储控制器506可以能够通过网络510与远程存储控制器512(例如,在定位在第二位置内的第二存储集群内被托管)通信。
本地存储控制器506和远程存储控制器512可以被配置为灾难恢复搭档,使得幸存的存储控制器可以响应于标识另一存储控制器的故障而执行切换操作(例如,以获得由故障存储控制器拥有的存储设备的所有权),以便代替故障存储控制器向客户端提供对复制数据的故障转移访问。以这种方式,可以减少客户端数据访问中断。
可以在本地存储控制器506和远程存储控制器512之间(诸如在本地存储508和远程存储514之间)建立同步复制关系。同步复制关系可以指定:针对本地存储508的数据文件操作和/或元数据文件操作将既在本地存储508上实现,又被复制到远程存储514,诸如在将完整消息提供回主机502之前。可以以相对较精细的粒度级别(诸如在每个文件或lun的基础上)来指定同步复制关系。
在示例中,如图5a所示出的,独立元数据文件操作504可以由本地存储控制器506接收。独立元数据文件操作504可以独立于进行中的数据文件操作(例如,尚未对主机502回应为完成的数据文件操作),因此独立元数据文件操作504可以并行于以下操作而被实现:本地存储控制器506本地实现516进行中的数据文件操作和/或远程存储控制器512远程实现518复制数据文件操作。在示例中,独立元数据文件操作504可以对应于存储容器的所有权的改变、访问权限的改变、和/或对文件系统元数据的其他改变,这些改变与进行中的数据文件操作不相互依赖。图5b示出了独立元数据文件操作504在本地存储器508上被本地实现520,其与进行中的数据文件操作的本地实现516并行。
图5c示出了本地存储控制器506生成针对独立元数据文件操作504在本地存储508上的本地实现520的完成通知530。相应地,如图5d所示出的,复制独立元数据文件操作(例如,独立元数据文件操作504可能已经被分割器分割为复制独立元数据文件操作)可以基于完成通知530而被发送到远程存储控制器512以用于远程实现540。图5e示出了远程存储控制器512生成针对复制独立元数据文件操作在远程存储514上的远程实现540的第二完成通知550。以这种方式,基于独立元数据文件操作504在本地存储508上的本地实现520以及复制独立元数据文件操作在远程存储514上的远程实现540,远程存储514的文件系统元数据可以镜像本地存储508的文件系统元数据。如图5f所示出的,一旦独立元数据文件操作504和复制独立元数据文件操作完成,独立元数据文件操作完成通知560被发送到主机502。
图6a至图6g示出了网络存储环境的示例,针对该网络存储环境,同步复制可以由系统600实现。如图6a所示出的,本地存储控制器606(例如,在定位在第一位置内的第一存储集群内被托管)可以被配置为向主机602提供对存储在本地存储器608内的数据的访问。本地存储控制器606可以能够通过网络610与远程存储控制器612(例如,在定位在第二位置内的第二存储集群内被托管)通信。
本地存储控制器606和远程存储控制器612可以被配置为灾难恢复搭档,使得幸存的存储控制器可以响应于标识另一存储控制器的故障而执行切换操作(例如,以获得由故障存储控制器拥有的存储设备的所有权),以便代替故障存储控制器向客户端提供对复制数据的故障转移访问。以这种方式,可以减少客户端数据访问中断。
可以在本地存储控制器606和远程存储控制器612之间(诸如在本地存储608和远程存储614之间)建立同步复制关系。同步复制关系可以指定:针对本地存储608的数据文件操作和/或元数据文件操作将既在本地存储608上实现,又被复制到远程存储614,诸如在将完整消息提供回主机602之前。可以以相对较精细的粒度级别(诸如在每个文件或lun的基础上)来指定同步复制关系。
在示例中,如图6a所示出的,从属元数据文件操作604可以由本地存储控制器606接收。从属元数据文件操作604可以依赖于进行中的数据文件操作(例如,尚未对主机602回应为完成的数据文件操作),因此不能与进行中的数据文件操作来并行实现,因为可以出现不确定性结果(例如,在本地存储608和远程存储614之间可能出现数据和/或元数据之间的不一致)。例如,基于以下二者发生的次序:进行中的数据文件操作被写入文件,以及缩小文件大小的从属元数据文件操作(例如,从属元数据文件操作可以被进行中的数据文件操作覆盖,其中进行中的数据文件操作指向文件的原始大小和新大小之间的偏移),可以出现文件的文件大小上的差异。相应地,在执行从属元数据文件操作之前,清空进行中的数据文件操作。
图6b示出了从属元数据文件操作604被排队到队列620中。由本地存储控制器606本地实现616的进行中的数据文件操作和/或由远程存储控制器612远程实现618的复制进行中的数据文件操作可以被清空622(例如,完成)。如图6c所示出的,一旦进行中的数据文件操作被完全清空616a并且复制数据文件操作被完全清空618a,则排队的从属元数据文件操作604可以从队列620离队,并且由本地存储控制器606在本地存储608上本地实现630。可以使新的传入数据文件操作632排队634,同时从属元数据文件操作604被本地实现630。
图6d示出了本地存储控制器606生成针对从属元数据文件操作604在本地存储608上的本地实现630的完成通知640。相应地,如图6e所示出的,复制从属元数据文件操作(例如,从属元数据文件操作604可以已经被分割器分割为复制从属元数据文件操作)可以基于完成通知640而被发送到远程存储控制器612,以用于远程实现650。图6f示出了远程存储控制器612生成针对复制从属元数据文件操作在远程存储器614上的远程实现650的完成通知660。以这种方式,基于从属元数据文件操作604在本地存储608上的本地实现630以及复制从属元数据文件操作在远程存储614上远程实现650,远程存储614的文件系统元数据可以镜像本地存储608的文件系统元数据。
如图6g所示出的,一旦从属元数据文件操作604和复制从属元数据文件操作完成,从属元数据文件操作完成通知670就可以被发送到主机602。在完成排队的从属元数据文件操作之后,可以恢复本地进行中的数据文件操作实现616和/或远程进行中的数据文件操作实现618。
又一实施例涉及一种包括被配置为实现本文中呈现的一种或多种技术的处理器可执行指令的计算机可读介质。以这些方式设计的计算机可读介质或计算机可读设备的示例实施例在图7中示出,其中实现700包括其上编码有计算机可读数据706的计算机可读介质708,诸如cd-r、dvd-r、闪存驱动器、硬盘驱动器的盘片等。这些计算机可读数据706(诸如包括零或一中的至少一项的二进制数据)又包括被配置为根据本文中阐述的一个或多个原理进行操作的一组计算机指令704。在一些实施例中,例如,处理器可执行计算机指令704被配置为执行方法702,诸如图3的示例性方法300中的至少一些。在一些实施例中,例如,处理器可执行指令704被配置为实现一种系统,诸如图4a至图4c的示例性系统400中的至少一些、图5a至图5f的示例性系统500中的至少一些、和/或图6a至图6g的示例性系统600中的至少一些。预期很多这样的计算机可读介质根据本文中呈现的技术进行操作。
应当理解,本文中描述的处理、架构和/或过程可以用硬件、固件和/或软件来实现。还将意识到,本文中阐述的提供可以适用于任何类型的专用计算机(例如,文件主机、存储服务器和/或存储服务设备)和/或通用计算机,包括独立计算机或其部分,其被实施为或包括存储系统。此外,本文中的教导可以被配置为各种存储系统架构,包括但不限于直接附接到客户端或主机的网络附加存储环境和/或存储区域网络和磁盘组件。因此,除了被配置为执行存储功能并且与其他设备或系统相关联的任何子系统之外,存储系统应当被广泛地采用以包括这样的布置。
在一些实施例中,本公开中描述和/或示出的方法可以全部或部分地在计算机可读介质上实现。计算机可读介质可以包括被配置为实施本文中呈现的方法中的一个或多个的处理器可执行指令,并且可以包括用于存储此后可以由计算机系统读取的这些数据的任何机制。计算机可读介质的示例包括(硬)驱动器(例如,经由网络附加存储器(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或者两个不同的或两个相同的信息集合或者相同的信息集合。
而且,尽管已经关于一个或多个实现示出和描述了本公开,但是基于对本说明书和附图的阅读和理解,本领域其他技术人员将会想到等同的改变和修改。本公开包括所有这样的修改和改变,并且仅由所附权利要求的范围来限制。特别是关于由上述组件(例如,元件、资源等)执行的各种功能,除非另有说明,否则用于描述这样的组件的术语旨在对应于执行所描述的组件的特定功能的任何组件(例如,功能上等同),尽管在结构上不等同于所公开的结构。此外,尽管本公开的特定特征可能已经关于若干实现中的仅一个被公开,但是这样的特征可以与其他实现的一个或多个其他特征相组合,这对于任何给定或特定应用可能是期望和有利的。