首页 / 专利库 / 专利权 / 申请 / 国际申请 / 请求书 / 请求 / 用于可扩展的崩溃一致的快照操作的系统和方法

用于可扩展的崩溃一致的快照操作的系统和方法

阅读:910发布:2023-02-01

专利汇可以提供用于可扩展的崩溃一致的快照操作的系统和方法专利检索,专利查询,专利分析的服务。并且本文中所描述的是一种用于可扩展的崩溃一致的快照操作的系统和方法。可以从应用程序接收写 请求 并且还可以接收快照生成请求。在快照生成请求之前接收的写请求可以与快照前标签关联,而在快照生成请求之后接收的写请求可以与快照后标签关联。此外,响应于快照生成请求,逻辑 接口 可以开始从快照前配置切换到快照后配置。然后可以基于快照前写请求来生成快照,而快照后写请求可以被挂起直到逻辑接口切换了配置为止。,下面是用于可扩展的崩溃一致的快照操作的系统和方法专利的具体信息内容。

1.一种用于生成存储在主存储设备上的数据的快照的系统,所述系统包括至少一个处理器和存储器,所述主存储设备存储包括所述数据的多个卷,所述系统包括:
快照引擎,所述快照引擎被配置成用于:
接收与一致性组的至少一个卷关联的第一组写请求和第二组写请求,所述第一组写请求是在请求生成所述一致性组的快照之前接收的,所述第二组写请求是在请求生成所述一致性组的所述快照之后接收的;
将所述第一组写请求与快照前标签关联,并且将所述第二组写请求与快照后标签关联,所述快照前标签用于指示在快照操作之前接收的写请求,并且所述快照后标签用于指示在所述快照操作之后接收的写请求;
将所述第二组写请求挂起以使得所述第二组写请求不被执行去修改所述一致性组的所述至少一个卷的数据,直到一个或多个网络接口从快照前配置切换到快照后配置为止,在请求生成所述一致性组的所述快照之前所述一个或多个网络接口与所述快照前配置相关联,并且在请求生成所述一致性组的所述快照之后所述一个或多个网络接口与所述快照后配置相关联,处于所述快照前配置的所述一个或多个网络接口将到来的写请求与所述快照前标签关联,并且处于所述快照后配置的所述一个或多个网络接口将到来的写请求与所述快照后标签关联;以及
基于所述第一组写请求生成所述一致性组的所述快照。
2.根据权利要求1所述的系统,其中,生成所述一致性组的快照之后所述第二组写请求与所述快照后标签的关联被改变成与所述快照前标签的关联,随后的生成所述一致性组的快照的请求导致至少部分地基于所述第二组写请求来生成所述一致性组的随后的快照。
3.根据权利要求1所述的系统,其中,所述一个或多个网络接口中的每个网络接口与包括所述主存储设备的数据通路相关联。
4.根据权利要求3所述的系统,其中,所述一个或多个网络接口中的每个网络接口与包括所述主存储设备的所述数据通路的互联网协议IP地址相关联。
5.根据权利要求1所述的系统,其中,所述第一组写请求和所述第二组写请求是从应用程序发出的。
6.根据权利要求5所述的系统,其中,从所述应用程序发出的所述第一组写请求和所述第二组写请求用于修改所述一致性组的所述至少一个卷的数据。
7.根据权利要求1所述的系统,其中,与所述快照前标签关联的所述第一组写请求的执行没有被挂起,而是所述第一组写请求被执行以修改所述一致性组的所述至少一个卷的数据。
8.一种用于生成存储在主存储设备上的数据的快照的方法,所述主存储设备存储包括所述数据的多个卷,所述方法包括:
使用计算机硬件以执行:
接收与一致性组的至少一个卷关联的第一组写请求和第二组写请求,所述第一组写请求在请求生成所述一致性组的快照之前接收的,所述第二组写请求是在请求生成所述一致性组的所述快照之后接收的;
将所述第一组写请求与快照前标签关联,并且将所述第二组写请求与快照后标签关联,所述快照前标签用于指示在快照操作之前接收的写请求,并且所述快照后标签用于指示在所述快照操作之后接收的写请求;
将所述第二组写请求挂起以使得所述第二组写请求不被执行去修改所述一致性组的所述至少一个卷的数据,直到一个或多个网络接口从快照前配置切换到快照后配置为止,其中在请求生成所述一致性组的所述快照之前所述一个或多个网络接口与所述快照前配置相关联,并且在请求生成所述一致性组的所述快照之后所述一个或多个网络接口与所述快照后配置相关联,处于所述快照前配置的所述一个或多个网络接口将到来的写请求与所述快照前标签关联,并且处于所述快照后配置的所述一个或多个网络接口将到来的写请求与所述快照后标签关联;以及
基于所述第一组写请求生成所述一致性组的所述快照。
9.根据权利要求8所述的方法,其中,所述一个或多个网络接口中的每个网络接口与包括所述主存储设备的数据通路相关联。
10.根据权利要求9所述的方法,其中,所述一个或多个网络接口中的每个网络接口与包括所述主存储设备的所述数据通路的互联网协议IP地址相关联。
11.根据权利要求10所述的方法,其中,所述第一组写请求和所述第二组写请求是通过所述数据通路来发送的以修改所述主存储设备的数据。
12.根据权利要求8所述的方法,其中,所述第一组写请求和所述第二组写请求是从应用程序发出的。
13.根据权利要求12所述的方法,其中,从所述应用程序发出的所述第一组写请求和所述第二组写请求用于修改所述一致性组的所述至少一个卷的数据。
14.根据权利要求8所述的方法,其中,与所述快照前标签关联的所述第一组写请求的执行没有被挂起,而且所述第一组写请求被执行以修改所述一致性组的所述至少一个卷的数据。
15.一种非易失性计算机可读介质,所述非易失性计算机可读介质承载用于生成存储在一个或多个存储设备上的一个或多个卷的快照的一个或多个指令,其中,当被一个或多个处理器执行时,所述一个或多个指令使所述一个或多个处理器执行下述步骤:
接收对存储在所述存储设备上的所述一个或多个卷的第一写请求;
执行所述第一写请求以对存储在所述存储设备上的所述一个或多个卷的数据进行修改;
将所述第一写请求与快照前标签关联,其中所述快照前标签用于指示在生成快照的请求之前接收的写请求;
接收对存储在所述存储设备上的所述一个或多个卷生成快照的请求;
响应于所述生成快照的请求,将网络接口的配置从第一配置切换到第二配置;
在所述生成快照的请求之后,接收对存储在所述存储设备上的所述一个或多个卷的第二写请求;
将所述第二写请求与快照后标签关联,其中所述快照后标签用于指示在所述生成快照的请求之后接收的写请求;
将所述第二写请求的执行挂起,直到所述网络接口从所述第一配置切换到所述第二配置为止;以及
通过使用与所述快照前标签关联的所述第一写请求而不使用与所述快照后标签关联的所述第二写请求来生成存储在所述存储设备上的所述一个或多个卷的所述快照。
16.根据权利要求15所述的非易失性计算机可读介质,其中所述网络接口与用于所述存储设备的数据通路相关联。
17.根据权利要求15所述的非易失性计算机可读介质,其中,所述第一写请求和所述第二写请求是由应用程序发出的。
18.根据权利要求15所述的非易失性计算机可读介质,所述步骤还包括:
在生成所述快照之后,将所述第二写请求与快照前标签关联。
19.根据权利要求18所述的非易失性计算机可读介质,所述步骤还包括:
接收随后的生成第二快照的请求;以及
通过使用所述第一写请求和所述第二写请求来生成存储在所述存储设备上的所述一个或多个卷的第二快照。

说明书全文

