CN109582495B - 数据存储系统、存储阵列及非暂态机器可读介质 - Google Patents
数据存储系统、存储阵列及非暂态机器可读介质 Download PDFInfo
- Publication number
- CN109582495B CN109582495B CN201810053786.1A CN201810053786A CN109582495B CN 109582495 B CN109582495 B CN 109582495B CN 201810053786 A CN201810053786 A CN 201810053786A CN 109582495 B CN109582495 B CN 109582495B
- Authority
- CN
- China
- Prior art keywords
- lun
- storage array
- write
- array
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 201
- 238000013500 data storage Methods 0.000 title claims abstract description 17
- 230000010076 replication Effects 0.000 claims abstract description 120
- 238000003491 array Methods 0.000 claims abstract description 30
- 230000004044 response Effects 0.000 claims abstract description 15
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 9
- 230000000694 effects Effects 0.000 claims description 2
- 238000000034 method Methods 0.000 description 63
- 230000008569 process Effects 0.000 description 35
- 238000004891 communication Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 9
- 238000011084 recovery Methods 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010924 continuous production Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2071—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
- G06F11/2079—Bidirectional techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2069—Management of state, configuration or failover
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
- G06F11/2007—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及双向复制,示例数据存储系统包括具有第一LUN的第一存储阵列和具有第二LUN的第二存储阵列。第一和第二存储阵列可以实现从作为主要LUN的第一LUN到作为次要LUN的第二LUN的复制。第一和第二LUN二者都可以是主机写入I/O的活动目标。第二存储阵列可以响应于从主机接收到指向第二LUN的写入而将该写入的写入数据发送给第一存储阵列以用于复制而同时将写入数据的拷贝维持在第二存储阵列的高速缓存的围住部分中。第二存储阵列可以等候直到从第一存储阵列接收到了写入确认才将写入数据的拷贝释放到第二LUN。
Description
技术领域
本公开总体上涉及数据存储技术领域。
背景技术
一些数据存储系统可以实现复制功能性。复制包括不断地将一个存储卷实时复写到另一存储卷。复制可以不同于将一个存储卷仅拷贝或备份到另一卷之处在于,复制意味着卷之间有持续不断的链路,以使得随着对一个卷做出改变和新的写入,另一个卷也被更新有同样的内容。
例如,在一个复制布置中,将第一存储阵列的第一卷复制到第二存储阵列的第二卷。在该示例中,主机可以经由第一阵列从第一卷中读取和向第一卷中写入,而主机可以经由第二阵列从第二卷中读取但是主机不可以向第二卷中写入。当第一阵列接收到写入请求时,第一阵列将数据写入到第一卷同时还通过复制信道将所述数据的拷贝发送给第二阵列以用于存储在第二卷中。
通常使用复制来减轻数据丢失的风险。例如,如果处于复制关系中的卷之一故障了,那么存储在其中的数据将因为所述数据将在复制关系的另一个卷上可用而不会永久地丢失。
发明内容
根据本公开的一方面,提供一种数据存储系统,包括:包括第一LUN的第一存储阵列;以及包括第二LUN的第二存储阵列,其中所述第一和第二存储阵列用于实现从作为主要LUN的所述第一LUN到作为次要LUN的所述第二LUN的复制,以及所述第二存储阵列用于响应于从主机接收到指向所述第二LUN的写入而:将所述写入的写入数据发送给所述第一存储阵列而同时将所述写入数据的拷贝维持在所述第二存储阵列的高速缓存的围住部分中,直到从所述第一存储阵列接收到了写入确认;以及响应于接收到来自所述第一存储阵列的所述写入确认,准许所述写入数据的所述拷贝进入到所述第二LUN。
根据本公开的另一方面,提供一种存储阵列,包括:数个存储设备;以及包括处理电路和高速缓存的存储控制器;其中,所述存储控制器用于:参与实现从另外存储阵列中的作为主要LUN的第一LUN到所述存储阵列中的作为次要LUN的第二LUN的复制;以及响应于从主机接收到指向所述第二LUN的写入而:将所述写入的写入数据发送给所述另外存储阵列而同时将所述写入数据的拷贝维持在所述高速缓存的围住部分中;以及等候直到从所述另外存储阵列接收到了写入确认才准许所述写入数据的所述拷贝进入到所述第二LUN。
根据本公开的另一方面,提供一种包括处理器可执行指令的非暂态机器可读介质,所述处理器可执行指令用于实现第一存储阵列的主要LUN与第二存储阵列的次要LUN之间的双向复制,包括:指令,用以响应于所述第二存储阵列从主机接收到指向所述次要LUN的写入而促使所述第二存储阵列:将所述写入的写入数据发送给所述第一存储阵列而同时将所述写入数据的拷贝维持在所述第二存储阵列的高速缓存的围住部分中;以及等候直到从所述第一存储阵列接收到了写入确认才准许所述写入数据的所述拷贝进入到所述次要LUN。
附图说明
图1图示出包括实现示例双向复制的两个示例存储阵列的示例存储系统。
图2图示出示例双向复制过程的示例操作。
图3是图示出示例双向复制过程的过程流程图。
图4图示出存储示例复制指令的示例非暂态机器可读介质。
具体实施方式
1-复制相关的定义
存储阵列。如本文中使用的,存储阵列是包括至少一个数据存储设备和用以控制到所述至少一个数据存储设备的存储输入/输出(“I/O”)的处理电路的任何系统(设备或设备的组合)。这可以包括通常称为存储阵列的系统,诸如具有实现独立盘冗余阵列(RAID)的许多存储设备的系统,但是也可以包括正常可能不称为存储阵列的系统,诸如具有单个存储设备的计算机。
主机。如本文中使用的,“主机”意指向存储阵列发送I/O请求(命令)的、物理的或虚拟的任何实体。例如,主机可以包括计算机、虚拟机、一块专用硬件(例如,主机适配器)、正由处理器执行的软件程序等。
LUN。如本文中使用的,“LUN”意指主机可寻址的逻辑存储卷。这可以包括通常称为LUN的逻辑存储卷,诸如小型计算机系统接口(SCSI)协议家族的“逻辑单元”,但是也可以包括正常可能不称为LUN是逻辑存储卷。
控制器。如本文中使用的,“控制器”是指存储阵列的处理电路,处理电路管理对该阵列的存储设备的访问,包括从存储设备的存储空间形成LUN以及将所述LUN作为用于存储I/O的可用目标呈现给主机。这可以包括通常称为控制器的实体,诸如RAID控制器,但是也可以包括正常可能不称为控制器的实体,诸如执行存储在机器可读介质上的指令的通用处理器。
复制。如本文中使用的,“复制”是指将发生在一个LUN中的改变不断地(即,基于持续不断地)复写到一个或多个其它LUN。因此,从第一卷向第二卷“实现复制”意指制定(enact)促使将对第一卷的内容改变自动复写到第二卷的持续不断的过程和/或策略。可以在一些实现中同步地复写内容改变,或者在其它实现中异步地复写内容改变。
复制集。如本文中使用的,“复制集”是指与彼此具有复制关系的两个或更多个LUN的集合。复制关系可以是单向复制关系(例如,将到第一LUN的主机写入复制到第二LUN)或双向复制关系(例如,将到第一LUN的主机写入复制到第二LUN,并且也将到第二LUN的主机写入复制到第一LUN)。虽然本文中的描述将主要聚焦于在复制集中存在两个LUN的示例以便易于理解,但是应理解的是,单个复制集可以包括多于两个的LUN。
主要LUN和次要LUN。如本文中使用的,“主要LUN”是指复制集中的引领针对该复制集的写入操作的LUN,而“次要LUN”是指该复制集中的跟随针对该复制集的写入操作的任何LUN。换言之,如果复制集具有主要LUN和(一个或多个)次要LUN,那么这意味着指向该复制集中的任何LUN的任何主机写入将总是在其被提交(commit)给任何次要LUN之前提交给主要LUN。
主要阵列和次要阵列。如本文中使用的,“主要阵列”和“次要阵列”是当谈及具体的复制集时使用的指派,并且取决于该复制集。特别地,当谈及给定复制集时,包括该复制集中的主要LUN的存储阵列是“主要阵列”,而其它(一个或多个)阵列可以称为“(一个或多个)次要阵列”。同一存储阵列可以关于一个复制集被视为主要阵列并且关于另一复制集被视为次要阵列。例如,单个阵列可以包括作为一个复制集中的主要LUN的第一LUN以及作为来自另一复制集的次要LUN的第二LUN,并且因此,该阵列将会对于第一复制集来说被视为主要阵列而同时将会被视为第二复制集的次要阵列。
如本文中使用的,术语“主要”和“次要”不意味着除在上面的定义中阐述的意思之外的关于LUN和/或阵列的任何意思。特别地,虽然一些现有复制技术可以包括称为“主要LUN”、“主要阵列”、“次要LUN”和“次要阵列”的实体,但是本文中通过这些术语所指代的实体不一定类似于分享相同名称的其它复制技术中的实体。因此,本文中描述的实体可以(A)包括在其它复制技术中具有相同名称的实体所不具有的一些特征/属性,(B)忽略在其它复制技术中具有相同名称的实体所具有的一些特征/属性。
2-示例双向复制技术:概览
在本文中公开的示例中,提供了示例双向复制技术,示例双向复制技术除其它之外特别使得复制集的主要阵列和次要阵列二者能够作为活动目标接收和处理主机写入。特别地,在这些示例中,可以允许次要阵列作为活动目标来接收与次要LUN的写入I/O,但是主要阵列仍至少在通过到主要LUN的写入来引领所有到次要LUN的写入的意义上来说针对该复制集维持对I/O排序的支配和所有权。
特别地,当次要阵列接收指向次要LUN的写入I/O时,次要阵列可以经由复制信道向主要阵列发送该写入的拷贝,同时还将该写入保存在其自己的高速缓存的围住部分中。“围住(fenced)”在该上下文中意指所述数据还未被视为“已写入”并且不被允许由任何正常的高速缓存管理过程进行处理。例如,被围住的写入不能够被其它主机读取、写入到磁盘等,直到它们被释放为止。次要阵列可以等候直到从主要阵列接收到写入确认(“确认(Ack)”)才释放该写入。释放写入意指准许该写入进入到高速缓存,这可以包括例如解除围住(unfence)高速缓存的保存该写入的部分并将其分配给次要LUN或者将该写入移动到高速缓存的被解除围住并被分配给次要LUN的另一部分。
次要阵列一从主要阵列接收到确认,次要阵列就可以释放主机写入的围住、向回对主机做出响应并将该写入发送给其自己的后端以进行处理。因此,虽然次要阵列能够接收和处理来自主机的目标为次要LUN的写入,但是主要阵列仍引领所述写入,因为次要阵列并不提交所述写入直到且除非主要阵列向其返回确认。然而从主机的角度来说,主要LUN和次要LUN二者都是接收读取和写入I/O这二者的活动目标。
3-示例双向复制技术的示例益处
如上所提及,在本文中公开的示例中,主要阵列的主要LUN和次要阵列的次要LUN二者都作为写入I/O的活动目标呈现给主机。相比之下,在许多现有复制方法中,次要LUN对主机完全只读。通过将次要LUN提供成写入I/O的活动目标,对于次要阵列来说是本地的主机不需要向潜在地远程的主要阵列发送其写入I/O。
此外,在本文中公开的示例中,可以降低主要侧和次要侧之间的跨站点通信的量,从而降低所述站点之间的通信链路的拥堵并改进系统的总体性能。例如,在一些方法中,可以允许主机向次要阵列发送写入I/O,并且作为响应,次要阵列可以将该I/O重定向或转发到主要阵列,并且然后,主要阵列可以以正常方式处理该写入(包括经由复制信道将写入数据发送回次要阵列)。相比之下,在本文中公开的示例中,次要阵列将写入数据保持在其高速缓存中同时等候来自主要侧的确认,并且因此,主要阵列不需要将写入数据发送回次要阵列。因此,在本文中公开的示例中,对于每个在次要阵列处接收到的主机写入I/O,写入数据可以被从一个站点发送给另一个站点至少少一次。
此外,在本文中公开的示例中,可以在无需实现复杂的高速缓存一致性方案的情况下提供使次要LUN成为写入I/O的活动目标的能力。特别地,在一些替换方法中,通过非常复杂的高速缓存一致性方案来提供完整的双活动(Active-Active)。虽然此类方案可以提供与本文中公开的示例相同的优点中的一些,但是它们可能是以使得复制过程很复杂为代价来实现这点的。该增加的复杂度也可能导致针对复制过程的增加的处理开销,并且因此导致稍微差一些的性能。
4-示例存储系统
图1图示出示例存储系统100。示例存储系统100包括经由复制信道300通信连接到彼此的多个存储阵列10。在图1中,为了简便图示出两个存储阵列10,但是存储系统100中可以包括任何数量的存储阵列10。此外,主机200可以经由通信信道301和302通信连接到存储阵列10。
存储阵列10(在本文中也称为“阵列10”)中的每一个可以包括数个存储设备20和数个控制器30。控制器30可以包括处理电路40和高速缓存60。在一些示例中,控制器30还可以包括存储复制指令510的存储器50,复制指令510可以由处理电路40执行以实现如本文中描述的控制器30的操作。应理解的是,阵列10可以各自包括任何数量的控制器30;例如,可以在阵列10中包括多个控制器30以提供高可用性。然而,为了易于描述,各图和以下描述聚焦于每个阵列10单个控制器30。在每个阵列10包括多个控制器30的示例中,可以由控制器30中的一个或控制器30中的多个(或全部)来实行本文中描述的操作。
存储设备20可以各自是能够持久地存储数字数据的任何电子设备,诸如硬盘驱动、闪速驱动、非易失性存储器(NVM)、磁带驱动等。存储设备20不需要全部都是相同类型的设备或者具有相同的容量。在每个存储阵列10中的存储设备20的数量不受限制。存储设备20各自通信连接到其存储阵列10的控制器30,使得控制器30可以向存储设备20发送本地I/O请求(命令)并且存储设备20可以向控制器30返回数据和其它回答。
控制器30用于管理对其阵列10的存储设备20的访问,包括从存储设备20的存储空间形成逻辑存储单元(LUN)以及将LUN作为存储I/O的可用目标呈现给主机200。特别地,控制器30用于接收来自所连接的主机200的I/O(后文中为“主机I/O”),基于该主机I/O生成到存储设备20的本地I/O请求,以及向主机200返回接收自存储设备20的数据和/或其它回答(诸如确认)。此外,控制器30实现本文中描述的双向复制功能性。控制器30还可以实现附加的功能性,诸如创建/管理独立盘冗余阵列(RAID)、进行快照、去重复(deduplication)、压缩、安全性等,但是此类附加功能性不是本公开的重点。
控制器30的处理电路40可以由执行机器可读指令的数个处理器、专用硬件或这些的任何组合来形成。
例如,处理电路40可以(整体或部分地)由数个执行(存储在至少一个机器可读介质上的)机器可读指令的处理器形成,所述机器可读指令促使所述处理器实行本文中描述的操作,诸如本文中描述且在图2和3中图示出的双向复制操作中的一些或全部。如本文中使用的,“处理器”是指能够执行机器可读指令的任何电路,诸如中央处理单元(CPU)、微处理器、微控制器设备、数字信号处理器(DSP)等。在其中处理电路40是(整体或部分地)由执行机器可读指令的处理器形成的这样的示例中,控制器30还可以包括用以存储所述机器可读指令的存储器50。存储器50可以包括能够存储数字数据的任何非暂态机器可读介质,包括诸如随机存取存储器(RAM)(例如,DRAM、SRAM等)之类的易失性介质和/或诸如非易失性存储器(例如,PROM、EPROM、EEPROM、NVRAM等)、闪速驱动、硬盘驱动、光盘等之类的持久性(非易失性)介质。在一些示例中,在本文中被描述为由控制器实行的任何功能可以由执行存储在至少一个机器可读介质上的指令的至少一个处理器来执行。
作为另一示例,处理电路40可以(整体或部分地)由被设计成实行本文中描述的某些操作的专用硬件形成,所述操作诸如本文中描述且在图2和3中图示出的双向复制操作中的一些或全部。如本文中使用的,“专用硬件”可以包括专用集成电路(ASIC)、复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、专用指令集处理器(ASIP)、分立逻辑电路、网络接口卡(NIC)、适配器(例如,主机适配器)等。
控制器30还可以包括高速缓存60。高速缓存60可以包括用于对被写入到阵列10的LUN和/或从阵列10的LUN读取的数据进行高速缓存的存储空间。高速缓存60的存储空间可以通过物理存储介质来提供,所述物理存储介质可以包括能够存储数字数据的任何非暂态机器可读介质,包括诸如随机存取存储器(RAM)(例如,DRAM、SRAM等)之类的易失性介质和/或诸如非易失性存储器(例如,NVRAM)电池支持的RAM、闪速驱动等之类的持久性(非易失性)介质。
在一些示例中,数据可以被视为当其被准许进入到高速缓存60时被提交到LUN。如本文中使用的,准许数据进入到高速缓存60意指将数据写入到高速缓存60的被分配给LUN的一部分(后文中为“分配部分”),诸如高速缓存槽。如本文中使用的,“将数据写入到LUN”和“准许数据进入到LUN”的意思与“准许数据进入到高速缓存60”相同。
被准许进入到高速缓存60的数据可以最终被经由后端写入I/O写回(“冲刷(flush)”)到存储设备20(如果所述数据没有已经存储于那里的话)。虽然被准许进入的数据是在高速缓存60中,但是可以直接从高速缓存60服务于指向所述数据的读取而无需访问存储设备20。可以通过由控制器30实现的高速缓存管理方案来确定哪些准许进入的数据被保持在高速缓存60中以及将准许进入的数据从高速缓存中驱逐的时机;可以结合本文中描述的双向复制使用任何高速缓存管理方案。
高速缓存60的一些部分可能未被分配给LUN(后文中为“未分配部分”),并且将数据写入到高速缓存60的这样的未分配部分不被视为准许数据进入到高速缓存60,并且这样写入的数据不被视为被提交到LUN。因为被写入到高速缓存60的未分配部分的数据并未被提交到LUN,例如,保存在高速缓存60的未分配部分中的数据不可以被写回到存储设备20直到且除非其被准许进入到高速缓存60(即,移动到高速缓存60的分配部分)。
高速缓存60的未分配部分可以用于各种功能,诸如保存暂时性I/O数据。例如,高速缓存60的一些未分配部分可以充当用于从主机200和/或其它阵列10接收I/O和/或向主机200和/或其它阵列10传送I/O的缓冲器。例如,高速缓存60的未分配部分可以用作主机I/O写入缓冲器,主机I/O写入缓冲器是用于缓冲接收自主机200的写入数据。作为另一示例,高速缓存60的未分配部分可以用作复制传输缓冲器,复制传输缓冲器是用于缓冲要作为复制过程的一部分经由复制信道发送给另一存储阵列10的数据。作为另一示例,高速缓存60的一部分可以用作复制接收缓冲器,复制接收缓冲器是用于缓冲作为复制过程的一部分经由复制信道从另一存储阵列10接收的数据。
在一些示例中,高速缓存60的各部分的角色和分配可以是固定的。然而,在其它示例中,高速缓存60的各部分的角色和分配可以随着阵列10的操作而动态地改变。例如,高速缓存60的一部分可以在作为未分配的主机I/O写入缓冲器与作为未分配的复制传输缓冲器与被分配给给定LUN和被分配回成未分配之间进行改变。在一些示例中,当高速缓存60的正存储数据的一部分被重新分派给新的角色或者被重新分配给新的LUN而同时仍维持相同的数据时,这可以被视为是数据从高速缓存60的一个部分到高速缓存60的另一部分的“逻辑移动”。这与数据的“物理移动”形成对照,在数据的“物理移动”中,所述数据被实际上从高速缓存60的一个部分整体地移动到高速缓存60的另一不同部分或到高速缓存60之外。本文中且在随附的权利要求中,当说到数据被从高速缓存的一个部分“移动”到另一部分时,这应被理解成允许逻辑移动或物理移动,除非明确地另外指示或者逻辑上矛盾。
在一些示例中,构成高速缓存60的物理存储空间中的一些或全部可以通过与存储器50和/或存储设备20不同的(一个或多个)物理存储设备来提供。在其它示例中,构成高速缓存60的物理存储空间中的一些或全部可以通过与存储器50和/或存储设备20相同的(一个或多个)物理存储设备来提供。例如,可以保留来自存储设备20中的一个或多个的存储空间以用作高速缓存60的部分;这可以最好地适用于例如具有快的访问速度的存储设备20,诸如NVRAM或闪速盘(SSD)。作为另一示例,可以保留来自形成存储器50的存储介质(例如,RAM)的存储空间以用作高速缓存60的部分。在一些示例中,高速缓存60可以包括不同的层,所述不同的层可以例如形成自不同类型的物理存储介质(例如,形成自RAM的高速层和形成自闪速驱动的稍微较低速的层)。
可以有插入在控制器30与存储设备20的存储介质之间的通信信道中的一个或多个中间媒介(未图示出),为了清楚起见有意地将一个或多个中间媒介从各图中省略。例如,所述中间媒介可以包括设备驱动器、联网设备(诸如交换机或路由器)、存储设备20的内部控制器、适配器等等。特别地,在一些示例中,存储设备20中的一些或全部可以包括其自己的内部控制器(例如,盘控制器)(未图示出),所述内部控制器可以控制存储设备20的内部操作,诸如维持映射和其它元数据、访问存储介质等。
在一些示例中,存储阵列10的全部组件都是单个设备的部分(即,容纳在同一机架或外壳内),所述单个设备诸如服务器、个人计算机、存储器具、组合式基础设施器具、聚合(或超聚合)器具等。在其它示例中,存储阵列10的组件中的一些可以是同一集成设备的部分,而其它组件可以在该设备外部——例如,存储设备20可以在容纳(一个或多个)控制器30的机架外部。
复制信道300可以包括存储阵列10可以通过其来与彼此通信的任何通信信道。例如,复制信道300可以包括通信介质(例如,电缆、光纤线缆等)和数个网络设备(例如,交换机、桥接器、集线器、路由器等)。例如,复制信道300可以包括公共网络(诸如因特网)、私人网络(诸如内联网)或这些的任何组合。复制信道300可以使用任何传输协议,诸如来自SCSI家族的协议(例如,互联网SCIS(iSCSI)、光纤信道协议(FCP)、SCSI RDMA协议(SRP)等)、传输控制协议(TCP)、互联网协议(IP)、无限带宽(IB)、iWARP、聚合以太网上的RDMA(RoCE)等。在一些示例中,可以专门保留复制信道300用于存储阵列10之间的复制。在其它示例中,复制信道300可以是承载存储阵列10之间的除复制相关的消息之外的非复制相关的消息的通用链路。
在一些示例中,存储阵列10可以布置在不同的故障域中以降低同时故障的机会。例如,存储阵列10可以部署在不同的台架、不同的建筑物、不同的站点、不同的地理区域等中。
通信信道301和302可以包括存储阵列10可以通过其来与主机200通信的任何通信信道。例如,通信信道301和302可以包括通信介质(例如,电缆、光纤线缆等)和数个网络设备(例如,交换机、桥接器、集线器、路由器等)。例如,通信信道301和302可以包括公共网络(诸如因特网)、私人网络(诸如内联网)或这些的任何组合。通信信道301和302可以使用任何传输协议,诸如来自SCSI家族的协议(例如,互联网SCIS(iSCSI)、光纤信道协议(FCP)等)。
5-示例双向复制过程
图2和图3图示出示例双向复制过程/方法。所述示例过程可以例如由存储阵列的控制器(诸如上文描述的示例存储阵列10的控制器30)来实行。例如,示例过程可以(整体或部分地)体现在机器可读指令中,所述机器可读指令当由控制器的处理器执行时促使该控制器实行所述示例过程的操作(中的一些或全部)。作为另一示例,示例过程可以(整体或部分地)体现在实行所述示例过程的操作(中的一些或全部)的控制器的专用硬件的逻辑电路中。为了方便,示例过程的以下描述将参考上文描述的示例存储阵列10,但是应理解的是,所述过程不一定限于上文描述的示例存储阵列10。
在某些示例中,示例双向复制过程包括主到次复制子过程和次到主复制子过程。可以在存储阵列10接收到来自主机200的指向作为复制集的主要LUN的阵列10的LUN的写入请求时实行主到次复制子过程。换言之,可以在接收到写入请求的存储阵列10是关于该请求的主要阵列10时实行主到次复制子过程。可以在存储阵列10接收到来自主机200的指向作为复制集的次要LUN的阵列10的LUN的写入请求时实行次到主复制子过程。换言之,可以在接收到写入请求的存储阵列10是关于该请求的次要阵列10时实行次到主复制子过程。
例如,在图3的块401中,控制器30可以接收来自主机200的写入请求(图2中的操作#1)。该过程然后可以继续到块402。
在块402中,控制器30可以确定其是否是关于该接收到的写入请求的主要阵列10。例如,如果该写入被寻址到存储阵列10的作为复制集的主要LUN的LUN,那么阵列10是关于该写入的主要阵列10。另一方面,如果该写入被寻址到存储阵列10的作为复制的次要LUN之一的LUN,那么阵列10是关于该写入的次要阵列10。如果阵列10是主要阵列10(块402=是),那么该过程继续至块403,并且实行主到次复制子过程。如果阵列10是次要阵列10(块402=否),那么该过程继续至块404和405,并且实行次到主复制子过程。
在块403中,实行主到次复制子过程。主到次复制子过程可以类似于现有的复制过程,并且因此不在各图中详细图示。例如,当主要阵列10接收到写入请求时,其可以(例如,通过将所述数据的拷贝移动到其高速缓存60的被分配给所述主要LUN的部分)准许写入数据进入到主要LUN,并且经由复制信道300将所述写入数据的拷贝发送给次要阵列10以用于复制到次要LUN。主要阵列10可以同时地准许写入数据进入到次要阵列10并将写入数据的拷贝发送给次要阵列10,或者可以以任何顺序来实行这些操作。次要阵列10接收到来自主要阵列10的写入数据的拷贝并准许所述写入数据进入到次要LUN,并将写入确认(Ack)发送回给主要阵列10。一接收到来自次要阵列10的Ack,主要阵列10就可以将写入确认发送回给发送该写入的主机200。主到次复制子过程然后可以结束。
如上所提及,当接收到主机I/O的存储阵列10不是主要阵列10(块402=否)时,那么可以实行次到主复制子过程。特别地,次到主复制子过程可以通过实行块405和406来开始。在一些示例中,块405和406的操作可以同时实行。在一些示例中,可以在实行块406的那些操作之前实行块405的操作。在一些示例中,可以在实行块405的那些操作之前实行块406的操作。
在块405中,次要阵列10经由复制信道300将接收到的写入请求的写入数据的拷贝发送给主要阵列10(图2中的操作#3)。次要阵列10还可以与写入数据一起向主要阵列10发送识别该写入所指向的主要LUN的信息。
在块406中,次要阵列10将接收到的写入的写入数据的拷贝维持在其高速缓存60的围住部分61中(图2中的操作#2)。特别地,尽管高速缓存60的部分61保持被围住,但是次要阵列10将部分61内的数据视为还未被写入到或准许进入到任何LUN,并且不允许所述数据通过任何正常的高速缓存管理过程进行处理。例如,次要阵列10可以防止被围住的写入数据:被主机200读取、被写入到存储设备20、被去重复、被压缩、被镜像到阵列10(假设是具有多个控制器30的高可用性存储阵列10)的另一控制器30等等。
一接收到来自次要阵列10的写入数据,主要阵列10就可以准许所述数据进入到主要LUN(图2中的操作#4),并且向次要阵列发送写入确认(图2中的操作#5)。准许数据进入到主要LUN可以包括例如主要阵列10将所述数据写入到高速缓存60的被分配给主要LUN的部分62。所述数据然后可以经受正常的高速缓存过程,包括最终被写回到存储设备20中的一个或多个(图2中的操作#4’)。准许写入数据进入到主要LUN的过程(操作#4)一开始或者在其后的任何时间处,就可以由主要阵列10将Ack(确认)发送回给次要阵列10(操作#5)。
在块407中,次要阵列10确定是否已从主要阵列接收到了写入Ack,所述Ack是针对在块405中从次要阵列10发送给主要阵列10的写入数据的。如果已接收到了Ack(块407=是),那么该过程继续至块408。如果还未接收到Ack(块407=否),那么该过程循环回到块407,并且继续围住高速缓存60的包含所述写入数据的围住部分61。因此,所述写入数据被维持在次要阵列10的高速缓存60的围住部分61中直到从主要阵列10接收到了Ack为止。
在块408中,响应于从主要阵列10接收到Ack,次要阵列10将高速缓存60的部分61中的写入数据释放到次要LUN(图2中的操作#6)。将写入数据释放到次要LUN意指通过将写入数据移动到高速缓存60的被分配给次要LUN的未围住的部分62来准许写入数据进入到次要LUN。如上所提及,将写入数据从围住部分61移动到被分配给次要LUN的未围住的部分62可以包括将写入数据物理地移动到高速缓存60的不同部分62或者通过解除围住部分61并将部分61重新分派/分配给次要LUN(于是,围住部分61可以被视为未围住的部分62)来在逻辑上移动写入数据。所述数据然后可以经受正常的高速缓存过程,包括最终被写回到存储设备20中的一个或多个(图2中的操作#6’)。
在块409中,次要阵列将写入确认(Ack)发送回给发送该写入I/O的主机200。该过程然后结束。
因为次要阵列10直到且除非主要阵列10已发送了写入确认才将来自围住部分61的写入数据释放到次要LUN,所以主要阵列10仍能够引领到该复制集的写入。然而,从主机200的角度来说,主要LUN和次要LUN二者都是接收读取和写入I/O二者的活动目标。
虽然没有图示出,但是可能存在包括在该过程中的异常,异常可能导致在错误或故障的情况下中止该过程并开始错误处置和/或恢复过程(下文中更详细地描述)。例如,当在块405中将写入数据发送给主要阵列10时可以阻止定时器,并且当定时器超过指定阈值(超时值)而仍未接收到Ack时,那么可以打破回到块407的循环并且可以执行错误处置过程(未图示出)。此外,诸如电源故障之类的故障可能导致中止所述过程并开始错误处置和/或恢复过程。
在上文的描述中,为了易于描述假设了次要阵列正等候的确认指示良好状态;然而,如在下文的故障后的错误处置和一致性的章节中描述的,Ack指示错误状态也是可能的。在Ack指示错误状态的情况下,可以如下文描述的那样调用错误处置程序。
6-示例动态主要/次要分派
因为在本文中描述的示例中主要LUN和(一个或多个)次要LUN二者都可以是写入I/O的活动目标,所以想要访问复制集的主机200可能是跨主要阵列和次要阵列分布的,而非一定是全部的主机都被分派给主要阵列。主机200的该分布在各种上下文中可以是合期望的,但是可能导致次要阵列10接收到大量的写入I/O。如果次要阵列10所接收到的写入I/O的量变得太大,则性能可能变差,因为次要阵列10将主机写入I/O保存在其高速缓存60的围住部分中可能导致其高速缓存60上的增加的压力。因此,在一些上下文中,控制由主要阵列10接收到的比由次要阵列10接收到的到复制集的写入的比例可能是合期望的。
相应地,在一些示例中,存储系统100可以被配置成设置并动态地改变复制集的LUN的主要和次要状态。特别地,一个存储阵列10的控制器30(或协作中的多个存储阵列10的控制器30)可以监控主机I/O正以哪些LUN为目标以及有多么频繁,并且可以基于此而决定是否要改变给定的复制集的主要LUN。
例如,控制器30可以比较指向复制集的当前主要LUN的主机写入I/O(后文中为“主要写入”)的数量与指向同一复制集的当前次要LUN的主机写入I/O(后文中为“次要写入”)的数量。在一个方法中,如果指定的时间段中的次要写入的数量超过了同一时间段中的主要写入的数量达指定阈值,那么控制器30可以决定要改变哪个LUN是该复制集的主要LUN。在另一方法中,如果次要写入的移动平均数量超过了主要写入的移动平均数量达指定阈值,那么控制器30可以决定要改变哪个LUN是该复制组的主要LUN。
在一些示例中,当在两个存储阵列10之间启用双向复制时,存储阵列10可以初始分离LUN所有权,使得每个阵列上的LUN中的一些是其相应复制集中的主要LUN并且每个阵列上的LUN中的一些是其相应复制集中的次要LUN。例如,初始分离可以是50%的主要LUN和50%的次要LUN(或尽可能地接近这样)。阵列10然后可以基于它们所经历的实际工作负载来动态地调节主要和次要分派的分配。
7-故障后的错误处置和一致性
针对该复制过程的错误处置可以例如如下进行处置。存储阵列10可以在将暂时性主机I/O传输给它们的主高速缓存60之前各自将所述I/O保存在例如其各个缓冲器中一段时间。
如果(主到次复制中的)主要阵列10或者(次到主复制中的)次要存储阵列10在指定的时间内接收到了来自另一阵列10的指示良好状态的确认(Ack),那么该复制是成功的并且在该Ack到达时从缓冲器中清除所述暂时性写入I/O。
如果(主到次复制中的)主要阵列10或者(次到主复制中的)次要存储阵列10在指定的时间内接收到了来自另一阵列10的指示错误状态的Ack,那么可以将所述暂时性写入I/O保存在所述缓冲器中。在一些示例中,取决于所报告的错误的类型,可以在预设的超时值期满之前实行复制I/O的(一个或多个)重新传输。在其它示例中,取决于错误的类型,可以指示故障状态。
如果(主到次复制中的)主要阵列10或者(次到主复制中的)次要存储阵列10没有在指定的时间内接收到来自另一阵列10的Ack并且如果复制信道300被指示为是“工作的(up)”(例如,在运转、活动的、已连接),那么可以将所述暂时性写入I/O保存在所述缓冲器中。可以在预设的超时值期满之前(例如,以指定的间隔)实行复制I/O的(一个或多个)重新传输。在超时值期满时,可以指示故障状态。
在指示故障状态时,存储阵列10可以确定哪个阵列10可以维持读取和写入I/O访问以及哪个阵列10需要阻止访问直到恢复过程成功地复原了复制通信和状态。单个活动阵列10可以跟踪在复制故障状态期间写入的数据以便在复原了复制状态时由未来的恢复/重新同步操作进行利用。
上述示例允许主要和次要阵列10二者作为活动目标来接受写入I/O,即使在每个阵列10中,I/O复制调度是不同的也是如此。如上所述,假定主要阵列10总是引领复制过程的话,主要阵列10维持对LUN和I/O排序的控制。在这样的布置中,可能在主机200与其目标阵列10之间和在阵列10与电源故障场景之间的组合链路故障的情况下产生关于主要LUN与次要LUN之间的一致性的问题。特别地,考虑其中次要阵列10接收针对次要LUN的写入I/O、将复制I/O发送给主要阵列10并且然后在次要阵列10将该I/O提交到其高速缓存60之前,次要阵列10由于链路故障变成与主机200和主要阵列10隔离并且然后对于次要阵列10发生功率丧失的情况。在像这样的情况中,所接收到的写入在此时没有被视为是到次要LUN的I/O,并且因此如果重启次要阵列10,则其后端数据将不匹配主要阵列10。
相应地,如果期望确保贯穿此类故障情况阵列10之间的完全一致性,则在一些示例中,次要阵列10可以维持正保存在缓冲器中同时正传输给主要阵列10但是还未被次要阵列10提交的复制I/O的列表。在重启时,次要阵列10然后可以将该列表上的I/O从主要阵列10拉回,从而允许使得主要和次要LUN变为一致。该运送中的复制I/O的列表可以存储在非易失性位置中以使得能够在重启之后恢复。
8-示例处理器可执行指令
图4图示出存储在非暂态机器可读介质500上的示例处理器可执行指令。特别地,复制指令510存储在介质500上。
复制指令510可以包括用以实行上文描述的操作中的任何或全部的指令,所述操作包括例如在图2-3中图示出的示例过程中的任何。
例如,复制指令510可以包括主到次复制指令501和次到主复制指令502。复制指令510可以包括用以响应于接收到指向该存储阵列对其来说是主要阵列的复制集的主机写入I/O而执行主到次复制指令501的指令,以及用以响应于接收到指向该存储阵列对其来说是次要阵列的复制集的主机写入I/O而执行次到主复制指令502的指令。
主到次复制指令501可以包括用以实现从第一存储阵列的主要LUN到第二存储阵列的次要LUN的远程拷贝复制的指令。例如,主到次复制指令501可以包括用以实行对应于上文关于图3描述的主到次复制子过程的操作的指令。
次到主复制指令502可以包括写入围住指令503和写入释放指令504。例如,次到主复制指令502可以包括用以实行对应于上文关于图3描述的次到主复制子过程的操作的指令。
写入围住指令503可以包括这样的指令,所述指令用以响应于在次要存储阵列处接收到来自主机的指向主要LUN的写入而促使次要存储阵列将该写入的写入数据发送给主要存储阵列而同时将所述写入数据的拷贝维持在第二存储阵列的高速缓存的围住部分中。例如,写入围住指令503可以包括用以实行上文关于图3的块405和406描述的操作(例如,图2中的操作#2和#3)的指令。
写入释放指令504可以包括用以促使次要阵列等候直到从主要存储阵列接收到写入确认才将写入数据的拷贝释放到次要LUN(例如,解除围住所述数据并准许其进入到高速缓存)的指令。写入释放指令504还可以包括用以在将写入数据的拷贝释放到次要LUN时促使次要阵列向主机确认所述写入的指令。例如,写入释放指令504可以包括用以实行上文关于图3的块407到409描述的操作(例如,图2中的操作#2和#7)的指令。
9-其它定义
如本文中使用的,“计算机”是包括处理器且能够执行机器可读指令的任何电子系统,包括例如,服务器、某些存储阵列、组合式基础设施器具、聚合(或超聚合)器具、机架级系统、个人计算机、膝上型计算机、智能电话、平板电脑等。
如本文中使用的,“提供”一项目意指拥有该项目和/或支配该项目。这可以包括例如从所述项目的组成材料来形成(或组装)所述项目中的一些或全部,和/或获取对已经形成的项目的拥有权和/或支配。
贯穿本公开以及在随附的权利要求中,可能偶尔地对“数个”项目进行参考。对“数个”的这样的参考意指大于或等于1的任何整数。当以此方式使用“数个”时,描述所述(一个或多个)项目的词汇可能为了语法一致性而写作复数形式,但是这不一定意指正提及多个项目。因此,例如,诸如“数个有源光学器件,其中所述有源光学器件……”之类的短语可能涵盖一个有源光学器件和多个有源光学器件二者,尽管使用了复数形式。
可能在提及一些项目时使用短语“数个”这一事实不应被解读为意指:当提及另一项目时省略了短语“数个”意指所述项目一定是单数或一定是复数。
特别地,当使用冠词“一”、“一个”和“该”来提及项目而没有任何单数或复数的明确指示时,这应被理解为意指存在“至少一个”的该项目,除非另外明确阐述。当以此方式使用这些冠词时,描述所述(一个或多个)项目的词汇可能被写作单数形式,并且对该项目的后续引用可能为了语法一致性而包括定代词“该”,但是这不一定意指正提及仅一个项目。因此,例如,诸如“一光学插座,其中该光学插座……”之类的短语可能涵盖一个光学插座和多个光学插座二者,尽管使用了单数形式和定代词。
在本文中偶尔地结合项目列表使用了短语“和/或”。该短语意指可以包括该列表中的项目的任何组合——从单个项目到全部的项目以及其间的任何排列。因此,例如,“A、B和/或C”意指“以下中的一个:{A}、{B}、{C}、{A,B}、{A,C}、{C,B}和{A,C,B}”。
上文参考各种示例流程图描述了各种示例过程。在描述中以及在图示出的流程图中,为了易于描述以特定的顺序阐述了操作。然而,应理解的是,可以以与所描述的那些顺序不同的顺序来实行所述操作中的一些或全部,并且可以并发地(即,并行地)实行所述操作中的一些或全部。
虽然已参考前述示例描述并示出了上面的公开,但是应理解的是,可以做出其它的形式、细节和实现而不脱离本公开的精神和范围。
Claims (17)
1.一种数据存储系统,包括:
包括第一LUN的第一存储阵列;以及
包括第二LUN的第二存储阵列,
其中所述第一和第二存储阵列用于实现从作为主要LUN的所述第一LUN到作为次要LUN的所述第二LUN的复制,以及
所述第二存储阵列用于响应于从主机接收到指向所述第二LUN的写入而:
将所述写入的写入数据发送给所述第一存储阵列而同时将所述写入数据的拷贝维持在所述第二存储阵列的高速缓存的围住部分中,直到从所述第一存储阵列接收到了写入确认;以及
响应于接收到来自所述第一存储阵列的所述写入确认,准许所述写入数据的所述拷贝进入到所述第二LUN。
2.根据权利要求1所述的数据存储系统,
其中,所述第一存储阵列用于响应于接收到来自所述第二存储阵列的所述写入数据而准许所述写入数据进入到所述第一LUN并将所述写入确认发送给所述第二存储阵列。
3.根据权利要求2所述的数据存储系统,
其中,所述第一存储阵列用于制止将接收自所述第二存储阵列的所述写入数据复制到所述第二存储阵列。
4.根据权利要求1所述的数据存储系统,
其中,实现从所述第一LUN到所述第二LUN的复制包括:
所述第一存储阵列响应于从第二主机接收到指向所述第一LUN的第二写入而将所述第二写入的写入数据发送给所述第二存储阵列并向所述第二主机确认所述第二写入,以及
所述第二存储阵列准许所述第二写入的所述写入数据进入到所述第二LUN并向所述第一存储阵列确认所述第二写入。
5.根据权利要求4所述的数据存储系统,
其中,在实现从所述第一LUN到所述第二LUN的复制中,所述第二存储阵列准许所述第二写入的所述写入数据进入到所述第二LUN而不等候来自所述第一存储阵列的任何确认。
6.根据权利要求4所述的数据存储系统,
其中,在实现从所述第一LUN到所述第二LUN的复制中,所述第一存储阵列准许所述第二写入的所述写入数据进入到所述第一LUN而不等候来自所述第二存储阵列的任何确认。
7.根据权利要求1所述的数据存储系统,
所述第二存储阵列用于在准许所述写入数据的所述拷贝进入到所述第二LUN时向所述主机确认所述写入。
8.根据权利要求1所述的数据存储系统,
其中,所述第一存储阵列位于第一站点处并且所述第二存储阵列位于远离所述第一站点的第二站点处。
9.根据权利要求1所述的数据存储系统,
其中,所述第一和第二存储阵列用于基于指向具有主要状态的LUN的主机写入的相应数量和指向具有次要状态的LUN的主机写入的相应数量来在其相应的LUN之间动态地改变主要和次要状态的分配。
10.一种存储阵列,包括:
数个存储设备;以及
包括处理电路和高速缓存的存储控制器;
其中,所述存储控制器用于:
参与实现从另外存储阵列中的作为主要LUN的第一LUN到所述存储阵列中的作为次要LUN的第二LUN的复制;以及
响应于从主机接收到指向所述第二LUN的写入而:
将所述写入的写入数据发送给所述另外存储阵列而同时将所述写入数据的拷贝维持在所述高速缓存的围住部分中;以及
等候直到从所述另外存储阵列接收到了写入确认才准许所述写入数据的所述拷贝进入到所述第二LUN。
11.根据权利要求10所述的存储阵列,
其中,所述存储控制器用于在准许所述写入数据的所述拷贝进入到所述第二LUN时向所述主机确认所述写入。
12.根据权利要求10所述的存储阵列,
其中,所述存储阵列用于基于指向具有主要状态的其LUN的主机写入的相应数量和指向具有次要状态的其LUN的主机写入的相应数量来在其LUN之间动态地改变主要和次要状态的分配。
13.根据权利要求10所述的存储阵列,
其中,在参与实现从所述第一LUN到所述第二LUN的复制中,所述存储阵列准许针对来自所述另外存储阵列的复制而接收到的写入数据进入到所述第二LUN而不等候来自所述另外存储阵列的任何确认。
14.一种包括处理器可执行指令的非暂态机器可读介质,所述处理器可执行指令用于实现第一存储阵列的主要LUN与第二存储阵列的次要LUN之间的双向复制,包括:
指令,用以响应于所述第二存储阵列从主机接收到指向所述次要LUN的写入而促使所述第二存储阵列:
将所述写入的写入数据发送给所述第一存储阵列而同时将所述写入数据的拷贝维持在所述第二存储阵列的高速缓存的围住部分中;以及
等候直到从所述第一存储阵列接收到了写入确认才准许所述写入数据的所述拷贝进入到所述次要LUN。
15.根据权利要求14所述的非暂态机器可读介质,其中,所述处理器可执行指令进一步包括:
促使所述第二存储阵列在准许所述写入数据的所述拷贝进入到所述次要LUN时向所述主机确认所述写入的指令。
16.根据权利要求15所述的非暂态机器可读介质,其中,所述处理器可执行指令进一步包括:
用以促使所述第二存储阵列基于指向具有主要状态的其LUN的主机写入的相应数量和指向具有次要状态的其LUN的主机写入的相应数量来在其LUN之间动态地改变主要和次要状态的分配的指令。
17.根据权利要求15所述的非暂态机器可读介质,其中,所述处理器可执行指令进一步包括:
用以促使所述第二存储阵列通过准许针对来自所述第一存储阵列的复制而接收到的写入数据进入到所述次要LUN而不等候来自所述第一存储阵列的任何确认来参与实现从所述主要LUN到所述次要LUN的复制的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/721,284 US10452503B2 (en) | 2017-09-29 | 2017-09-29 | Bidirectional replication |
US15/721284 | 2017-09-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109582495A CN109582495A (zh) | 2019-04-05 |
CN109582495B true CN109582495B (zh) | 2023-08-22 |
Family
ID=60781584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810053786.1A Active CN109582495B (zh) | 2017-09-29 | 2018-01-19 | 数据存储系统、存储阵列及非暂态机器可读介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10452503B2 (zh) |
EP (1) | EP3462299B1 (zh) |
CN (1) | CN109582495B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436113B2 (en) * | 2018-06-28 | 2022-09-06 | Twitter, Inc. | Method and system for maintaining storage device failure tolerance in a composable infrastructure |
US11132339B2 (en) | 2018-11-13 | 2021-09-28 | Netapp Inc. | Synchronous replication for synchronous mirror copy guarantee |
US10754559B1 (en) * | 2019-03-08 | 2020-08-25 | EMC IP Holding Company LLC | Active-active storage clustering with clock synchronization |
US11755226B2 (en) | 2020-09-18 | 2023-09-12 | Hewlett Packard Enterprise Development Lp | Tracking changes of storage volumes during data transfers |
US11720274B2 (en) | 2021-02-03 | 2023-08-08 | Hewlett Packard Enterprise Development Lp | Data migration using cache state change |
US11693565B2 (en) | 2021-08-10 | 2023-07-04 | Hewlett Packard Enterprise Development Lp | Storage volume synchronizations responsive to communication link recoveries |
US20230325378A1 (en) * | 2022-04-08 | 2023-10-12 | Google Llc | Online Migration From An Eventually Consistent System To A Strongly Consistent System |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1838055A (zh) * | 2005-01-28 | 2006-09-27 | 惠普开发有限公司 | 具有数据跟踪的存储复制系统 |
CN101878470A (zh) * | 2007-11-27 | 2010-11-03 | 国际商业机器公司 | 用于管理存储拷贝服务系统的装置以及方法 |
WO2014197369A1 (en) * | 2013-06-06 | 2014-12-11 | Dana-Farber Cancer Institute, Inc. | Compositions and methods for identification, assessment prevention, and treatment of cancer using pd-l1 isoforms |
CN107133132A (zh) * | 2013-07-26 | 2017-09-05 | 华为技术有限公司 | 数据发送方法、数据接收方法和存储设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6629264B1 (en) | 2000-03-30 | 2003-09-30 | Hewlett-Packard Development Company, L.P. | Controller-based remote copy system with logical unit grouping |
US6996672B2 (en) | 2002-03-26 | 2006-02-07 | Hewlett-Packard Development, L.P. | System and method for active-active data replication |
US8321643B1 (en) | 2006-05-09 | 2012-11-27 | Vmware, Inc. | System and methods for automatically re-signaturing multi-unit data storage volumes in distributed data storage systems |
US8479210B2 (en) | 2009-10-20 | 2013-07-02 | International Business Machines Corporation | Evenly distributing workload and providing a predictable failover scenario in a data replication system |
US8375184B2 (en) * | 2009-11-30 | 2013-02-12 | Intel Corporation | Mirroring data between redundant storage controllers of a storage system |
US8635420B2 (en) * | 2010-07-22 | 2014-01-21 | Susan Elkington | Resilient mirroring utilizing peer-to-peer storage |
US9244786B2 (en) * | 2010-12-10 | 2016-01-26 | International Business Machines Corporation | Substitution of a target volume of a secondary storage controller for a source volume of a primary storage controller for executing a write operation |
US9021223B2 (en) | 2011-07-22 | 2015-04-28 | Xiotech Corporation | Resilient mirroring |
US9563517B1 (en) | 2013-12-30 | 2017-02-07 | EMC IP Holding Company LLC | Cloud snapshots |
US9477424B1 (en) | 2014-07-23 | 2016-10-25 | Qlogic, Corporation | Methods and systems for using an intelligent storage adapter for replication in a clustered environment |
WO2016209313A1 (en) | 2015-06-23 | 2016-12-29 | Hewlett-Packard Development Company, L.P. | Task execution in a storage area network (san) |
US9996272B2 (en) | 2015-09-08 | 2018-06-12 | International Business Machines Corporation | Controller-mediated volume transformation in a shared-resource environment |
-
2017
- 2017-09-29 US US15/721,284 patent/US10452503B2/en active Active
- 2017-12-15 EP EP17207612.7A patent/EP3462299B1/en active Active
-
2018
- 2018-01-19 CN CN201810053786.1A patent/CN109582495B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1838055A (zh) * | 2005-01-28 | 2006-09-27 | 惠普开发有限公司 | 具有数据跟踪的存储复制系统 |
CN101878470A (zh) * | 2007-11-27 | 2010-11-03 | 国际商业机器公司 | 用于管理存储拷贝服务系统的装置以及方法 |
WO2014197369A1 (en) * | 2013-06-06 | 2014-12-11 | Dana-Farber Cancer Institute, Inc. | Compositions and methods for identification, assessment prevention, and treatment of cancer using pd-l1 isoforms |
CN107133132A (zh) * | 2013-07-26 | 2017-09-05 | 华为技术有限公司 | 数据发送方法、数据接收方法和存储设备 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的可堆叠存储阵列设计与优化;王振升等;《微电子学与计算机》;20161105(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20190102269A1 (en) | 2019-04-04 |
US10452503B2 (en) | 2019-10-22 |
EP3462299B1 (en) | 2020-05-20 |
EP3462299A1 (en) | 2019-04-03 |
CN109582495A (zh) | 2019-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582495B (zh) | 数据存储系统、存储阵列及非暂态机器可读介质 | |
US10606715B2 (en) | Efficient high availability for a SCSI target over a fibre channel | |
US7673173B2 (en) | System and program for transmitting input/output requests from a first controller to a second controller | |
US7149769B2 (en) | System and method for multi-destination merge in a storage area network | |
US9098466B2 (en) | Switching between mirrored volumes | |
US8335899B1 (en) | Active/active remote synchronous mirroring | |
US7886298B2 (en) | Data transfer protocol for data replication between multiple pairs of storage controllers on a san fabric | |
US7523275B2 (en) | Method, system, and program for maintaining a copy relationship between primary volumes and corresponding secondary volumes | |
US9058127B2 (en) | Data transfer in cluster storage systems | |
US8527725B2 (en) | Active-active remote configuration of a storage system | |
US10884872B2 (en) | Device reservation state preservation in data mirroring | |
US7194562B2 (en) | Method, system, and program for throttling data transfer | |
US8261029B1 (en) | Dynamic balancing of writes between multiple storage devices | |
US10140183B2 (en) | Efficient state tracking for clusters | |
US20180052750A1 (en) | Online nvm format upgrade in a data storage system operating with active and standby memory controllers | |
CN112805949B (zh) | 处理快照创建请求的方法以及存储设备 | |
US10613766B1 (en) | Data replication techniques | |
US11392311B2 (en) | Overlapping replication cycles for asynchronous replication | |
WO2018016041A1 (ja) | ストレージシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TG01 | Patent term adjustment |