太阳城集团

  • / 19
  • 下载费用:30 金币  

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

摘要
申请专利号:

太阳城集团CN201580051450.6

申请日:

2015.11.16

公开号:

CN106716377A

公开日:

2017.05.24

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 11/14申请日:20151116|||公开
IPC分类号: G06F11/14; G06F3/06 主分类号: G06F11/14
申请人: 斯特拉托斯卡莱有限公司
发明人: 阿哈龙·拉扎尔; 耶尔·费尔德曼
地址: 以色列赫兹利亚
优先权: 2015.01.12 US 14/594,188
专利代理机构: 北京安信方达知识产权代理有限公司 11262 代理人: 陆建萍;郑霞
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

太阳城集团CN201580051450.6

授权太阳城集团号:

|||

法律状态太阳城集团日:

太阳城集团2017.06.16|||2017.05.24

法律状态类型:

实质审查的生效|||公开

摘要

太阳城集团一种方法,包括通过将写入请求发送到多个目的节点(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.一种计算机软件产品,所述产品包括程序指令被储存于其中的有形的非暂时性计
算机可读介质,当所述指令由通过通信网络互相连接的源节点和多个目的节点的处理器读
取的时候,使所述处理器:通过将写入请求发送到所述多个目的节点而储存在所述源节点
中生成的数据;请求所述目的节点创建所述数据的快照;采用标记对在所述源节点处的所
述写入请求进行标记,所述标记向每个目的节点指示所述写入请求中的哪些是在用于所述
目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及所述写入请求
中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之后发出的快照后写入
请求;以及在所述目的节点处基于所述标记使所述快照彼此同步。

说明书

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

发明领域

本发明总体上涉及计算系统,并且具体涉及用于在计算节点集群中的数据储存的
方法和系统。

发明背景

已经提出了各种解决方案以用于将存储器资源分配给计算机集群中的客户端。例
如,公开内容以引用的方式并入本文的美国专利8,266,238描述了一种装置,其包括被配置
成储存数据的物理存储器和被配置成支持虚拟机监控器(VMM)的芯片组。VMM设置成将虚拟
机的虚拟存储器地址空间的区域内的虚拟存储器地址映射到网络地址,以俘获由客户操作
系统做出的存储器读取或写入访问,以确定针对大于装置的物理存储器上可用的物理存储
器地址范围的存储器地址发生了存储器读取或写入访问,并从而将对应于存储器读取或写
入访问的数据读取或写入请求转发至与多个虚拟存储器地址之一对应的多个网络地址之
一相关联的网络设备。

公开内容以引用的方式并入本文的美国专利8,082,400描述了用于共享存储池的
固件,该存储池包括系统的多个计算节点中的至少一个计算节点中的至少一个物理存储
器。固件将存储池分区为被分配给计算节点中的至少一些计算节点中的对应的计算节点的
存储空间,并且将至少一个物理存储器的一部分映射到存储器空间。存储空间中的至少一
个包括来自计算节点中的另一个计算节点的物理存储器部分。

公开内容以引用的方式并入本文的美国专利8,544,004描述了基于集群的操作系
统–不可知(agnostic)虚拟计算系统。在实施例中,使用常规的计算机硬件实现了节点的基
于集群的集合。提供了一种软件,该软件使至少一个VM能够被呈现给客户操作系统,其中参
与虚拟机的每个节点具有自身的模拟器或VMM。通过钩子(hook)提供了VM存储一致性和I/O
一致性,这导致对内部处理器结构的操纵。专用网络提供了节点之间的通信。

发明概述

本文描述的本发明的实施例提供了一种方法,该方法包括通过将写入请求发送到
多个目的节点来储存在源节点中生成的数据。目的节点被请求创建数据的快照。在源节点
处,写入请求采用标记进行标记,该标记向每个目的节点指示写入请求中的哪些是在用于
目的节点当前正在储存的快照的快照请求之前发出的快照前写入请求,以及写入请求中的
哪些是在用于目的节点当前正在储存的快照的快照请求之后发出的快照后写入请求。在目
的节点处,基于该标记,快照彼此同步。

在一些实施例中,发送写入请求包括向多个目的节点发送相同数据的多个相应的
副本。在一些实施例中,使快照同步包括在每个目的节点中使用标记区分快照前写入请求
和快照后写入请求,并且仅服务快照前写入请求。在示例实施例中,该方法包括在每个目的
节点中使每个快照后写入请求排队,直到其由于后续的快照请求到达而变成快照前写入请
求为止。

在另一个实施例中,使快照同步包括在每个目的节点中使写入请求排队,并且仅
服务变成快照前写入请求的排队的写入请求。在公开的实施例中,对写入请求进行标记包
括对每个写入请求采用指示由源节点最近请求的快照的相应的计数器值加标签。使快照同
步可以包括通过将每个写入请求的相应的计数器值与目的节点当前正在储存的快照的参
考计数器值进行比较,在每个目的节点中区分快照前写入请求和快照后写入请求。

根据本发明的实施例,另外提供一种包括至少一个源节点和多个目的节点的系
统。源节点被配置成通过向目的节点发送写入请求来储存数据,并且采用标记对写入请求
进行标记,该标记向每个目的节点指示写入请求中的哪些是在用于目的节点当前正在储存
的快照的快照请求之前发出的快照前写入请求,以及写入请求中的哪些是在用于目的节点
当前正在储存的快照的快照请求之后发出的快照后写入请求。目的节点被配置成基于该标
记使快照彼此同步。

根据本发明的实施例,还提供了一种计算机软件产品,该产品包括程序指令被储
存于其中的有形的非暂时性计算机可读介质,当指令由通过通信网络互相连接的源节点和
多个目的节点的处理器读取的时候,使处理器通过向多个目的节点发送写入请求而储存在
源节点中生成的数据;请求目的节点创建数据的快照;采用标记对在源节点处的写入请求
进行标记,该标记向每个目的节点指示写入请求中的哪些是在用于目的节点当前正在储存
的快照的快照请求之前发出的快照前写入请求,以及写入请求中的哪些是在用于目的节点
当前正在储存的快照的快照请求之后发出的快照后写入请求;并且,在目的节点处基于标
记使快照彼此同步。

从结合附图进行的本发明的实施例的以下详细描述中,本发明将得到更完全地理
解,其中:

附图简述

图1是根据本发明的实施例示意性示出计算节点集群的框图;

图2是根据本发明的实施例示意性示出在计算节点集群中的分布式储存过程的
图;

图3是根据本发明的实施例示意性示出在计算节点集群中的分布式储存方案的框
图;

图4是示意性示出在快照之间缺少同步的影响的图;

图5是根据本发明的实施例示意性示出用于请求在计算节点集群之间同步的虚拟
盘的快照的方法的流程图;以及

图6是根据本发明的实施例示意性示出使用快照同步在计算节点集群中处理写入
请求的方法的流程图。

实施例的详细描述

综述

本文描述的本发明的实施例提供用于在计算节点集群中的数据储存的改善的方
法和系统。计算节点运行通过访问逻辑卷(也被称作虚拟盘)储存并且检索数据的客户端。
给定逻辑卷的数据通常分布在多个计算节点的多个物理储存设备之间。

在公开的实施例中,每个计算节点运行一个或多个管理该节点的物理储存设备的
本地文件系统(FS)。当客户端发送用于储存的数据的时候,数据被分成多条,并且每条均被
复制并且转发到被指定储存该数据的节点的本地FS。每个本地FS均将数据作为文件储存在
其本地物理储存设备中。计算节点集群还支持创建逻辑卷的快照的过程,即使每个逻辑卷
的数据通常分布在多个计算节点之间。

为了促进集群范围的快照,每个节点为每个逻辑卷指派单独的本地FS。采用这个
配置,通过请求多个计算节点创建与该逻辑卷关联的所有本地FS的多个相应的FS级快照来
创建逻辑卷的快照。

通常,需要快照包括在快照创建之前确认的所有写入命令,而不必包括在快照创
建之前已发布但未确认的“飞行中”写入命令。然而,当储存的数据被复制的时候,数据的不
同的副本将有必要包括完全相同的飞行中写入请求的集合。换句话说,给定的飞行中写入
请求可以被包括在所有副本中,或者从所有副本中被删除,但是不能被包括在一个副本中
而在另一个副本中被删除。如果违背了这个一致性要求,则后续的读取命令可以根据被访
问的是数据的哪个副本而返回不同的值。

公开的技术使得计算节点集群能够满足以上的一致性要求,即,确保所复制的数
据的所有FS级快照保持完全相同的飞行中写入请求的集合。在一些实施例中,某个计算节
点(被称作源节点)发送复制的数据以用于储存在多个计算节点(被称作目的节点)中。源节
点以如下方式来标记每个传出的写入请求:使得每个目的节点能够确定写入请求是快照前
的(即,在用于目的节点当前正在储存的快照的快照请求之前发出的)还是快照后的(即,在
用于目的节点当前正在储存的快照的快照请求之后发出的)。

每个目的节点接收写入请求,使用标记将它们分类成快照前写入请求和快照后写
入请求,并且仅执行快照前写入请求。每个快照后请求在目的节点中保持排队,直到其变成
快照前的为止,即,直到目的节点接收到下一个快照请求为止。

在示例实施例中,源节点向连续的快照请求指派增量的序列号。另外,源节点采用
最新发布的快照请求的序列号对每个传出的写入请求进行标记。每个目的节点保持其目前
正在储存的快照的序列号。通过将在目的节点中保持的序列号与所接收的写入请求的序列
号进行比较,目的节点能够判定写入请求是快照前的还是快照后的。

以上的机制缓解了对不同节点的快照请求和写入请求的到达顺序(order-of-
arrival)中的可能的差异,并因此确保不同数据副本的FS级快照包括完全相同的飞行中写
入请求的集合。公开的技术因此保持储存在不同计算节点上的快照之间的同步。无论在不
同节点中的到达顺序和分组延迟中是否有可能的差异,均保持在多个快照之间的一致性,
而不必在数据路径中添加不同于在储存节点中的现有缓冲区的专用缓冲资源。不同于其他
可能的解决方案,公开的技术没有停止或者暂停系统I/O以便实现同步。

系统描述

图1是示意性示出根据本发明的实施例的计算系统20的方框图,计算系统20包括
多个计算节点24的集群。例如,系统20可包括数据中心、云计算系统、高性能计算(HPC)系
统、或任何其他合适的系统。

计算节点24(为了简洁,而简称为“节点”)通常包括服务器,但可以可选地包括任
何其他合适类型的计算节点。系统20可包括任何合适数量的节点,这些节点或是相同类型
或是不同类型。节点24由通常是局域网(LAN)的通信网络28连接。网络28可根据任何合适的
网络协议(诸如,以太网或Infiniband)运行。

每个节点24均包括中央处理单元(CPU)32。根据计算节点的类型,CPU 32可包括多
个处理核心和/或多个集成电路(IC)。无论具体的节点配置如何,节点的处理电路在本文中
作为整体被视为节点CPU。每个节点24还包括存储器36(通常是易失性存储器,诸如动态随
机存取存储器DRAM)以及用于与网络28进行通信的网络接口卡(NIC)44。节点24中的一些节
点(而不必是全部节点)包括一个或多个非易失性储存设备40(例如,磁性硬盘驱动-HDD,或
固态驱动-SSD)。储存设备40在本文中还被称作物理盘或者为了简洁而简称为盘。

节点24可以运行各种类型的客户端。除了其他功能之外,客户端还访问非易失性
储存设备40,例如,发布用于储存和检索数据的写入命令和读取命令。公开的技术共享在整
个计算节点集群之间的储存设备40的非易失性储存资源,并且使非易失性储存资源可用于
各种客户端。以下详细描述这些技术。

出于清楚的目的,以下描述主要涉及虚拟机(VM),其转而运行客户应用。然而,公
开的技术并不限于VM,而是可以在虚拟环境和非虚拟环境中任何其他合适类型的客户端中
使用。

美国专利申请14/181,791和14/260,304中提出了在计算节点集群上运行VM的另
一个方面,该专利被转让给本专利申请的受让人并且其公开内容通过引用的方式并入本
文。

在图1中显示的系统和计算节点配置是示例配置,其仅仅为了概念上清晰起见而
被选择。在可选实施例中,可使用任何其他合适的系统和/或节点配置。可使用硬件/固件
(诸如在一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA))中实现设备20的多
种元件,特别是节点24的元件。可选地,一些系统或节点元件(例如CPU 32)可在软件中实现
或使用硬件/固件与软件元素的组合来实现。在一些实施例中,CPU 32包括通用处理器,该
通用处理器在软件中被编辑以执行在本文中描述的功能。例如,软件可通过网络以电子形
式被下载到处理器,或者软件可以可选地或附加地被提供和/或储存在非暂时性有形介质
(诸如,磁存储器、光存储器或电子存储器)上。

