CN109814803B - 一种分布式存储***中容错能力自适应调整方法和装置 - Google Patents
一种分布式存储***中容错能力自适应调整方法和装置 Download PDFInfo
- Publication number
- CN109814803B CN109814803B CN201811540199.1A CN201811540199A CN109814803B CN 109814803 B CN109814803 B CN 109814803B CN 201811540199 A CN201811540199 A CN 201811540199A CN 109814803 B CN109814803 B CN 109814803B
- Authority
- CN
- China
- Prior art keywords
- storage
- node
- disk space
- redundancy
- instance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000005856 abnormality Effects 0.000 claims description 8
- 230000003044 adaptive effect Effects 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 8
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供了一种分布式存储***中容错能力自适应调整方法和装置,该方法包括:检测到分布式存储***中一存储节点的掉线时,确定使用该掉线存储节点的所有存储实例;对于使用该掉线存储节点的每一存储实例,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度,如果是,则针对该存储实例中使用该掉线存储节点的每一条带,利用该条带未使用的存储节点重构该条带,并维持该条带所属存储实例的节点冗余度不变,否则,针对该存储实例中使用该掉线存储节点的每一条带,利用分布式存储***中所有可用节点重构该条带,并基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度。
Description
技术领域
本发明涉及存储技术领域,特别涉及一种分布式存储***中的容错能力自适应调整方法和装置。
背景技术
分布式存储***中,例如基于纠删码(Erasure Code,EC)的分布式存储***、基于网络RAID2.0的分布式存储***等,存在一个多个存储实例 n+m+k,不同存储实例可以具有相同或不容的n、m、k值,其中,n是数据盘;m是校验盘,代表了磁盘冗余度;k是存储实例所需的节点冗余度,k<=m。
在分布式存储***中,每个存储实例对应的一个完整条带是由n+m块磁盘组成,但是只需要n块磁盘就可以读出条带的完整数据,条带失去m块磁盘数据也是完整的。节点冗余是通过磁盘冗余实现的,通过将条带的磁盘均匀的分配到各个存储节点(一个存储节点可以一个或多个磁盘)上,达到一个存储节点掉线时,条带上失去的磁盘数<=m/k,这样可以保证条带数据仍然是完整的。
发明内容
有鉴于此,本发明的目的在于提供一种分布式存储***中的容错能力自适应调整方法和装置。
为了达到上述目的,本发明提供了如下技术方案:
一种分布式存储***中容错能力自适应调整方法,包括:
检测到分布式存储***中一存储节点的掉线时,确定使用该掉线存储节点的所有存储实例;
对于使用该掉线存储节点的每一存储实例,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度,如果是,则针对该存储实例中使用该掉线存储节点的每一条带,利用该条带未使用的存储节点重构该条带,并维持该条带所属存储实例的节点冗余度不变,否则,针对该存储实例中使用该掉线存储节点的每一条带,利用分布式存储***中所有可用节点重构该条带,并基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度。
一种分布式存储***中容错能力自适应调整装置,包括:检测单元、判断单元、重构单元;
所述检测单元,用于检测到分布式存储***中一存储节点的掉线时,确定使用该掉线存储节点的所有存储实例;
所述判断单元,用于针对使用该掉线存储节点的每一存储实例,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度;
所述重构单元,用于判断单元判定分布式存储***中所有可用节点满足该存储实例所需的节点冗余度时,针对该存储实例中使用该掉线存储节点的每一条带,利用该条带未使用的存储节点重构该条带,并维持该条带所属存储实例的节点冗余度不变;用于判断单元判定分布式存储***中所有可用节点不满足该条带所属存储实例所需的节点冗余度时,针对该存储实例中使用该掉线存储节点的每一条带,利用分布式存储***中所有可用节点重构该条带,并基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度。
由上面的技术方案可知,本发明中,当分布式存储***中一个存储节点的掉线时,针对使用该掉线存储节点的每一条带,如果所有可用节点满足该条带所属存储实例所需的节点冗余度,利用该条带未使用的存储节点重构该条带,否则,利用分布式存储***中所有可用节点重构该条带。这种方法,可以使得使用掉线存储节点的每个条带所属存储实例可以最大程度的保持原有的节点冗余度,从而最大程度的保持该存储实例的容错能力。
附图说明
图1是本发明实施例一分布式存储***中容错能力自适应调整方法的流程图;
图2是本发明实施例二分布式存储***中容错能力自适应调整方法的流程图;
图3是本发明实施例分布式存储***中容错能力自适应调整装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并据实施例,对本发明的技术方案进行详细说明。
参见图1,图1是本发明实施例一分布式存储***中容错能力自适应调整方法的流程图,该方法具体包括以下步骤:
步骤101、检测到分布式存储***中一存储节点的掉线时,确定使用该掉线存储节点的所有存储实例。
本发明中的分布式存储***,是指基于EC的分布式存储***或基于网络RAID2.0的分布式存储***。
由于分布式存储***中可有多个存储实例,这些存储实例共用分布式存储***中的存储节点,因此,当某一存储节点掉线时,使用该存储节点的所有存储实例都会受到影响,需要重构。这里,某一存储实例使用某一存储节点,表明该存储实例中的一个或多个条带使用该存储节点,其中某个条带使用该存储节点,表明该条带中的一个或多个数据块(磁盘块)属于该存储节点。
在实际应用中,存储节点掉线有多种原因,例如,
1)存储节点异常(如异常关机)导致存储节点掉线。
此种节点掉线可以被分布式存储***检测确定。
当存储节点因节点异常而掉线时,考虑到该存储节点可能会自动从异常中恢复的情况,可以等待一段时间,如果该存储节点能够自动从异常中恢复,则仍将其作为在线节点,不再将其作为掉线节点执行后续操作,只有在确定该存储节点无法从异常中恢复时,才执行后续操作。这样处理可以避免节点掉线误判。
因此,本步骤中,检测到分布式存储***中一存储节点的掉线之后,确定使用该掉线存储节点的所有存储实例之前,还可以进一步执行以下操作:
如果确定该存储节点是因节点异常而掉线,则若该存储节点在预设时间内异常恢复,则确定该存储节点未掉线,不再执行后续的确定使用该存储节点的所有存储实例的操作,若该存储节点在预设时间内异常未恢复,则再执行后续的确定使用该存储节点的所有存储实例的操作。
2)存储节点因被用户移出分布式存储***而导致存储节点掉线。
在实际应用中,用户可以根据需求从分布式存储***中移出部分节点。如果某一存储节点是因被移出分布式存储***而掉线,短时间内一般不会再加入该分布式存储***,因此,此种情况可以立刻执行后续的掉线处理操作。
因此,本步骤中,检测到分布式存储***中一存储节点的掉线之后,如果确定该存储节点是因被移出分布式存储***而掉线,则直接执行后续确定使用该掉线存储节点的所有存储实例操作。
步骤102、对于使用该掉线存储节点的每一存储实例,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度,如果是,则执行步骤103,否则,执行步骤104。
可用节点,即分布式存储***中未掉线的存储节点。
在实际应用中,由于分布式存储***中有多个存储节点,多个存储实例共用这些存储节点,通常会针对每个存储实例预先设定其所需的冗余节点数,例如1个冗余节点数,分布式存储***针对每个存储实例允许的最大冗余节点数往往要比该存储实例所需的冗余节点数要大。
本发明实施例中,可以使用以下公式确定分布式存储***中所有可用节点针对该存储实例允许的最大节点冗余度K:
其中,c为分布式存储***中的所有可用节点个数;n为该存储实例的数据盘个数,m为该存储实例的校验盘个数。
当分布式存储***中的某个存储节点掉线时,对于使用该掉线存储节点的每个存储实例,可以通过判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度,来确定分布式存储***是否还能够支持该存储实例所需的节点冗余度,并据此对该存储实例进行重构,具体是对该存储实例中使用该掉线存储节点的各条带进行重构,并调整该存储实例当前的节点冗余度。
判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度的一种具体实现方法为:确定分布式存储***中所有可用节点针对该存储实例允许的最大节点冗余度K,如果K不大于该存储实例所需的节点冗余度,则确定分布式存储***中所有可用节点不满足该存储实例所需的节点冗余度,否则,确定分布式存储***中所有可用节点满足该存储实例所需的节点冗余度。
步骤103、针对该存储实例中使用该掉线存储节点的每一条带,利用该条带未使用的可用存储节点重构该条带,并维持该条带所属存储实例的节点冗余度不变。
当分布式存储***中所有可用节点满足该存储实例所需的节点冗余度时,对于该存储实例中使用该掉线存储节点的每一条带,需要使用该条带未使用的存储节点对该条带进行重构,具体重构方法如下:
确定该条带在掉线存储节点中使用的磁盘空间,从该条带未使用且有充足空闲磁盘空间的存储节点中分配替代磁盘空间;
将该条带在掉线存储节点中的磁盘空间数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该条带在掉线存储节点中使用的磁盘空间;
维持该条带的节点冗余度不变。
需要说明的是,一般情况下条带的节点冗余度和其所属存储实例的节点冗余度是相同的,当该条带使用的存储节点掉线时,该条带的节点冗余度和其所属存储实例的节点冗余度会受到影响。其中,如果分布式存储***中的剩余存储节点能够满足该存储实例所需的节点冗余度,则在重构该条带时使用该条带未使用的存储节点进行条带重构,从而使得该条带的节点冗余度不发生变化,从而也不会影响该条待所属存储实例的节点冗余度。
步骤104、利用分布式存储***中所有可用节点重构该条带,并基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度。
当分布式存储***中所有可用节点不满足该存储实例所需的节点冗余度时,对于该存储实例中使用该掉线存储节点的每一条带,需要使用分布式存储***中所有可用节点对该条带进行重构,具体重构方法如下:
确定该条带在掉线存储节点中使用的磁盘空间,如果存在该条带未使用且有充足空闲磁盘空间的存储节点,则从该存储节点分配替代磁盘空间,否则,从该条带已使用且有充足空闲磁盘空间的存储节点分配替代磁盘空间;
将该条带在掉线存储节点中的磁盘空间数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该条带在掉线存储节点中使用的磁盘空间;
将该条带的节点冗余度减1。
需要说明的是,一般情况下条带的节点冗余度和其所属存储实例的节点冗余度是相同的,当该条带使用的存储节点掉线时,该条带的节点冗余度和其所属存储实例的节点冗余度会受到影响。其中,如果分布式存储***中的剩余存储节点不能够满足该存储实例所需的节点冗余度,则在重构该条带时优先使用该条带未使用的存储节点进行条带重构,如果该条带未使用节点空间不足,则只能使用该条带已使用的存储节点进行条带重构,该条带重构后的节点冗余度减少1。
在实际实现中,存储实例的节点冗余度与该存储实例中节点冗余度最小的条带的节点冗余度相同。本步骤中,当该存储实例中某个条带重构后的节点冗余度减小,也需要基于该条带的节点冗余度相应更新该存储实例的节点冗余度,具体更新方法为:如果该条带的节点冗余度小于该条带所属存储实例的节点冗余度,则将该条带所属存储实例的节点冗余度设置为该条带的节点冗余度。
参见图2,图2是本发明实施例二分布式存储***中容错能力自适应调整方法的流程图,该方法应用于分布式存储***,具体包括以下步骤:
步骤201、检测到分布式存储***中一存储节点的上线时,确定需要提升节点冗余度的所有存储实例。
本发明实施例中,检测到分布式存储***中一存储节点的上线,包括:存储节点异常恢复(节点异常且在预设时间之后异常恢复,此时该存储节点会被作为一个新加入节点处理)或新加入分布式存储***,则确定该存储节点上线。
当有存储节点上线时,可以利用新上线的存储节点对需要提升节点冗余度的存储实例进行重构。其中,对于分布式存储***中的每一存储实例,如果该存储实例当前的节点冗余度小于该存储实例所需的节点冗余度,则确定该存储实例需要提升节点冗余度。
步骤202、针对需要提升节点冗余度的每一存储实例,利用该上线存储节点重构该存储实例,并提升该存储实例的节点冗余度。
本发明实施例中,利用该上线存储节点重构该存储实例,并提升该存储实例的节点冗余度的具体方法如下:
找出该存储实例中节点冗余度小于该存储实例所需的节点冗余度的所有条带;
针对找出的每一条带,确定该条带已使用的存储节点中需要被替换的磁盘空间,从该上线存储节点中分配对应的替代磁盘空间,分配成功,则将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该需要被替换的磁盘空间,将该条带的节点冗余度加1,分配失败,则停止重构该存储实例;
如果该存储实例中所有条带的节点冗余数均大于该存储实例当前的节点冗余数,则将该存储实例当前的节点冗余数更新为该存储实例中节点冗余数最小的条带的节点冗余数。
上述将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间的过程中,如果有新的数据需要写入该需要被替换的磁盘空间,为了保持被替换的磁盘空间数据与替代磁盘空间中的数据一致性,可以采用以下两种策略实现数据同步:
1)重新执行被替换磁盘空间到替代磁盘空间的数据拷贝,即重新将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间。
2)根据数据拷贝进度和新写入数据的位置执行不同数据一致性处理。
如果新写入数据的写入位置处的原有数据已拷贝到该替代磁盘空间,则将该新写入数据写入被替换磁盘空间时还同时写入到该替代磁盘空间,从而保持拷贝前后两个磁盘空间的数据一致性。
如果新写入数据的写入位置处的原有数据尚未拷贝到该替代磁盘空间,由于该部分数据尚未被同步到该替代磁盘空间,此时只需继续执行数据拷贝过程,新写入的数据即可被同步到该替代磁盘空间,因此,不需要执行将新写入数据写入被替换磁盘空间时还同时写入到该替代磁盘空间的操作。
从上述图1和图2所示的容错能力自适应调整方法可以看出,本发明相对于现有技术有以下优点:
1)相对于现有技术中在写入数据时被动进行存储实例重构,本发明中,在存储节点掉线时,主动对所有相关条带的数据块做数据修复,可以有效减少数据的风险时间窗口。
2)现有技术中不会主动调整存储实例的节点冗余度,而本发明中,则会根据存储节点的掉线和上线,主动调整存储实例的节点冗余度。
3)现有技术中,重构存储实例的过程中需要多次读取、计算和一次写入,对***的IO性能影响很大,本发明中,通过采用在线复制的方式,只需要一次读一次写入就可以实现重构,对***IO性能影响较小。
本发明还提供了一种容错能力自适应调整装置,以下结合图3进行详细说明:
参见图3,图3是本发明实施例分布式存储***中容错能力自适应调整装置的结构示意图,如图3所示,该装置包括:检测单元301、判断单元302、重构单元303;其中,
检测单元301,用于检测到分布式存储***中一存储节点的掉线时,确定使用该掉线存储节点的所有存储实例;
判断单元302,用于针对使用该掉线存储节点的每一存储实例,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度;
重构单元303,用于判断单元302判定分布式存储***中所有可用节点满足该存储实例所需的节点冗余度时,针对该存储实例中使用该掉线存储节点的每一条带,利用该条带未使用的存储节点重构该条带,并维持该条带所属存储实例的节点冗余度不变;用于判断单元302判定分布式存储***中所有可用节点不满足该条带所属存储实例所需的节点冗余度时,针对该存储实例中使用该掉线存储节点的每一条带,利用分布式存储***中所有可用节点重构该条带,并基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度。
图3所示装置中,
所述检测单元301,进一步用于:检测到分布式存储***中一存储节点的上线时,确定需要提升节点冗余度的所有存储实例;
所述重构单元303,进一步用于:针对需要提升节点冗余度的每一存储实例,利用该上线存储节点重构该存储实例,并提升该存储实例的节点冗余度。
图3所示装置中,
所述检测单元301,检测到分布式存储***中一存储节点的掉线,包括:检测到该存储节点异常或被移出分布式存储***,则确定该存储节点掉线;
所述检测单元301,检测到分布式存储***中一存储节点的上线,包括:检测到该存储节点异常恢复或新加入分布式存储***,则确定该存储节点上线。
图3所示装置中,
所述检测单元301,检测到分布式存储***中一存储节点的掉线之后,确定使用该存储节点的所有存储实例之前,进一步用于:如果该存储节点是因被移出分布式存储***而掉线,则确定使用该存储节点的所有存储实例;如果该存储节点是因为节点异常而掉线,则若该存储节点在预设时间内异常恢复,则确定该存储节点未掉线,不执行确定使用该存储节点的所有存储实例的操作,若该存储节点在预设时间内异常未恢复,则确定使用该存储节点的所有存储实例。
图3所示装置中,
所述判断单元302,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度时,用于:
确定分布式存储***中所有可用节点针对该存储实例允许的最大节点冗余度K,如果K不大于该存储实例所需的节点冗余度,则确定分布式存储***中所有可用节点不满足该存储实例所需的节点冗余度,否则,确定分布式存储***中所有可用节点满足该存储实例所需的节点冗余度。
图3所示装置中,
所述判断单元302,使用以下公式确定分布式存储***中所有可用节点针对该存储实例允许的最大节点冗余度K:
其中,c为分布式存储***中的所有可用节点个数;n为该存储实例的数据盘个数,m为该存储实例的校验盘个数。
图3所示装置中,
所述重构单元303,利用该条带未使用的存储节点重构该条带时,用于:
确定该条带在掉线存储节点中使用的磁盘空间,从该条带未使用且有充足空闲磁盘空间的存储节点中分配替代磁盘空间;
将该条带在掉线存储节点中的磁盘空间数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该条带在掉线存储节点中使用的磁盘空间;
维持该条带的节点冗余度不变;
所述重构单元303,利用分布式存储***中所有可用节点重构该条带时,用于:
确定该条带在掉线存储节点中使用的磁盘空间,如果存在该条带未使用且有充足空闲磁盘空间的存储节点,则从该存储节点分配替代磁盘空间,否则,从该条带已使用且有充足空闲磁盘空间的存储节点分配替代磁盘空间;
将该条带在掉线存储节点中的磁盘空间数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该条带在掉线存储节点中使用的磁盘空间;
将该条带的节点冗余度减1;
所述重构单元303,基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度时,用于:
如果该条带的节点冗余度小于该条带所属存储实例的节点冗余度,则将该条带所属存储实例的节点冗余度设置为该条带的节点冗余度。
图3所示装置中,
所述检测单元301,确定需要提升节点冗余度的所有存储实例时,用于:针对分布式存储***中的每一存储实例,如果该存储实例当前的节点冗余度小于该存储实例所需的节点冗余度,则确定该存储实例需要提升节点冗余度。
图3所示装置中,
所述重构单元301,利用该上线存储节点重构该存储实例,并提升该存储实例的节点冗余度时,用于:
找出该存储实例中节点冗余度小于该存储实例所需的节点冗余度的所有条带;
针对找出的每一条带,确定该条带已使用的存储节点中需要被替换的磁盘空间,从该上线存储节点中分配对应的替代磁盘空间,分配成功,则将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该需要被替换的磁盘空间,将该条带的节点冗余度加1,分配失败,则停止重构该存储实例;
如果该存储实例中所有条带的节点冗余数均大于该存储实例当前的节点冗余数,则将该存储实例当前的节点冗余数更新为该存储实例中节点冗余数最小的条带的节点冗余数。
图3所示装置中,
所述重构单元303,将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间的过程中,如果有新的数据需要写入该需要被替换的磁盘空间,则重新将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间,或者,若新写入数据的写入位置处的原有数据已拷贝到该替代磁盘空间,则将该新写入数据同时写入到该替代磁盘空间,若新写入数据的写入位置处的原有数据尚未拷贝到该替代磁盘空间,则不将新写入数据同时写入到该替代磁盘空间。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (20)
1.一种分布式存储***中容错能力自适应调整方法,其特征在于,该方法包括:
检测到分布式存储***中一存储节点的掉线时,确定使用该掉线存储节点的所有存储实例;
对于使用该掉线存储节点的每一存储实例,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度,如果是,则针对该存储实例中使用该掉线存储节点的每一条带,从该条带中未使用的存储节点中分配用于条带重构的存储空间,并维持该条带所属存储实例的节点冗余度不变,否则,针对该存储实例中使用该掉线存储节点的每一条带,利用分布式存储***中所有可用节点重构该条带,并基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度;其中,所述节点冗余度为冗余节点数。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
检测到分布式存储***中一存储节点上线时,确定需要提升节点冗余度的所有存储实例;
针对需要提升节点冗余度的每一存储实例,利用该上线存储节点重构该存储实例,并提升该存储实例的节点冗余度。
3.根据权利要求1或2所述的方法,其特征在于,
检测到分布式存储***中一存储节点的掉线,包括:检测到该存储节点异常或被移出分布式存储***,则确定该存储节点掉线;
检测到分布式存储***中一存储节点的上线,包括:检测到该存储节点异常恢复或新加入分布式存储***,则确定该存储节点上线。
4.根据权利要求3所述的方法,其特征在于,
检测到分布式存储***中一存储节点的掉线之后,确定使用该存储节点的所有存储实例之前,进一步包括:如果该存储节点是因被移出分布式存储***而掉线,则确定使用该存储节点的所有存储实例;如果该存储节点是因为节点异常而掉线,则若该存储节点在预设时间内异常恢复,则确定该存储节点未掉线,不执行确定使用该存储节点的所有存储实例的操作,若该存储节点在预设时间内异常未恢复,则确定使用该存储节点的所有存储实例。
5.根据权利要求1所述的方法,其特征在于,
判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度的方法为:
确定分布式存储***中所有可用节点针对该存储实例允许的最大节点冗余度K,如果K不大于该存储实例所需的节点冗余度,则确定分布式存储***中所有可用节点不满足该存储实例所需的节点冗余度,否则,确定分布式存储***中所有可用节点满足该存储实例所需的节点冗余度。
7.根据权利要求1所述的方法,其特征在于,
从该条带中未使用的存储节点中分配用于条带重构的存储空间为:
确定该条带在掉线存储节点中使用的磁盘空间,从该条带未使用且有充足空闲磁盘空间的存储节点中分配替代磁盘空间;
将该条带在掉线存储节点中的磁盘空间数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该条带在掉线存储节点中使用的磁盘空间;
维持该条带的节点冗余度不变;
利用分布式存储***中所有可用节点重构该条带的方法为:
确定该条带在掉线存储节点中使用的磁盘空间,如果存在该条带未使用且有充足空闲磁盘空间的存储节点,则从该存储节点分配替代磁盘空间,否则,从该条带已使用且有充足空闲磁盘空间的存储节点分配替代磁盘空间;
将该条带在掉线存储节点中的磁盘空间数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该条带在掉线存储节点中使用的磁盘空间;
将该条带的节点冗余度减1;
基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度的方法为:
如果该条带的节点冗余度小于该条带所属存储实例的节点冗余度,则将该条带所属存储实例的节点冗余度设置为该条带的节点冗余度。
8.根据权利要求2所述的方法,其特征在于,
确定需要提升节点冗余度的所有存储实例的方法为:针对分布式存储***中的每一存储实例,如果该存储实例当前的节点冗余度小于该存储实例所需的节点冗余度,则确定该存储实例需要提升节点冗余度。
9.根据权利要求8所述的方法,其特征在于,
利用该上线存储节点重构该存储实例,并提升该存储实例的节点冗余度的方法为:
找出该存储实例中节点冗余度小于该存储实例所需的节点冗余度的所有条带;
针对找出的每一条带,确定该条带已使用的存储节点中需要被替换的磁盘空间,从该上线存储节点中分配对应的替代磁盘空间,分配成功,则将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该需要被替换的磁盘空间,将该条带的节点冗余度加1,分配失败,则暂停重构该存储实例;
如果该存储实例中所有条带的节点冗余数均大于该存储实例当前的节点冗余数,则将该存储实例当前的节点冗余数更新为该存储实例中节点冗余数最小的条带的节点冗余数。
10.根据权利要求9所述的方法,其特征在于,
将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间的过程中,如果有新的数据需要写入该需要被替换的磁盘空间,则重新将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间,或者,若新写入数据的写入位置处的原有数据已拷贝到该替代磁盘空间,则将该新写入数据同时写入到该替代磁盘空间,若新写入数据的写入位置处的原有数据尚未拷贝到该替代磁盘空间,则不将新写入数据同时写入到该替代磁盘空间。
11.一种分布式存储***中容错能力自适应调整装置,其特征在于,该装置包括:检测单元、判断单元、重构单元;
所述检测单元,用于检测到分布式存储***中一存储节点的掉线时,确定使用该掉线存储节点的所有存储实例;
所述判断单元,用于针对使用该掉线存储节点的每一存储实例,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度;
所述重构单元,用于判断单元判定分布式存储***中所有可用节点满足该存储实例所需的节点冗余度时,针对该存储实例中使用该掉线存储节点的每一条带,从该条带中未使用的存储节点中分配用于条带重构的存储空间,并维持该条带所属存储实例的节点冗余度不变;用于判断单元判定分布式存储***中所有可用节点不满足该条带所属存储实例所需的节点冗余度时,针对该存储实例中使用该掉线存储节点的每一条带,利用分布式存储***中所有可用节点重构该条带,并基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度;其中,所述节点冗余度为冗余节点数。
12.根据权利要求11所述的装置,其特征在于,
所述检测单元,进一步用于:检测到分布式存储***中一存储节点的上线时,确定需要提升节点冗余度的所有存储实例;
所述重构单元,进一步用于:针对需要提升节点冗余度的每一存储实例,利用该上线存储节点重构该存储实例,并提升该存储实例的节点冗余度。
13.根据权利要求11或12所述的装置,其特征在于,
所述检测单元,检测到分布式存储***中一存储节点的掉线,包括:检测到该存储节点异常或被移出分布式存储***,则确定该存储节点掉线;
所述检测单元,检测到分布式存储***中一存储节点的上线,包括:检测到该存储节点异常恢复或新加入分布式存储***,则确定该存储节点上线。
14.根据权利要求13所述的装置,其特征在于,
所述检测单元,检测到分布式存储***中一存储节点的掉线之后,确定使用该存储节点的所有存储实例之前,进一步用于:如果该存储节点是因被移出分布式存储***而掉线,则确定使用该存储节点的所有存储实例;如果该存储节点是因为节点异常而掉线,则若该存储节点在预设时间内异常恢复,则确定该存储节点未掉线,不执行确定使用该存储节点的所有存储实例的操作,若该存储节点在预设时间内异常未恢复,则确定使用该存储节点的所有存储实例。
15.根据权利要求11所述的装置,其特征在于,
所述判断单元,判断分布式存储***中所有可用节点是否满足该存储实例所需的节点冗余度时,用于:
确定分布式存储***中所有可用节点针对该存储实例允许的最大节点冗余度K,如果K不大于该存储实例所需的节点冗余度,则确定分布式存储***中所有可用节点不满足该存储实例所需的节点冗余度,否则,确定分布式存储***中所有可用节点满足该存储实例所需的节点冗余度。
17.根据权利要求11所述的装置,其特征在于,
所述重构单元,从该条带中未使用的存储节点中分配用于条带重构的存储空间时,用于:
确定该条带在掉线存储节点中使用的磁盘空间,从该条带未使用且有充足空闲磁盘空间的存储节点中分配替代磁盘空间;
将该条带在掉线存储节点中的磁盘空间数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该条带在掉线存储节点中使用的磁盘空间;
维持该条带的节点冗余度不变;
所述重构单元,利用分布式存储***中所有可用节点重构该条带时,用于:
确定该条带在掉线存储节点中使用的磁盘空间,如果存在该条带未使用且有充足空闲磁盘空间的存储节点,则从该存储节点分配替代磁盘空间,否则,从该条带已使用且有充足空闲磁盘空间的存储节点分配替代磁盘空间;
将该条带在掉线存储节点中的磁盘空间数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该条带在掉线存储节点中使用的磁盘空间;
将该条带的节点冗余度减1;
所述重构单元,基于该条带的节点冗余度更新该条带所属存储实例的节点冗余度时,用于:
如果该条带的节点冗余度小于该条带所属存储实例的节点冗余度,则将该条带所属存储实例的节点冗余度设置为该条带的节点冗余度。
18.根据权利要求12所述的装置,其特征在于,
所述检测单元,确定需要提升节点冗余度的所有存储实例时,用于:针对分布式存储***中的每一存储实例,如果该存储实例当前的节点冗余度小于该存储实例所需的节点冗余度,则确定该存储实例需要提升节点冗余度。
19.根据权利要求18所述的装置,其特征在于,
所述重构单元,利用该上线存储节点重构该存储实例,并提升该存储实例的节点冗余度时,用于:
找出该存储实例中节点冗余度小于该存储实例所需的节点冗余度的所有条带;
针对找出的每一条带,确定该条带已使用的存储节点中需要被替换的磁盘空间,从该上线存储节点中分配对应的替代磁盘空间,分配成功,则将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间,并用该替代磁盘空间替代该需要被替换的磁盘空间,将该条带的节点冗余度加1,分配失败,则停止重构该存储实例;
如果该存储实例中所有条带的节点冗余数均大于该存储实例当前的节点冗余数,则将该存储实例当前的节点冗余数更新为该存储实例中节点冗余数最小的条带的节点冗余数。
20.根据权利要求19所述的装置,其特征在于,
所述重构单元,将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间的过程中,如果有新的数据需要写入该需要被替换的磁盘空间,则重新将需要被替换的磁盘空间中的数据拷贝到该替代磁盘空间,或者,若新写入数据的写入位置处的原有数据已拷贝到该替代磁盘空间,则将该新写入数据同时写入到该替代磁盘空间,若新写入数据的写入位置处的原有数据尚未拷贝到该替代磁盘空间,则不将新写入数据同时写入到该替代磁盘空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811540199.1A CN109814803B (zh) | 2018-12-17 | 2018-12-17 | 一种分布式存储***中容错能力自适应调整方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811540199.1A CN109814803B (zh) | 2018-12-17 | 2018-12-17 | 一种分布式存储***中容错能力自适应调整方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109814803A CN109814803A (zh) | 2019-05-28 |
CN109814803B true CN109814803B (zh) | 2022-12-09 |
Family
ID=66601995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811540199.1A Active CN109814803B (zh) | 2018-12-17 | 2018-12-17 | 一种分布式存储***中容错能力自适应调整方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109814803B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015188008A1 (en) * | 2014-06-04 | 2015-12-10 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4270371B2 (ja) * | 2003-05-09 | 2009-05-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 記憶システム、制御装置、制御方法、及び、プログラム |
US8631269B2 (en) * | 2010-05-21 | 2014-01-14 | Indian Institute Of Science | Methods and system for replacing a failed node in a distributed storage network |
CN105843557B (zh) * | 2016-03-24 | 2019-03-08 | 天津书生云科技有限公司 | 冗余存储***、冗余存储方法和冗余存储装置 |
CN102521068B (zh) * | 2011-11-08 | 2014-07-23 | 华中科技大学 | 一种固态盘阵列的重建方法 |
CN103678025B (zh) * | 2013-12-02 | 2017-01-04 | 创新科软件技术(深圳)有限公司 | 一种磁盘阵列中的磁盘故障处理方法 |
CN105095013B (zh) * | 2015-06-04 | 2017-11-21 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及*** |
US9910748B2 (en) * | 2015-12-31 | 2018-03-06 | Futurewei Technologies, Inc. | Rebuilding process for storage array |
CN107220148B (zh) * | 2016-03-21 | 2020-12-04 | 伊姆西Ip控股有限责任公司 | 针对独立磁盘冗余阵列的重建方法和设备 |
US10203992B2 (en) * | 2016-05-12 | 2019-02-12 | Futurewei Technologies, Inc. | Worker node rebuild for parallel processing system |
CN106445726A (zh) * | 2016-09-28 | 2017-02-22 | 上海爱数信息技术股份有限公司 | 一种分布式纠删码存储***的数据修复方法 |
CN108934187B (zh) * | 2017-03-29 | 2020-08-25 | 华为技术有限公司 | 分布式存储***的访问方法和相关装置和相关*** |
US10705911B2 (en) * | 2017-04-24 | 2020-07-07 | Hewlett Packard Enterprise Development Lp | Storing data in a distributed storage system |
CN107943421B (zh) * | 2017-11-30 | 2021-04-20 | 成都华为技术有限公司 | 一种基于分布式存储***的分区划分方法及装置 |
-
2018
- 2018-12-17 CN CN201811540199.1A patent/CN109814803B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015188008A1 (en) * | 2014-06-04 | 2015-12-10 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
Also Published As
Publication number | Publication date |
---|---|
CN109814803A (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413216B (zh) | 用于管理存储***的方法、设备和计算机程序产品 | |
US9053075B2 (en) | Storage control device and method for controlling storages | |
US9189311B2 (en) | Rebuilding a storage array | |
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
US9396121B2 (en) | Managing sequentiality of tracks for asynchronous PPRC tracks on secondary | |
US9372743B1 (en) | System and method for storage management | |
CN110389858B (zh) | 存储设备的故障恢复方法和设备 | |
CN109491609B (zh) | 一种缓存数据处理方法、装置、设备及可读存储介质 | |
CN110058965B (zh) | 存储***中的数据重建方法及设备 | |
CN110825562B (zh) | 数据备份方法、装置、***和存储介质 | |
CN106776147A (zh) | 一种差异数据备份方法和差异数据备份装置 | |
CN110333971A (zh) | Ssd坏块表备份方法、装置、计算机设备及存储介质 | |
CN111858189A (zh) | 对存储盘离线的处理 | |
CN115599607A (zh) | 一种raid阵列的数据恢复方法及相关装置 | |
US10001826B2 (en) | Power management mechanism for data storage environment | |
CN108234465A (zh) | 一种分布式文件***中应对异常的冗余方法和装置 | |
CN105138280A (zh) | 数据写入方法、装置及*** | |
US20210318739A1 (en) | Systems and methods for managing reduced power failure energy requirements on a solid state drive | |
CN109814803B (zh) | 一种分布式存储***中容错能力自适应调整方法和装置 | |
CN105159846A (zh) | 一种支持虚拟化磁盘双控切换的方法和存储*** | |
CN104407806A (zh) | 独立磁盘冗余阵列组硬盘信息的修改方法和装置 | |
CN107111459B (zh) | 存储***及其控制方法 | |
US10168935B2 (en) | Maintaining access times in storage systems employing power saving techniques | |
CN110515756A (zh) | 一种存储***的故障预防方法、装置、设备和存储介质 | |
US20100169572A1 (en) | Data storage method, apparatus and system for interrupted write recovery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 518057 Shenzhen Software Park, No. 9, 501, 502, Science and Technology Middle Road, Nanshan District, Shenzhen City, Guangdong Province Applicant after: Shenzhen Innovation Technology Co.,Ltd. Address before: 518057 Shenzhen Software Park, No. 9, 501, 502, Science and Technology Middle Road, Nanshan District, Shenzhen City, Guangdong Province Applicant before: UITSTOR (USA) Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |