首页> 中国专利> 用于存储区域网络协议存储的同步复制

用于存储区域网络协议存储的同步复制

摘要

提供了一个或多个技术和/或计算设备以用于实现同步复制。例如,可以在托管本地存储装置的第一存储控制器与托管远程存储装置的第二存储控制器之间建立同步复制关系(例如,可以按照文件、逻辑单元号(LUN)或任何其他级别的粒度来指定复制)。数据操作和卸载操作可以在本地存储装置和远程存储装置上被并行地实现。错误处理操作可以在本地存储装置上被实现,并且作为尽力服务在远程存储装置上被并行地实现,并且协调可以被执行以从尽力服务的并行实现标识任何数据分歧。存储区域网络(SAN)操作可以在本地存储装置上被实现,并且在本地完成时可以在远程存储装置上被远程地实现。

著录项

  • 公开/公告号CN108604164A

    专利类型发明专利

  • 公开/公告日2018-09-28

    原文格式PDF

  • 申请/专利权人 NETAPP股份有限公司;

    申请/专利号CN201680080264.X

  • 申请日2016-11-22

  • 分类号G06F3/06(20060101);G06F11/20(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人王茂华;辛鸣

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 06:38:41

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-02-21

    授权

    授权

  • 2018-10-26

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20161122

    实质审查的生效

  • 2018-09-28

    公开

    公开

说明书

相关申请的交叉引用

本申请要求于2015年11月27日提交的、名称为“SYNCHRONOUS REPLICATION FORSTORAGE AREA NETWORK PROTOCOL STORAGE”的美国非临时专利申请第14/953,048号的优先权,其通过引用并入本文。

背景技术

存储环境可以使用存储区域网络(SAN)协议、诸如通过小型计算机系统接口(SCSI)、互联网SCSI(iSCIS)、光纤信道协议(FCP)等来向客户端提供对数据的访问。在一个示例中,存储环境可以包括被配置为向客户端提供对由这样的存储控制器拥有的存储设备内的数据的访问的一个或多个存储控制器。例如,第一存储控制器可以向客户端提供对第一存储设备内的数据的访问。第二存储控制器可以向客户端提供对第二存储设备内的数据的访问。

可以在第一存储控制器与第二存储控制器之间建立同步复制关系,这可以在存储控制器和/或存储设备失效或变得不可用的情况中改善数据丢失保护并且减轻服务的客户端中断。例如,可以将数据从第一存储设备复制到第二存储设备(例如,复制到第二存储控制器可访问但是第一存储控制器最初拥有的存储设备),从而使得第二存储控制器可以在第一存储控制器发生故障的情况中向客户端提供对辅助存储设备内的复制数据的故障转移访问。在同步复制的示例中,以第一存储设备作为目标的写入请求可以被拆分成要在第一存储设备上被执行的本地写入请求和要在第二存储设备上被执行的远程写入请求(例如,可以首先在第一存储设备上执行本地写入请求,并且在本地写入请求完成时,可以在第二存储设备上执行远程写入请求)。一旦本地写入请求和远程写入请求两者完成,写入请求完成通知就可以被提供回发出写入请求的客户端。在一个示例中,本地写入请求和远程写入请求可以并行地被执行。不幸的是,同步复制可以在文件系统内被实现,并且因此对文件系统的改变可能使同步复制不可操作。附加地,同步复制可能仅在粗粒度级别(诸如卷级别或存储控制器级别)可用,并且因此否则可以被用于存储操作和客户端数据访问的资源可能不合需要地被与粗粒度同步复制相关联的开销所消耗(例如,卷可以包括客户端想要复制的一些文件和客户端对其复制不感兴趣的其他文件,但是卷级别的复制可能会复制卷的所有文件)。

附图说明

图1是示出根据本文中阐述的一个或多个规定的示例集群网络的组件框图。

图2是示出根据本文中阐述的一个或多个规定的示例数据存储系统的组件框图。

图3是示出同步复制的示例性方法的流程图。

图4A是示出用于同步复制的示例性计算设备的组件框图,其中接收到数据操作。

图4B是示出用于同步复制的示例性计算设备的组件框图,其中并行地,数据操作是本地实现的并且复制数据操作是远程实现的。

图4C是示出用于同步复制的示例性计算设备的组件框图,其中数据操作完成通知被提供给主机。

图5A是示出用于同步复制的示例性计算设备的组件框图,其中接收到卸载操作。

图5B是示出用于同步复制的示例性计算设备的组件框图,其中并行地,卸载操作是本地实现的并且复制卸载操作是远程实现的。

图5C是示出用于同步复制的示例性计算设备的组件框图,其中卸载操作完成通知被提供给主机。

图6A是示出用于同步复制的示例性计算设备的组件框图,其中接收到存储区域网络操作。

图6B是示出用于同步复制的示例性计算设备的组件框图,其中存储区域网络操作是本地实现的。

图6C是示出用于同步复制的示例性计算设备的组件框图,其中存储区域网络操作的本地实现完成。

图6D是示出用于同步复制的示例性计算设备的组件框图,其中复制存储区域网络操作是远程实现的。

图6E是示出用于同步复制的示例性计算设备的组件框图,其中复制存储区域网络操作的远程实现完成。

图6F是示出用于同步复制的示例性计算设备的组件框图,其中存储区域网络操作完成通知被提供给主机。

图7A是示出用于同步复制的示例性计算设备的组件框图,其中接收到错误处理操作。

图7B是示出用于同步复制的示例性计算设备的组件框图,其中错误处理操作是本地实现的,并且复制错误处理操作是作为尽力服务并且与错误处理操作并行地远程实现的。

图7C是示出用于同步复制的示例性计算设备的组件框图,其中错误处理操作成功通知被提供给主机。

图7D是示出用于同步复制的示例性计算设备的组件框图,其中执行本地存储装置和远程存储装置之间的协调。

图8是根据本文中阐述的一个或多个规定的计算机可读介质的示例。

具体实施方式

现在参考附图描述所要求保护的主题的一些示例,其中相同的附图标记通常始终用于指代相同的元素。在以下描述中,为了说明的目的,阐述了很多具体细节以便提供对所要求保护的主题的理解。然而,可以很明显的是,可以在没有这些具体细节的情况中实践所要求保护的主题。本详细描述中的任何内容都不被认为是现有技术。

提供了用于同步复制的一个或多个技术和/或计算设备。可以为通过存储区域网络(SAN)协议(诸如使用SCSI、iSCSI、FCP等)可访问的存储器提供同步复制。可以在文件系统之上提供同步复制,从而使得操作(例如,带内SCSI操作(诸如写入、取消映射、拷贝卸载等);带外元数据操作(诸如逻辑单元号码(LUN)修改、调节大小等)可以在到达文件系统之前被拦截,并且因此同步复制可以不受文件系统的变化(例如,文件系统升级、从第一文件系统到第二文件系统的变化等)的影响,和/或可以是文件系统不可知的(例如,同步复制功能可以与各种类型的文件系统兼容)。

同步复制可以按照相对较精细的粒度级别而被提供,诸如用于单个文件、LUN、或者文件或LUN的一致性组,这可以减少否则将在与期望的相比同步更多的文件、LUN或数据的相对较粗粒度的同步上浪费的处理资源和网络带宽(例如,卷级别同步可以复制卷的所有文件,而不管卷是否包括不需要复制的一些文件)。可以理解,在其中针对SAN协议实现同步复制的一个示例中,可以按照LUN粒度提供复制。同步复制可以并行地实现数据操作(例如,写入操作),彼此并行地并且与飞行中(inflight)文件操作串行化地实现卸载操作(例如,拷贝卸载操作),在本地存储装置上并且作为尽力服务(best effort)在远程存储装置上实现错误处理操作(例如,中止任务、任务设置、LUN重置、目标重置等),并且针对同一目标存储对象顺序地并且串行地实现SAN控制操作(例如,设置的LUN大小、空间预留或对存储对象元数据的其他改变)(例如,针对同一LUN的2个SAN控制操作的串行实现)。

为了提供用于同步复制的上下文,图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)协议等)或存储区域网络(SAN)协议(诸如互联网小型计算机系统接口(iSCSI)或光纤通道(FC)协议)来交换数据分组的局域网(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(例如,第二存储控制器)之间建立同步复制关系。以这种方式,数据操作、卸载操作、错误处理操作、SAN控制操作和/或其他操作和用例(例如,数据访问、控制和元数据;诸如文件、SAN逻辑单元或对象等各种存储容器上的卸载和/或错误处理操作)可以在节点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)和/或非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、QTREE235、对象和文件240。例如,这些特征(但是特别体地是LUNS)尤其使得其中存储有数据的不同的存储器位置能够被标识并且能够被分组为数据存储单元。这样,LUN 238可以被表征为构成集合内虚拟卷内的数据被存储在其上的虚拟磁盘或驱动器。例如,LUN通常被称为虚拟驱动器,从而使得它们从通用计算机模拟硬盘驱动器,而实际上它们包括存储在卷的各个部分中的数据块。

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

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