用于可扩展的崩溃一致的快照操作的系统和方法

技术领域

[0001] 本公开内容的实施例涉及存储系统,并且特别地涉及一种可扩展的崩溃一致的快照操作(scalable crash-consistent snapshot operation)。

背景技术

[0002] 存储系统通常包括一个或多个存储设备,根据需要,信息可以被输入到该存储设备中,并且可以从该存储设备获得信息。存储系统包括存储操作系统,该存储操作系统尤其通过调用对由该系统实现的存储服务进行支持的存储操作来在功能上组织该系统。可以根据多种存储架构来实现存储系统,其中包括但不限于网络附加存储环境、存储区域网络以及直接附加于客户端计算机或主计算机(host computer)的磁盘组件。存储设备通常是组织为磁盘阵列的磁盘驱动器(或者基于闪存的设备),其中术语“磁盘”通常描述独立的旋转式磁介质存储设备。在本文中,术语“磁盘”与硬盘驱动器(HDD)或直接访问存储设备(DASD)同义。
[0003] 存储系统的存储操作系统可以实现高级模(例如文件系统),以便把存储在卷上的信息逻辑地组织为存储对象的分层结构,例如文件和逻辑单元(LU)。已知类型的文件系统是对磁盘上的数据不进行改写的任意位置写入(write-anywhere)文件系统。被配置成在存储系统上操作的任意位置写入文件系统的一个示例是可以从网络存储技术公司(NetAPP,Inc.Sunnyvale,California)获得的任意位置写入文件布局( )文件系统。
[0004] 存储系统还可以被配置成使得多个服务器能够访问存储在存储系统上的存储对象。在这种模式下,通过计算机网络“连接”到存储系统的服务器可以执行诸如数据库应用程序之类的应用程序,该计算机网络例如是点到点链路、共享的局域网(LAN)、广域网(WAN)或在公用网(例如因特网)上实现的虚拟专用网络(VPN)。每个服务器可以经由网络通过向系统发出作为基于文件和基于块的协议消息(以数据包的形式)的访问请求(读/写请求)来请求存储系统的数据服务。
[0005] 可以将多个存储系统互连以提供被配置成服务于多个服务器的存储系统架构。在一些实施例中,存储系统架构提供一个或多个聚集,每个聚集包括一组一个或多个存储设备(例如磁盘)。每个聚集可以存储一个或多个存储对象,例如一个或多个卷。聚集可以分布于互连为集群的多个存储系统上。存储对象(例如,卷)可以被配置成响应于由服务器发出的多协议数据访问请求来对由集群提供服务的存储对象(例如文件和逻辑单元)的内容进行存储。
[0006] 集群的每个存储系统(节点)可以包括(i)适于服务于特定的聚集或者卷的存储服务器(称作“D-刀片”)以及(ii)适于将数据访问请求重定向到集群的任何存储服务器的多协议引擎(称作“N-刀片”)。在示例性实施例中,每个存储系统的存储服务器被实施为磁盘元件(D-刀片),而多协议引擎被实施为网络元件(N-刀片)。N-刀片从客户端接收多协议数据访问请求,将该访问请求转换成集群结构(CF,cluster fabric)消息并且将该消息重定向到集群的适当的D-刀片。
[0007] 集群的存储系统可以被配置成相互通信以共同起作用来提高性能或者以抵消集群内的任何单个存储系统故障。集群通过提供对共享存储(包括一组存储设备)的访问来给服务器提供数据服务。通常,服务器将与集群的存储系统连接,以用于与该存储系统的数据访问会话。在与存储系统的数据访问会话期间,服务器可以提交由存储系统接收并执行的访问请求(读/写请求)。
[0008] 每个存储系统可以与一个或多个卷(例如,存储在存储设备上的数据卷)关联。可以执行快照操作以生成卷的只读的拷贝。文件系统可以利用快照来生成一致性组(其包括存储在一个或多个存储设备上的一个或多个卷)的时间点的视图或图像。然而,在传统的快照操作中,到来的对卷的写请求可能被隔离或者挂起相当长的一段时间。例如,对在经受快照的卷的写请求可能被挂起,直到快照操作完成为止或者直到对于相应的卷的快照操作已经完成为止。因此,对卷的写请求可能被隔离或者挂起相当长的一段时间并且这样的一段时间会导致应用程序发出写请求超时(由于无法执行写请求)。此外,对卷的写请求的隔离或者挂起可能取决于卷和/或应用程序的特性。例如,卷可能被隔离的时间量可能取决于该卷的数据集大小。因此,隔离或者挂起时间段可能是可变的(例如,不确定的),因为它可能根据卷和应用程序而变化。
[0009] 因此,需要一种用于生成一致性组的崩溃一致的快照操作的有效的方法和系统。例如,需要下述用于生成崩溃一致的快照操作的系统和方法:该系统和方法是可扩展的并且确定的以解决应用程序超时问题。
发明内容
[0010] 本文中描述的实施例提供了一种用于快照操作的系统和方法,该快照操作是可扩展的并且确定性的。在一些实施例中,对存储在一个或多个主存储设备上的一个或多个卷执行快照操作以生成卷的只读拷贝。在相同的或者可替选的实施例中,可以执行快照操作以生成包括一个或多个卷并且被应用程序所使用的一致性组的快照。例如,应用程序可以发出写请求以修改组成一致性组的卷的数据。在一些实施例中,应用程序可以在各个时间点处发出写请求。例如,应用程序可以在快照操作被请求或者被启动之前发出写请求以修改数据或者将数据写入到一致性组的卷,应用程序也可以在快照操作被请求或者被启动之后发出写请求以修改数据或者将数据写入到一致性组的卷。因此,从应用程序发出的写请求可以被认为是快照前的(即,在快照请求之前由应用程序发出的)或者快照后的(即,在快照请求之后由应用程序发出的)。
[0011] 在一些实施例中,为了生成快照的崩溃一致拷贝,一致性组的快照请求可以导致分布式存储系统环境中的逻辑接口或者网络接口的配置的切换(即,翻转)。在相同的或者可替选的实施例中,网络接口可以包括下述组件(例如,在网络硬件上运行的存储服务器或者服务器系统或者软件层或者接口):该组件与数据通路(例如,从发出写请求的应用程序到经受写请求的卷的传输通路)关联,该数据通路包括存储一致性组的卷的主存储设备。例如,逻辑接口或者网络接口可以包括用于对从应用程序发来的、对存储在一致性组的卷上的数据进行写入的写请求进行标记或者加标签的配置。逻辑接口或者网络接口可以包括用快照前标签对到来的写请求进行标记或者加标签的第一配置(例如,快照前配置)和用快照后标签对到来的写请求进行标记或者加标签的第二配置(例如,快照后配置)。在一些实施例中,逻辑接口或者网络接口的配置可以响应于生成一致性组的快照的请求而从快照前配置切换到第二快照配置。因此,逻辑接口或者网络接口可以从将从应用程序来的写请求与快照前标签关联切换到将从应用程序来的随后的写请求与快照后标签关联。
[0012] 在一些实施例中,可以基于与快照前标签关联的写请求来生成一致性组的快照。因此,与快照后标签关联的写请求不会反映在一致性组的快照中。此外,虽然与快照前标签关联的写请求可以被立即执行以修改数据或者将数据写入到卷,但是与快照后标签关联的写请求会被短时间地挂起。例如,与快照后标签关联的写请求可以被挂起(例如,防止执行以及因此去修改一致性组的卷),直到所有相关的逻辑接口或者网络接口已经响应于生成一致性组的快照的请求而完成了从快照前配置到快照后配置的切换为止。一旦所有相关的逻辑接口或者网络接口已经从快照前配置切换到快照后配置,那么与快照后标签关联的写请求将被执行(例如,不再被挂起)。
[0013] 因此,任何写请求(例如,与快照后标签关联的写请求)的挂起取决于逻辑接口或者网络接口将配置从快照前配置切换到快照后配置的时间。由于逻辑接口或者网络接口的配置的切换不取决于可变的数据卷因而该时间可以是已知的,因此这样的挂起时间可以是与不确定性相反的确定性的。此外,由于仅根据与快照前标签关联的写请求来生成快照,因此生成的快照可以是崩溃一致的。附图说明
[0014] 图1是一些实施例在其中操作的示例性分布式存储系统环境的示意图。
[0015] 图2是可以在存储系统环境中使用的示例性管理服务器的示意性框图
[0016] 图3是可以在存储系统环境中使用的示例性存储系统的示意性框图。
[0017] 图4是根据一些实施例的用于生成一致性组的快照的技术的流程图
[0018] 图5是一些实施例在其中操作的基于与快照标签关联的写请求来生成快照的技术的流程图。
[0019] 图6是一些实施例在其中操作的基于与快照前标签(pre-snapshot tag)关联的写请求来生成快照的技术的流程图。
[0020] 图7是根据一些实施例的具有处于快照前配置的逻辑接口的存储系统环境的框图。
[0021] 图8是根据一些实施例的具有处于快照后(post-snapshot)配置的逻辑接口的存储系统环境的框图。
[0022] 图9是一些实施例在其中操作的基于逻辑接口的配置来隔离写请求的技术的流程图。
[0023] 图10示出了根据一些实施例的示例性快照数据结构。

具体实施方式

[0024] 在以下描述中,出于解释的目的而阐述了许多细节和替选方案。然而,本领域普通技术人员将意识到实施例可以在不使用这些具体细节的情况下被实施。在其他情形中,以框图形式示出了公知的结构和设备,以便不会由于不必要的细节而使实施例不清楚。
[0025] 以下的描述分为三个部分。部分I包含本文中所使用的术语。部分II描述了一些实施例在其中操作的集群存储系统环境。部分III描述了用于可扩展的崩溃一致的快照操作的系统和方法。
[0026] I.术语
[0027] 集群存储系统:如本文中所使用的,集群存储系统可以包括一组一个或多个存储系统。在一些实施例中,集群可以包括一个存储系统。因此,术语“集群”和“存储系统”有时可以互换使用。在其他实施例中,集群包括多个存储系统。
[0028] 管理程序(hypervisor):如本文中所使用的,管理程序可以指的是使得多个操作系统或者应用程序能够在主计算机上同时运行的虚拟机管理器。管理程序可以被称作“主机”。在一些实施例中,管理程序可以向客户操作系统展示虚拟操作系统并且管理客户操作系统的执行。在一些实施例中,多个操作系统的多个实例可以共享虚拟化硬件(例如,存储)资源。管理程序可以被存储在存储系统或者服务器上。
[0029] 快照:如本文中所使用的,快照包括一特征,该特征生成文件系统的在线的、只读的拷贝。快照可以在不复制文件内容的情况下防止意外删除文件或者修改文件。在一些实施例中,利用快照来生成基卷或者卷的时间点的视图或图像。当文件被改变时,快照拷贝可以仍然指向文件被修改之前文件存在的存储设备块,并且变化被写入到新的存储设备块。当快照拷贝中数据被改变时,原始数据块保持与快照拷贝相关联,而不是被标记以用于再次使用。
[0030] 逻辑接口:如本文中所使用的,逻辑接口可以包括网络接口。在一些实施例中,逻辑接口包括集群存储系统的数据通路。例如,逻辑接口可以包括在集群存储系统的特定数据通路中的网络组件(例如,服务器系统、存储系统、主存储设备、在先前提到的系统上运行的软件应用程序层或者协议)。在一些实施例中,逻辑接口可以是可标识的或者与网际协议(IP)地址相关联。在相同的或者替选的实施例中,可以通过使用逻辑接口的IP地址来发出写请求以对在与逻辑接口相关联的数据通路中的主存储设备上存储的卷进行写入。因此,逻辑接口可以包括集群存储系统的网络组件。在一些实施例中,从应用程序发出的对存储在主存储设备上的卷的写请求必须通过逻辑接口来传输和/或必须由逻辑接口来管理。
[0031] II.集群存储系统环境
[0032] 图1是一些实施例在其中操作的示例性虚拟服务器环境100的框图。环境100可以包括:经由网络165连接到一个或多个客户端系统160(例如,客户端系统160a、160b、160c、160d、160e等)的一组一个或多个服务器系统110(例如,服务器系统110a、110b、110c等);以及一个或多个存储系统120。每个服务器系统110都可以访问经由网络167连接到服务器系统110的一个或多个存储系统120(例如,存储系统120a、120b等)。一个或多个存储系统120构成了集群存储系统135。集群135中的每个存储系统120可以包括用于存储客户端数据的一组主存储设备130(例如,存储设备130a、130b、130c等),集群135的存储设备130包括存储系统120的共享存储。注意到服务器系统110还互相连接(例如,经由网络167)以用于互相通信(例如,如本文中所描述的那样,用于共同工作以给客户端系统160提供数据访问服务并且用于共同地托管(host)多个虚拟机)。
[0033] 客户端系统160可以包括下述计算机系统:该计算机系统可以与服务器系统110交互以用于提交读/写访问请求以及用于通过网络165从服务器系统110接收数据或者将数据发送给服务器系统110。在虚拟服务器环境中,客户端系统160可以通过网络165与在服务器系统110上执行的一个或多个虚拟机(VM)交互以用于提交读/写访问请求以及用于通过网络167从存储系统120接收数据或者将数据发送给存储系统120。
[0034] 服务器系统110可以包括能够执行一个或多个应用程序112(例如,应用程序112a、112b等)的计算机系统,该计算机系统与存储系统120和客户端系统160交互以用于通过网络167和网络165接收读/写访问请求以及接收或者发送数据。在一些实施例中,服务器系统
110可以包括对服务器系统110的多个实例进行托管的机箱(chassis),每个服务器系统110对实施为虚拟机的多个客户端系统进行托管。网络167和/或网络167的子网可以被物理地实施在这样的机箱内。
[0035] 在服务器系统110上执行的应用程序112可以通过发送并且处理对存储系统120的数据的访问请求来给客户端系统160提供数据访问服务。接着,应用程序112利用存储系统120的服务来对一组存储设备130中的数据进行访问、存储以及管理。因此,服务器系统110可以执行将用于对存储设备上的特定的存储对象进行访问的访问请求进行提交的一个或多个应用程序112。每个应用程序112可以提交用于对集群135的存储系统上的特定的存储对象进行访问的访问请求,而集群135可以对存储对象执行接收到的请求。应用程序112可以包括基于非虚拟机的应用程序,例如典型的电邮往来应用程序或者数据库应用程序。在其他实施例中,应用程序112可以包括基于虚拟机的应用程序,例如虚拟机(如下所述)。
[0036] 存储系统120可以通过诸如局域网(LAN)、以太网子网、PCI或者PCIe子网、交换式PCIe子网、广域网(WAN)、城域网(MAN)、因特网之类的网络167在本地被耦接到服务器系统110。在一些实施例中,服务器系统110可以包括机箱,在单个机箱(例如,刀片式服务器机箱)内对服务器系统110的多个实例进行托管,在机箱中服务器系统110的每个实例经由网络167与服务器系统110的每个其他实例通信。
[0037] 服务器系统110与存储系统120之间的交互可以使得能够提供存储服务。也就是说,服务器系统110可以请求存储系统120的服务(通过提交读/写访问请求),而存储系统120可以经由网络167通过从服务器系统110接收数据或者将数据发送给服务器系统110(例如,通过借助于网络167上的连接交换数据包)来对服务器系统110的读/写访问请求做出响应。在一些实施例中,管理服务器105可以有助于服务器系统110与存储系统120之间的交互或者虚拟服务器环境100的任何组件之间的交互。
[0038] 存储系统120与服务器系统110中的任何服务器系统110之间的通信通常被实施为经由计算机网络167发送的包。服务器系统110可以向存储系统120发送访问请求(读/写访问请求)以用于访问存储在存储系统上的特定数据。服务器系统110可以通过发出按照传统的用于访问存储设备的存储访问协议(例如CIFS、NFS等)格式化的存储-访问协议消息(storage-access protocol message)来请求存储系统120的服务。当对文件和目录形式的数据进行访问时,可以通过发出下述包来实现访问请求(例如,读/写访问请求):该包使用传输控制协议/互联网协议(TCP/IP)上的基于文件的访问协议,例如公共互联网文件系统(CIFS)协议或者网络文件系统(NFS)协议。或者,当对块形式的数据进行访问时,服务器系统110可以通过发出下述包来发出访问请求:该包使用基于块的访问协议,例如光纤通道协议(FCP)、以太网路光纤通道(FCoE)或者互联网小型计算机系统接口(iSCSI)存储区域网(SAN)访问。
[0039] 在服务器系统110上执行的每个应用程序112可以利用集群135的服务来存储和访问集群135的数据。存储系统120可以包括将数据作为存储对象存储在一组一个或多个存储设备130中的计算机系统。存储设备130可以包括可写的存储设备介质,例如存储设备、录像带、光学设备、DVD、磁带、闪存、磁随机存取存储器(MRAM)、相变RAM(PRAM)或者任何其他类似的适于存储信息(包括数据和奇偶校验信息)的介质。
[0040] 如本技术领域所公知的,存储设备130可以包括包含有一个或多个存储卷的存储对象,其中每个卷具有在该卷上实现的文件系统。在存储设备130上实现的文件系统可以将多个目录设置在单个卷中,每个目录包含零个或者多个文件名。文件系统提供了对下述的逻辑表示:在数据(文件)表示为被组织成一个或多个目录的文件名的情况下数据(文件)是怎么被组织在卷上的。一般的文件系统的示例包括:新技术文件系统(NTFS)、文件分配表(FAT)、分级文件系统(HFS)、通用存储设备格式(UDF)、 文件系统等。对于可以实现任意位置写入文件布局( )文件系统的数据 存储操作系统(可以从NetAPP,Inc.Sunnyvale,California)获得)而言,在每个卷内通常存在WAFL文件系统,并且在WAFL文件系统内,可以存在一个或多个逻辑单元(LU)。
[0041] 图2是可以在存储系统环境中使用的示例性管理服务器105的示意性框图。管理服务器105包括通过总线246耦接的服务器处理器226、服务器内存228、服务器本地存储器292、服务器网络适配器295、输出组件297以及输入组件298。
[0042] 服务器处理器226是管理服务器105的中央处理单元(CPU),并且因此,对管理服务器105的整体操作进行控制。服务器处理器226可以包括一个或多个可编程的通用或专用的微处理器、数字信号处理器(DSP)、可编程序控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等、或者这些设备的组合。服务器网络适配器295包括多个端口,该多个端口适于通过点到点链路、广域网、在公用网(因特网)上实现的虚拟专用网络或者共享局域网将管理服务器105耦接到一个或多个其它计算机系统(例如服务器110或者存储系统100)。因此,服务器网络适配器295可以包括将存储系统连接到网络所需的机械线路、电气线路和信令线路。
[0043] 输出组件297可以是通常由计算机系统所使用以给最终用户(例如管理员)提供信息的任何类型的输出组件。例如,输出组件297可以包括监控器、音频扬声器或者字母数字显示器。同样地,输入组件298可以是使得最终用户能够提供输入到计算机系统中的任何类型的输入组件。例如,输入组件298可以是键盘鼠标或者语音识别系统。在一些实施例中,管理员可以使用输入组件298来启动一致性组的快照的生成。
[0044] 服务器内存228可以是随机存取存储器(RAM)、只读存储器(ROM)等,或者是这些设备的组合。对于本领域的技术人员来说明显的是:可以使用包括各种计算机可读介质在内的其他处理和存储装置来存储并执行与本文中描述的实施例相关的程序指令。服务器内存228包括可由处理器226和适配器寻址的、用于存储软件程序代码(例如本文中描述的软件)的存储位置。服务器处理器226和服务器适配器又可以包括被配置成执行软件代码逻辑电路和/或处理元件。这样的软件代码可以包括快照引擎106和快照数据结构250。在一些实施例中,各种模块可以对管理服务器的硬件组件进行配置以产生快照引擎106和快照数据结构250。
[0045] 服务器本地存储器292是对快照引擎106和快照数据结构250执行本文中描述的实施例所需的数据进行存储的存储设备。这样的数据可以包括写请求信息。管理服务器105将存储在服务器本地存储器292上的数据加载到服务器内存228中,服务器处理器226从服务器内存228访问到这些数据。服务器本地存储器292还可以存储在执行本文中描述的实施例时由快照引擎106和快照数据结构250产生的数据。例如,这样的数据可以包括写请求以及写请求的相关标签。
[0046] 在一些实施例中,用于执行本文中描述的实施例的快照引擎106和快照数据结构250在管理服务器105上驻留并执行,该管理服务器105是外置的并且与服务器110和存储系统100是分离的。在其他实施例中,快照引擎106和快照数据结构250可以在一个或多个服务器110上和/或一个或多个存储系统100上分布、驻留并执行。
[0047] 图3是可以在图1的存储系统环境中使用的示例性存储系统120的示意性框图。本领域技术人员将理解的是,本文中描述的实施例可以施用到任何类型的专用计算机(例如存储系统)或者通用计算机,包括实施为或者不实施为存储系统的独立计算机。为此,存储系统120可以被广义地且可替选地称为计算机系统。此外,本文中描述的实施例的教导可以适用于各种存储系统架构,包括但不限于网络附加存储环境、存储区域网络以及直接附加于服务器计算机的磁盘组件。因此,术语“存储系统”应该被广义地理解为包括这样的布置。
[0048] 存储系统120包括通过系统总线360互连的网络适配器310、处理器320、内存340、非易失性随机存取存储器(NVRAM)345以及存储适配器350。网络适配器310包括通过计算机网络167将存储系统120连接到服务器系统110所需的机械线路、电气线路和信令电路。存储系统可以包括一个或多个网络适配器。每个网络适配器310具有唯一的IP地址并且可以给服务器系统110提供一个或多个数据访问端口以用于访问存储系统120(网络适配器从服务器系统110以数据包的形式接受读/写访问请求)。在一些实施例中,存储适配器350和网络适配器310可以包括可以用来执行存储适配器350和网络适配器310两者的功能的单个统一目标适配器(UTA)。
[0049] 内存340包括可由处理器320和适配器寻址的、用于存储软件程序代码和数据的存储位置。内存340可以包括随机存取形式的存储器(RAM),该存储器通常被电循环或者其它重启操作清除(例如,它是“易失性”存储器)。然而,在其他实施例中,内存340可以包括非易失性形式的存储器,该存储器不需要电源来维持信息。处理器320和适配器又可以包括被配置成执行软件代码以及对存储在内存340中的数据进行操纵的逻辑电路和/或处理元件。
[0050] 存储系统120还可以包括可以被当作后备存储器的NVRAM 345,该NVRAM 345确保在发生系统关闭或者其它不可预见的问题的情况下存储系统120不会“丢失”接收到的信息,例如CIFS和NFS请求。NVRAM 345通常是带有备用电源或者其他内置的最后状态保持能力的大容量固态存储器阵列(例如闪速存储器),该大容量固态存储器阵列在发生阵列的任何电力损失的情况下保持存储器的最后状态。因此,即使存储在内存340中的访问请求丢失或者被清除(例如,由于临时停电),也仍然可以从NVRAM 345恢复该访问请求。
[0051] 处理器320执行存储系统120的存储操作系统应用程序301,该存储操作系统应用程序301尤其通过调用对由存储系统实现的文件服务进行支持的存储操作来在功能上组织该存储系统。在一些实施例中,存储操作系统301包括由处理器320执行的多个软件层。存储操作系统的一部分300通常驻留在内存340中。然而,对于本领域的技术人员来说明显的是:可以使用包括各种计算机可读介质在内的其他处理和存储装置来存储并执行与存储操作系统300相关的程序指令。
[0052] 存储适配器350与在存储系统120上执行的存储操作系统301合作来对由服务器系统110请求的数据进行访问。数据可以存储在存储设备130上,这些存储设备130经由存储适配器350附接到存储系统120或者如本文中定义的存储系统的其它节点。存储适配器350包括通过输入/输出(I/O)互连布置(例如传统的高性能、光纤通道串行链路拓扑)耦接到存储设备130的I/O接口电路。响应于从服务器系统110接收到的访问请求,可以通过存储适配器350来获得数据,并且如有必要,在通过系统总线360转发给网络适配器310之前先由处理器
320(或者适配器350本身)对数据进行处理,在那里数据可以被格式化到包中并且送回给服务器系统110。
[0053] 在一个示例性实施例中,存储设备130可以包括磁盘设备,这些磁盘设备被布置成多个卷,每个卷具有与其相关联的文件系统。在一些实施例中,存储设备130包括下述磁盘设备:这些磁盘设备被配置成多个RAID(独立磁盘冗余阵列)组,由此多个存储设备130被结合到单个逻辑单元中(即,RAID组)。在典型的RAID组中,组的存储设备130在可以增加数据可靠性或者性能的磁盘之间共享或者复制数据。RAID组的存储设备130根据优选的RAID-4配置被配置成使得一些磁盘存储条带数据,而至少一个磁盘存储单独的数据的奇偶校验。然而,其他配置(例如,具有跨越条带分布的奇偶校验的RAID-5、RAID-DP等)也在考虑范围之内。单个卷通常包括多个存储设备130并且可以被实施为多个RAID组。
[0054] 下面简要描述用于示例性存储系统120的存储操作系统300的组织。然而,可以清楚地预期到可以使用各种替选的存储操作系统架构来实现本文中描述的实施例的原理。如上所述,如本文所使用的关于存储系统的术语“存储操作系统”通常指的是可在实现文件系统语义(例如上文引用的 )以及管理数据访问的存储系统上操作的计算机可执行代码。从该意义上讲,数据 软件是实现为微内核的这种存储操作系统的示例。存储操作系统还可以被实现为在通用操作系统(例如 或者 )上进行操作的应用程序,或者被实现为具有可配置的功能的通用操作系统。
[0055] III.用于可扩展的崩溃一致的快照操作的系统和方法
[0056] 图4是根据一些实施例的用于生成一致性组的快照的技术400的流程图。一般来说,技术400可以用于基于对与一致性组相关联的卷的写请求来生成存储在一个或多个主存储设备(例如,主存储设备130)上的卷的快照。在一些实施例中,存储系统100和/或管理服务器105的快照引擎106可以执行技术400。相对于图1-图3来描述技术400,其概念性地示出了技术400的步骤。在一些实施例中,技术400可以在人启动、交互或者干预的情况下生成在一个或多个主存储设备上存储的卷的快照。在一些实施例中,在没有人启动、交互或者干预的情况下技术400的特定步骤可以被自动执行,而技术400的其他步骤可以随着人启动来执行。例如,在一些实施例中,当应用程序(例如,应用程序112)的用户发起快照生成请求时,技术400的步骤可以被启动。
[0057] 在一些实施例中,通过存储系统100的存储操作系统301来执行或者导致执行技术400的一些步骤。存储操作系统301可以被配置成与存储系统100、服务器系统110的其它软件模块以及存储操作系统301的软件模块协同操作以共同执行本文中描述的实施例。
[0058] 如图4所示,技术400可以接收对一致性组的快照请求(步骤410处)。例如,应用程序(例如应用程序112)的用户可以提交或者发出要对一致性组(例如,由应用程序112使用来存储数据块的一个或多个卷,其中,该一个或多个卷存储在一个或多个主存储设备130上)生成快照的请求或者指示。在一些实施例中,快照引擎106可以接收对一致性组生成快照的请求。技术400还可以隔离到来的对一致性组的写请求(在块420处)。例如,在快照请求之后接收到或者发出的写请求(例如,从应用程序112发出以用于对主存储设备130上存储的卷的数据块进行存储或者修改)可以被挂起以使得对相关的卷将不会执行写请求。这样,来自快照生成请求之后的写请求的、对在经受快照请求的卷上存储的数据块的修改或添加将不会被完成和/或执行,同时写请求被隔离和/或挂起。在一些实施例中,快照引擎106和/或服务器系统以及存储系统可以执行将写请求挂起和/或隔离所需的操作。这样,包括修改与卷相关联的数据块的写请求可以被暂停或者阻止执行一段时间。
[0059] 如图4所示,技术400还可以根据隔离前写请求(pre-fenced write request)来生成一致性组的快照(步骤430处)。例如,快照引擎106可以基于来自应用程序(例如,应用程序112)的下述写请求来生成在主存储设备(例如,主存储设备130)上存储的卷的快照:该写请求是在对一致性组启动或者生成快照的请求之前被接收(例如,被服务器系统110或者存储系统100)或者被发出的。因此,隔离前写请求可以是下述写请求:该写请求是在对包括与写请求关联的卷的一致性组生成快照的请求已经发出或者被接收之前由应用程序(例如,应用程序112)发出的。此外,技术400可以执行被隔离的到来的对一致性组的写请求(步骤440处)。例如,快照引擎106可以不隔离或者不再挂起在步骤420处被挂起或者被隔离的从应用程序(例如,应用程序112)来的写请求。因此,可以在对包括与写请求关联的卷的一致性组生成快照之后执行写请求。在一些实施例中,可以在一个或多个逻辑接口切换配置状态之后不再隔离并且从而执行写请求,如在下文进一步详细讨论的那样。
[0060] 因此,可以基于对一致性组的一个或多个卷的写请求来生成包括一个或多个卷的一致性组的快照。例如,当快照请求被启动时,可以将快照请求启动之后的写请求挂起或者隔离,直到针对一个个卷中的每个卷都已经生成了快照为止或者直到已经生成了单独的卷的快照(例如,对第一卷的快照已经完成,因此可以不再挂起或者隔离对第一卷的写请求,而对第二卷的写请求可能仍然被挂起直到第二卷的快照完成为止)为止。因此,可以基于在快照请求之前发出的写请求来执行一致性组的快照。下文中公开了关于快照生成操作的更多细节。
[0061] 图5是一些实施例在其中操作的基于与快照标签关联的写请求来生成快照的技术500的流程图。一般来说,快照引擎106可以基于下述快照标签来生成包括在一个或多个主存储设备(例如,主存储设备130)上存储的一个或多个卷的一致性组的快照:该快照标签与对一致性组的一个或多个卷的写请求相关联。在一些实施例中,存储系统100和/或管理服务器105的快照引擎106可以执行技术500。相对于图1-图3来描述技术500,其概念性地示出了技术500的步骤。在一些实施例中,技术500可以在人启动、交互或者干预的情况下生成在一个或多个主存储设备上存储的卷的快照。在一些实施例中,在没有人启动、交互或者干预的情况下技术500的特定步骤可以被自动执行,而技术500的其他步骤可以随着人启动来执行。例如,在一些实施例中,当应用程序(例如,应用程序112)的用户发起快照请求时,技术
500的步骤可以被启动或者可以被连续操作。
[0062] 在一些实施例中,通过存储系统100的存储操作系统301来执行或者导致执行技术500的一些步骤。存储操作系统301可以被配置成与存储系统100、服务器系统110的其它软件模块以及存储操作系统301的软件模块协同操作以共同执行本文中描述的实施例。
[0063] 如图5所示,技术500可以接收写请求(步骤510处)。例如,应用程序(例如,应用程序112)可以发出写请求来修改存储在主存储设备(例如,主存储设备130)上的卷。在一些实施例中,管理服务器105、快照引擎106和/或存储系统100可以接收和/或识别由应用程序发出的写请求。此外,技术500可以将一个或多个写请求与快照前标签(pre-snapshot tag)关联(步骤520处)。例如,快照引擎106可以将由应用程序(例如,应用程序112)发出的写请求与快照前标签关联并且通过使用快照数据结构250来记录写请求与快照前标签的关联。这样,在快照请求被启动之前由应用程序发出的写请求可以与快照前标签关联并且被快照前标签标识。技术500还可以接收快照请求(步骤530处)。例如,快照引擎106可以从应用程序(例如,应用程序112)或者用户接收要对包括存储在一个或多个主存储设备(例如,主存储设备130)上的一个或多个卷的一致性组生成快照的快照请求。
[0064] 如图5所示,技术500可以接收一个或多个随后的写请求(步骤540处)。例如,应用程序(例如,应用程序112)可以发出另一个写请求来修改存储在主存储设备(例如,主存储设备130)上的卷。在一些实施例中,管理服务器105、快照引擎106和/或存储系统100可以接收和/或识别由应用程序发出的随后的写请求(例如,在步骤530处的快照请求之后发出的写请求)。技术500还可以将随后的写请求与快照后标签关联(步骤550处)。例如,快照引擎106可以将快照请求(例如,来自步骤530)之后由应用程序(例如,应用程序112)发出的每个写请求与快照后标签(post-snapshot tag)关联。在一些实施例中,快照引擎可以将快照请求之后由应用程序发出的写请求与快照后标签关联并且通过使用快照数据结构250来记录写请求与快照后标签的关联。这样,在快照请求被启动之后由应用程序发出的写请求可以与快照后标签关联或者被快照后标签标识。技术500还可以将与快照后标签关联的随后的写请求隔离,直到一个或多个逻辑接口与快照后配置关联为止(步骤560处)。例如,快照引擎106可以将由应用程序发出的写请求挂起直到分布式存储系统环境或者集群存储系统环境的一个或多个逻辑接口从快照前配置切换到快照后配置为止。在一些实施例中,逻辑接口可以包括与一个或多个主存储设备、存储服务器和/或服务器系统相关联的互联网协议(IP)集群。例如,逻辑接口可以包括一个或多个服务器系统、一个或多个存储系统、一个或多个网络和/或一个或多个主存储设备,或者这些的任意组合。在一些实施例中,每个逻辑接口可以与状态或者比特相关联(如下文将进一步讨论的那样),以识别与逻辑接口相关联的快照前状态或者快照后状态。例如,在快照请求被接收或者被启动之前逻辑接口可以与快照前状态或者配置相关联,以使得在快照请求(例如,来自步骤530)之前由应用程序发出的写请求可以与快照前标签关联。此外,在快照请求被接收或者被启动之后逻辑接口可以与快照后状态或者配置相关联,以使得在快照请求(例如,来自步骤530)之后由应用程序发出的写请求可以与快照后标签关联。最后,技术500可以通过使用与快照前标签关联的写请求来生成一致性组的快照(步骤570处)。这样,不需要与快照后标签关联的写请求就可以生成一致性组的快照。在一些实施例中,生成一致性组的快照之后,写请求与快照后标签的关联可以变成与快照前标签关联(例如,与写请求关联的标签可以响应于一致性组的快照的生成而从快照前变成快照后)。例如,随后的写请求可以被接收并且与快照后标签关联。响应于一致性组的第一快照的生成,随后的写请求现在可以与快照前标签关联。因此,响应于随后的快照请求,可以基于随后的写请求(以及之前的写请求)来生成随后的快照。
[0065] 因此,可以由应用程序发出写请求。写请求可以被关联为快照前写请求或者快照后写请求。例如,在快照请求之前发出的写请求可以与快照前标签关联,而快照请求之后发出的写请求可以与快照后标签关联。在一些实施例中,执行与快照前标签关联的写请求以修改卷的数据块,而与快照后标签关联的写请求被隔离或者被挂起,以使得不执行写请求来修改卷的数据块。快照请求可以导致生成包括下述卷的一致性组的快照:该卷反映了与快照前标签关联的写请求,而没有反映与快照后标签关联的写请求。在一些实施例中,与快照后标签关联的写请求被挂起或者防止被执行去修改卷的数据块,直到每个逻辑接口将其配置从快照前变到或者翻转到快照后为止,如下文进一步描述的那样。因此,可以基于或者根据与快照前标签关联的、对一个或多个卷的写请求来生成包括一个或多个卷的一致性组的快照。
[0066] 图6是一些实施例在其中操作的基于与快照前标签关联的写请求来生成快照的技术600的流程图。一般来说,快照引擎106可以基于与快照前标签关联的对一个或多个卷的写请求来生成包括在一个或多个主存储设备(例如,主存储设备130)上存储的一个或多个卷的一致性组的快照。在一些实施例中,存储系统100和/或管理服务器105的快照引擎106可以执行技术600。相对于图1-图3来描述技术600,其概念性地示出了技术600的步骤。在一些实施例中,技术600可以在人启动、交互或者干预的情况下生成在一个或多个主存储设备上存储的卷的快照。在一些实施例中,在没有人启动、交互或者干预的情况下技术600的特定步骤可以被自动执行,而技术600的其他步骤可以随着人启动来执行。例如,在一些实施例中,当应用程序(例如,应用程序112)的用户发起快照请求时,技术600的步骤可以被启动或者可以被连续操作。
[0067] 如图6所示,技术600可以接收写请求记录或者数据结构(例如,快照数据结构250)(步骤610处)。例如,快照引擎106可以接收写请求日志或者快照数据结构250,该写请求日志或者快照数据结构250包括由应用程序112发出的写请求的记录。方法600还可以根据接收到的写请求记录识别写请求(步骤620处)。例如,快照引擎106可以识别由应用程序112发出的第一写请求和第二写请求。在一些实施例中,写请求记录中的每个写请求可以与标签关联。例如,第一写请求可以与快照前标签关联而第二写请求可以与快照后标签关联。方法600可以确定之前识别的写请求是与快照前标签关联还是与快照后标签关联(步骤630处)。
如果写请求与快照前标签关联,则方法可以生成包括下述卷的一致性组的快照:该卷反映与快照前标签关联的写请求(步骤640处)。然而,如果写请求不是与快照前标签关联,而是与快照后标签关联,那么技术600不会生成包括下述卷的一致性组的快照:该卷反映与快照后标签关联的写请求(步骤650处)。这样,可以基于与快照前标签关联的写请求来生成包括一个或多个卷的一致性组的快照,而与快照后标签关联的写请求会从构成一致性组的卷的快照排除。
[0068] 图7是根据一些实施例的包括处于快照前配置的逻辑接口的存储系统环境700的框图。一般来说,存储系统环境700可以包括与配置状态相关联的一个或多个逻辑接口。在一些实施例中,快照引擎106可以管理和/或改变逻辑接口的配置状态。
[0069] 如图7所示,存储系统环境700可以包括应用程序。例如,存储系统环境700可以包括在服务器系统110上运行的应用程序112。在一些实施例中,应用程序112可以发出一个或多个写请求。例如,应用程序112可以发出一个或多个写请求以将数据写入到共同构成一致性组750的一个或多个卷。因此,应用程序112可以发出写请求来修改组成一致性组的卷中的数据。在一些实施例中,存储系统环境700可以包括多个逻辑接口。例如,存储系统环境700可以包括逻辑接口740、逻辑接口730和逻辑接口720。在一些实施例中,从应用程序发出以修改一致性组750的卷的数据的写请求可以经过逻辑接口720、逻辑接口730或逻辑接口
740中的至少一个逻辑接口或者逻辑接口720、逻辑接口730或逻辑接口740的任意组合。例如,从应用程序112发出的对第一卷的第一写请求可以必须经过逻辑接口740,从应用程序
112发出的对第二卷的第二写请求可以必须经过逻辑接口730,以及从应用程序112发出的对第三卷的第三写请求可以必须经过逻辑接口720。如图7所示,逻辑接口720、逻辑接口730以及逻辑接口740中的每个逻辑接口可以与比特(例如,数字‘0’)关联。在一些实施例中,与逻辑接口720、逻辑接口730以及逻辑接口740关联的比特可以指示或者确定逻辑接口720、逻辑接口730以及逻辑接口740中的每个逻辑接口的配置状态。例如,当针对逻辑接口720、逻辑接口730以及逻辑接口740中的任何逻辑接口的比特被设定为‘0’时,对应的逻辑接口的配置状态可以是快照前配置。在一些实施例中,当逻辑接口处于快照前配置状态时,那么由应用程序112发出的、用于修改作为一致性组750的一部分的卷的数据的、经过逻辑接口
720、逻辑接口730或者逻辑接口740中的一个逻辑接口的任何写请求可以与快照前标签关联。
[0070] 图8是根据一些实施例的包括处于快照后配置的逻辑接口的存储系统环境800的框图。一般来说,存储系统环境800与存储系统环境700类似,但是逻辑接口变到或者翻转到快照后配置状态。例如,快照引擎106可以改变或者翻转存储系统环境的逻辑接口中的每个逻辑接口的配置状态。
[0071] 如图8所示,存储系统环境800可以包括发出对一致性组750的卷的写请求的应用程序112。此外,存储系统环境还可以包括逻辑接口720、逻辑接口730以及逻辑接口740。如上文所讨论的,由应用程序112发出以修改一致性组750的卷的数据的任何写请求可以经过逻辑接口720、逻辑接口730或逻辑接口740中的至少一个逻辑接口。此外,逻辑接口720、逻辑接口730以及逻辑接口740可以将标签(例如,快照前标签或者快照后标签)关联到来自应用程序112的写请求。在一些实施例中,可以通过快照引擎112来配置逻辑接口中的每个逻辑接口以改变、切换或者翻转比特(例如,从‘0’到‘1’)或者配置状态(例如,从快照前到快照后)。因此,逻辑接口720、逻辑接口730以及逻辑接口740中的每个逻辑接口可以被改变或者被配置成快照后配置。因此,如果逻辑接口已经被配置成快照后配置,则来自应用程序112的每个写请求可以与快照后标签关联。
[0072] 如上文所讨论的,与快照后标签关联的写请求可以被隔离或者挂起直到所有关联的逻辑接口从快照前配置切换或者翻转到快照后配置为止。例如,如图8所示,逻辑接口720、逻辑接口730以及逻辑接口740中的每个逻辑接口与‘1’关联以指示快照后配置。在一些实施例中,从应用程序112发出的任何写请求可以被隔离或者挂起(即,不执行)直到逻辑接口720、逻辑接口730以及逻辑接口740中的每个逻辑接口被切换到快照后配置为止。例如,如果逻辑接口720和逻辑接口730已经切换到快照后配置(例如,比特值‘1’),但是逻辑接口740还没有切换到快照后配置(例如,逻辑接口740仍然处于指示快照前配置的比特值‘0’),那么来自应用程序112的与快照后标签关联的任何写请求都不会被执行。然而,当逻辑接口740切换到快照后配置(例如,比特值‘1’)时,那么来自应用程序112的与快照后标签关联的写请求则可以被执行(例如,数据可以被写入到一致性组750的卷)。
[0073] 图9是一些实施例在其中操作的基于逻辑接口的配置来隔离写请求的技术900的流程图。一般来说,快照引擎106可以将与快照后标签关联的写请求隔离或者挂起直到一个或多个逻辑接口将配置或者状态从快照前切换或者翻转到快照后为止。在一些实施例中,存储系统100和/或管理服务器105的快照引擎106可以执行技术900。相对于图1-图3来描述技术900,其概念性地示出了技术900的步骤。在一些实施例中,技术900可以在人启动、交互或者干预的情况下生成在一个或多个主存储设备上存储的卷的快照。在一些实施例中,在没有人启动、交互或者干预的情况下技术900的特定步骤可以被自动执行,而技术900的其他步骤可以随着人启动来执行。例如,在一些实施例中,当应用程序(例如,应用程序112)的用户发起快照请求时,技术900的步骤可以被启动。
[0074] 如图9所示,技术900可以接收快照请求(步骤910处)。例如,快照引擎106可以接收来自应用程序112的用户的、用于对一致性组(该一致性组包括在一个或多个主存储设备130上存储的一个或多个卷)执行快照操作的请求。技术900还可以翻转或者改变与逻辑接口关联的状态或配置(步骤920处)。例如,可以将逻辑接口的配置从快照前配置或状态改变成快照后配置或状态。在一些实施例中,逻辑接口的配置的切换可以响应于快照请求的接收。在相同的或者可替选的实施例中,通过具有快照前配置或状态的逻辑接口接收或发送的写请求可以与快照前标签关联。在相同的或者可替选的实施例中,通过具有快照后配置或状态的逻辑接口接收或发送的写请求可以与快照后标签关联。因此,逻辑接口的配置或状态的翻转或改变可以使与到来的写请求关联的标签从快照前标签变成快照后标签。此外,技术900可以接收写请求(步骤930处)。例如,快照引擎106可以接收从应用程序发出的写请求。在一些实施例中,写请求可以包括与快照后标签关联的写请求。接下来,技术900可以确定所有逻辑接口的状态或配置是否已经完成从快照前配置到快照后配置的切换或翻转(步骤940处)。例如,如果所有逻辑接口已经从快照前配置切换或者翻转到快照后配置,则方法900可以不或者可以不再隔离或者挂起与快照后标签关联的写请求(步骤950处)。然而,如果技术900确定至少一个逻辑接口还没有使其关联的配置或状态从快照前切换到快照后,那么与快照后标签关联的所有写请求仍然会被挂起并且防止执行(步骤960处)。
[0075] 因此,与快照后标签关联的写请求会被挂起或者隔离,直到每个逻辑接口的配置都从快照前配置切换到快照后配置为止。在一些实施例中,一旦每个逻辑接口都切换到了快照后配置,那么与快照后标签关联的写请求可以不再被挂起并且因此可以被执行以修改与写请求关联的卷的数据块。在相同的或者可替选的实施例中,与快照前标签关联的写请求可以已经被执行并且不经受挂起或者隔离。
[0076] 图10示出了根据一些实施例的示例性快照数据结构。一般来说,快照引擎106可以使用快照数据结构1000来生成包括一致性组(例如,一致性组750)的快照,该一致性组包括在一个或多个主存储设备(例如,主存储设备130)上存储的一个或多个卷。
[0077] 在一些实施例中,快照数据结构1000可以识别与由应用程序(例如,应用程序112)发出的一个或多个写请求关联的标签。可以构建并维护快照数据结构1000以将写请求与快照标签关联。例如,快照引擎106可以构建并维护快照数据结构1000和/或使用快照数据结构1000来生成快照以及来隔离或者挂起写请求。
[0078] 如图10所示,快照数据结构1000包括多个数据集条目1050,每个数据集条目1050代表一个写请求标识符。每个数据集条目1050可以包括多个数据域(data field),该多个数据域用于存储对对应的写请求进行描述的数据。
[0079] 在一些实施例中,数据集条目1050可以代表来自应用程序112的写请求并且可以包含针对写请求标识符1010、快照前标签标识符1020以及快照后标签标识符1030的数据域。写请求标识符1010可以包括对由应用程序发出的特定的写请求进行识别的信息。例如,写请求标识符1010可以包括写请求的名字或者编号。因此,写请求标识符1010可以识别由应用程序发出的写请求。
[0080] 快照前标签标识符1020可以指示由写请求标识符1010标识的对应的写请求是否与快照前标签关联。例如,如果写请求与快照前标签关联,那么针对该写请求的对应的快照前标签标识符1020数据域可以指示值‘1’。然而,如果写请求没有与快照前标签关联,那么针对该写请求的对应的快照前标签标识符1020数据域可以指示值‘0’。
[0081] 快照后标签标识符1030可以指示由写请求标识符1010标识的对应的写请求是否与快照后标签关联。例如,如果写请求与快照后标签关联,那么针对该写请求的对应的快照后标签标识符1030数据域可以指示值‘1’。然而,如果写请求没有与快照后标签关联,那么针对该写请求的对应的快照后标签标识符1030数据域可以指示值‘0’。在一些实施例中,根据写请求标识符1010数据域的每个写请求必须只与快照前标签或者快照后标签中的一个关联。因此,针对每个写请求的快照前标签标识符或者快照后标签标识符中只有一个可以指示值‘1’。
[0082] 在一些实施例中,当写请求从应用程序发出时或者当接收到快照生成请求时可以生成或者接收写请求标识符1010、快照前标签标识符1020和快照后标签标识符1030。例如,每当写请求被发出时和/或每当接收到对一致性组的快照生成请求时快照数据结构1000可以被更新。
[0083] 各种实施例
[0084] 对于计算机领域的技术人员而言明显的是,可以使用传统的通用计算机或者专用数字计算机或者根据本文中的教导编程的微处理器来方便地实现一些实施例。可以通过被编程成执行本文中描述的方法或处理步骤的通用计算机来实现一些实施例。这样的编程可以产生新的机器或专用计算机,用于依照来自程序软件的指令来执行具体的方法或处理步骤以及功能(本文中描述的)。对于软件领域的技术人员而言明显的是,程序员可以基于本文中的教导来准备适当的软件编码。对于本领域的技术人员而言显而易见的是,还可以通过准备专用集成电路或者通过将传统的组件电路的适当的网络进行互连来实现一些实施例。本领域的技术人员要理解的是,可以使用各种不同的技术和方法中的任何技术和方法来表示信息。
[0085] 一些实施例包括计算机程序产品,该计算机程序产品包括在其上/其中存储有指令的计算机可读介质(媒介),并且,当指令被执行(例如,通过处理器)时,执行本文中描述的方法、技术或实施例,计算机可读介质包括很多组指令以用于执行本文中描述的方法、技术或实施例的各个步骤。计算机可读介质可以包括非易失性计算机可读介质。计算机可读介质可以包括其上存储有指令的存储介质,其中指令可以用于控制或者使计算机执行实施例的任何处理。存储介质可以包括但不限于下述任何类型的设备或者适于在其上/其中存储指令和/或数据的任何其他类型的介质或者设备,上述任何类型的设备包括软盘、微型磁盘(MD)、光盘、DVD、CD-ROM、微驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备(包括闪存卡)、磁卡或者光卡、纳米系统(包括分子存储器IC)、RAID设备、远程数据存储/存档/仓储。
[0086] 一些实施例包括存储在计算机可读介质(媒介)中的任何之一上的软件指令以用于控制通用计算机的或者专用计算机的或者微处理器的硬件,并且用于使得计算机或者微处理器能够与人类用户和/或使用实施例的结果的其它机制交互。这样的软件可以包括但不限于设备驱动程序、操作系统以及用户应用程序。最后,这样的计算机可读介质还包括用于执行本文中描述的实施例的软件指令。包括在通用/专用计算机或者微处理器的编程(软件)中的是用于实现一些实施例的软件模块。
[0087] 本领域技术人员还要理解的是,本文中描述的实施例的各种示例性逻辑块、电路、模块、算法、技术、处理或者方法步骤可以被实现为计算机电子硬件、计算机软件或者两者的结合。为了示出硬件和软件的这种可互换性,本文中已就功能性而言大致描述了各种示例性组件、块、模块、电路以及步骤。这种功能性是实现为硬件还是软件取决于具体的应用和施加于整个系统上的设计限制条件。熟练的技术人员可针对每一具体应用以不同方式来实现所描述的功能性,但不应将此类实现方案决策理解为造成与本文中描述的实施例偏离。
[0088] 结合本文中公开的实施例描述的各种示例性逻辑块、模块以及电路可以通过下述组件来实现或者被执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程阵列(FPGA)或者其他可编程的逻辑设备、分立门(discrete gate)或晶体管逻辑、分立硬件组件或者设计用于执行本文所述功能的其他任意组合。通用处理器可以是微处理器,但是在替选方案中,处理器可以是任何传统的处理器、控制器、微控制器或者状态机。处理器还可以被实现为计算机设备的组合,例如DSP和微处理器的组合、多个微处理器的组合、与DSP内核结合的一个或多个微处理器或者任何其他这样的配置。
[0089] 结合本文中所公开的实施例描述的算法、技术、处理或者方法可以直接实施为硬件、由处理器执行的软件或者两者的结合。在一些实施例中,本文中描述的任何软件应用程序、程序、工具、模块或者层可以包括引擎,该引擎包括被配置成执行本文中描述的实施例的硬件和/或软件。一般来说,本文中描述的软件应用程序、程序、工具、模块或者层的功能可以直接实施为硬件,或者实施为由处理器执行的软件,或者实施为两者的结合。软件应用程序、层或者模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或者本领域中已知的任何其他形式的存储介质中。将示例性存储介质耦接到处理器,使得处理器可以从存储介质读取数据以及向存储介质写入数据。或者,存储介质可以集成在处理器中。处理器和存储介质可以驻留在专用集成电路(ASIC)中。ASIC可以驻留在用户设备中。或者,处理器和存储介质可以作为分立组件驻留在用户设备中。
[0090] 虽然已经参照许多具体细节描述了本文中描述的实施例,但本领域普通技术人员应该意识到,可以在不脱离本实施例的精神的情况下以其它具体形式来实施本实施例。因此,本领域普通技术人员将理解,本文中描述的实施例不由前述示意性细节所限制,而是由所附的权利要求书来限定。
相关专利内容
标题 发布/更新时间 阅读量
请求处理技术 2020-05-12 645
短资源请求 2020-05-11 223
请求额外频谱 2020-05-12 545
HTTPS请求充实 2020-05-11 375
请求式定位 2020-05-11 977
并发请求调度 2020-05-12 648
预留请求改进 2020-05-12 927
存储器请求仲裁 2020-05-13 245
触发多载波请求 2020-05-13 49
触发多载波请求 2020-05-13 346
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