一种快照删除方法及节点与流程

文档序号:13236734阅读:445来源:国知局
一种快照删除方法及节点与流程

本申请实施例涉及存储技术领域,尤其涉及一种快照删除方法及节点。



背景技术:

文件系统提供了一个结构化的数据存储和组织形式。在文件系统中,用目录表示文件系统的数据组织结构,目录以及目录下的每个子目录和文件分别为一个对象,对象包括数据和元数据中的至少一个。快照处理系统的存储节点包括数据服务器和元数据服务器。基于数据保护的需要,快照处理系统中的存储节点对对象创建快照时会保存对象的副本,对象的副本包括数据副本或元数据副本。存储节点保存对象的副本后创建快照日志,并将所述快照日志保存至快照处理系统指定的日志目录,其中,所述快照日志记录了对象的副本与其他时刻的所述对象之间的差异,所述快照日志记录的差异包括数据差异或元数据差异。

随着时间累计,快照处理系统中的每个存储节点创建的快照越来越多,为减少快照处理系统的存储资源的消耗,可以删除过期的快照或者无用的快照。在删除快照时,管理节点通过访问所述日志目录获取待删除快照的快照日志,所述管理节点根据获取到的所有快照日志的记录时间将每个快照日志顺序发送给创建所述快照日志的存储节点,以使得存储节点在接收到快照日志后根据其接收到的快照日志将待删除快照所对应的对象的副本删除。管理节点发送每一个快照日志均需要占用一次消息的发送资源,按照时间顺序分别发送多个快照日志给同一存储节点时,频繁访问存储节点,降低存储节点的服务性能,需要消耗更多发送资源发送多个快照日志给同一存储节点。



技术实现要素:

本申请实施例提供一种快照删除方法及节点,能够解决快照删除过程中频繁访问存储节点导致存储节点的服务性能低的问题。

为达到上述目的,本申请实施例采用如下技术方案:

第一方面,提供一种快照删除方法,管理节点在获取到至少两个快照日志后,将获取到的至少两个快照日志划分为至少一个快照日志组,这里,每个快照日志组中的所有快照日志具有相同的属性,不同的快照日志组包括的快照日志不同,快照日志用于记录对象修改之前的副本与修改后的对象之间的差异,该对象修改之前的副本为创建对象的快照后输出的对象。在获取到至少一个快照日志组后,管理节点将同一个快照日志组中的所有快照日志发送至同一存储节点。

管理节点将获取到的快照日志分组,每个快照日志组中的所有快照日志具有相同的属性,且同一个快照日志组中的所有快照日志均被发送至同一存储节点,避免了管理节点按照时间顺序发送多个快照日志给同一存储节点时需要频繁访问存储节点,减少了管理节点频繁发送快照日志的负担,以及减少了存储节点频繁接收多个快照日志的负担,提高了存储节点的服务性能,提高了发送快照日志的效率。

可选的,在本申请的一种可能的实现方式中,上述对象包括元数据,相应的,上述快照日志记录的差异包括元数据差异,上述存储节点包括元数据服务器,同一快照日志组中的所有快照日志具有相同的属性,包括同一快照日志组中的所有快照日志记录的对象具有相同父节点,这里具有相同父节点的对象的元数据由同一元数据服务器管理。在这种情况下,上述“管理节点将获取到的至少两个快照日志划分为至少一个快照日志组”的方法为:管理节点确定记录元数据差异的快照日志,并将确定出的记录元数据差异的快照日志划分为至少一个快照日志组,同一快照日志组中每个快照日志记录的对象具有相同父节点。

可选的,在本申请的另一种可能的实现方式中,上述对象包括数据,相应的,上述快照日志记录的差异包括数据差异,上述存储节点包括数据服务器,同一快照日志组中的所有快照日志具有相同的属性,包括同一快照日志组中的所有快照日志记录的对象属于同一逻辑扇区,这里属于同一的逻辑扇区的对象的数据由同一数据服务器管理。在这种情况下,上述“管理节点将获取到的至少两个快照日志划分为至少一个快照日志组”的方法为:管理节点确定记录数据差异的快照日志,并将确定出的记录数据差异的快照日志划分为至少一个快照日志组,同一快照日志组中每个快照日志记录的对象在同一逻辑扇区中保存。

可选的,在本申请的另一种可能的实现方式中,上述“管理节点将同一个快照日志组中的所有快照日志发送至同一存储节点”的方法为:管理节点将每个快照日志组中的所有快照日志封装为至少一条删除消息,并向同一存储节点发送封装好的至少一条删除消息,这里的至少一条删除消息中的每条删除消息均包括每个日志组中的至少两个快照日志。

管理节点将每个快照日志组中的所有快照日志封装为至少一条删除消息,并向同一存储节点发送封装好的至少一条删除消息,有效的减少了管理节点发送快照日志的负担,对应的,也减少了存储节点接收快照日志的负担,提高了存储节点的服务性能,提高了发送快照日志的效率。

第二方面,提供一种管理节点,该管理节点包括获取单元、分组单元和发送单元。

本申请提供的各个单元模块所实现的功能具体如下:

上述获取单元,用于获取至少两个快照日志。上述分组单元,用于将上述获取单元获取到的至少两个快照日志划分为至少一个快照日志组,其中,同一快照日志组中的所有快照日志具有相同的属性,不同的快照日志组包括的快照日志不同,快照日志用于记录对象修改之前的副本与修改后的对象之间的差异,对象修改之前的副本为创建对象的快照后输出的对象。上述发送单元,用于将上述分组单元划分的同一个快照日志组中的所有快照日志发送至同一存储节点。

可选的,在本申请的一种可能的实现方式中,上述对象包括元数据,上述快照日志记录的差异包括元数据差异,上述存储节点包括元数据服务器,上述同一快照日志组中的所有快照日志具有相同的属性,包括同一快照日志组中的所有快照日志记录的对象具有相同父节点。在这种情况下,本申请实施例提供的管理节点还包括确定单元,该确定单元用于从上述获取单元获取到的至少两个快照日志中确定记录元数据差异的快照日志。相应的,上述分组单元,还用于将上述确定单元确定出的记录元数据差异的快照日志划分为至少一个快照日志组,同一快照日志组中每个快照日志记录的对象具有相同父节点。

可选的,在本申请的另一种可能的实现方式中,上述对象包括数据,上述快照日志记录的差异包括数据差异,上述存储节点包括数据服务器,上述同一快照日志组中的所有快照日志具有相同的属性,包括同一快照日志组中的所有快照日志记录的对象属于同一逻辑扇区。在这种情况下,本申请实施例中的管理节点还包括确定单元,该确定单元用于从上述获取单元获取到的至少两个快照日志中确定记录数据差异的快照日志。相应的,上述分组单元,还用于将上述确定单元确定出的记录数据差异的快照日志划分为至少一个快照日志组,同一快照日志组中每个快照日志记录的对象在同一逻辑扇区中保存。

可选的,在本申请的另一种可能的实现方式中,本申请实施例提供的管理节点还包括封装单元,该封装单元用于将上述分组单元划分的每个快照日志组中的所有快照日志封装为至少一条删除消息,至少一条删除消息中的每条删除消息均包括每个日志组中的至少两个快照日志。相应的,上述发送单元,还用于向同一存储节点发送封装单元封装出的至少一条删除消息。

第三方面,提供一种管理节点,该管理节点包括:一个或多个处理器、存储器、通信接口。其中,存储器、通信接口与一个或多个处理器耦合;管理节点通过通信接口与至少一个存储节点通信,存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,管理节点执行如上述第一方面及其各种可能的实现方式所述的快照删除方法。

具体的,上述处理器,用于获取至少两个快照日志,以及用于将获取到的至少两个快照日志划分为至少一个快照日志组,其中,同一快照日志组中的所有快照日志具有相同的属性,不同的快照日志组包括的快照日志不同,快照日志用于记录对象修改之前的副本与修改后的对象之间的差异,对象修改之前的副本为创建对象的快照后输出的对象。上述通信接口,用于将同一个快照日志组中的所有快照日志发送至同一存储节点。