分布式数据储存方案

在计算节点24上运行的VM(或者其他客户端)通常通过访问虚拟盘(也被称作逻辑
卷(LV))来储存并且检索数据。在系统20中的每个虚拟盘通常被指派了逻辑逻辑单元号(逻
辑LUN,或者为了简洁而简称为LUN),并且在每个虚拟盘内的地址空间通过逻辑块地址
(LBA)的范围来限定。节点24将各种逻辑盘的数据以分布式方式储存在物理盘(储存设备
40)上。通常,与给定的虚拟盘关联的数据分布在多个节点24上的多个物理盘40上。

来自储存系统的基本要求之一是创建并且管理虚拟盘的快照。在本专利申请的上
下文中以及在权利要求中,术语“快照”指的是对逻辑盘的冻结,其在指定太阳城集团点创建并且
保持逻辑盘在此时的内容。冻结是在不需要复制逻辑盘的数据的情况下创建的。快照使得
系统能够(例如,在有故障的情况下)恢复到对于特定太阳城集团点的虚拟盘的内容。

在一些实施例中,节点24执行以下详细描述的分布式而又同步的快照创建和管理
方案。以下描述以在系统20中使用的储存方案的综述开始,随后是对快照管理方案的解释。
美国专利申请14/333,521中提出了分布式快照管理的另一个方面,其被转让给本专利申请
的受让人并且其公开内容通过引用的方式并入本文。