可以理解,可以为数据存储系统200实现同步复制。在一个示例中,可以在节点202(例如,第一存储控制器)与另一节点(例如,第二存储控制器)之间建立同步复制关系。以这种方式,数据操作、卸载操作、错误处理操作、SAN控制操作和/或其他操作和用例(例如,数据访问、控制和元数据;诸如文件、SAN逻辑单元或对象等各种存储容器上的卸载和/或错误处理操作)可以在节点202与其他节点之间同步(例如,在文件或LUN粒度级别同步)。可以理解,同步复制可以针对和/或在任何类型的计算环境之间实现,并且可以在物理设备(例如,节点202、主机设备205等)和/或云计算环境(例如,远离节点202和/或主机设备205)之间可转移。

同步复制的一个实施例由图3的示例性方法300示出。可以在托管本地存储装置的第一存储控制器与托管远程存储装置的第二存储控制器之间建立同步复制关系。在一个示例中,第一存储控制器(例如,托管在本地网络集群内)和第二存储控制器(例如,托管在远程网络集群内)可以根据灾难恢复关系而被配置,从而使得存活的存储控制器可以向客户端提供对与故障存储控制器相关联的复制数据的故障转移访问(例如,可以由存活的存储控制器执行切换操作以便获取包括复制数据的存储器的所有权)。同步复制关系可以指定涉及第一存储控制器的操作,诸如数据操作(例如,写入操作)、卸载操作(例如,拷贝卸载操作)、错误处理操作(例如,中止任务、任务设置、LUN重置、目标重置等)、和/或SAN控制操作(例如,对LUN元数据或其他存储对象元数据的修改,诸如LUN大小改变或LUN空间预留),用于提交给本地存储装置以被同步地复制到第二存储控制器,诸如用于提交给远程存储装置(例如,在将操作完成通知提供回发出操作的主机之前,提交给本地存储装置和远程存储装置两者以用于同步)。

