首页 / 专利库 / 专利权 / 申请 / 国际申请 / 请求书 / 请求 / 在分布式储存系统中的快照的同步

在分布式储存系统中的快照的同步

阅读:636发布:2023-03-05

专利汇可以提供在分布式储存系统中的快照的同步专利检索,专利查询,专利分析的服务。并且一种方法,包括通过将写入 请求 发送到多个目的 节点 (108A、108B、108C)而储存在源节点(100)中生成的数据。目的节点被请求以创建数据的快照。在源节点处,写入请求采用标记进行标记,该标记向每个目的节点指示写入请求中的哪些是在用于目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及写入请求中的哪些是在用于目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求。基于该标记,快照与在目的节点处的另一个快照进行同步。,下面是在分布式储存系统中的快照的同步专利的具体信息内容。

1.一种方法,包括:
通过将写入请求发送到多个目的节点,储存在源节点中生成的数据;
请求所述目的节点创建所述数据的快照;
在所述源节点处,采用标记对所述写入请求进行标记,所述标记向每个目的节点指示所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求;
在所述目的节点处,基于所述标记使所述快照彼此同步。
2.根据权利要求1所述的方法,其中,发送所述写入请求包括向所述多个目的节点发送相同数据的多个相应的副本。
3.根据权利要求1或2所述的方法,其中,使所述快照同步包括在每个目的节点中使用所述标记区分所述快照前写入请求和所述快照后写入请求,并且仅服务所述快照前写入请求。
4.根据权利要求3所述的方法,还包括在每个目的节点中使每个快照后写入请求排队,直到其由于后续的快照请求的到达而变成快照前写入请求为止。
5.根据权利要求1或2所述的方法,其中,使所述快照同步包括在每个目的节点中使所述写入请求排队,并且仅服务变成快照前写入请求的所排队的写入请求。
6.根据权利要求1或2所述的方法,其中,对所述写入请求进行标记包括对每个写入请求采用相应的计数器值加标签,所述相应的计数器值指示由所述源节点最近请求的所述快照。
7.根据权利要求6所述的方法,其中,使所述快照同步包括:在每个目的节点中,通过将每个写入请求的相应的计数器值与所述目的节点当前正在储存的所述快照的参考计数器值进行比较,来区分所述快照前写入请求和所述快照后写入请求。
8.一种系统,包括至少一个源节点和多个目的节点,其中,所述源节点被配置成通过将写入请求发送到所述目的节点来储存数据;并且采用标记对所述写入请求进行标记,所述标记向每个目的节点指示所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求;并且其中,所述目的节点被配置成基于所述标记使所述快照彼此同步。
9.根据权利要求8所述的系统,其中,所述源节点被配置成向所述多个目的节点发送相同数据的多个相应的副本。
10.根据权利要求8或9所述的系统,其中,每个目的节点被配置成使用所述标记区分所述快照前写入请求和所述快照后写入请求,并且仅服务所述快照前写入请求。
11.根据权利要求10所述的系统,其中,每个目的节点被配置成使每个快照后写入请求排队,直到其由于后续的快照请求的到达而变成快照前写入请求为止。
12.根据权利要求8或9所述的系统,其中,每个目的节点被配置成使所述写入请求排队,并且仅服务变成快照前写入请求的排队的写入请求。
13.根据权利要求8或9所述的系统,其中,所述源节点被配置成对每个写入请求采用相应的计数器值进行标记,所述相应的计数器值指示由所述源节点最近请求的所述快照。
14.根据权利要求13所述的系统,其中,每个目的节点被配置成通过将每个写入请求的相应的计数器值与所述目的节点当前正在储存的所述快照的参考计数器值进行比较,以区分所述快照前写入请求和所述快照后写入请求。
15.一种计算机软件产品,所述产品包括程序指令被储存于其中的有形的非暂时性计算机可读介质,当所述指令由通过通信网络互相连接的源节点和多个目的节点的处理器读取的时候,使所述处理器:通过将写入请求发送到所述多个目的节点而储存在所述源节点中生成的数据;请求所述目的节点创建所述数据的快照;采用标记对在所述源节点处的所述写入请求进行标记,所述标记向每个目的节点指示所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求;以及在所述目的节点处基于所述标记使所述快照彼此同步。
1.一种方法,包括:
通过将与逻辑卷关联的写入请求发送到多个目的节点,储存属于所述逻辑卷的并且在源节点中生成的数据;
请求所述目的节点创建所述数据的快照;
在所述源节点处,采用标记对所述写入请求进行标记,所述标记向每个目的节点指示所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求;以及
在所述目的节点处,通过下列方式,使所述快照彼此同步:
分别在所述目的节点中的每个目的节点中,基于所述标记区分所述快照前写入请求和所述快照后写入请求,而不论在所述目的节点之间的所述快照请求和所述写入请求的到达顺序中的差异;以及
分别在所述目的节点中的每个节点中,仅服务所述快照前写入请求。
2.根据权利要求1所述的方法,其中,发送所述写入请求包括向所述多个目的节点发送相同数据的多个相应的副本。
3.根据权利要求1所述的方法,还包括在每个目的节点中使每个快照后写入请求排队,直到其由于后续的快照请求的到达而变成快照前写入请求为止。
4.根据权利要求1或2所述的方法,其中,使所述快照同步包括在每个目的节点中使所述写入请求排队,并且仅服务变成快照前写入请求的所排队的写入请求。
5.根据权利要求1或2所述的方法,其中,对所述写入请求进行标记包括对每个写入请求采用相应的计数器值加标签,所述相应的计数器值指示由所述源节点最近请求的所述快照。
6.根据权利要求5所述的方法,其中,使所述快照同步包括:在每个目的节点中,通过将每个写入请求的相应的计数器值与所述目的节点当前正在储存的所述快照的参考计数器值进行比较,来区分所述快照前写入请求和所述快照后写入请求。
7.一种系统,包括至少一个源节点和多个目的节点,其中,所述源节点被配置成通过将与逻辑卷关联的写入请求发送到所述目的节点来储存属于所述逻辑卷的数据;并且采用标记对所述写入请求进行标记,所述标记向每个目的节点指示所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求;
并且其中,所述目的节点被配置成基于所述标记通过下列方式使所述快照彼此同步:
分别在所述目的节点中的每个目的节点中,基于所述标记区分所述快照前写入请求和所述快照后写入请求,而不论在所述目的节点之间的所述快照请求和所述写入请求的到达顺序中的差异;以及
分别在所述目的节点中的每个节点中,仅服务所述快照前写入请求。
8.根据权利要求7所述的系统,其中,所述源节点被配置成向所述多个目的节点发送相同数据的多个相应的副本。
9.根据权利要求7所述的系统,其中,每个目的节点被配置成使每个快照后写入请求排队,直到其由于后续的快照请求的到达而变成快照前写入请求为止。
10.根据权利要求7或8所述的系统,其中,每个目的节点被配置成使所述写入请求排队,并且仅服务变成快照前写入请求的排队的写入请求。
11.根据权利要求7或8所述的系统,其中,所述源节点被配置成对每个写入请求采用相应的计数器值进行标记,所述相应的计数器值指示由所述源节点最近请求的所述快照。
12.根据权利要求11所述的系统,其中,每个目的节点被配置成通过将每个写入请求的相应的计数器值与所述目的节点当前正在储存的所述快照的参考计数器值进行比较,以区分所述快照前写入请求和所述快照后写入请求。
13.一种计算机软件产品,所述产品包括程序指令被储存于其中的有形的非暂时性计算机可读介质,当所述指令由通过通信网络互相连接的源节点和多个目的节点的处理器读取的时候,使所述处理器:通过将与逻辑卷关联的写入请求发送到所述多个目的节点而储存属于所述逻辑卷的并且在所述源节点中生成的数据;请求所述目的节点创建所述数据的快照;采用标记对在所述源节点处的所述写入请求进行标记,所述标记向每个目的节点指示所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求;以及在所述目的节点处基于所述标记通过下列方式使所述快照彼此同步:
分别在所述目的节点中的每个目的节点中,基于所述标记区分所述快照前写入请求和所述快照后写入请求,而不论在所述目的节点之间的所述快照请求和所述写入请求的到达顺序中的差异;以及
分别在所述目的节点中的每个节点中,仅服务所述快照前写入请求。

