分布式存储系统升级方法、系统、装置及可读存储介质与流程

文档序号:14249203阅读:168来源:国知局
分布式存储系统升级方法、系统、装置及可读存储介质与流程

本发明涉及分布式存储领域,特别涉及一种分布式存储系统升级方法、系统、装置及计算机可读存储介质。



背景技术:

分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。分布式系统存储系统可通过扩展服务器数量来提升系统的性能。一个分布式存储系统中的服务器数量可达成百上千,对于如此多数量的服务器进行系统升级会比较复杂。

现有技术中,分布式存储系统进行升级时需要整个系统离线升级,造成一段时间内可读写服务真空期,因此,如何研发一种能够保证读写服务运行的升级方法是当前需要解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种分布式存储系统升级方法、系统、装置及计算机可读存储介质,以实现分布式存储系统能够在升级期间仍提供读写服务。其具体方案如下:

一种分布式存储系统升级方法,包括:

将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,n为大于等于2的正整数,m为正整数;

对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成。

可选的,所述将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组的过程,包括:

按照数据的副本数量将所述分布式存储系统中的所有节点分为n组每组包括m个节点的节点组。

可选的,所述对n组节点组中未升级的节点组逐组进行升级的过程,包括:

将n组节点组中未升级的节点组中的目标节点组从所述分布式存储系统中离线,且动态调整数据的副本数;

对所述目标节点组中的所有节点进行升级;

升级完成后,将所述目标节点组重新加入所述分布式存储系统中。

可选的,所述对n组节点组中未升级的节点组逐组进行升级时,还包括:

接收新数据,将所述新数据的副本保存在当前所有非升级中的节点组中,如果当前升级中的节点组升级完成,将所述新数据的副本保存在当前升级完成的节点组中。

可选的,所述将所述新数据的副本保存在当前所有非升级中的节点组中,如果当前升级中的节点组升级完成,将所述新数据的副本保存在当前升级完成的节点组中的过程,包括:

对所述新数据的副本进行标记,将所述新数据的副本保存在当前所有非升级中的节点组中,如果当前升级中的节点组升级完成,将带标记的副本保存在当前升级完成的节点组中。

可选的,所述将分布式存储系统中的所有节点分为n组节点组之前,还包括:

对所述分布式存储系统中的目标节点进行预升级,判断所述目标节点是否预升级成功;

如果是,则将所述分布式存储系统中的所有节点分为n组节点组;

如果否,则停止升级。

可选的,所述对所述分布式存储系统中的目标节点进行预升级,判断所述目标节点是否预升级成功的过程,包括:

将所述目标节点从所述分布式存储系统中离线,对所述目标节点进行升级,禁止副本修复;

判断所述目标节点是否升级成功;

如果否,则回滚到升级前版本;

如果是,则将所述目标节点加入所述分布式存储系统中,判断所述目标节点是否与所述分布式存储系统版本兼容;

如果是,则判定所述目标节点预升级成功;

如果否,则判定所述目标节点预升级失败,回滚到升级前版本,重新加入到所述分布式存储系统中。

本发明还公开了一种分布式存储系统升级系统,包括:

分组模块,用于将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,n为大于等于2的正整数,m为正整数;

升级模块,用于对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成。

本发明还公开了一种分布式存储系统升级装置,包括:

存储器,用于存储指令;其中,所述指令包括将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,n为大于等于2的正整数,m为正整数;对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成;

处理器,用于执行所述存储器中的指令。

本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有分布式存储系统升级程序,所述分布式存储系统升级程序被处理器执行时实现如前述分布式存储系统升级方法的步骤。

本发明中,分布式存储系统升级方法,包括:将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,n为大于等于2的正整数,m为正整数;对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成;本发明将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,确保升级过程中同一数据保存在不同节点组中,防止出现升级过程中同一数据的所有副本均无法读取,对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成,实现了部分节点升级,部分节点工作,保证了分布式存储系统能够在升级期间仍提供读写服务。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种分布式存储系统升级方法流程示意图;

图2为本发明实施例公开的另一种分布式存储系统升级方法流程示意图;

图3本发明实施例公开的一种分布式存储系统升级系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种分布式存储系统升级方法,参见图1所示,该方法包括:

步骤s11:将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,n为大于等于2的正整数,m为正整数。

具体的,在分布式存储系统中,为提高数据的安全性和可靠性,一份数据生成多份副本分别保存在分布式存储系统中不同的节点中,数据的每个副本保存的数据内容均一致,从而保证一个节点故障后,其余节点内仍有该数据的备份,当分布式存储系统进行系统升级时,分布式存储系统中各个节点均需进行升级,且处于升级状态的节点无法进行读写服务,因此,升级期间将会出现服务真空期。

进一步的,通过将分布式存储系统中分布式存储系统内的所有节点分为n组每组包括m个节点的节点组,并且保证同一数据的副本保存在不同的节点组中,其中,n为大于等于2的正整数,m为正整数;例如,将分布式存储系统内的所有节点分为3组每组包括3个节点的节点组,数据a一共有三份副本第一副本a、第二副本a和第三副本a,三份副本分别保存在三组节点组的节点中,如,第一副本a保存在第一节点组的一号节点中,第二副本a保存在第二节点组的二号节点中,第三副本a保存在第三节点组的三号节点中,因此,当任一组或二组节点组处于非工作状态,仍有一组节点组保存有数据a的副本,可以提供读写服务,当然数据a可能仅有两份副本,则数据a的副本分别保存在3组节点组的任意两组节点组中。

步骤s12:对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成。

具体的,在有对分布式存储系统升级过程中,对n组节点组中未升级的节点组逐组进行升级,而非采取对分布式存储系统中全部节点进行升级的方法,使得除处于升级状态的节点组,仍处于工作状态,能在线提供数据的读写服务,保证每种数据都有副本能够被读取,直至所有节点组全部升级完成,全部恢复工作状态。

可见,本发明实施例中,将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,确保升级过程中同一数据保存在不同节点组中,防止出现升级过程中同一数据的所有副本均无法读取,对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成,实现了部分节点升级,部分节点工作,保证了分布式存储系统能够在升级期间仍提供读写服务。

本发明实施例公开了一种具体的分布式存储系统升级方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图2所示,具体的:

步骤s21:按照数据的副本数量将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中。

具体的,分布式存储系统中副本数量是预先设置的,分布式存储系统中所有数据的副本数量均相同,因此,依据副本数量将分布式存储系统中的所有节点分为n组节点组,每组节点组均保存同一数据的一份副本,可以最大限度的保障升级过程中数据的可靠性和稳定性,避免出现无数据可读取的情况,例如,分布式存储系统中共有9个节点,副本数量为3,则将分布式存储系统分为3个节点组,每个节点组包括3个节点,如数据a一共有三份副本第一副本a、第二副本a和第三副本a,三份副本则分别保存在三组节点组的节点中,而不会出现同一节点组中保存多份同一数据的副本的情况。

步骤s22:将n组节点组中未升级的节点组中的目标节点组从分布式存储系统中离线,且动态调整数据的副本数量。

具体的,为对节点组进行升级,将当前在线的目标节点组从分布式存储系统中离线,以便于进行离线升级,同时,由于分布式存储系统可能具有副本修复功能,即,同一数据的在线副本数低于预先设置的副本数量,则保存有该数据的节点将复制该数据的副本至其余在线节点,以避免因某些节点故障,而导致数据的副本数减少,为防止节点组离线升级导致数据的副本数量减少而触发副本修复功能,动态调整数据的副本数量,当目标节点组离线进入升级状态,则将副本数量调节为n-1,使得副本数量与当前在线的副本数量相等,从而避免不必要的副本修复和复制。

步骤s23:对目标节点组中的所有节点进行升级。

步骤s24:升级完成后,将目标节点组重新加入分布式存储系统中,直至所有节点组全部升级完成。

具体的,目标节点组升级完成后,则重新上线加入分布式存储系统中从升级状态恢复至工作状态,目标节点组升级完成后,继续升级n组节点组中未升级的节点组,重复步骤s22至步骤s24直至所有节点组全部升级完成。

本发明实施例在前述实施例的基础上还公开了一种分布式存储系统升级方法,该方法包括:

在实际应用时,对n组节点组中未升级的节点组逐组进行升级时,分布式存储系统可能仍会接收写服务,此时,分布式存储系统的主机将新增数据写入分布式存储系统中,接收新数据,将新数据的副本保存在当前所有非升级中的节点组中,如果当前升级中的节点组升级完成,将新数据的副本保存在当前升级完成的节点组中。

具体的,分布式存储系统中的一个节点接收主机发送的新数据,将新数据复制得到n-1份副本,并将每份副本保存至每组节点组中的一个节点内,而处于升级状态的节点组,则暂时无法接收新数据的副本,待该升级中的节点组,完成升级后,重新加入分布式存储系统,则再将新数据的副本复制一份并保存在当前升级完成的节点组中,从而保证分布式存储系统中每个节点组保存有新数据的副本,避免了由于离线升级造成的副本缺失。

例如,分布式存储系统共有3组节点组,第一节点组、第二节点组和第三节点组,如第二节点组,第一节点组中的一个节点接收到新数据后,复制2份新数据的副本,一份保存在第一节点组中,另一份则保存在第三节点组中,待第二节点组升级完毕,重新加入到分布式存储系统,则再复制一份新数据的副本,保存在第三节点组中。

可以理解的是,为更好的追踪新数据是否完成了全部副本的保存,对新数据的副本进行标记,当升级中的节点组升级完成,则将带标记的副本保存至该节点组中。

在实际应用中,分布式存储系统的升级操作可能带来系统的不稳定,例如,升级失败或版本不兼容等问题,所以在将分布式存储系统中的所有节点分为n组节点组之前,还包括步骤s31至步骤s33;其中,

步骤s31:对分布式存储系统中的目标节点进行预升级,判断目标节点是否预升级成功。

具体的,为避免升级失败或版本不兼容等问题,预先从分布式存储系统中随机选取一个目标节点,对目标节点进行预升级,并判断目标节点是否预升级成功,已决定是否对整个分布式存储系统进行升级。

步骤s32:如果是,则将分布式存储系统中的所有节点分为n组节点组。

具体的,如果判定目标节点升级成功则执行步骤s11,对整个分布式存储系统进行升级。

步骤s33:如果否,则停止升级。

具体的,如果否,则停止对目标节点的升级,并将目标节点回滚到升级前的版本。

进一步的,上述步骤s31:对分布式存储系统中的目标节点进行预升级,判断目标节点是否预升级成功的过程,可以具体包括步骤s311至步骤s316;其中,

步骤s311:将目标节点从分布式存储系统中离线,对目标节点进行升级,禁止副本修复。

具体的,由于目标节点的离线,仍会触发副本的修复功能,因此,目标节点中保存的副本,从其余节点中进行修复。

步骤s312:判断目标节点是否升级成功。

步骤s313:如果否,则回滚到升级前版本。

步骤s314:如果是,则将目标节点加入分布式存储系统中,判断目标节点是否与分布式存储系统版本兼容。

步骤s315:如果是,则判定目标节点预升级成功。

步骤s316:如果否,则判定目标节点预升级失败,回滚到升级前版本,重新加入到分布式存储系统中。

相应的,本发明实施例还公开了一种分布式存储升级系统,参见图3所示,该系统包括:

分组模块11,用于将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,n为大于等于2的正整数,m为正整数;

升级模块12,用于对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成。

本发明实施例中,将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中,确保升级过程中同一数据保存在不同节点组中,防止出现升级过程中同一数据的所有副本均无法读取,对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成,实现了部分节点升级,部分节点工作,保证了分布式存储系统能够在升级期间仍提供读写服务。

本发明实施例中,上述分组模块11,具体用于按照数据的副本数量将分布式存储系统中的所有节点分为n组每组包括m个节点的节点组,且同一数据的副本保存在不同的节点组中。

上述升级模块12,可以包括离线单元、升级单元和上线单元;其中,

离线单元,用于将n组节点组中未升级的节点组中的目标节点组从分布式存储系统中离线,且动态调整数据的副本数;

升级单元,用于对目标节点组中的所有节点进行升级;

上线单元,用于升级完成后,将目标节点组重新加入分布式存储系统中。

本发明实施例中,还可以包括:

副本保存模块,用于接收新数据,将新数据的副本保存在当前所有非升级中的节点组中,如果当前升级中的节点组升级完成,将新数据的副本保存在当前升级完成的节点组中。

上述副本保存模块,可以具体用于接收新数据,对新数据的副本进行标记,将新数据的副本保存在当前所有非升级中的节点组中,如果当前升级中的节点组升级完成,将带标记的副本保存在当前升级完成的节点组中。

预升级模块,用于对分布式存储系统中的目标节点进行预升级,判断目标节点是否预升级成功;如果是,则发送升级指令至分组模块11,以使分组模块11将分布式存储系统中的所有节点分为n组节点组;如果否,则停止升级。

上述预升级模块,可以包括节点离线单元、升级判断单元、回滚单元、兼容判断单元;其中,

节点离线单元,用于将目标节点从分布式存储系统中离线,对目标节点进行升级,禁止副本修复;

升级判断单元,用于判断目标节点是否升级成功;

回滚单元,用于如果否,则回滚到升级前版本;

兼容判断单元,用于如果是,则将目标节点加入分布式存储系统中,判断目标节点是否与分布式存储系统版本兼容;如果是,则判定目标节点预升级成功;如果否,则判定目标节点预升级失败,回滚到升级前版本,重新加入到分布式存储系统中。

进一步的,本发明实施例还公开了一种分布式存储系统升级装置,该装置包括:

存储器,用于存储指令;其中,指令包括将分布式存储系统中的所有节点分为n组节点组,保证每组中均保存有同一数据的副本,n为大于等于2的正整数;对n组节点组中未升级的节点组逐组进行升级,直至所有节点组全部升级完成;

处理器,用于执行存储器中的指令。

关于上述存储器中存储的更加具体的指令可以参考前述实施例中公开的相应内容,在此不再进行赘述。

此外,本发明实施例还公开了一种计算机可读存储介质,计算机可读存储介质上存储有分布式存储系统升级程序,分布式存储系统升级程序被处理器执行时实现如前述实施例中分布式存储系统升级方法的步骤。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上对本发明所提供的一种分布式存储系统升级方法、系统、装置及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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