可选的,在本申请的一种可能的实现方式中,上述对象包括元数据,上述快照日志记录的差异包括元数据差异,上述存储节点包括元数据服务器,上述同一快照日志组中的所有快照日志具有相同的属性,包括同一快照日志组中的所有快照日志记录的对象具有相同父节点。在这种情况下,上述处理器,具体用于从获取到的至少两个快照日志中确定记录元数据差异的快照日志,以及具体用于将确定出的记录元数据差异的快照日志划分为至少一个快照日志组,同一快照日志组中每个快照日志记录的对象具有相同父节点。

可选的,在本申请的另一种可能的实现方式中,上述对象包括数据,上述快照日志记录的差异包括数据差异,上述存储节点包括数据服务器,上述同一快照日志组中的所有快照日志具有相同的属性,包括同一快照日志组中的所有快照日志记录的对象属于同一逻辑扇区。在这种情况下,上述处理器,具体用于从获取到的至少两个快照日志中确定记录数据差异的快照日志,以及具体用于将确定出的记录数据差异的快照日志划分为至少一个快照日志组,同一快照日志组中每个快照日志记录的对象在同一逻辑扇区中保存。

可选的,在本申请的另一种可能的实现方式中,上述处理器,还用于将每个快照日志组中的所有快照日志封装为至少一条删除消息,至少一条删除消息中的每条删除消息均包括每个日志组中的至少两个快照日志。相应的,上述通信接口,具体用于向同一存储节点发送至少一条删除消息。

第四方面,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令;当其在管理节点上运行时,使得管理节点执行如上述第一方面及其各种可能的实现方式所述的快照删除方法。

第五方面,还提供一种包含指令的计算机程序产品,当其在管理节点上运行时,使得管理节点执行如上述第一方面及其各种可能的实现方式所述的快照删除方法。

在本申请中,上述管理节点的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。

本申请中第二方面、第三方面、第四方面、第五方面及其各种实现方式的具体描述,可以参考第一方面及其各种实现方式中的详细描述;并且,第二方面、第三方面、第四方面、第五方面及其各种实现方式的有益效果,可以参考第一方面及其各种实现方式中的有益效果分析,此处不再赘述。

第六方面,提供一种快照删除方法,存储节点在接收到具有相同的属性的至少一个快照日志后,创建用于删除待删除快照的事务,然后,该存储节点运行其创建的用于删除待删除快照的事务,删除至少一个快照日志中每个快照日志记录的副本。这里,快照日志用于记录对象修改之前的副本与修改后的对象之间的差异,对象修改之前的副本为创建所述对象的快照后输出的对象。

本申请实施例中的存储节点仅仅创建并运行一个用于删除待删除快照的事务即可实现快照日志组中的所有快照日志记录的对象的副本删除,提高了待删除快照的删除效率,也提高了存储节点的服务性能。

可选的,在本申请的一种可能的实现方式中,在存储节点创建用于删除待删除快照的事务后,该所述存储节点对已创建的用于删除待删除快照的事务进行加锁操作,确认等待加锁链表,并将至少一个快照日志中的每个快照日志存储至所述等待加锁链表。这样的话,上述“存储节点运行其创建的用于删除待删除快照的事务,删除至少一个快照日志中每个快照日志记录的对象的副本”的方法为:所述存储节点查询所述等待加锁链表,将所述等待加锁链表中的所述至少一个快照日志的每个快照日志记录的对象的副本删除;在将所述等待加锁链表中的所述至少一个快照日志的每个快照日志记录的对象的副本删除后,所述存储节点对已创建的所述用于删除待删除快照的事务进行解锁操作,删除所述等待加锁链表中的所述至少一个快照日志的每个快照日志。

存储节点对已创建的用于删除待删除快照的事务进行加锁操作,保证了该事务的安全。在对已创建的用于删除待删除快照的事务进行加锁操作后,存储节点将至少一个快照日志中的每个快照日志存储至等待加锁链表,这样,该存储节点可集中删除等待加锁链表中的所有快照日志记录的对象的副本,提高了待删除快照的删除效率。

可选的,在本申请的另一种可能的实现方式中,在存储节点创建用于删除待删除快照的事务后,该存储节点对所述至少一个快照日志记录的对象的元数据或数据合并存储。

可选的,在本申请的另一种可能的实现方式中,在存储节点创建用于删除待删除快照的事务后,该存储节点对已创建的所述用于删除待删除快照的事务进行加锁操作,确认等待加锁链表;该存储节点将所述至少一个快照日志中的每个快照日志存储至所述等待加锁链表;该存储节点运行所述用于删除待删除快照的事务,查询所述等待加锁链表,将所述等待加锁链表中的所述至少一个快照日志的每个快照日志记录的对象的副本删除;该存储节点将所述等待加锁链表中的所述至少一个快照日志的每个快照日志记录的对象的元数据或数据合并存储。

存储节点对至少一个快照日志记录的对象的元数据或数据合并存储,提高了数据存储的效率,也提高了存储节点的服务性能。

第七方面,提供一种存储节点,该存储节点包括接收单元、事务创建单元和事务运行单元。

本申请提供的各个单元模块所实现的功能具体如下:

上述接收单元,用于接收至少一个快照日志,至少一个快照日志具有相同的属性,快照日志用于记录对象修改之前的副本与修改后的对象之间的差异,对象修改之前的副本为创建对象的快照后输出的对象。上述事务创建单元,用于创建用于删除待删除快照的事务。上述事务运行单元,用于运行上述事务创建单元创建的用于删除待删除快照的事务,删除上述接收单元接收到的至少一个快照日志中每个快照日志记录的对象的副本。

可选的,在本申请的一种可能的实现方式中,本申请提供的存储节点还包括加锁单元,该加锁单元用于在上述事务创建单元创建用于删除待删除快照的事务后,对已创建的用于删除待删除快照的事务进行加锁操作,确认等待加锁链表。此外,本申请实施例提供的存储节点还包括存储单元,该存储单元用于将上述接收单元接收到的至少一个快照日志中的每个快照日志存储至该加锁单元确认的等待加锁链表。相应的,上述事务运行单元,还用于查询等待加锁链表,将等待加锁链表中的所有快照日志记录的对象的副本删除,以及用于在将等待加锁链表中的所有快照日志记录的对象的副本删除后,对已创建的用于删除待删除快照的事务进行解锁操作,删除等待加锁链表中的所有快照日志。

可选的,在本申请的另一种可能的实现方式中,本申请提供的存储节点还包括处理单元,该处理单元用于在上述事务创建单元创建用于删除待删除快照的事务后,对上述接收单元接收到的至少一个快照日志记录的对象的元数据或数据合并存储。

可选的,在本申请的另一种可能的实现方式中,本申请提供的存储节点还包括加锁单元、存储单元和处理单元。该加锁单元,用于对已创建的用于删除待删除快照的事务进行加锁操作,确认等待加锁链表。该存储单元,用于将上述接收单元接收到的至少一个快照日志中的每个快照日志存储至该加锁单元确认的等待加锁链表。上述事务运行单元,还用于运行用于删除待删除快照的事务,查询等待加锁链表,将等待加锁链表中的所有快照日志记录的对象的副本删除。该处理单元,具体用于将等待加锁链表中的所有快照日志记录的对象的元数据或数据合并存储。

第八方面,提供一种存储节点,该存储节点包括:一个或多个处理器、存储器、通信接口。其中,存储器、通信接口与一个或多个处理器耦合;存储节点通过通信接口与管理节点通信;存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,存储节点执行如上述第六方面及其各种可能的实现方式所述的快照删除方法。

具体的,上述通信接口,用于接收至少一个快照日志,至少一个快照日志具有相同的属性,快照日志用于记录对象修改之前的副本与修改后的对象之间的差异,对象修改之前的副本为创建对象的快照后输出的对象。上述处理器,用于创建用于删除待删除快照的事务,以及用于运行已创建的用于删除待删除快照的事务,删除上述通信接口接收到的至少一个快照日志中每个快照日志记录的对象的副本。

可选的,在本申请的一种可能的实现方式中,上述处理器,还用于在创建用于删除待删除快照的事务后,对已创建的用于删除待删除快照的事务进行加锁操作,确认等待加锁链表。相应的,上述存储器,用于将上述通信接口接收到的至少一个快照日志中的每个快照日志存储至上述处理器确认的等待加锁链表。相应的,上述处理器,具体用于查询等待加锁链表,将等待加锁链表中的所有快照日志记录的对象的副本删除,以及用于在将等待加锁链表中的所有快照日志记录的对象的副本删除后,对已创建的用于删除待删除快照的事务进行解锁操作,删除等待加锁链表中的所有快照日志。