说明书全文

在分布式储存系统中的快照的同步

发明领域

[0001] 本发明总体上涉及计算系统,并且具体涉及用于在计算节点集群中的数据储存的方法和系统。
[0002] 发明背景
[0003] 已经提出了各种解决方案以用于将存储器资源分配给计算机集群中的客户端。例如,公开内容以引用的方式并入本文的美国专利8,266,238描述了一种装置,其包括被配置成储存数据的物理存储器和被配置成支持虚拟机监控器(VMM)的芯片组。VMM设置成将虚拟机的虚拟存储器地址空间的区域内的虚拟存储器地址映射到网络地址,以俘获由客户操作系统做出的存储器读取或写入访问,以确定针对大于装置的物理存储器上可用的物理存储器地址范围的存储器地址发生了存储器读取或写入访问,并从而将对应于存储器读取或写入访问的数据读取或写入请求转发至与多个虚拟存储器地址之一对应的多个网络地址之一相关联的网络设备。
[0004] 公开内容以引用的方式并入本文的美国专利8,082,400描述了用于共享存储池的固件,该存储池包括系统的多个计算节点中的至少一个计算节点中的至少一个物理存储器。固件将存储池分区为被分配给计算节点中的至少一些计算节点中的对应的计算节点的存储空间,并且将至少一个物理存储器的一部分映射到存储器空间。存储空间中的至少一个包括来自计算节点中的另一个计算节点的物理存储器部分。
[0005] 公开内容以引用的方式并入本文的美国专利8,544,004描述了基于集群的操作系统–不可知(agnostic)虚拟计算系统。在实施例中,使用常规的计算机硬件实现了节点的基于集群的集合。提供了一种软件,该软件使至少一个VM能够被呈现给客户操作系统,其中参与虚拟机的每个节点具有自身的模拟器或VMM。通过钩子(hook)提供了VM存储一致性和I/O一致性,这导致对内部处理器结构的操纵。专用网络提供了节点之间的通信。
[0006] 发明概述
[0007] 本文描述的本发明的实施例提供了一种方法,该方法包括通过将写入请求发送到多个目的节点来储存在源节点中生成的数据。目的节点被请求创建数据的快照。在源节点处,写入请求采用标记进行标记,该标记向每个目的节点指示写入请求中的哪些是在用于目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及写入请求中的哪些是在用于目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求。在目的节点处,基于该标记,快照彼此同步。
[0008] 在一些实施例中,发送写入请求包括向多个目的节点发送相同数据的多个相应的副本。在一些实施例中,使快照同步包括在每个目的节点中使用标记区分快照前写入请求和快照后写入请求,并且仅服务快照前写入请求。在示例实施例中,该方法包括在每个目的节点中使每个快照后写入请求排队,直到其由于后续的快照请求到达而变成快照前写入请求为止。
[0009] 在另一个实施例中,使快照同步包括在每个目的节点中使写入请求排队,并且仅服务变成快照前写入请求的排队的写入请求。在公开的实施例中,对写入请求进行标记包括对每个写入请求采用指示由源节点最近请求的快照的相应的计数器值加标签。使快照同步可以包括通过将每个写入请求的相应的计数器值与目的节点当前正在储存的快照的参考计数器值进行比较,在每个目的节点中区分快照前写入请求和快照后写入请求。
[0010] 根据本发明的实施例,另外提供一种包括至少一个源节点和多个目的节点的系统。源节点被配置成通过向目的节点发送写入请求来储存数据,并且采用标记对写入请求进行标记,该标记向每个目的节点指示写入请求中的哪些是在用于目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及写入请求中的哪些是在用于目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求。目的节点被配置成基于该标记使快照彼此同步。
[0011] 根据本发明的实施例,还提供了一种计算机软件产品,该产品包括程序指令被储存于其中的有形的非暂时性计算机可读介质,当指令由通过通信网络互相连接的源节点和多个目的节点的处理器读取的时候,使处理器通过向多个目的节点发送写入请求而储存在源节点中生成的数据;请求目的节点创建数据的快照;采用标记对在源节点处的写入请求进行标记,该标记向每个目的节点指示写入请求中的哪些是在用于目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及写入请求中的哪些是在用于目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求;并且,在目的节点处基于标记使快照彼此同步。
[0012] 从结合附图进行的本发明的实施例的以下详细描述中,本发明将得到更完全地理解,其中:
[0013] 附图简述
[0014] 图1是根据本发明的实施例示意性示出计算节点集群的框图
[0015] 图2是根据本发明的实施例示意性示出在计算节点集群中的分布式储存过程的图;
[0016] 图3是根据本发明的实施例示意性示出在计算节点集群中的分布式储存方案的框图;
[0017] 图4是示意性示出在快照之间缺少同步的影响的图;
[0018] 图5是根据本发明的实施例示意性示出用于请求在计算节点集群之间同步的虚拟盘的快照的方法的流程图;以及
[0019] 图6是根据本发明的实施例示意性示出使用快照同步在计算节点集群中处理写入请求的方法的流程图。
[0020] 实施例的详细描述
[0021] 综述
[0022] 本文描述的本发明的实施例提供用于在计算节点集群中的数据储存的改善的方法和系统。计算节点运行通过访问逻辑卷(也被称作虚拟盘)储存并且检索数据的客户端。给定逻辑卷的数据通常分布在多个计算节点的多个物理储存设备之间。
[0023] 在公开的实施例中,每个计算节点运行一个或多个管理该节点的物理储存设备的本地文件系统(FS)。当客户端发送用于储存的数据的时候,数据被分成多条,并且每条均被复制并且转发到被指定储存该数据的节点的本地FS。每个本地FS均将数据作为文件储存在其本地物理储存设备中。计算节点集群还支持创建逻辑卷的快照的过程,即使每个逻辑卷的数据通常分布在多个计算节点之间。
[0024] 为了促进集群范围的快照,每个节点为每个逻辑卷指派单独的本地FS。采用这个配置,通过请求多个计算节点创建与该逻辑卷关联的所有本地FS的多个相应的FS级快照来创建逻辑卷的快照。
[0025] 通常,需要快照包括在快照创建之前确认的所有写入命令,而不必包括在快照创建之前已发布但未确认的“飞行中”写入命令。然而,当储存的数据被复制的时候,数据的不同的副本将有必要包括完全相同的飞行中写入请求的集合。换句话说,给定的飞行中写入请求可以被包括在所有副本中,或者从所有副本中被删除,但是不能被包括在一个副本中而在另一个副本中被删除。如果违背了这个一致性要求,则后续的读取命令可以根据被访问的是数据的哪个副本而返回不同的值。
[0026] 公开的技术使得计算节点集群能够满足以上的一致性要求,即,确保所复制的数据的所有FS级快照保持完全相同的飞行中写入请求的集合。在一些实施例中,某个计算节点(被称作源节点)发送复制的数据以用于储存在多个计算节点(被称作目的节点)中。源节点以如下方式来标记每个传出的写入请求:使得每个目的节点能够确定写入请求是快照前的(即,在用于目的节点当前正在储存的快照的快照请求之前发出的)还是快照后的(即,在用于目的节点当前正在储存的快照的快照请求之后发出的)。
[0027] 每个目的节点接收写入请求,使用标记将它们分类成快照前写入请求和快照后写入请求,并且仅执行快照前写入请求。每个快照后请求在目的节点中保持排队,直到其变成快照前的为止,即,直到目的节点接收到下一个快照请求为止。
[0028] 在示例实施例中,源节点向连续的快照请求指派增量的序列号。另外,源节点采用最新发布的快照请求的序列号对每个传出的写入请求进行标记。每个目的节点保持其目前正在储存的快照的序列号。通过将在目的节点中保持的序列号与所接收的写入请求的序列号进行比较,目的节点能够判定写入请求是快照前的还是快照后的。
[0029] 以上的机制缓解了对不同节点的快照请求和写入请求的到达顺序(order-of-arrival)中的可能的差异,并因此确保不同数据副本的FS级快照包括完全相同的飞行中写入请求的集合。公开的技术因此保持储存在不同计算节点上的快照之间的同步。无论在不同节点中的到达顺序和分组延迟中是否有可能的差异,均保持在多个快照之间的一致性,而不必在数据路径中添加不同于在储存节点中的现有缓冲区的专用缓冲资源。不同于其他可能的解决方案,公开的技术没有停止或者暂停系统I/O以便实现同步。
[0030] 系统描述
[0031] 图1是示意性示出根据本发明的实施例的计算系统20的方框图,计算系统20包括多个计算节点24的集群。例如,系统20可包括数据中心计算系统、高性能计算(HPC)系统、或任何其他合适的系统。
[0032] 计算节点24(为了简洁,而简称为“节点”)通常包括服务器,但可以可选地包括任何其他合适类型的计算节点。系统20可包括任何合适数量的节点,这些节点或是相同类型或是不同类型。节点24由通常是局域网(LAN)的通信网络28连接。网络28可根据任何合适的网络协议(诸如,以太网或Infiniband)运行。
[0033] 每个节点24均包括中央处理单元(CPU)32。根据计算节点的类型,CPU 32可包括多个处理核心和/或多个集成电路(IC)。无论具体的节点配置如何,节点的处理电路在本文中作为整体被视为节点CPU。每个节点24还包括存储器36(通常是易失性存储器,诸如动态随机存取存储器DRAM)以及用于与网络28进行通信的网络接口卡(NIC)44。节点24中的一些节点(而不必是全部节点)包括一个或多个非易失性储存设备40(例如,磁性硬盘驱动-HDD,或固态驱动-SSD)。储存设备40在本文中还被称作物理盘或者为了简洁而简称为盘。
[0034] 节点24可以运行各种类型的客户端。除了其他功能之外,客户端还访问非易失性储存设备40,例如,发布用于储存和检索数据的写入命令和读取命令。公开的技术共享在整个计算节点集群之间的储存设备40的非易失性储存资源,并且使非易失性储存资源可用于各种客户端。以下详细描述这些技术。
[0035] 出于清楚的目的,以下描述主要涉及虚拟机(VM),其转而运行客户应用。然而,公开的技术并不限于VM,而是可以在虚拟环境和非虚拟环境中任何其他合适类型的客户端中使用。
[0036] 美国专利申请14/181,791和14/260,304中提出了在计算节点集群上运行VM的另一个方面,该专利被转让给本专利申请的受让人并且其公开内容通过引用的方式并入本文。
[0037] 在图1中显示的系统和计算节点配置是示例配置,其仅仅为了概念上清晰起见而被选择。在可选实施例中,可使用任何其他合适的系统和/或节点配置。可使用硬件/固件(诸如在一个或多个专用集成电路(ASIC)或现场可编程阵列(FPGA))中实现设备20的多种元件,特别是节点24的元件。可选地,一些系统或节点元件(例如CPU 32)可在软件中实现或使用硬件/固件与软件元素的组合来实现。在一些实施例中,CPU 32包括通用处理器,该通用处理器在软件中被编辑以执行在本文中描述的功能。例如,软件可通过网络以电子形式被下载到处理器,或者软件可以可选地或附加地被提供和/或储存在非暂时性有形介质(诸如,磁存储器、光存储器或电子存储器)上。
[0038] 分布式数据储存方案
[0039] 在计算节点24上运行的VM(或者其他客户端)通常通过访问虚拟盘(也被称作逻辑卷(LV))来储存并且检索数据。在系统20中的每个虚拟盘通常被指派了逻辑逻辑单元号(逻辑LUN,或者为了简洁而简称为LUN),并且在每个虚拟盘内的地址空间通过逻辑地址(LBA)的范围来限定。节点24将各种逻辑盘的数据以分布式方式储存在物理盘(储存设备40)上。通常,与给定的虚拟盘关联的数据分布在多个节点24上的多个物理盘40上。
[0040] 来自储存系统的基本要求之一是创建并且管理虚拟盘的快照。在本专利申请的上下文中以及在权利要求中,术语“快照”指的是对逻辑盘的冻结,其在指定时间点创建并且保持逻辑盘在此时的内容。冻结是在不需要复制逻辑盘的数据的情况下创建的。快照使得系统能够(例如,在有故障的情况下)恢复到对于特定时间点的虚拟盘的内容。
[0041] 在一些实施例中,节点24执行以下详细描述的分布式而又同步的快照创建和管理方案。以下描述以在系统20中使用的储存方案的综述开始,随后是对快照管理方案的解释。美国专利申请14/333,521中提出了分布式快照管理的另一个方面,其被转让给本专利申请的受让人并且其公开内容通过引用的方式并入本文。
[0042] 在一些实施例中,在系统20中的基本逻辑数据储存单元被称作分配单元(DU)。在本示例中,每个DU包括1GB的数据。然而,可选地,可以使用任何其他合适的DU的大小,例如,(然而不必)在1GB和10GB之间。每个DU通常整体储存在给定的物理盘40上,并且通常被限定为可以从一个物理盘移动到另一个物理盘(例如,在添加或者移除物理盘的时候)的最小的数据块。DU通常被复制用于冗余,即,DU的多个副本可以储存在不同的物理盘和节点上,以便在出故障的情况下免受数据丢失。
[0043] 图2是示意性示出根据本发明的实施例的系统20中的分布式储存过程的图。一般来说,在给定的节点24上运行的、通过VM(或者其他客户端)储存的数据可以物理地储存在系统20上的一个或多个节点24的一个或多个盘40上。针对VM的特殊的储存操作,托管VM的节点被称作客户端节点,并且将数据物理地储存在其盘40上的节点被称作盘节点。在一些情况下,VM中的一些数据可以储存在运行该VM的相同节点上。在这个场景中同样保持在客户端节点和盘节点之间的逻辑分离。如以上提到的,VM相关示例仅仅是通过示例的方式描绘的,并且所公开的技术还可以用于各种其他类型的客户端。
[0044] 在图2中,该图的左手侧显示了过程的客户端节点部分,并且该图的右手侧显示了过程的盘节点部分。该过程是客户端-服务器过程,其中,客户端侧在客户端节点上运行,并且服务器侧在盘节点上运行。在可选的实施例中,图2中的各种元素可以以任何其他合适的方式分布在集群的节点上。
[0045] 客户端节点运行一个或多个VM 50(也被称作客户VM)。管理程序52向VM 50分配系统资源(例如,存储器、储存器、网络和计算资源)。除了其他任务之外,管理程序还服务由客户VM发布的储存命令(也被称作I/O请求)。管理程序52可以包括或者可以基于QEMU或者任何其他合适的管理程序类型。
[0046] 对于VM 50来说另外地或者可选地,生成写入请求的其他可能的客户端可包括主机块设备60和/或练习程序(exerciser)62。由这些模块发布的储存命令在存储器中排队,例如,以在操作系统(例如,UNIX)队列中为例。
[0047] 分配器66识别与在储存命令中指定的逻辑LUN和LBA对应的物理盘40,并且将储存命令分配给适当的盘节点。通常,分配器66首先评估分配功能,其将每个{逻辑LUN,LBA}对转换成相应的DU。在确定将要访问的期望的DU之后,分配器66查阅将每个DU映射到节点24之一上的物理盘40的分配表。在这个阶段,分配器66已识别了每个储存命令将被转发到的盘节点。
[0048] 分配器66将储存命令转发给复制器72,复制器72复制每个DU以便将每个DU储存在(通常在不同节点24上的)两个或更多个物理储存设备40上。储存命令随后转发到适当的盘节点。
[0049] 在每个盘节点中,一个或多个异步块储存器80管理在盘节点上运行的一个或多个相应的本地文件系统(FS)86中的数据的储存。通常,给定的盘节点为每个DU每个LUN运行单独的本地FS。本地FS 86管理所讨论的盘节点的本地盘40中的文件的储存。通常,本地FS执行诸如逻辑至物理地址转换、盘空闲空间管理、快照管理、自动精简配置(thin provisioning)以及FS级复制的任务。
[0050] 本地FS 86可以使用任何合适的本地文件系统来实施。一个可能的示例是ZFS文件系统。具体来说,本地FS支持通过公开的技术使用的嵌入式快照管理机制。
[0051] 通过盘节点接收的储存命令通常指定某个逻辑LUN和LBA。客户端节点将{逻辑LUN,LBA}对转换成其中储存有对应的数据的本地文件的名称、以及文件内的偏移。块储存器80随后向本地FS 86发布具有适当的文件名的文件读取或者写入命令。本地FS通过访问指定的文件来读取或者写入数据。
[0052] 以上的描述主要涉及从客户端节点到盘节点的数据流。在相反方向上的数据流(例如,写入命令的检索的数据和确认)通常沿着从盘节点返回到客户端节点的相反路径。在图2中显示的各种元素(例如,管理程序52、分配器66、复制器72和块储存器80)通常包括在节点24的CPU 32上运行的软件模块
[0053] 图3是示意性示出根据本发明的实施例的系统20中的分布式储存方案的框图。该图显示运行客户VM 104的客户端节点100,以及三个盘节点108A…108C。在本示例中,VM 104访问被指派了逻辑LUN#133的虚拟盘。对应于逻辑LUN#133的数据分配于三个盘节点之间。
[0054] 每个盘节点运行多个本地FS 86,每个本地FS与相应的LUN的属于相应的DU的一部分关联。在本示例中,节点108A保持用于逻辑LUN#133和逻辑LUN#186的本地FS,节点108B保持用于逻辑LUN#177和逻辑LUN#133的本地FS,并且节点108C保持用于逻辑LUN#133的单一本地FS。如图可见,(通过VM 104访问的)逻辑LUN#133的数据被分配于所有三个磁盘节点上。
[0055] 每个本地FS(也被称作数据集-DS)包括(有可能处于具有一个或多个子目录的层级中的)一个或多个文件110。每个文件110包括一定量的数据,例如,4MB。按照这种方式,储存块转换成文件,并且由本地FS管理。
[0056] 每个本地FS(包括其文件和子目录)储存与相应的逻辑LUN和相应的DU(例如,在本示例中的#133、#186和#172)完全关联的数据。这个关联由在每个盘节点中的块储存器80管理。块储存器将对逻辑LUN/DU的每个写入命令转换成对与该LUN/DU关联的本地FS中储存的文件的写入命令。
[0057] 在一些场景中,可产生创建某个逻辑LUN的快照的要求。快照通常由管理者或者其他用户请求。在一些实施例中,系统20创建并且管理逻辑LUN的快照(逻辑卷或者虚拟盘),然而每个逻辑LUN的数据分布于多个不同的计算节点中的多个不同的物理盘上。这个特征使用本地文件系统86的嵌入式快照管理机制来实现。
[0058] 如以上解释的,在计算节点24中的块储存器80确保在盘40上的每个本地FS包括具有专属于相应逻辑LUN和相应DU的数据的文件110。此外,每个本地文件系统86支持FS级快照操作,该快照操作创建了本地FS的具有其所有底层子目录和文件的本地快照。因此,创建与给定的逻辑LUN关联的各个本地FS的时间同步的FS级快照等同于创建整个逻辑LUN的快照。
[0059] 在计算节点集群之间的快照的有效同步
[0060] 如以上解释的,LUN的快照是由在多个节点上由相应的本地FS创建的多个FS级快照组成的。快照通常需要包括在快照被创建之前已被确认的所有写入命令。对于在创建快照之前发出但未确认的写入命令(被称作“飞行中写入命令”),通常没有严格的要求。
[0061] 然而,当储存的数据被复制的时候,数据的不同的副本将有必要包括相同的飞行中写入请求的集合。换句话说,给定的飞行中写入请求可以被包括在所有副本中,或者从所有副本中被删除,但是不能被包括在一个副本中而在另一个副本中被删除。这类一致性被称作“崩溃一致性”。
[0062] 图4是示意性示出在复制的数据的快照之间缺少崩溃一致性的影响的图示。该图显示其中客户端节点120将某些数据的两个副本储存在两个相应的盘节点124A和124B上的场景。
[0063] 最初,给定的数据项在两个节点上都具有值“1”。在某个时间点,客户端节点120向节点124A和124B发布快照请求,并随后向给定的数据项发布写入“2”的值的写入请求。在本示例中,节点124A接收快照请求以及随后的写入请求。另一方面,节点124B以相反的顺序接收请求(即,写入请求以及随后的快照请求)。
[0064] 因此,给定的数据项将在节点124A上的快照中具有值“1”,并且在节点124B上的快照中具有值“2”。当从快照读取数据的时候,用户应用将根据所访问的是哪个副本而读取到不同的数据值。这种不一致性通常是不可接受的。将副本之一定义为首要的并且将其他的定义为次要的并未解决问题,这是由于次要副本在首要副本出故障的情况下仍然可以被使用。
[0065] 在系统20的一些实施例中,每个DU被复制,并且给定的DU的多个副本被发送以用于储存在不同节点24的储存设备40上。考虑对给定的DU所属的LUN进行快照。为了使这个快照一致,包括这个DU的副本的FS级快照都必须包括完全相同的飞行中写入请求的集合。在以下描述中,这个要求被称作“同步”或者“一致性”,并且其FS级快照满足这个条件的快照被称作同步的或者一致的快照。
[0066] 在一些实施例中,系统20的节点使给定DU的不同副本同步,使得DU的所有FS级快照均保持完全相同的飞行中写入请求的集合。考虑被复制并且从客户端节点(也被称作源节点)被发送到两个或更多个盘节点(也被称作目的节点)的给定的DU。在一些实施例中,客户端节点以如下方式标记每个传出写入请求:使每个盘节点能够确定写入请求是快照前的(即,在用于盘节点当前正在储存的快照的快照请求之前发出的)还是快照后的(即,在用于盘节点当前正在储存的快照的快照请求之后发出的)。
[0067] 每个盘节点接收写入请求,使用标记将写入请求分类成快照前写入请求和快照后写入请求,并且仅执行快照前写入请求。每个快照后请求在盘节点中保持排队,直到其变成快照前的为止,即,直到盘节点开始储存后来的快照为止,后来的快照请求是在写入请求之后被发出的。以上的机制确保了给定DU的不同副本的FS级快照包括完全相同的写入请求的集合。
[0068] 客户端节点可以以各种方式对传出写入请求进行标记,并且盘节点可以以不同的方式使用该标记,以便将写入请求分类成快照前的或者快照后的。在一些实施例中,客户端节点采用增量的序列号对连续的快照请求进行编号(每DU)。另外,客户端节点采用最新发布的快照请求的序列号对每个传出的写入请求进行标记。
[0069] 每个盘节点保持其目前正在储存的快照的序列号。通过将盘节点中保持的序列号与写入请求的序列号进行比较,盘节点可以判定写入请求是快照前的(在用于当前正在储存的快照的快照请求之前发出的)还是快照后的(在用于当前正在储存的快照的快照请求之后发出的)。
[0070] 然而,在可选的实施例中,客户端节点和盘节点可以使用任何其他合适的标记和分类方案。
[0071] 图5是示意性示出根据本发明的实施例的用于在计算节点集群之间同步地请求虚拟盘的快照的方法的流程图。该方法在LUN快照请求步骤130处以对于某个LUN发布快照请求来开始。
[0072] 所讨论的LUN已指派给在某个客户端节点上运行的某个VM。在分裂步骤134处,在这个客户端节点处,分配器66针对组成LUN的各个DU而将LUN快照请求转换成多个DU特定的快照请求。
[0073] 在计数器增量步骤138处,在客户端节点中的复制器72使保持当前快照的序列号的DU特定的计数器增量。在检查步骤142处,复制器72检查DU是否仍有任何未确认的写入请求。
[0074] 在快照请求分配步骤146处,在用于当前快照相关的DU的所有写入请求均已被确认的时候,复制器72复制并且将DU特定的快照请求分配于储存DU的副本的所有盘节点。快照请求采用在步骤138处设定的新的计数器值(即,采用所请求的快照的序列号)进行标记。
[0075] 在快照发起步骤150处,每个盘节点接收快照请求,更新其快照计数器的本地值,并且发起新的快照。对于组成LUN的所有DU,对每个DU重复步骤138-150的过程。
[0076] 图6是示意性示出根据本发明的实施例的用于使用快照同步来处理在计算节点集群中的写入请求的方法的流程图。该方法在写入发起步骤160处以某个VM(或者其他客户端)向某个LUN发布写入请求来开始。
[0077] 在分裂步骤162处,在客户端节点中的分配器66使写入请求分裂成DU特定的写入请求。在加标签和复制步骤164处,分配器66识别每个DU特定的写入请求所属的DU,并且采用该DU的快照计数器值对每个写入请求进行标记。在客户端节点中复制器72随后复制加标签的写入请求。在发送步骤168处,客户端节点随后将复制的写入请求发送给服务所讨论的DU的多个盘节点。
[0078] 在接收步骤172处,多个盘节点中的每个盘节点接收DU特定的写入请求。以下的描述涉及由给定的盘节点接收的给定的DU特定的写入请求。在插入步骤174处,写入请求被插入适当的写入队列。在比较步骤176处,在盘节点中的块储存器80将接收到的写入请求中的快照的计数器值与在盘节点处保持的快照的计数器值(即,与盘节点当前正在储存的快照的序列号)进行比较。
[0079] 在分类步骤180处,块储存器80基于以上的比较而判定接收到的写入请求是快照前的还是快照后的。如果写入请求是快照前的请求,那么在快照前处理步骤184处,块储存器80将写入请求转发给适当的本地FS 86(与请求的LUN/DU关联的本地FS)以用于执行(即,用于作为当前快照的一部分而储存在储存设备40中)。如果写入请求是快照后的请求,那么在快照后处理步骤188处,块储存器80将该写入请求保持在盘节点队列中。
[0080] 块储存器使写入请求排队,直到写入请求变成快照前的为止(即,直到盘节点接收到其序列号指示它是在该写入请求之后发出的后来的快照请求为止)。在这个阶段,块储存器将写入请求转发到FS 86,以用于在步骤184处的执行。
[0081] 在示例实施方式中,在盘节点中的块储存器80可以通过使所有到达的写入请求排队,并且(根据写入请求携带的快照的计数器值)选择性地仅服务属于当前处理的快照的写入请求,来执行步骤176-188。(根据写入请求的快照的计数器值)属于下一个快照的写入请求保持排队,直到下一个快照请求到达为止。
[0082] 以上的图5和图6的方法描述是为了概念上清晰起见而选择的示例方法。在可选的实施例中,任何其他合适的过程可以用于请求快照以及用于处理写入请求。此外,以上的方法描述涉及执行不同的方法步骤的、在客户端节点和盘节点中的特定模块(例如,分配器、复制器和块储存器)。在可选的实施例中,各个方法步骤可以通过在客户端节点和盘节点中的任何其他合适的模块执行。
[0083] 虽然本文描述的实施例主要处理使用多个FS级快照的LUN快照的创建,但是公开的技术可以使用任何其他合适的子树结构以及能够创建这种子树的快照的节点来执行。
[0084] 将要理解的是,以上描述的实施例是通过示例的方式引用的,并且本发明不限于上文中已经特别示出和描述的那些。相反,本发明的范围包括上文所描述的各种特征的组合和子组合以及本领域技术人员在阅读以上描述之后将想到的且未在现有技术中公开的其变型和修改。通过引用结合在本专利申请中的文档被视为本申请的组成部分,除了在这些结合的文档中定义的任何术语与本说明书中明确地或隐含地作出的定义冲突时,仅应考虑本说明书中的定义。
相关专利内容
标题 发布/更新时间 阅读量
搭乘请求交互 2020-05-11 305
并发请求调度 2020-05-12 712
请求式定位 2020-05-11 977
短请求发送帧 2020-05-12 655
跟踪服务器请求 2020-05-13 791
自动再发送请求 2020-05-13 721
服务请求处理 2020-05-11 441
处理存储器请求 2020-05-12 983
变更请求表注释 2020-05-12 425
请求处理技术 2020-05-13 894
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