在一些实施例中,在系统20中的基本逻辑数据储存单元被称作分配单元(DU)。在
本示例中,每个DU包括1GB的数据。然而,可选地,可以使用任何其他合适的DU的大小,例如,
(然而不必)在1GB和10GB之间。每个DU通常整体储存在给定的物理盘40上,并且通常被限定
为可以从一个物理盘移动到另一个物理盘(例如,在添加或者移除物理盘的时候)的最小的
数据块。DU通常被复制用于冗余,即,DU的多个副本可以储存在不同的物理盘和节点上,以
便在出故障的情况下免受数据丢失。

图2是示意性示出根据本发明的实施例的系统20中的分布式储存过程的图。一般
来说,在给定的节点24上运行的、通过VM(或者其他客户端)储存的数据可以物理地储存在
系统20上的一个或多个节点24的一个或多个盘40上。针对VM的特殊的储存操作,托管VM的
节点被称作客户端节点,并且将数据物理地储存在其盘40上的节点被称作盘节点。在一些
情况下,VM中的一些数据可以储存在运行该VM的相同节点上。在这个场景中同样保持在客
户端节点和盘节点之间的逻辑分离。如以上提到的,VM相关示例仅仅是通过示例的方式描
绘的,并且所公开的技术还可以用于各种其他类型的客户端。

在图2中,该图的左手侧显示了过程的客户端节点部分,并且该图的右手侧显示了
过程的盘节点部分。该过程是客户端-服务器过程,其中,客户端侧在客户端节点上运行,并
且服务器侧在盘节点上运行。在可选的实施例中,图2中的各种元素可以以任何其他合适的
方式分布在集群的节点上。

客户端节点运行一个或多个VM 50(也被称作客户VM)。管理程序52向VM 50分配系
统资源(例如,存储器、储存器、网络和计算资源)。除了其他任务之外,管理程序还服务由客
户VM发布的储存命令(也被称作I/O请求)。管理程序52可以包括或者可以基于QEMU或者任
何其他合适的管理程序类型。

对于VM 50来说另外地或者可选地,生成写入请求的其他可能的客户端可包括主
机块设备60和/或练习程序(exerciser)62。由这些模块发布的储存命令在存储器中排队,
例如,以在操作系统(例如,UNIX)队列中为例。

分配器66识别与在储存命令中指定的逻辑LUN和LBA对应的物理盘40,并且将储存
命令分配给适当的盘节点。通常,分配器66首先评估分配功能,其将每个{逻辑LUN,LBA}对
转换成相应的DU。在确定将要访问的期望的DU之后,分配器66查阅将每个DU映射到节点24
之一上的物理盘40的分配表。在这个阶段,分配器66已识别了每个储存命令将被转发到的
盘节点。

分配器66将储存命令转发给复制器72,复制器72复制每个DU以便将每个DU储存在
(通常在不同节点24上的)两个或更多个物理储存设备40上。储存命令随后转发到适当的盘
节点。

在每个盘节点中,一个或多个异步块储存器80管理在盘节点上运行的一个或多个
相应的本地文件系统(FS)86中的数据的储存。通常,给定的盘节点为每个DU每个LUN运行单
独的本地FS。本地FS 86管理所讨论的盘节点的本地盘40中的文件的储存。通常,本地FS执
行诸如逻辑至物理地址转换、盘空闲空间管理、快照管理、自动精简配置(thin
provisioning)以及FS级复制的任务。

本地FS 86可以使用任何合适的本地文件系统来实施。一个可能的示例是ZFS文件
系统。具体来说,本地FS支持通过公开的技术使用的嵌入式快照管理机制。

通过盘节点接收的储存命令通常指定某个逻辑LUN和LBA。客户端节点将{逻辑
LUN,LBA}对转换成其中储存有对应的数据的本地文件的名称、以及文件内的偏移。块储存
器80随后向本地FS 86发布具有适当的文件名的文件读取或者写入命令。本地FS通过访问
指定的文件来读取或者写入数据。

以上的描述主要涉及从客户端节点到盘节点的数据流。在相反方向上的数据流
(例如,写入命令的检索的数据和确认)通常沿着从盘节点返回到客户端节点的相反路径。
在图2中显示的各种元素(例如,管理程序52、分配器66、复制器72和块储存器80)通常包括
在节点24的CPU 32上运行的软件模块。

图3是示意性示出根据本发明的实施例的系统20中的分布式储存方案的框图。该
图显示运行客户VM 104的客户端节点100,以及三个盘节点108A…108C。在本示例中,VM
104访问被指派了逻辑LUN#133的虚拟盘。对应于逻辑LUN#133的数据分配于三个盘节点之
间。

每个盘节点运行多个本地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的数据被分配于所有三个磁盘节点
上。

每个本地FS(也被称作数据集-DS)包括(有可能处于具有一个或多个子目录的层
级中的)一个或多个文件110。每个文件110包括一定量的数据,例如,4MB。按照这种方式,储
存块转换成文件,并且由本地FS管理。

每个本地FS(包括其文件和子目录)储存与相应的逻辑LUN和相应的DU(例如,在本
示例中的#133、#186和#172)完全关联的数据。这个关联由在每个盘节点中的块储存器80管
理。块储存器将对逻辑LUN/DU的每个写入命令转换成对与该LUN/DU关联的本地FS中储存的
文件的写入命令。

在一些场景中,可产生创建某个逻辑LUN的快照的要求。快照通常由管理者或者其
他用户请求。在一些实施例中,系统20创建并且管理逻辑LUN的快照(逻辑卷或者虚拟盘),
然而每个逻辑LUN的数据分布于多个不同的计算节点中的多个不同的物理盘上。这个特征
使用本地文件系统86的嵌入式快照管理机制来实现。

如以上解释的,在计算节点24中的块储存器80确保在盘40上的每个本地FS包括具
有专属于相应逻辑LUN和相应DU的数据的文件110。此外,每个本地文件系统86支持FS级快
照操作,该快照操作创建了本地FS的具有其所有底层子目录和文件的本地快照。因此,创建
与给定的逻辑LUN关联的各个本地FS的太阳城集团同步的FS级快照等同于创建整个逻辑LUN的快
照。

在计算节点集群之间的快照的有效同步

如以上解释的,LUN的快照是由在多个节点上由相应的本地FS创建的多个FS级快
照组成的。快照通常需要包括在快照被创建之前已被确认的所有写入命令。对于在创建快
照之前发出但未确认的写入命令(被称作“飞行中写入命令”),通常没有严格的要求。

然而,当储存的数据被复制的时候,数据的不同的副本将有必要包括相同的飞行
中写入请求的集合。换句话说,给定的飞行中写入请求可以被包括在所有副本中,或者从所
有副本中被删除,但是不能被包括在一个副本中而在另一个副本中被删除。这类一致性被
称作“崩溃一致性”。

图4是示意性示出在复制的数据的快照之间缺少崩溃一致性的影响的图示。该图
显示其中客户端节点120将某些数据的两个副本储存在两个相应的盘节点124A和124B上的
场景。

最初,给定的数据项在两个节点上都具有值“1”。在某个太阳城集团点,客户端节点120向
节点124A和124B发布快照请求,并随后向给定的数据项发布写入“2”的值的写入请求。在本
示例中,节点124A接收快照请求以及随后的写入请求。另一方面,节点124B以相反的顺序接
收请求(即,写入请求以及随后的快照请求)。

因此,给定的数据项将在节点124A上的快照中具有值“1”,并且在节点124B上的快
照中具有值“2”。当从快照读取数据的时候,用户应用将根据所访问的是哪个副本而读取到
不同的数据值。这种不一致性通常是不可接受的。将副本之一定义为首要的并且将其他的
定义为次要的并未解决问题,这是由于次要副本在首要副本出故障的情况下仍然可以被使
用。

在系统20的一些实施例中,每个DU被复制,并且给定的DU的多个副本被发送以用
于储存在不同节点24的储存设备40上。考虑对给定的DU所属的LUN进行快照。为了使这个快
照一致,包括这个DU的副本的FS级快照都必须包括完全相同的飞行中写入请求的集合。在
以下描述中,这个要求被称作“同步”或者“一致性”,并且其FS级快照满足这个条件的快照
被称作同步的或者一致的快照。

在一些实施例中,系统20的节点使给定DU的不同副本同步,使得DU的所有FS级快
照均保持完全相同的飞行中写入请求的集合。考虑被复制并且从客户端节点(也被称作源
节点)被发送到两个或更多个盘节点(也被称作目的节点)的给定的DU。在一些实施例中,客
户端节点以如下方式标记每个传出写入请求:使每个盘节点能够确定写入请求是快照前的
(即,在用于盘节点当前正在储存的快照的快照请求之前发出的)还是快照后的(即,在用于
盘节点当前正在储存的快照的快照请求之后发出的)。

每个盘节点接收写入请求,使用标记将写入请求分类成快照前写入请求和快照后
写入请求,并且仅执行快照前写入请求。每个快照后请求在盘节点中保持排队,直到其变成
快照前的为止,即,直到盘节点开始储存后来的快照为止,后来的快照请求是在写入请求之
后被发出的。以上的机制确保了给定DU的不同副本的FS级快照包括完全相同的写入请求的
集合。

客户端节点可以以各种方式对传出写入请求进行标记,并且盘节点可以以不同的
方式使用该标记,以便将写入请求分类成快照前的或者快照后的。在一些实施例中,客户端
节点采用增量的序列号对连续的快照请求进行编号(每DU)。另外,客户端节点采用最新发
布的快照请求的序列号对每个传出的写入请求进行标记。

每个盘节点保持其目前正在储存的快照的序列号。通过将盘节点中保持的序列号
与写入请求的序列号进行比较,盘节点可以判定写入请求是快照前的(在用于当前正在储
存的快照的快照请求之前发出的)还是快照后的(在用于当前正在储存的快照的快照请求
之后发出的)。

然而,在可选的实施例中,客户端节点和盘节点可以使用任何其他合适的标记和
分类方案。

图5是示意性示出根据本发明的实施例的用于在计算节点集群之间同步地请求虚
拟盘的快照的方法的流程图。该方法在LUN快照请求步骤130处以对于某个LUN发布快照请
求来开始。

所讨论的LUN已指派给在某个客户端节点上运行的某个VM。在分裂步骤134处,在
这个客户端节点处,分配器66针对组成LUN的各个DU而将LUN快照请求转换成多个DU特定的
快照请求。

在计数器增量步骤138处,在客户端节点中的复制器72使保持当前快照的序列号
的DU特定的计数器增量。在检查步骤142处,复制器72检查DU是否仍有任何未确认的写入请
求。

在快照请求分配步骤146处,在用于当前快照相关的DU的所有写入请求均已被确
认的时候,复制器72复制并且将DU特定的快照请求分配于储存DU的副本的所有盘节点。快
照请求采用在步骤138处设定的新的计数器值(即,采用所请求的快照的序列号)进行标记。

在快照发起步骤150处,每个盘节点接收快照请求,更新其快照计数器的本地值,
并且发起新的快照。对于组成LUN的所有DU,对每个DU重复步骤138-150的过程。

图6是示意性示出根据本发明的实施例的用于使用快照同步来处理在计算节点集
群中的写入请求的方法的流程图。该方法在写入发起步骤160处以某个VM(或者其他客户
端)向某个LUN发布写入请求来开始。

在分裂步骤162处,在客户端节点中的分配器66使写入请求分裂成DU特定的写入
请求。在加标签和复制步骤164处,分配器66识别每个DU特定的写入请求所属的DU,并且采
用该DU的快照计数器值对每个写入请求进行标记。在客户端节点中复制器72随后复制加标
签的写入请求。在发送步骤168处,客户端节点随后将复制的写入请求发送给服务所讨论的
DU的多个盘节点。

在接收步骤172处,多个盘节点中的每个盘节点接收DU特定的写入请求。以下的描
述涉及由给定的盘节点接收的给定的DU特定的写入请求。在插入步骤174处,写入请求被插
入适当的写入队列。在比较步骤176处,在盘节点中的块储存器80将接收到的写入请求中的
快照的计数器值与在盘节点处保持的快照的计数器值(即,与盘节点当前正在储存的快照
的序列号)进行比较。

在分类步骤180处,块储存器80基于以上的比较而判定接收到的写入请求是快照
前的还是快照后的。如果写入请求是快照前的请求,那么在快照前处理步骤184处,块储存
器80将写入请求转发给适当的本地FS 86(与请求的LUN/DU关联的本地FS)以用于执行(即,
用于作为当前快照的一部分而储存在储存设备40中)。如果写入请求是快照后的请求,那么
在快照后处理步骤188处,块储存器80将该写入请求保持在盘节点队列中。

块储存器使写入请求排队,直到写入请求变成快照前的为止(即,直到盘节点接收
到其序列号指示它是在该写入请求之后发出的后来的快照请求为止)。在这个阶段,块储存
器将写入请求转发到FS 86,以用于在步骤184处的执行。

在示例实施方式中,在盘节点中的块储存器80可以通过使所有到达的写入请求排
队,并且(根据写入请求携带的快照的计数器值)选择性地仅服务属于当前处理的快照的写
入请求,来执行步骤176-188。(根据写入请求的快照的计数器值)属于下一个快照的写入请
求保持排队,直到下一个快照请求到达为止。

以上的图5和图6的方法描述是为了概念上清晰起见而选择的示例方法。在可选的
实施例中,任何其他合适的过程可以用于请求快照以及用于处理写入请求。此外,以上的方
法描述涉及执行不同的方法步骤的、在客户端节点和盘节点中的特定模块(例如,分配器、
复制器和块储存器)。在可选的实施例中,各个方法步骤可以通过在客户端节点和盘节点中
的任何其他合适的模块执行。

虽然本文描述的实施例主要处理使用多个FS级快照的LUN快照的创建,但是公开
的技术可以使用任何其他合适的子树结构以及能够创建这种子树的快照的节点来执行。

将要理解的是,以上描述的实施例是通过示例的方式引用的,并且本发明不限于
上文中已经特别示出和描述的那些。相反,本发明的范围包括上文所描述的各种特征的组
合和子组合以及本领域技术人员在阅读以上描述之后将想到的且未在现有技术中公开的
其变型和修改。通过引用结合在本专利申请中的文档被视为本申请的组成部分,除了在这
些结合的文档中定义的任何术语与本说明书中明确地或隐含地作出的定义冲突时,仅应考
虑本说明书中的定义。

权利要求书(按照条约第19条的修改)

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.一种计算机软件产品,所述产品包括程序指令被储存于其中的有形的非暂时性计
算机可读介质,当所述指令由通过通信网络互相连接的源节点和多个目的节点的处理器读
取的时候,使所述处理器:通过将与逻辑卷关联的写入请求发送到所述多个目的节点而储
存属于所述逻辑卷的并且在所述源节点中生成的数据;请求所述目的节点创建所述数据的
快照;采用标记对在所述源节点处的所述写入请求进行标记,所述标记向每个目的节点指
示所述写入请求中的哪些是在用于所述目的节点当前正在储存的快照的快照请求之前发
出的快照前写入请求,以及所述写入请求中的哪些是在用于所述目的节点当前正在储存的
快照的快照请求之后发出的快照后写入请求;以及在所述目的节点处基于所述标记通过下
列方式使所述快照彼此同步:

分别在所述目的节点中的每个目的节点中,基于所述标记区分所述快照前写入请求和
所述快照后写入请求,而不论在所述目的节点之间的所述快照请求和所述写入请求的到达
顺序中的差异;以及

分别在所述目的节点中的每个节点中,仅服务所述快照前写入请求。

关 键 词:
分布式 储存 系统 中的 快照 同步
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:在分布式储存系统中的快照的同步.pdf
链接地址:http://zh228.com/p-6059868.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');