可选的,在本申请的另一种可能的实现方式中,上述处理器,还用于在创建用于删除待删除快照的事务后,对接收到的至少一个快照日志记录的对象的元数据或数据合并存储。

可选的,在本申请的另一种可能的实现方式中,上述处理器,还用于对已创建的用于删除待删除快照的事务进行加锁操作,确认等待加锁链表,以及还用于将接收到的至少一个快照日志中的每个快照日志存储至上述处理器确认的等待加锁链表,以及还用于运行用于删除待删除快照的事务,查询等待加锁链表,将等待加锁链表中的所有快照日志记录的对象的副本删除,以及还用于将等待加锁链表中的所有快照日志记录的对象的元数据或数据合并存储。

第九方面,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令;当其在存储节点上运行时,使得存储节点执行如上述第六方面及其各种可能的实现方式所述的快照删除方法。

第十方面,还提供一种包含指令的计算机程序产品,当其在存储节点上运行时,使得存储节点执行如上述第六方面及其各种可能的实现方式所述的快照删除方法。

在本申请中,上述存储节点的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。

本申请中第七方面、第八方面、第九方面、第十方面及其各种实现方式的具体描述,可以参考第六方面及其各种实现方式中的详细描述;并且,第七方面、第八方面、第九方面、第十方面及其各种实现方式的有益效果,可以参考第六方面及其各种实现方式中的有益效果分析,此处不再赘述。

本申请的这些方面或其他方面在以下的描述中会更加简明易懂。

本申请提供的快照删除方法及节点,管理节点将获取到的至少两个快照日志划分为至少一个快照日志组,其中,每个快照日志组中的所有快照日志具有相同的属性,不同的快照日志组包括的快照日志不同,所述快照日志用于记录对象修改之前的副本与修改后的对象之间的差异,所述对象修改之前的副本为创建所述对象的快照后输出的对象。该管理节点发送快照日志组的所有快照日志均至同一存储节点,避免发送多个快照日志给同一存储节点时需要频繁访问存储节点,减少了管理节点频繁发送快照日志的负担,以及减少了存储节点频繁接收多个快照日志的负担,提高了存储节点的服务性能,提高了发送快照日志的效率。

附图说明

图1a为本申请实施例提供的一种快照处理系统的结构示意图;

图1b为本申请实施例提供的一种存储阵列的逻辑分区的结构示意图;

图2为本申请实施例提供的一种快照处理系统的数据组织结构示意图;

图3为本申请实施例提供的一种快照处理系统的对象的元数据的索引示意图;

图4为本申请实施例提供的另一种快照处理系统的结构示意图;

图5a为本申请实施例提供的管理节点的结构示意图一;

图5b为本申请实施例提供的存储节点的结构示意图一;

图6为本申请实施例提供的快照删除方法的流程示意图;

图7为本申请实施例提供的管理节点的结构示意图二;

图8为本申请实施例提供的存储节点的结构示意图二。

具体实施方式

在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

下面以快照处理系统为例说明本申请实施例提供的快照删除方法。

在快照处理系统中,快照处理系统包括存储节点和存储阵列。存储节点的个数不受限制,存储节点按照数据服务功能划分为元数据服务器和数据服务器。存储阵列由多块磁盘(disk)构成。存储阵列用于保存元数据和数据。存储节点和存储阵列通信。

快照处理系统中的数据存储方式主要包括文件存储、对象存储和块存储,这三种存储方式均适用一种基本架构。请参见图1a,图1a为本申请实施例提供的一种快照处理系统的结构示意图。如图1a所示,快照处理系统包括元数据服务器11和数据服务器12和存储阵列13。在图1a所示的快照处理系统中,元数据服务器11直接获取快照处理系统中各数据服务器12的基本配置信息或状态信息,或者元数据服务器11通过任一数据服务器12获取各数据服务器12的基本配置信息或状态信息。在快照处理系统中,元数据服务器11和数据服务器12的个数不受限制。在本实施方式中,存储阵列13由元数据服务器11的磁盘和数据服务器12的磁盘组成。在其他实现方式中,存储阵列13可以由其他存储节点的磁盘的组成,具体存储阵列的组成结构不受本实施方式的限制。

如图1a所示,用户通过客户端10与各个服务器通信。例如,客户端10以信令交互方式向元数据服务器11发送数据访问请求,元数据服务器11查询后返回数据服务器12的状态信息给客户端10,客户端10接收到元数据服务器11返回的关于数据服务器12的状态信息后与数据服务器12进行通信以访问数据服务器12。

除图1a所示的快照处理系统的一种基本架构以外,快照处理系统的架构还有多种其他实现方式。如果按照逻辑节点组织快照处理系统,快照处理系统除了包括存储阵列以外,还包括协议服务器、元数据服务器(metadataservicer,mds)、数据服务器(dataservicer,ds)以及管理节点四种逻辑节点。在对快照处理系统做实际部署时,协议服务器、mds、ds和管理节点这四种逻辑节点可以位于同一物理机上,也可以独立部署或者组合部署,具体实际的部署方式不受本申请实施例的限制。协议服务器用于向用户提供标准的网络文件系统(networkfilesystem,nfs)、服务器信息块(servermessageblock,smb)等网络文件服务功能。mds负责提供路径解析、文件查找、文件创建等元数据相关的服务。ds用于存储数据。在快照处理系统中,可以配置快照处理系统中的任一节点作为管理节点,也可以单独配置一个专用的节点作为管理节点。同理,在快照处理系统中,可以配置快照处理系统中的任一节点作为协议服务器,也可以单独配置一个专用的节点作为协议服务器。

一般的,通过在协议客户端(protocolclient,pc)上加载用户程序访问上述快照处理系统中的元数据服务器或数据服务器。协议客户端负责制定快照处理系统中数据的访问接口,与上述协议服务器通过前端网络连接,如协议服务器通过高速以太网(fastethernet,fe)与协议客户端连接,而快照处理系统包括的各节点通过后端网络连接。该前端网络用于用户业务与快照处理系统之间的请求与数据交互,后端网络用于快照处理系统内部各个节点之间的请求与数据交互。

为了提升数据的可靠性,同时提高存储空间的利用率,存储阵列在逻辑上划分为多个逻辑扇区,每个逻辑扇区由多块独立的磁盘(disk)组合形成一个单独的数据冗余保护组。可选的,数据冗余保护组可以采用网络逻辑单元号(networklogicalunitnumber,nlun)表示。在快照处理系统中,根据预设的算法对数据进行算法处理,例如通过冗余算法、纠删码计算等算法对数据进行算法处理,以得到对应的逻辑扇区,然后将所述数据保存至所述逻辑扇区对应的数据冗余保护组。一个逻辑扇区由多个硬盘组合而成,在存储数据时,每个逻辑扇区相当于一个硬盘,用于存储数据。逻辑扇区由数据服务器进行管理,因此使用同一逻辑扇区进行存储的数据由同一数据服务器进行管理。使用不同逻辑扇区进行存储的数据可以由同一数据服务器进行管理,也可以由不同数据服务器进行管理,本申请对此不作限制。

示例性的,数据服务器按照纠删码计算将数据存储于存储阵列的方法为:数据服务器将数据划分为多个数据块,对所有数据块进行纠删码计算获得所述数据的校验数据,将所有数据块以及所述校验数据分别存储于一个磁盘,存储所述多个数据块以及所述校验数据的所有硬盘组合为一个数据冗余保护组,该数据冗余保护组作为一个逻辑扇区。纠删码计算方法实现时对校验数据的个数进行限制。这样,当逻辑扇区中小于或等于所述校验数据个数的磁盘发生故障时,快照处理系统可以根据所述逻辑扇区中的除发生故障以外的其他未发生故障的磁盘对数据进行恢复和重建。

在快照处理系统中,存储阵列中的所有磁盘被划分为多个磁盘组,每一磁盘组中包括至少一个磁盘。快照处理系统将存储阵列中的若干磁盘进行组合分为多个逻辑扇区,每个逻辑扇区的所有磁盘分别位于不同磁盘组中。请参见图1b,图1b为本申请实施例提供的一种存储阵列的逻辑分区的结构示意图。如图1b所示,快照处理系统将存储阵列中的所有磁盘划分为第一磁盘组131、第二磁盘组132和第三磁盘组133。每一个磁盘组均包括n(n≥1)个磁盘。图1b所示的快照处理系统配置的逻辑扇区包括逻辑扇区nlun0和逻辑扇区nlun1。nlun0和nlun1分别为两个逻辑扇区的标识。逻辑扇区的标识可以是字母、数字或其他符号。其中,组成逻辑扇区nlun0的磁盘为第一磁盘组131的磁盘1、第二磁盘组132的磁盘1以及第三磁盘组133的磁盘1。组成逻辑扇区nlun1的磁盘为第一磁盘组131的磁盘n、第二磁盘组132的磁盘3以及第三磁盘组133的磁盘2。数据在存储时被划分为多个数据块。图1b中,某一数据被换分为数据块1#和数据块2#,在存储该数据时,根据数据块1#和数据块2#进行纠删码计算,获得1个校验数据p#,将所有数据块(数据块1#和数据块2#)以及所述校验数据p#分别存储于逻辑扇区nlun0的一个磁盘中。同理,另一数据被划分为数据块3#和数据块4#,根据数据块3#和数据块4#进行纠删码计算,获得1个校验数据s#,将所有数据块(数据块3#和数据块4#)以及所述校验数据s#分别存储于逻辑扇区nlun1的一个磁盘中。另一数据被划分为数据块5#和数据块6#,根据数据块5#和数据块6#进行纠删码计算,获得1个校验数据k#,所有数据块(数据块5#和数据块6#)以及所述校验数据k#分别存储于逻辑扇区nlun0的一个磁盘中。被划分为数据块5#、数据块6#的数据,以及被划分为数据块1#以及数据块2#的另一数据共用所述逻辑扇区nlun0,共用所述逻辑扇区nlun0的所有数据由同一数据服务器管理。

快照处理系统提供了一个结构化的数据存储和组织形式。快照处理系统的数据组织结构表现为树状结构的目录树。目录树包括根目录、子目录以及子目录下的文件,其中,子目录不仅可以包含文件,还可以包含下一级子目录,以此类推构成了多级目录结构的目录树。在目录树中除根目录以外,每个目录或者文件均有自己所属的父目录。除文件以外,每个目录均有自己的子目录。目录树中每个目录和文件分别对应一个节点,根目录所在的节点为根节点,文件所在的节点为叶子节点,子目录所在的节点为中间节点。在目录树中除根节点以外,每个叶子节点或者中间节点均有自己所属的父节点。除叶子节点以外,根节点和每个中间节点均有自己的子节点。属于相同父目录的所有子目录和文件具有与所述相同父目录对应的相同父节点。

在快照处理系统中,目录以及目录下的每个子目录和文件分别为一个对象,对象包括数据或元数据。请参见图2,图2为本申请实施例提供的一种快照处理系统的数据组织结构示意图。如图2所示,快照处理系统的数据组织结构为目录结构,该目录结构包括根目录“/”,根目录“/”下的两个子目录dir1、dir2,根目录“/”下的文件file1,子目录dir1下的子目录dir3,子目录dir1下的两个文件file2和file3,子目录dir2下的文件file4,子目录dir3下的两个文件file5和file6。根目录“/”对应的节点为子目录dir1、子目录dir2以及文件file1的相同父节点。子目录dir1对应的节点为子目录dir3、文件file2和文件file3的相同父节点。子目录dir2对应的节点为文件file4的父节点。子目录dir3对应的节点为文件file5和文件file6的相同父节点。

下面以图2所示的快照处理系统的数据组织结构为例说明快照处理系统的元数据的存储方式。

请参见图3,图3为本申请实施例提供的一种快照处理系统的对象的元数据的索引示意图。基于图2所示的目录结构,图3示出了每个对象的元数据在快照处理系统中存储时的索引形式。如图3所示,每个对象的元数据包括对象的标识和节点信息,所述节点信息保存所述对象与所述对象对应的目录下的每个子目录或文件的元数据的对应关系。通过所述对象的节点信息可以索引所述对象对应的目录下的每个子目录或文件。其中,对象的标识通过dentry(目录项)参数表示,节点信息通过inode(节点)参数表示。具有相同父节点的所有对象的元数据保存在所述相同父节点的目录列表中,所述相同父节点的目录列表包括具有相同父节点的每个对象的元数据,每个对象的元数据包括所述对象的标识和节点信息。dentry(目录项)参数的值可以是对象的名称或编号。

例如,基于图2所示的目录结构,由于图2所示的子目录dir1、子目录dir2以及文件file1的父节点均为根目录“/”对应的根节点。因此,如图3所示,快照处理系统保存了根节点与根节点的目录列表的对应关系,所述根节点的目录列表包括目录dir1、子目录dir2以及文件file1的标识,其中,子目录dir1、子目录dir2以及文件file1的标识通过目录项(dentry)参数的值表示。以及所述根节点的目录列表还包括子目录dir1、子目录dir2以及文件file1的节点信息,其中,子目录dir1、子目录dir2以及文件file1的节点信息通过inode(节点)参数的值表示。因此,通过根节点的目录列表索引根节点下的三个对象的元数据。

又如,基于图2所示的目录结构,由于图2所示的子目录dir3、文件file2和文件file3的父节点均为子目录dir1对应的节点,因此,如图3所示,快照处理系统保存了子目录dir1与子目录dir1的目录列表的对应关系,所述子目录dir1的目录列表包括子目录dir3、文件file2和文件file3的标识,其中,子目录dir3、文件file2和文件file3的标识通过目录项(dentry)参数的值表示。以及子目录dir1的目录列表还包括子目录dir3、文件file2和文件file3的节点信息,其中,子目录dir3、文件file2和文件file3的节点信息通过inode(节点)参数的值表示。由于子目录dir1为子目录dir3、文件file2和文件file3的相同父节点,因此,通过子目录dir1的目录列表索引子目录dir1下的三个对象(子目录dir3、文件file2和文件file3)的元数据。基于图2所示的其他对象的元数据的存储方式与根节点的目录列表或子目录dir1的目录列表中的元数据的存储方式相同,在此不再赘述。

在具体实现时,具有相同父节点的每个对象的元数据都保存在相同父节点的目录列表中。所述相同父节点的目录列表由管理所述相同父节点的元数据服务器进行维护。例如,结合图2可知,文件file5和文件file6的父节点均为子目录dir3,文件file5的元数据和文件file6的元数据都保存在子目录dir3的目录列表中,因此通过子目录dir3索引到与子目录dir3对应的目录列表,通过与子目录dir3对应的目录列表确认文件file5的元数据和文件file6的元数据。具有不同父节点的对象的元数据可以由不同的元数据服务器管理,也可以由相同的元数据服务器管理,在本实施方式中不受限制。

除根目录外,每个对象的元数据的节点信息还包含对象的基本属性。对象的基本属性包括数据的大小、创建时间、类型等信息。

图4是本申请实施例提供的另一种快照处理系统的结构示意图。如图4所示,该快照处理系统除包括存储阵列40以外,还包括mds41、ds42以及管理节点43。其中,mds41、ds42以及管理节点43可以部署于同一设备上,也可以独立部署或者组合部署,本申请实施例对此不作具体限定。下面以图4中mds41、ds42以及管理节点43相互独立部署为例对本申请实施例提供的快照删除方法进行说明。在本申请中,mds41以及ds42分别与管理节点43建立通信连接。在其他实现方式中,mds41与ds42相互建立通信连接。

本申请实施例中的mds41、ds42以及管理节点43均可以为物理机,也可以为虚拟机,还可以为用于提供对象存储服务的其他任一设备,本申请实施例对此不作具体限定。

此外,本申请实施例提供的快照处理系统还包括协议服务器,该协议服务器与其他存储节点分别建立通信连接,还通过网络与协议客户端建立通信连接。协议服务器可以为快照处理系统中的任一节点,也可以为单独配置的一个专用的节点,本申请实施例对此不作具体限定。这里,协议客户端以及协议服务器均可参考上述描述,此处不再进行详细赘述。

现有的快照删除方法为:管理节点43根据快照日志的记录时间将多个快照日志顺序发送给创建快照日志的存储节点。发送快照日志的方式复杂,效率低。多个快照日志发送给同一存储节点时需要频繁访问存储节点,降低了存储节点的服务性能。

本申请提供的快照删除方法中,通过管理节点43对获取到的快照日志进行分组,获取至少一个快照日志组,每个快照日志组中的所有快照日志具有相同的属性,同一快照日志组中具有所述相同的属性的快照日志中记录的所述对象被同一存储节点管理。因此,通过所述管理节点43将获取到的所有快照日志划分为至少一个快照日志组后,所述管理节点43发送所述快照日志组,且所述每个快照日志组中的所有快照日志均被发送至同一存储节点,避免按照时间顺序发送多个快照日志给同一存储节点时需要频繁访问存储节点,减少了管理节点43频繁发送快照日志的负担,以及减少了存储节点频繁接收多个快照日志的负担,提高了存储节点的服务性能,提高了发送快照日志的效率。

请参见图5a,图5a为本申请实施例提供的管理节点43的结构示意图。如图5a所示,本申请实施例提供的管理节点43包括:通信接口51、通信接口52和控制模块53。通信接口51和通信接口52分别与控制模块53连接。在管理节点43中,通信接口51用于与客户端或者其他存储节点通信,例如,通信接口51用于与图4中所示的mds41或ds42通信。通信接口52用于与存储阵列通信。通信接口51和通信接口52通过通信网络通信,通信网络如以太网,无线局域网(wirelesslocalareanetwor,wlan)等。

控制模块53确定待删除快照后,从快照处理系统指定的日志目录中获取待删除快照的快照日志。所述控制模块53还用于发送快照日志给创建快照日志的存储节点。

如图5a所示,控制模块53包括处理器531和存储器532。处理器531和存储器532连接。通信接口51、通信接口52、处理器531和存储器532可以通过系统总线54连接。存储器532可以是独立存在的,通过系统总线54与处理器531相连接。存储器532也可以和处理器531集成在一起。

处理器531用于从快照处理系统指定的日志目录中获取待删除快照的快照日志。所述处理器531还用于发送快照日志给创建快照日志的存储节点。

存储器532用于临时存储管理节点43接收到的信息。存储器532还用于存储软件程序以及应用模块,处理器531通过运行存储在存储器532的软件程序以及应用模块,从而执行管理节点43的各种功能应用以及数据处理。

存储器532主要包括存储程序区5321。其中,存储程序区5321可存储操作系统、至少一个功能所需的应用程序,比如发送删除消息等。

处理器531可以是任何计算器件,可以是通用中央处理器(cpu),微处理器,可编程控制器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制以上方案程序执行的集成电路。处理器531是管理节点43的控制中心。处理器531利用各种接口和线路连接管理节点43的各个部分,通过运行或执行存储在存储器532内的软件程序和/或应用模块,执行管理节点43的各种功能和处理数据,从而对管理节点43进行整体监控。在具体实现中,作为一种实施例,处理器可以包括一个或多个cpu,例如图5a中的处理器包括cpu0和cpu1。

存储器532可以包括易失性存储器(volatilememory),例如,随机存取存储器(random-accessmemory,ram);该存储器532也可以包括非易失性存储器(non-volatilememory),例如,只读存储器(read-onlymemory,rom),快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)、固态硬盘(solid-statedrive,ssd)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由网络设备存取的任何其他介质,但不限于此。

系统总线54可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。

系统总线54可以分为地址总线、数据总线、控制总线等。本申请实施例中为清楚说明,在图5a中将各种总线都示意为系统总线54。

下面结合图4和图5a所示的管理节点43的结构,详细描述管理节点43的各个部分在本申请中的作用。

在本申请中,接口51用于与mds41或ds42通信,例如与mds41或ds42通信,以确定待删除快照的标识,以及用于向mds41或ds42发送快照日志组。

本申请中,处理器531用于访问快照处理系统指定的日志目录,根据待删除快照的标识获取保存在日志目录下的快照日志。

处理器531还用于将获取到的所有快照日志划分为至少一个快照日志组。其中,同一快照日志组中的所有快照日志具有相同的属性,不同的快照日志组包括的快照日志不同,所述快照日志用于记录对象的副本与其他时刻的所述对象之间的差异,所述对象的副本为创建所述对象的快照后输出的对象的副本。以及,同一快照日志组中具有所述相同属性的快照日志中记录的所述对象被同一存储节点管理。

处理器531还用于发送所述至少一个快照日志组中的每个快照日志组。所述每个快照日志组中的所有快照日志均被发送至所述同一存储节点。

本申请提供的快照删除方法通过管理节点43的处理器531对获取到的快照日志进行分组,获取至少一个快照日志组,每个快照日志组中的所有快照日志具有相同的属性,同一快照日志组中具有所述相同属性的快照日志中记录的所述对象被同一存储节点管理。因此,通过所述管理节点43的处理器531将获取到的所有快照日志划分为至少一个快照日志组后,所述管理节点43发送每个快照日志组,且所述每个快照日志组中的所有快照日志均被发送至同一存储节点,避免发送多个快照日志给同一存储节点时需要频繁访问存储节点,减少了管理节点43频繁发送快照日志的负担,以及减少了存储节点频繁接收多个快照日志的负担,提高了存储节点的服务性能,提高了发送快照日志的效率。

在快照处理系统中,基于数据保护的需要,存储节点对对象创建快照,保存该对象的副本。在创建快照时,存储节点生成快照的标识。对象的副本包括数据副本或元数据副本。如果需要创建快照的对象是元数据,则元数据服务器生成快照的标识,查询所述对象的标识,保存所述快照的标识与所述对象的父节点的标识的对应关系,然后元数据服务器保存元数据的副本。如果需要创建快照的对象是数据,则数据服务器生成快照的标识,保存所述数据所在的逻辑扇区与所述快照的标识的对应关系,然后数据服务器保存数据的副本。

在保存对象的副本后,存储节点创建快照日志,并将所述快照日志保存至快照处理系统指定的日志目录。例如,数据服务器在创建数据的快照日志后,将所述快照日志保存至快照处理系统指定的日志目录。或元数据服务器在创建元数据的快照日志后,并将所述快照日志保存至快照处理系统指定的日志目录。保存数据的快照日志的日志目录和保存所述元数据的快照日志的日志目录可以是同一日志目录,也可以是不同日志目录。快照处理系统的管理节点43或存储节点还保存有快照日志与快照的标识之间的对应关系,以便确认快照的多个快照日志。

所述快照日志记录了对象的副本与其他时刻的所述对象之间的差异,即记录了数据差异或元数据差异。例如,所述快照日志记录了当前快照时刻所述对象的副本与当前快照时刻之前的第m次快照时刻的所述对象的副本之间的差异,所述m为大于零的整数。或者,所述快照日志记录了当前快照时刻所述对象的副本与当前快照时刻后对所述对象进行修改后的所述对象之间的差异。容易理解的是,对所述对象所做的修改指的是修改对象的数据或元数据。

如果通过所述快照日志记录当前快照时刻所述对象的副本与当前快照时刻后对所述对象进行修改后的所述对象之间的差异,则具体实现方式为:存储节点对某一对象生成快照的标识,当需要修改该对象时,复制所述对象以生成所述对象的副本,保存所述对象的副本,然后所述存储节点修改所述对象。在此次修改结束后,存储设备创建一个用于记录该对象的副本与修改后的对象之间的差异的快照日志。一般的,快照日志保存在指定的日志目录中。当需要修改该对象时,也可以复制所述对象待修改的内容以生成所述对象待修改的内容的副本。具体生成对象的副本还是对象待修改的内容的副本,本申请实施例对此不作任何限制。

如果需要创建快照的对象是数据,则快照日志记录的是数据差异。记录数据差异的快照日志包括:对象的标识、存储所述对象的逻辑扇区的标识、偏移地址(offset)以及修改数据长度(length)等。其中,偏移地址用于表示存储节点修改所述对象的起始地址,修改数据长度用于表示存储节点修改所述对象的数据长度。可选的,记录数据差异的快照日志还可以包括所述对象的父节点的标识。

如果需要创建快照的对象是元数据,则快照日志记录的差异是元数据差异。记录元数据差异的快照日志包括:对象的标识和所述对象的父节点的标识。

在一个示例中,结合图3,存储节点在某一时刻需要修改子目录dir1下的文件file3的元数据时,对文件file3的元数据创建快照,生成快照的标识,保存所述快照的标识与所述文件file3的父节点(即子目录dir1)的标识的对应关系,然后该存储节点将文件file3的元数据中待修改的内容复制一份保存为副本file3',然后再将文件file3的元数据中待修改的内容进行修改,修改元数据后的文件file3变更为文件file3''。此时,该快照处理系统中,子目录dir1的目录列表包括子目录dir3的元数据、文件file2的元数据、文件file3''的元数据以及文件file3待修改的内容的副本file3'。

在修改文件file3的元数据后,存储节点创建一个用于记录文件file3的待修改的内容的副本file3'和文件file3''的元数据之间的差异的快照日志。该快照日志包括文件file3的标识和子目录dir1的标识。

在另一个示例中,结合图1b,需要修改包括数据块1#的数据时,存储节点首先将数据块1#中待修改的数据复制一份,保存为数据块1#a,将原来的数据块1#作为数据块1#的副本1#',再将数据块1#a中待修改的数据进行修改,修改后的数据块1#a称为1#''。此时,该系统中,存储节点存储有数据块1#'和数据块1#''。

在修改数据块1#a的数据后,存储节点创建一个用于记录数据块1#'和数据块1#''之间的差异的快照日志。该快照日志包括数据块1#所属的对象的标识、存储数据块1#的逻辑扇区的标识、偏移地址(offset)以及修改数据长度(length)等。此外,该快照日志还可以包括数据块1#所属的对象的父节点的标识。

结合上述描述可知,针对每个对象在不同时刻的修改,存储节点均会创建一个快照日志。

在保存快照日志至快照处理系统指定的日志目录后,如果某一存储节点需要删除快照,则该存储节点对待删除快照设置删除标记,管理节点43根据删除标记,确定待删除快照的标识。具体的,存储节点保存待删除快照的标识和删除标记的对应关系,管理节点43根据删除标记,确定待删除快照的标识,进而确定待删除快照。

管理节点43确定待删除快照后获取待删除快照的快照日志,发送待删除快照的快照日志至存储节点,以使得该存储节点创建并运行一个用于删除待删除快照的事务,以完成待删除快照的删除。具体的,存储节点在对待删除快照进行删除时,删除快照时创建的一些信息,例如,删除快照时保存的对象的副本。可选的,所述存储节点在删除快照时创建的一些信息还包括在快照时生成的其他相关信息及与待删除快照的标识的对应关系。

现有的快照删除方法中,管理节点43按照时间顺序发送快照日志给存储节点,存储节点获取每个快照日志后分别创建并运行一个用于删除待删除快照的事务。具体的,存储节点先执行一个已创建的用于删除待删除快照的事务,并在该事务运行完成后,再执行另一个已创建的用于删除待删除快照的事务,以删除对应的待删除快照。例如:存储节点在接收到两个快照日志后,对其中一个快照日志创建用于删除待删除快照的事务;存储节点运行该事务并删除快照时创建的一些信息;存储节点获取所述其中一个快照日志中记录的对象的数据或元数据,并将获取到的数据或元数据保存至存储阵列或其他存储介质;然后,该存储节点对另一个快照日志创建并运行用于删除待删除快照的事务。存储节点每次接收到快照日志后,需要对多个快照日志分别创建及运行用于删除待删除快照的事务,降低了快照删除和数据存储的效率,并降低了存储节点的服务性能。

本申请提供的快照删除方法中,管理节点43发送同一快照日志组中的所有快照日志至同一存储节点,存储节点在获取到同一快照日志组中的至少一个快照日志后,创建用于删除待删除快照的事务。如果快照日志记录的对象为元数据,则存储节点创建用于删除待删除快照的事务,删除与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据的副本,以及获取与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据,将所述与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据保存至存储阵列或其他存储介质。如果快照日志记录的对象为数据,则存储节点创建用于删除待删除快照的事务,删除与所述快照日志记录的对象具有相同逻辑扇区的所有数据的副本,以及获取与所述快照日志记录的对象具有相同逻辑扇区的所有数据,将所述与所述快照日志记录的对象具有相同逻辑扇区的所有数据保存至存储阵列或其他存储介质。本申请实施例中的存储节点仅仅创建并运行一个用于删除待删除快照的事务即可实现快照日志组中的所有快照日志记录的对象的副本删除和多个对象的元数据或数据的合并存储,提高了待删除快照的删除效率,提高了数据存储的效率,也提高了存储节点的服务性能。

可选的,存储节点在删除对象的副本之后,存储节点获取与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据,或者获取与所述快照日志记录的对象具有相同逻辑扇区的所有数据。这里,存储节点获取到的与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据,或者与所述快照日志记录的对象具有相同逻辑扇区的所有数据均不包括对象的副本。

如果存储节点在删除对象的副本之前,获取与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据,则该存储节点获取到的与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据包括对象的副本。在这种情况下,存储节点获取与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据的副本,并删除与所述待删除快照的标识对应的相同父节点的目录列表中所有对象的元数据的副本。同理,如果存储节点在删除对象的副本之前,获取与所述快照日志记录的对象具有相同逻辑扇区的所有数据,则该存储节点获取到的与所述快照日志记录的对象具有相同逻辑扇区的所有数据包括对象的副本。在这种情况下,存储节点获取与所述快照日志记录的对象具有相同逻辑扇区的所有数据,并删除与所述快照日志记录的对象具有相同逻辑扇区的所有数据的副本。

结合上述图4,图4中的mds41和ds42为本申请实施例中的存储节点。

请参见图5b,图5b为本申请实施例提供的存储节点的结构图。如图5b所示,本申请实施例提供的存储节点包括:通信接口61、通信接口62和控制模块63。通信接口61和通信接口62分别与控制模块63连接。在存储节点中,通信接口61用于与管理节点43或其他存储节点通信,例如,通信接口61用于与图4中所示的mds41或ds42通信。通信接口62用于与存储阵列通信。通信接口61和通信接口62通过通信网络通信,通信网络如以太网,wlan等。

控制模块63用于创建并运行用于删除待删除快照的事务,删除至少一个快照日志中每个快照日志记录的对象的副本。所述控制模块63还用于对至少一个快照日志记录的对象的元数据或数据合并存储。

如图5b所示,控制模块63包括处理器631和存储器632。处理器631和存储器632连接。通信接口61、通信接口62、处理器631和存储器632可以通过系统总线64连接。存储器632可以是独立存在的,通过系统总线64与处理器631相连接。存储器632也可以和处理器631集成在一起。

处理器631用于创建并运行用于删除待删除快照的事务,删除至少一个快照日志中每个快照日志记录的对象的副本。

存储器632用于合并存储至少一个快照日志记录的对象的元数据或数据。存储器632还用于存储软件程序以及应用模块,处理器631通过运行存储在存储器632的软件程序以及应用模块,从而执行存储节点的各种功能应用以及数据处理。

存储器632主要包括存储程序区6321。其中,存储程序区6321可存储操作系统、至少一个功能所需的应用程序,比如发送响应消息等。

处理器631可以是任何计算器件,可以是cpu,微处理器,可编程控制器,asic,或一个或多个用于控制以上方案程序执行的集成电路。处理器631是存储节点的控制中心。处理器631利用各种接口和线路连接存储节点的各个部分,通过运行或执行存储在存储器632内的软件程序和/或应用模块,执行存储节点的各种功能和处理数据,从而对存储节点进行整体监控。在具体实现中,作为一种实施例,处理器可以包括一个或多个cpu,例如图5b中的处理器包括cpu0和cpu1。

存储器632可以包括易失性存储器(volatilememory),例如,ram;该存储器632也可以包括非易失性存储器(non-volatilememory),例如,rom,快闪存储器(flashmemory),hdd、ssd、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由网络设备存取的任何其他介质,但不限于此。

系统总线64可以是pci总线或eisa总线等。

系统总线64可以分为地址总线、数据总线、控制总线等。本申请实施例中为清楚说明,在图5b中将各种总线都示意为系统总线64。

下面结合图4和图5b所示的存储节点的结构,详细描述存储节点的各个部分在本申请中的作用。

在本申请中,通信接口61用于与管理节点43通信,接收具有相同的属性的至少一个快照日志。

本申请中,处理器631用于创建并运行用于删除待删除快照的事务,删除至少一个快照日志中每个快照日志记录的对象的副本。处理器631还用于将对已创建的用于删除待删除快照的事务进行加锁操作,确认等待加锁链表。

存储器632用于将通信接口61接收到的至少一个快照日志中的每个快照日志存储至等待加锁链表。

处理器631还用于查询存储有通信接口61接收到的至少一个快照日志的等待加锁链表,将该等待加锁链表中的所有快照日志记录的对象的副本删除,以及还用于在将等待加锁链表中的所有快照日志记录的对象的副本删除后,对已创建的用于删除待删除快照的事务进行解锁操作,删除等待加锁链表中的所有快照日志。

存储器632还用于在处理器631删除待删除快照的事务后,对至少一个快照日志记录的对象的元数据或数据合并存储。

本申请提供的快照删除方法中,存储节点的通信接口61在获取到同一快照日志组中的至少一个快照日志后,该存储节点的处理器631创建用于删除待删除快照的事务,并运行其创建的用于删除待删除快照的事务,以删除至少一个快照日志中每个快照日志记录的对象的副本。在处理器631创建用于删除待删除快照的事务后,存储节点的存储器632将至少一个快照日志记录的对象的数据或元数据合并存储至存储阵列或其他存储介质。本申请实施例中的存储节点仅仅创建并运行一个用于删除待删除快照的事务即可实现快照日志组中的所有快照日志记录的对象的副本删除和多个对象的元数据或数据的合并存储,提高了待删除快照的删除效率,提高了数据存储的效率,也提高了存储节点的服务性能。

下面结合图1b所示的存储阵列的存储形式,图2所示的快照处理系统的数据组织结构,图3所示的快照处理系统的元数据的索引形式,以及图4所示的快照处理系统的结构示意图,图5a所示的管理节点43的结构示意图以及图5b所示的存储节点的结构示意图对本申请提供的快照删除方法进行详细的描述。

具体的,请参见图6,图6为本申请实施例提供的一种快照删除方法的流程示意图。如图6所示,本实施例提供的快照删除方法中,步骤s600、s601和s602由图4或图5a所示的管理节点43执行,具体可由管理节点43中的控制模块53或者图5a所示的控制模块53中的处理器531执行。另外,步骤s603、s604、s605、s606、s607由图5b所示的存储节点执行,也就是由图4中的mds42或ds43执行,具体可由图5b所示的存储节点中的控制模块63或者图5b所示的控制模块63中的处理器631执行。

如图6所示,本申请实施例提供的快照删除方法具体包括如下步骤。

s600、管理节点43获取至少两个快照日志。

具体的,管理节点43周期性或定时或待删除快照的数量达到一定阈值或管理节点43接收到携带有待删除快照的标识的快照处理消息后,查询快照处理系统中的待删除快照对应的快照日志。

可选的,管理节点43周期性或定时查询存储节点中是否存在待删除快照,这里待删除快照是指设置了删除标记的快照。若某一存储节点中存在设置了删除标记的快照,则管理节点43从快照处理系统指定的日志目录中获取与所述设置了删除标记的快照对应的快照日志。若在管理节点43查询时刻不存在设置了删除标记的快照,则管理节点43不作任何处理,等待下一个周期或者下一个时刻重新查询。

可选的,管理节点43在接收到存储节点发送的携带有待删除快照的标识的快照处理消息后,从快照处理系统指定的日志目录中获取与待删除快照的标识对应的快照日志。

可选的,存储节点中待删除快照的数量达到一定阈值时,发送携带有待删除快照的标识的快照处理消息给管理节点43。

结合前面描述可知,一个快照对应至少一个快照日志,因此,管理节点43在获取到某一待删除快照的标识后,可获取到与待删除快照对应的至少两个快照日志。

s601、管理节点43将获取到的所有快照日志划分为至少一个快照日志组,同一快照日志组中的所有快照日志具有相同的属性,不同的快照日志组包括的快照日志不同。

结合前面描述可知,快照日志记录的差异包括数据差异或元数据差异,因此,管理节点43在获取到至少两个快照日志后,首先将获取到的至少两个快照日志分为记录数据差异的快照日志和记录元数据差异的快照日志,然后分别对记录数据差异的快照日志和记录元数据差异的快照日志进行进一步划分。

从图1b可知,快照处理系统中的数据按照逻辑扇区存储,不同逻辑扇区存储的数据不同,因此,管理节点43对记录数据差异的快照日志的进一步划分方法为:管理节点43根据逻辑扇区的标识,将记录数据差异的快照日志进一步划分为至少一个快照日志组,即划分为至少一个用于记录数据差异的快照日志组,每个用于记录数据差异的快照日志组中的每个快照日志中记录的对象属于相同的逻辑扇区,具有相同的逻辑扇区的标识。属于同一的逻辑扇区的对象的数据由同一数据服务器管理。

从图3所示,具有相同父节点的每个对象的元数据通过相同父节点索引获得,因此,管理节点43对记录元数据差异的快照日志的进一步划分方法为:管理节点43根据子对象的父节点的标识将记录元数据差异的快照日志进一步划分为至少一个快照日志组,即划分为至少一个用于记录元数据差异的快照日志组,每个用于记录元数据差异的快照日志组中的每个快照日志中记录的对象具有相同父节点。具有相同父节点的对象的元数据由同一元数据服务器管理。

s602、管理节点43将同一个快照日志组中的所有快照日志发送至同一存储节点。

具体的,管理节点43在s601中获取到至少一个用于记录数据差异的快照日志组后,将每个用于记录数据差异的快照日志组发送给一个ds,且同一快照日志组中的所有快照日志均被发送至同一ds。这里的ds是指记录有待删除快照的ds。

同理,管理节点43在s601中获取到至少一个用于记录元数据差异的快照日志组后,将每个用于记录元数据差异的快照日志组发送给一个mds,且同一快照日志组中的所有快照日志均被发送至同一mds。这里的mds是指记录有待删除快照的mds。

不论管理节点43是向ds发送快照日志组还是向mds发送快照日志组,该管理节点43发送快照日志组所采用的方式可以为:管理节点43按照预设的消息长度将同一个快照日志组中的所有快照日志封装为至少一条删除消息,不同删除消息包括的快照日志不同;管理节点43向同一存储节点发送同一个快照日志组中的所有快照日志封装成的至少一条删除消息。

可选的,管理节点43也可以向同一存储节点发送多个快照日志组中每个快照日志组的所有快照日志封装成的至少一条删除消息。

在管理节点43发送每个快照日志组的过程中,管理节点43可以根据每个快照日志组的所有快照日志具备的相同属性确定存储节点,并向该存储节点发送删除消息,也可以根据某一预设标识确定存储节点,并向该存储节点发送删除消息,本申请实施例对此不作具体限定。所述预设标识用于指示接收所述同一快照日志组的所有快照日志的存储节点。

本申请提供的快照删除方法中,通过管理节点43对获取到的快照日志进行分组,获取至少一个快照日志组,每个快照日志组中的所有快照日志具有相同的属性,同一快照日志组中具有所述相同属性的快照日志中记录的所述对象被同一存储节点管理。因此,通过所述管理节点43将获取到的所有快照日志划分为至少一个快照日志组后,所述管理节点43发送所述快照日志组,且所述每个快照日志组中的所有快照日志均被发送至同一存储节点,避免按照时间顺序发送多个快照日志给同一存储节点时需要频繁访问存储节点,减少了管理节点43频繁发送快照日志的负担,以及减少了存储节点频繁接收多个快照日志的负担,提高了发送快照日志的效率。

接收到删除消息的某一存储节点可根据删除消息获取到同一快照日志组中的所有快照日志。该存储节点在获取到同一快照日志组中的至少一个快照日志后,实现快照日志组中的所有快照日志记录的对象的副本删除。本申请实施例中的每个存储节点对每个快照日志组的处理过程均相同,为了方便理解,本申请实施例以一个存储节点对一个快照日志组的处理过程为例进行说明。如图6所示,s602之后,快照删除方法还包括如下步骤:

s603、存储节点获取管理节点43发送的一个快照日志组包括的至少一个快照日志,该至少一个快照日志具有相同的属性。

具体的,存储节点接收管理节点43发送的至少一条删除消息,该至少一条删除消息中的每条删除消息均包括一个日志组中的至少一个快照日志。该存储节点在接收到至少一条删除消息后,解封装其接收到的每条删除消息,并读取解封装后的删除消息,以获取一个快照日志组包括的所有快照日志。

s604、存储节点创建并运行一个用于删除待删除快照的事务。

s605、存储节点删除该存储节点获取到的至少一个快照日志中每个快照日志记录的对象的副本。