在302处,可以接收本地存储装置的操作。操作可以对应于存储区域网络(SAN)协议。在一个示例中,操作可以在操作被递送到文件系统之前被拦截(例如,网络模块可以从主机接收包括操作的主机请求,并且拦截器可以在操作正在从网络模块传递到数据模块用于实现时拦截操作)。可以评估配置高速缓存以确定操作的目标对象是否被设置用于同步复制(例如,拦截器可以查询配置高速缓存以确定由操作写入的文件是否被设置用于同步复制,因为同步复制可以被设置为文件级别粒度或任何其他粒度级别)。在304处,可以拆分操作以创建远程存储装置的复制操作。例如,拆分器可以响应于拦截器确定目标对象被设置用于同步复制来拆分操作。在一个示例中,可以基于操作与修改对应(例如,写入操作、对元数据的改变等)来拆分操作,这可以通过排除读取操作到远程存储装置的不必要的复制来提高效率,因为这样的操作可以在本地存储装置上本地执行。

在306处,响应于操作与数据操作对应并且复制操作与复制数据操作对应(例如,操作是诸如写入操作等数据操作),与复制数据操作在远程存储装置上远程实现并行地,数据操作可以在本地存储装置上本地实现。因为可以接收和处理相对较大数目的数据操作,所以数据操作可以并行实现(例如,被传递到第一存储控制器用于本地提交给本地存储装置并且被发送到第二存储控制器用于远程提交,而不管本地提交是否完成),这可以改善客户端响应时间,因为可以将复制数据操作发送到第二存储控制器以提交给远程存储装置,而无需首先等待确认数据操作被第一存储控制器成功地提交到本地存储装置。

在308处,响应于操作与卸载操作对应并且与复制操作复制卸载操作对应,与复制卸载操作在远程存储装置上远程实现并行地,卸载操作可以在本地存储装置上本地实现。在一个示例中,将服务于卸载操作的复制引擎可以基于诸如同步复制关系等复制关系来自动选择,并且因此一致的服务级别可以被提供,其中用来完成卸载操作的时间将需要相似的时间量,而无论复制关系的状态如何。也就是说,类型复制卸载的卸载操作开始于根据一组标准来选择复制引擎。有一种被称为sis-clone的超高效复制引擎,它使用块共享并且避免读取和写入负载。对于同步复制,这一实现被折衷,其中如果复制关系正在返回InSync的过程中,则选择效率较低的复制引擎(称为“块复制引擎”),该引擎会添加读取和写入操作,并且是对优先于复制卸载操作的效率而考虑同步复制的建立的折衷。

在一个示例中,卸载操作可以对应于从应用服务器卸载到存储服务器使得应用服务器可以节约资源以进行基于读/写主机的复制操作和/或可以由存储服务器实现的其他操作的操作,诸如拷贝卸载操作。在一个示例中,卸载操作和/或复制卸载操作可以被序列化以确定性地控制任何交叠的飞行中写入操作的顺序。例如,可以标识与由卸载操作作为目标的区域交叠的飞行中写入操作(例如,可以查阅飞行中日志以将数据操作标识为飞行中写入操作)。飞行中写入操作可以被排队,直到卸载操作和/或复制卸载操作完成。在一个示例中,交叠的飞行中操作和卸载操作(例如,复制飞行中操作)可以由第二存储控制器排队,这对于更高等待时间的网络可能是有益的。响应于接收到卸载操作的完成通知和复制卸载操作的远程完成通知,操作完成通知可以被发送到提交操作的主机。

在310处,响应于操作与错误处理操作对应并且复制操作与复制错误处理操作对应,可以在本地存储装置上同步实现错误处理操作。例如,错误处理操作可以在不同于失败的数据操作的处理流程的处理流程内被实现,这可以降低错误处理操作也将失败的可能性(例如,中止错误处理操作可以中止飞行中写入,并且因此不会作为常规数据操作而被处理)。复制错误处理操作可以作为尽力服务的实现在远程存储装置上执行,其可以与错误处理操作的实现并行地执行。也就是说,尽力服务的实现可以表明操作的成功不依赖于复制错误处理操作的成功。也就是说,错误处理操作不会等待复制错误处理操作的完成,并且错误处理操作的成功与复制错误处理操作的完成状态无关。例如,响应于接收到错误处理操作的完成通知,操作完成通知可以被发送到提交错误处理操作的主机,而不管复制错误处理操作的状态,诸如不管复制错误处理操作已经完成、失败还是尚未完成。在一个示例中,错误处理操作可以映射到一组数据操作。该组数据操作可以被分组为被发送到远程存储装置用于实现的阵列,这可以减少网络带宽和/或提高效率,因为减少数目的消息通过网络被发送到远程存储装置。

在一个示例中,可以执行本地存储装置与远程存储装置之间的协调以解决本地存储装置与远程存储装置之间的数据分歧。也就是说,由于错误处理操作的并行拆分,操作可以在本地存储装置上完成并且在远程存储装置上中止,或者操作可以在本地存储装置上中止并且在远程存储装置上完成,从而导致本地存储装置与远程存储装置之间的分歧。在一个示例中,协调可以与当前数据操作一致地被执行。在执行协调的示例中,可以使用一组散列表来跟踪诸如数据操作等飞行中数据操作。操作可以使用与该组散列表内的散列表关联的标识符来标记,诸如其中数据操作使用散列表的标识符来标记。以这种方式,可以通过搜索由用于标记数据操作的标识符标识的散列表以获取用于执行协调的信息(例如,关于数据操作和/或复制是成功还是失败的信息;数据操作和复制作为目标的本地存储装置内的本地区域和远程存储装置内的远程区域,可以对本地区域和远程区域内的数据一致性进行评估;等)来快速地标识诸如要由错误处理操作中止的写入操作等数据操作和/或数据操作的复制。

在312处,响应于操作与存储区域网络(SAN)控制操作(例如,用于修改存储对象元数据(诸如LUN的元数据)的操作)对应并且复制操作与复制SAN控制操作对应,可以在本地存储装置上实现SAN控制操作。在一个示例中,SAN控制操作可以基于SAN控制操作和第二SAN控制操作以同一存储对象作为目标来与第二SAN控制操作串行地实现(例如,对于特定LUN,在任何给定时间可以实现仅1个SAN控制操作)。响应于接收到SAN控制操作的完成通知,可以在远程存储装置上实现复制SAN控制操作(例如,可以避免复制SAN控制操作被发送到第二存储控制器,直到接收到完成通知,因为SAN控制操作可以被顺序处理)。响应于接收到SAN控制操作的完成通知和复制SAN控制操作的远程完成通知,可以向提交操作的主机发送操作完成通知。以这种方式,可以针对各种类型的操作实现同步复制。

图4A至图4C示出了可以由系统400实现同步复制的网络存储环境的示例。第一存储控制器406(例如,托管在位于第一建筑物、城市或位置内的第一存储集群内)可以被配置为向主机402(诸如客户端设备)提供对存储在本地存储装置408内的数据的访问,如图4A中所示。第一存储控制器406能够通过网络410与第二存储控制器412(例如,托管在位于第二建筑物、城市或位置内的第二存储集群内)通信。

第一存储控制器406和第二存储控制器412可以被配置为灾难恢复伙伴,从而使得存活的存储控制器可以响应于标识另一存储控制器的故障来执行切换操作(例如,以获取由故障存储控制器拥有的存储设备的所有权)以代替故障存储控制器来向客户端提供对复制数据的故障转移访问。以这种方式,客户端数据访问中断可以减少。

可以在第一存储控制器406与第二存储控制器412之间(诸如在本地存储装置408与远程存储装置414之间)建立同步复制关系。同步复制关系可以指定数据操作、卸载操作、错误处理操作、存储区域网络(SAN)控制操作和/或本地存储装置408的其他类型的操作将在本地存储装置408处被实现并且被复制到远程存储装置414(例如,诸如在完成消息被提供回主机402用于数据操作、卸载操作、SAN控制操作等之前,或者在针对复制错误处理操作实现尽力服务的情况中)。同步复制关系可以按照相对较精细的粒度级别来指定,诸如在每个文件或LUN的基础上。

在一个示例中,数据操作404可以由第一存储控制器406接收,如图4A中所示。图4B示出了数据操作404由第一存储控制器406和第二存储控制器412并行实现。例如,数据操作404可以由第一存储控制器406本地实现422。数据操作404可以是作为由第二存储控制器412远程实现424的复制数据操作被复制420到第二存储控制器412。在一个示例中,数据操作404的本地实现422和复制数据操作的远程实现424可以并行执行(例如,复制数据操作可以被发送到第二存储控制器412用于远程实现424,而不管本地实现422是否完成)。一旦本地实现422完成430并且远程实现完成432,则数据操作完成通知450可以被发送到主机402,如图4C中所示。

图5A至图5C示出了可以由系统500实现同步复制的网络存储环境的示例。第一存储控制器506(例如,托管在位于第一位置内的第一存储集群内)可以被配置为向主机502提供对存储在本地存储装置508内的数据的访问,如图5A中所示。第一存储控制器506可以能够通过网络510与第二存储控制器512(例如,托管在位于第二位置内的第二存储集群内)通信。

第一存储控制器506和第二存储控制器512可以被配置为灾难恢复伙伴,从而使得存活的存储控制器可以响应于标识另一存储控制器的故障来执行切换操作(例如,以获取由故障存储控制器拥有的存储设备的所有权)以代替故障存储控制器来向客户端提供对复制数据的故障转移访问。以这种方式,客户端数据访问中断可以减少。

可以在第一存储控制器506与第二存储控制器512之间(诸如在本地存储装置508与远程存储装置514之间)建立同步复制关系。同步复制关系可以指定数据操作、卸载操作、错误处理操作、存储区域网络(SAN)控制操作和/或本地存储装置508的其他类型的操作将在本地存储装置508处被实现并且被复制到远程存储装置514。同步复制关系可以按照相对较精细的粒度级别来指定,诸如在每个LUN的基础上。

在一个示例中,卸载操作504可以由第一存储控制器506接收,如图5A中所示。例如,应用服务器可以将拷贝操作作为拷贝卸载操作卸载到第一存储控制器506(例如,存储服务器)以在本地存储装置508上实现。卸载操作504可以被拆分成复制卸载操作,因为卸载操作504将导致对数据和/或元数据的修改并且因此应当被复制到远程存储装置514以保持一致性。卸载操作504可以与由第一存储控制器506针对本地存储装置508实现的飞行中操作516串行化,并且复制卸载操作可以与由第二存储控制器512针对远程存储装置514实现的飞行中复制操作串行化。因此,飞行中操作516可以被排队为排队的飞行中操作516a,直到卸载操作504完成,如图5B中所示。在一个示例中,飞行中复制操作518(例如,交叠的卸载操作和/或复制卸载操作)可以被二次排队为排队的飞行中复制操作518a,直到复制卸载操作完成,这对于较高等待时间的网络可能是有益的。在另一示例中,飞行中操作516由第一存储控制器506排队,但是飞行中复制操作518没有由第二存储控制器512排队。

与第二存储控制器512对复制卸载操作在远程存储装置514上的远程实现530并行地,卸载操作504可以由第一存储控制器506在本地存储装置508上本地实现520(步骤520)。图5C示出了第一存储控制器506为卸载操作504在本地存储装置508上的本地实现520生成完成通知542。第二存储控制器512可以为复制卸载操作在远程存储装置514上的远程实现530生成第二完成通知540。在一个示例中,卸载操作以与在第一存储控制器处发生优化相同的方式在第二存储控制器处被优化,从而使得能够以类似的方式在第一存储控制器与第二存储控制器之间实现效率。无论复制机制如何,结果都是高效的卸载操作。

以这种方式,远程存储装置514可以基于卸载操作504在本地存储装置508上的本地实现520和复制卸载操作在远程存储装置514上的远程实现530来镜像本地存储装置508。一旦卸载操作504和复制卸载操作完成,卸载操作完成通知546可以被发送到主机502(例如,卸载复制操作的应用服务器或发出复制操作的客户端)。排队的飞行中操作516a和排队的飞行中复制操作518a可以被出队以用于实现为出队的飞行中操作516b和出队的飞行中复制操作518b。

图6A至图6F示出了可以由系统600实现同步复制的网络存储环境的示例。第一存储控制器606(例如,托管在位于第一位置内的第一存储集群内)可以被配置为向主机602提供对存储在本地存储装置608内的数据的访问,如图6A中所示。第一存储控制器606可以能够通过网络610与第二存储控制器612(例如,托管在位于第二位置内的第二存储集群内)通信。

第一存储控制器606和第二存储控制器612可以被配置为灾难恢复伙伴,从而使得存活的存储控制器可以响应于标识另一存储控制器的故障来执行切换操作(例如,以获取由故障存储控制器拥有的存储设备的所有权)以代替故障存储控制器来向客户端提供对复制数据的故障转移访问。以这种方式,客户端数据访问中断可以减少。

可以在第一存储控制器606与第二存储控制器612之间(诸如在本地存储装置608和远程存储装置614之间)建立同步复制关系。同步复制关系可以指定数据操作、卸载操作、错误处理操作、存储区域网络(SAN)控制操作和/或本地存储装置608的其他类型的操作将在本地存储装置608处被实现并且被复制到远程存储装置614。同步复制关系可以按照相对较精细的粒度级别来指定,诸如在每个文件或LUN的基础上。

在一个示例中,存储区域网络(SAN)控制操作604可以由第一存储控制器606接收,如图6A中所示。SAN控制操作604可以被拆分成复制SAN控制操作,因为SAN控制操作604将导致对诸如LUN元数据等存储对象元数据的修改并且因此应当被复制到远程存储装置614以保持一致性。SAN控制操作604可以与以同一存储对象(诸如同一LUN)作为目标的其他飞行中SAN控制操作616以串行方式本地实现630。以这种方式,在任何给定时间,可以针对LUN执行不超过一次的SAN控制操作,如图6B中所示。图6C示出了第一存储控制器606为SAN控制操作604在本地存储装置608上的本地实现630生成完成通知640。

响应于接收到SAN控制操作604的本地实现630的完成通知640,复制SAN控制操作可以与以同一存储对象作为目标的其他飞行中复制SAN控制操作618以串行方式远程实现650,如图6D中所示。例如,复制SAN控制操作可以不被实现和/或发送到第二存储控制器612,直到SAN控制操作604完成。第二存储控制器612可以为复制SAN控制操作在远程存储装置614上的远程实现650生成第二完成通知660,如图6E中所示。以这种方式,远程存储装置614可以基于SAN控制操作604在本地存储装置608上的本地实现630和复制SAN控制操作在远程存储装置614上的远程实现650来镜像本地存储装置608。一旦SAN控制操作604和复制SAN控制操作完成,SAN控制操作完成通知670可以被发送到主机602,如图6F中所示。

图7A至图7D示出了可以由系统700实现同步复制的网络存储环境的示例。第一存储控制器706(例如,托管在位于第一位置内的第一存储集群内)可以被配置为向主机702提供对存储在本地存储装置708内的数据的访问,如图7A中所示。第一存储控制器706可以能够通过网络710与第二存储控制器712(例如,托管在位于第二位置内的第二存储集群内)通信。

第一存储控制器706和第二存储控制器712可以被配置为灾难恢复伙伴,从而使得存活的存储控制器可以响应于标识另一存储控制器的故障来执行切换操作(例如,以获取由故障存储控制器拥有的存储设备的所有权)以代替故障存储控制器来向客户端提供对复制数据的故障转移访问。以这种方式,客户端数据访问中断可以减少。

可以在第一存储控制器706和第二存储控制器712之间(诸如在本地存储装置708和远程存储装置714之间)建立同步复制关系。同步复制关系可以指定数据操作、卸载操作、错误处理操作、存储区域网络(SAN)控制操作和/或本地存储装置708的其他类型的操作将在本地存储装置708处被实现并且被复制到远程存储装置714。同步复制关系可以按照相对较精细的粒度级别来指定,诸如在每个文件或LUN的基础上。

在一个示例中,错误处理操作704可以由第一存储控制器706接收,如图7A中所示。错误处理操作704可以被拆分成复制错误处理操作,因为错误处理操作704将导致对数据和/或元数据的修改(例如,否则将向本地存储装置708写入数据的数据操作的中止)并且因此应当被复制到远程存储装置714以保持一致性。错误处理操作704可以由第一存储控制器706以同步方式在本地存储装置708上本地实现720,从而使得错误处理操作704可以在与可能导致错误处理操作704(例如,失败的数据操作)的飞行中操作716不同的过程(诸如不同的线程)内执行,这可以减轻错误处理操作704也失败的可能性,如图7B中所示。复制错误处理操作可以减少第二存储控制器处的处理时间。也就是说,由于第一存储控制器正在等待第二存储控制器完成,因此错误处理操作被复制以取消第二存储控制器的处理,从而使得第一存储控制器不被保持为在第二存储控制器上等待以完全处理原始操作或消息。

复制错误处理操作可以由第二存储控制器712在远程存储装置714上作为尽力服务的实现来远程地实现730,诸如与错误处理操作704的本地实现720并行地并且与飞行中复制操作718同步地(例如,在不同过程内被实现)。尽力服务的实现可以指定错误处理操作704的成功不依赖于复制错误处理操作的成功。例如,响应于第一存储控制器706为错误处理操作704的本地实现720生成完成通知742,错误处理操作成功通知746可以被发送到主机702,而不管复制错误处理操作的远程实现730的尽力服务是否成功完成,如图7C中所示。

图7D示出了在本地存储装置708与远程存储装置714之间执行协调762的示例,因为复制错误处理操作被实现为尽力服务。也就是说,由于错误处理操作704的并行拆分,操作可以在本地存储装置708上完成并且在远程存储装置714处中止,或者操作可以在本地存储装置708上中止并且在远程存储装置714上完成,由此产生在本地存储装置708与远程存储装置714之间的分歧。因此,可以执行协调762以确定是否存在分歧(例如,如果数据操作在本地存储装置708处中止并且在远程存储装置714处完成,则协调762可以将远程存储装置714修改为与其中数据操作被中止的本地存储装置708对应的状态,或者可以将本地存储装置708修改为与其中数据操作完成的远程存储装置714对应的状态)。在一个示例中,协调762可以与当前数据操作760一致地被执行(例如,对受到可以被或可以未被复制错误处理操作中止的数据操作的影响的区域的读取或写入)。

又一实施例涉及一种包括被配置为实现本文中呈现的一种或多种技术的处理器可执行指令的计算机可读介质。以这些方式设计的计算机可读介质或计算机可读设备的示例实施例在图8中示出,其中实现800包括其上编码有计算机可读数据806的计算机可读介质808,诸如CD-R、DVD-R、闪存驱动器、硬盘驱动器的盘片等。这些计算机可读数据806(诸如包括零或一中的至少一项的二进制数据)又包括被配置为根据本文中阐述的一个或多个原理操作的处理器可执行计算机指令804。在一些实施例中,例如,处理器可执行计算机指令804被配置为执行方法802,诸如图3的示例性方法300中的至少一些。在一些实施例中,例如,处理器可执行计算机指令804被配置为实现一种系统,诸如图4A至图4C的示例性系统400中的至少一些、图5A至图5C的示例性系统500中的至少一些、图6A至图6F的示例性系统600中的至少一些和/或图7A至图7D的示例性系统700中的至少一些。预期很多这样的计算机可读介质根据本文中呈现的技术操作。

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

在一些实施例中,本公开中描述和/或示出的方法可以全部或部分地在计算机可读介质上实现。计算机可读介质可以包括被配置为实施本文中呈现的方法中的一个或多个的处理器可执行指令,并且可以包括用于存储此后可以由计算机系统读取的这些数据的任何机制。计算机可读介质的示例包括(硬)驱动器(例如,经由网络附加存储器(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或者两个不同的或两个相同的信息集合或者相同的信息集合。

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号