具体的,存储节点根据其获取到的至少一个快照日志,对已创建的所述用于删除待删除快照的事务进行加锁操作,确认等待加锁链表,并将至少一个快照日志中的每个快照日志存储至等待加锁链表。

存储节点查询所述等待加锁链表,将所述等待加锁链表中的所述至少一个快照日志的每个快照日志记录的对象的副本删除。由于所述等待加锁链表中的所述至少一个快照日志的每个快照日志具有相同属性,具有相同属性的所有快照日志中记录的对象由同一存储节点管理,因此所述存储节点查询并删除所述等待加锁链表中的所述至少一个快照日志的每个快照日志记录的对象的副本。

此外,存储节点在运行已创建的用于删除待删除快照的事务后,还将至少一个快照日志记录的对象的元数据或数据的合并存储。如图6所示,在s604之后,所述快照删除方法还包括如下步骤:

s606、存储节点对至少一个快照日志记录的对象的元数据或数据合并存储。

具体的,存储节点根据其获取到的至少一个快照日志,对已创建的所述用于删除待删除快照的事务进行加锁操作,将至少一个快照日志中的每个快照日志存储至等待加锁链表。

存储节点运行已创建的所述用于删除待删除快照的事务,查询所述等待加锁链表,将所述等待加锁链表中的所述至少一个快照日志的每个快照日志记录的对象的元数据或数据的合并存储。由于所述等待加锁链表中的所述至少一个快照日志的每个快照日志具有相同属性,具有相同属性的所有快照日志中记录的对象由同一存储节点管理,因此,所述存储节点查询并将所述等待加锁链表中的所述至少一个快照日志的每个快照日志记录的对象的元数据或数据的合并存储。

本申请实施例中的存储节点在执行s604之后,可以先执行s605,后执行s606,也可以先执行s606,后执行s605,还可以同时执行s605和s606,本申请实施例对此不作具体限定。图6中以存储节点先执行s605,后执行s606为例进行说明。

存储节点在删除多个对象的副本后,以及在将将等待加锁链表中的所有快照日志记录的对象的元数据或数据的合并存储后,对已创建的所述用于删除待删除快照的事务进行解锁操作,以对后续接收到的其他快照日志组中的快照日志进行另一个用于删除待删除快照的事务的创建及运行。

s607、存储节点向管理节点43发送响应消息。

本申请实施例中的管理节点43将获取到的快照日志先分组,后发送,有效的减少了管理节点43发送快照日志的次数,减少了管理节点43频繁发送快照日志的负担,降低了发送资源的占用率,以及减少了存储节点频繁接收多个快照日志的负担,提高了发送快照日志的效率。存储节点在获取到与每个快照日志记录的对象的数据或元数据后,同时存储其获取到的所有数据,也就是说,将多个用于删除对象的副本的事务合并为一个事务,仅仅通过一个事务即可删除多个快照日志记录的对象的副本,提高了删除对象的副本这一任务的性能,提高了存储节点的服务性能。

本申请实施例提供一种管理节点43,该管理节点43用于执行以上快照删除方法中的管理节点43所执行的步骤。本申请实施例提供的管理节点43可以包括相应步骤所对应的模块。

本申请实施例可以根据上述方法示例对管理节点43进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图7示出上述实施例中所涉及的管理节点700的一种可能的结构示意图。如图7所示,管理节点700包括获取单元70、分组单元71和发送单元72、确定单元73和封装单元74。获取单元70用于支持该管理节点700执行图6所示实施例中的s600,和/或用于本文所描述的技术的其它过程;分组单元71用于支持该管理节点700执行图6所示实施例中的s601,和/或用于本文所描述的技术的其它过程;发送单元72用于支持该管理节点700执行上图6所示实施例中的s602,和/或用于本文所描述的技术的其它过程;确定单元73用于从获取单元70获取到的至少两个快照日志中确定记录元数据差异的快照日志,或者从获取单元70获取到的至少两个快照日志中确定记录数据差异的快照日志,和/或用于本文所描述的技术的其它过程;封装单元74,用于将分组单元71划分的每个快照日志组中的所有快照日志封装为至少一条删除消息,和/或用于本文所描述的技术的其它过程。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。当然,本申请实施例提供的管理节点700包括但不限于上述模块,例如管理节点700还可以包括接收单元和存储单元。接收单元用于与其他设备通信,如与存储设备通信。存储单元可以用于存储该管理节点700的程序代码。

在采用集成的单元的情况下,本申请实施例中的获取单元70、分组单元71、确定单元73和封装单元74可以是图5a中的处理器531,发送单元72和接收单元可以是图5a中的通信接口51,存储单元可以是图5a中的存储器532。

当管理节点700运行时,该管理节点700执行如图6所示的实施例的快照删除方法。快照删除方法可参见上述如图6所示的实施例中的步骤s600、s601和s602的相关描述,此处不再赘述。

在其他实现方式中,获取单元70、分组单元71、确定单元73和封装单元74可以是集成在一起或任意组合的形式实现,具体实现方式不受本申请实施例的限制。

本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在管理节点700上运行时,该管理节点700执行如图6所示的快照删除方法中的步骤s600、s601和s602。

在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;管理节点700的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得管理节点700实施执行图6所示的快照删除方法中的管理节点的步骤s600、s601和s602。

本申请实施例提供一种存储节点,该存储节点用于执行以上快照删除方法中的存储节点所执行的步骤。本申请实施例提供的存储节点可以包括相应步骤所对应的模块。

本申请实施例可以根据上述方法示例对存储节点进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图8示出上述实施例中所涉及的存储节点800的一种可能的结构示意图。如图8所示,存储节点800包括接收单元80、事务创建单元81、事务运行单元82、加锁单元83、存储单元84以及处理单元85。接收单元80用于支持该存储节点800执行图6所示实施例中的s603,和/或用于本文所描述的技术的其它过程;事务创建单元81和事务运行单元82用于支持该存储节点800执行图6所示实施例中的s604,和/或用于本文所描述的技术的其它过程;加锁单元83用于在事务创建单元81创建用于删除待删除快照的事务后,对已创建的用于删除待删除快照的事务进行加锁操作,确认等待加锁链表等;存储单元84用于将接收单元80接收到的至少一个快照日志中的每个快照日志存储至加锁单元83确认的等待加锁链表,和/或用于本文所描述的技术的其它过程;处理单元85用于支持该存储节点800执行图6所示实施例中的s606,将等待加锁链表中的至少一个快照日志的每个快照日志记录的对象的元数据或数据合并存储。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。当然,本申请实施例提供的存储节点800包括但不限于上述模块,例如存储节点800还可以包括发送单元。发送单元用于与其他设备通信,如与管理节点700通信,发送单元用于支持该存储节点800执行图6所示实施例中的s607,和/或用于本文所描述的技术的其它过程。

在采用集成的单元的情况下,本申请实施例中的事务创建单元81、事务运行单元82、加锁单元83以及处理单元85可以是图5b中的处理器631,接收单元80和发送单元可以是图5b中的通信接口61,存储单元84可以是图5b中的存储器632。

当存储节点800运行时,该存储节点800执行如图6所示的实施例的快照删除方法。具体的快照删除方法可参见上述如图6所示的实施例中的步骤s603、s604、s605、s606、s607的相关描述,此处不再赘述。

相应的,本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在存储节点800上运行时,该存储节点800执行如图6所示的快照删除方法的步骤s603、s604、s605、s606、s607。

在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;存储节点800的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得存储节点800实施执行图6所示的快照删除方法中的存储节点的步骤s603、s604、s605、s606、s607。

本申请提供的快照删除方法及节点,通过管理节点将获取到的至少两个快照日志划分为至少一个快照日志组。其中,每个快照日志组中的所有快照日志具有相同的属性,不同的快照日志组包括的快照日志不同,所述快照日志用于记录对象修改之前的副本与修改后的对象之间的差异,所述对象修改之前的副本为创建所述对象的快照后输出的对象。因此,所述管理节点发送同一快照日志组的所有快照日志均至同一存储节点,避免发送多个快照日志给同一存储节点时需要频繁访问存储节点,减少了管理节点频繁发送快照日志的负担,以及减少了存储节点频繁接收多个快照日志的负担,提高了存储节点的服务性能,提高了发送快照日志的效率。

在上述实施例中,可以全部或部分的通过软件,硬件,固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式出现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,dvd)或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1