本发明涉及存储集群技术领域,尤其涉及一种集群故障恢复时长估算方法、装置、设备及计算机可读存储介质。
背景技术:
现有分布式存储集群通常都具有非常大的容量,磁盘是集群数据的最终载体,当集群出现磁盘情况变化时(比如添加、删除磁盘),集群原有的数据都会触发数据的迁移,进而导致集群不健康,特别是当集群已经存储的数据较多时,数据迁移需要花费一定时间,并且在数据迁移过程中还要占用集群性能,这就会对客户端的io造成性能影响。
现有技术比较难以判断集群存在磁盘变化情况下进行数据迁移所需要花费的时间,因而也就无法估量对客户端io性能影响的时间长短,进而无法对客户端用户提供指导建议。
技术实现要素:
本发明的主要目的在于提供一种集群故障恢复时长估算方法、装置、设备及计算机可读存储介质,旨在解决如何确定集群故障恢复时长的技术问题。
为实现上述目的,本发明提供一种集群故障恢复时长估算方法,所述集群故障恢复时长估算方法包括以下步骤:
分别获取分布式存储集群发生故障前后的集群信息;
基于所述集群信息,分别采用crush算法构建集群发生故障前后对应的对象存储设备osd与归置组pg的拓扑结构;
将集群发生故障前后对应的osd与pg的拓扑结构进行比对,确定发生数据迁移的osd与pg;
基于发生数据迁移的osd与pg,估算集群故障恢复时长。
可选地,所述集群信息包括:集群的故障域级别、osd信息以及pg信息,其中,集群的故障域级别包括主机级别、osd级别,所述osd信息包括osd标识,pg信息包括pg标识。
可选地,所述基于发生数据迁移的osd与pg,估算集群故障恢复时长包括:
基于发生数据迁移的osd与pg,计算集群中平均每个osd发生迁移的数据量;
计算迁移所述数据量的时间,以估算集群故障恢复时长。
可选地,所述集群信息还包括:集群当前的总数据量;所述基于发生数据迁移的osd与pg,计算集群中平均每个osd发生迁移的数据量包括:
基于发生数据迁移的osd与pg,确定发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数;
根据发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数,计算发生数据迁移的osd中平均每个osd发生数据迁移的pg数,以及根据集群当前的总数据量计算平均每个pg所管理的数据量;
根据平均每个osd发生数据迁移的pg数、平均每个pg所管理的数据量,计算集群中平均每个osd发生迁移的数据量。
可选地,在所述计算迁移所述数据量的时间,以估算集群故障恢复时长的步骤之前,所述集群故障恢复时长估算方法还包括:
对集群中osd所在磁盘的读写性能进行抽样得到抽样数据;
计算各抽样数据的算术平均数,并将计算结果作为集群中osd的平均读写性能;
所述计算迁移所述数据量的时间,以估算集群故障恢复时长包括:
根据集群中平均每个osd发生迁移的数据量、集群中osd的平均读写性能,计算迁移所述数据量的时间,以估算集群故障恢复时长。
可选地,在所述计算迁移所述数据量的时间,以估算集群故障恢复时长的步骤之后,所述集群故障恢复时长估算方法还包括:
基于估算的集群故障恢复时长进行告警,以告知集群发生故障后的预计恢复时间。
进一步地,为实现上述目的,本发明还提供一种集群故障恢复时长估算装置,所述集群故障恢复时长估算装置包括:
信息获取模块,用于分别获取分布式存储集群发生故障前后的集群信息;
crush算法模块,用于基于所述集群信息,分别采用crush算法构建集群发生故障前后对应的对象存储设备osd与归置组pg的拓扑结构;
结构比对模块,用于将集群发生故障前后对应的osd与pg的拓扑结构进行比对,确定发生数据迁移的osd与pg;
时长估算模块,用于基于发生数据迁移的osd与pg,估算集群故障恢复时长。
可选地,所述集群信息包括:集群的故障域级别、osd信息以及pg信息,其中,集群的故障域级别包括主机级别、osd级别,所述osd信息包括osd标识,pg信息包括pg标识。
可选地,所述时长估算模块包括:
数据量计算单元,用于基于发生数据迁移的osd与pg,计算集群中平均每个osd发生迁移的数据量;
时长估算单元,用于计算迁移所述数据量的时间,以估算集群故障恢复时长。
可选地,所述集群信息还包括:集群当前的总数据量;
所述数据量计算单元具体用于:
基于发生数据迁移的osd与pg,确定发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数;
根据发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数,计算发生数据迁移的osd中平均每个osd发生数据迁移的pg数,以及根据集群当前的总数据量计算平均每个pg所管理的数据量;
根据平均每个osd发生数据迁移的pg数、平均每个pg所管理的数据量,计算集群中平均每个osd发生迁移的数据量。
可选地,所述集群故障恢复时长估算装置还包括:性能计算模块;
所述性能计算模块用于:对集群中osd所在磁盘的读写性能进行抽样得到抽样数据;计算各抽样数据的算术平均数,并将计算结果作为集群中osd的平均读写性能;
所述时长估算单元具体用于:根据集群中平均每个osd发生迁移的数据量、集群中osd的平均读写性能,计算迁移所述数据量的时间,以估算集群故障恢复时长。
进一步地,为实现上述目的,本发明还提供一种集群故障恢复时长估算设备,所述集群故障恢复时长估算设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的集群故障恢复时长估算程序,所述集群故障恢复时长估算程序被所述处理器执行时实现如上述任一项所述的集群故障恢复时长估算方法的步骤。
进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有集群故障恢复时长估算程序,所述集群故障恢复时长估算程序被处理器执行时实现如上述任一项所述的集群故障恢复时长估算方法的步骤。
本发明根据分布式存储集群的自身状态参数,采用crush算法构建集群发生故障前后osd与pg之间的拓扑结构变化,进而确定集群中发生数据迁移的osd与pg,最后再基于集群中发生数据迁移的osd与pg,估算出集群故障恢复时间,进而可对客户提供指导建议。
附图说明
图1为本发明集群故障恢复时长估算设备实施例方案涉及的设备硬件运行环境的结构示意图;
图2为本发明集群故障恢复时长估算方法一实施例的流程示意图;
图3为本发明集群故障恢复时长估算装置第一实施例的功能模块示意图;
图4为图3中时长估算模块一实施例的功能模块示意图;
图5为本发明集群故障恢复时长估算装置第二实施例的功能模块示意图;
图6为本发明集群故障恢复时长估算装置第三实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供一种集群故障恢复时长估算设备。
参照图1,图1为本发明集群故障恢复时长估算设备实施例方案涉及的设备硬件运行环境的结构示意图。
如图1所示,该集群故障恢复时长估算设备可以包括:处理器1001,例如cpu,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。
本领域技术人员可以理解,图1中示出的集群故障恢复时长估算设备的硬件结构并不构成对集群故障恢复时长估算设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及集群故障恢复时长估算程序。其中,操作系统是管理和控制集群故障恢复时长估算设备与软件资源的程序,支持网络通信模块、用户接口模块、集群故障恢复时长估算程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1004;用户接口模块用于管理和控制用户接口1003。
在图1所示的集群故障恢复时长估算设备硬件结构中,网络接口1004主要用于连接系统后台,与系统后台进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;集群故障恢复时长估算设备通过处理器1001调用存储器1005中存储的集群故障恢复时长估算程序,并执行以下操作:
分别获取分布式存储集群发生故障前后的集群信息;
基于所述集群信息,分别采用crush算法构建集群发生故障前后对应的对象存储设备osd与归置组pg的拓扑结构;
将集群发生故障前后对应的osd与pg的拓扑结构进行比对,确定发生数据迁移的osd与pg;
基于发生数据迁移的osd与pg,估算集群故障恢复时长。
进一步地,集群故障恢复时长估算设备通过处理器1001调用存储器1005中存储的集群故障恢复时长估算程序还执行以下操作:
基于发生数据迁移的osd与pg,计算集群中平均每个osd发生迁移的数据量;
计算迁移所述数据量的时间,以估算集群故障恢复时长。
进一步地,集群故障恢复时长估算设备通过处理器1001调用存储器1005中存储的集群故障恢复时长估算程序还执行以下操作:
基于发生数据迁移的osd与pg,确定发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数;
根据发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数,计算发生数据迁移的osd中平均每个osd发生数据迁移的pg数,以及根据集群当前的总数据量计算平均每个pg所管理的数据量;
根据平均每个osd发生数据迁移的pg数、平均每个pg所管理的数据量,计算集群中平均每个osd发生迁移的数据量。
进一步地,集群故障恢复时长估算设备通过处理器1001调用存储器1005中存储的集群故障恢复时长估算程序还执行以下操作:
对集群中osd所在磁盘的读写性能进行抽样得到抽样数据;
计算各抽样数据的算术平均数,并将计算结果作为集群中osd的平均读写性能;
根据集群中平均每个osd发生迁移的数据量、集群中osd的平均读写性能,计算迁移所述数据量的时间,以估算集群故障恢复时长。
进一步地,集群故障恢复时长估算设备通过处理器1001调用存储器1005中存储的集群故障恢复时长估算程序还执行以下操作:
基于估算的集群故障恢复时长进行告警,以告知集群发生故障后的预计恢复时间。
本发明集群故障恢复时长估算设备可根据分布式存储集群的自身状态参数,采用crush算法构建集群发生故障前后osd与pg之间的拓扑结构变化,进而确定集群中发生数据迁移的osd与pg,最后再基于集群中发生数据迁移的osd与pg,估算出集群故障恢复时间,进而可对客户提供指导建议。
本发明还提供一种集群故障恢复时长估算方法。
本发明的集群故障恢复时长估算方法具体应用于分布式存储集群,例如ceph分布式文件系统,其不仅仅是一个文件系统,还是一个有企业级功能的对象存储生态环境。本发明存储集群中的数据优选采用对象存储类型进行数据存储。
参照图2,图2为本发明集群故障恢复时长估算方法一实施例的流程示意图。本实施例中,所述集群故障恢复时长估算方法包括以下步骤:
步骤s10,分别获取分布式存储集群发生故障前后的集群信息;
本实施例中,集群故障恢复时长既可以是预先估算得到并保存,以作为后续实际发生故障时集群故障恢复的参考时长,也可以是在实际发生故障时估算得到。
本实施例中,在集群运行正常时,获取集群发生故障前的集群信息,而在集群发生磁盘变动情况时,比如添加磁盘或删除磁盘,获取集群发生故障后的集群信息。需要说明的是,可以通过模拟磁盘变动情况,进而获得集群发生故障后的集群信息。需要说明的是,集群信息可通过在集群后台读取配置文件或执行命令的方式获得。
本步骤中获取的集群信息主要用于构造osd与pg的拓扑结构,因此,可选的,集群信息包括:
(1)集群的故障域级别
故障域级别用于对集群中故障所处的设备层级进行划分,包括主机级别、osd级别;
(2)集群的osd信息
osd,objectstoragedevice,对象存储设备,比如磁盘,用于提供存储资源,其功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他osd守护进程的心跳来向ceph系统提供一些监控信息。
osd信息包括osd标识,可在集群中唯一区别一个osd。
(3)集群的pg信息
pg,placementgroup,归置组,用于对存储中的对象进行组织和位置映射,这是一个逻辑的概念,一个pg会被映射到n个osd上,而每个osd上都会承载大量的pg,即pg和osd之间是“多对多”的映射关系。
pg信息包括pg标识,可在集群中唯一区别一个pg。
此外需要进一步说明的是,为估算集群故障恢复时长,还可以获取集群的其他信息,比如集群的总数据量、集群中单个osd的读写性能等。
步骤s20,基于所述集群信息,分别采用crush算法构建集群发生故障前后对应的对象存储设备osd与归置组pg的拓扑结构;
步骤s30,将集群发生故障前后对应的osd与pg的拓扑结构进行比对,确定发生数据迁移的osd与pg;
crush算法是一种受控复制的分布式hash算法,是用于控制数据分布的一种方法,能够高效稳定的将数据分布在普通的结构化的集群中。它是一种伪随机的算法,在相同的环境下,相似的输入得到的结果之间没有相关性,相同的输入得到的结果是确定的。它只需要一个集群的描述地图和一些规则就可以根据一个整型的输入得到存放数据的一个设备列表。
本实施例中,基于crush算法的特性,以集群发生故障前的集群信息为输入参数,可获得集群正常状态下的pg与osd之间的拓扑结构;而以集群发生故障后的集群信息为输入参数,则可获得集群中磁盘变动后的pg与osd之间的拓扑结构。
在分布式存储集群中,数据迁移会导致osd与pg相互之间的映射关系发生改变,因此,通过比对集群发生故障前后对应的osd与pg的拓扑结构,即可确定发生数据迁移的osd与pg。
本实施例中,通过步骤s10获得构建集群发生故障前后对应的osd与pg的拓扑结构的集群信息,而通过步骤s20完成集群发生故障前后对应的osd与pg的拓扑结构的构建,最后通过步骤s30对集群发生故障前后对应的osd与pg的拓扑结构进行比对,从而确定发生数据迁移的osd与pg。
步骤s40,基于发生数据迁移的osd与pg,估算集群故障恢复时长。
本实施例中,若集群中数据迁移结束,则集群故障恢复,因此,集群故障恢复时长等于集群中数据迁移所花费的时长,而集群中数据迁移所花费的时长主要与以下因素相关:一是集群中磁盘的读写性能,二是需要迁移的数据量。因此,在集群中磁盘的读写性能可确定的情况下,估算集群故障恢复时长可等价于计算集群发生迁移的数据量。本实施例具体基于发生数据迁移的osd与pg来估算集群故障恢复时长。
可选的,在一实施例中,具体通过以下方式估算集群故障恢复时长:
首先,基于发生数据迁移的osd与pg,计算集群中平均每个osd发生迁移的数据量;然后再计算迁移所述数据量的时间,以估算集群故障恢复时长。
本实施例中具体基于发生数据迁移的osd与pg,计算集群中平均每个osd发生迁移的数据量,并在获得集群中发生迁移的数据量后,通过计算迁移该数据量的花费时间,即可估算出集群故障恢复时长。需要说明的是,由于本发明采用统计学方法计算集群发生迁移的数据量,因此计算得到的集群故障恢复时长为估算值。
可选的,为在集群发生故障后能够给到客户端用户的指导建议,因此,在一实施例中,可基于估算的集群故障恢复时长进行告警,以告知集群发生故障后的预计恢复时间,从而省却用户长时间等待,用户只需要在告警给出的恢复时间内查看集群状态即可。
本实施例根据分布式存储集群的自身状态参数,采用crush算法构建集群发生故障前后osd与pg之间的拓扑结构变化,进而确定集群中发生数据迁移的osd与pg,最后再基于集群中发生数据迁移的osd与pg,估算出集群故障恢复时间,进而可对客户提供指导建议。
进一步可选的,在本发明集群故障恢复时长估算方法一实施例中,具体通过以下处理流程计算集群发生迁移的数据量,具体处理流程如下:
1、基于发生数据迁移的osd与pg,确定发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数;
2、根据发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数,计算发生数据迁移的osd中平均每个osd发生数据迁移的pg数,以及根据集群当前的总数据量计算平均每个pg所管理的数据量;
3、根据平均每个osd发生数据迁移的pg数、平均每个pg所管理的数据量,计算集群中平均每个osd发生迁移的数据量。
本实施例中,数据迁移具体发生在osd上,而pg用于对存储中的对象进行组织和位置映射,因此,需要确定发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数。
例如,osd1上存在5个pg发生了数据迁移,osd2上存在10个pg发生了数据迁移,osd3上存在20个pg发生了数据迁移。由于分布式存储集群支持并发进行数据迁移,因此,只需确定一个osd发生迁移的数据量即可。
本实施例中具体根据平均每个osd发生数据迁移的pg数、平均每个pg所管理的数据量,计算集群中平均每个osd发生迁移的数据量,也即将集群中平均每个osd发生迁移的数据量对应的迁移时间作为集群故障恢复时长的估算值。
其中,对发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数进行方差运算,从而得出平均每个osd发生数据迁移的pg数。
另外,由于分布式集群的数据存储比较均衡,也即各pg管理的数据量相差不大,因此,可根据集群当前的总数据量,计算出平均每个pg所管理的数据量。其中,集群中的总pg数可由步骤s10中获得的集群的pg信息确定,而集群当前的总数据量既可以由步骤s10中与其他集群信息一起获得,也可以单独获得。
进一步可选的,在本发明集群故障恢复时长估算方法另一实施例中,具体通过以下处理流程计算平均每个osd发生迁移的数据量所需的迁移时间,从而估算出集群故障恢复时长,具体处理流程如下:
1、对集群中osd所在磁盘的读写性能进行抽样得到抽样数据;
2、计算各抽样数据的算术平均数,并将计算结果作为集群中osd的平均读写性能;
3、根据集群中平均每个osd发生迁移的数据量、集群中osd的平均读写性能,计算迁移所述数据量的时间,以估算集群故障恢复时长。
本实施例对于磁盘的读写性能的评价指标不限,例如磁盘的iops,也就是在一秒内磁盘进行多少次i/o读写;也可以是磁盘的吞吐量,也就是每秒磁盘i/o的流量,即磁盘写入加上读出的数据的大小。
通过对各抽样数据求算数平均数,得到集群中osd的平均读写性能,进而可用于计算迁移一个osd上一定数据量所花费的时间(即使用osd上待迁移的数据量除以osd的平均读写性能,得到迁移数据的花费时间),从而可估算出集群故障的恢复时长。
本发明还提供一种集群故障恢复时长估算装置。
参照图3,图3为本发明集群故障恢复时长估算装置第一实施例的功能模块示意图。本实施例中,所述集群故障恢复时长估算装置包括:
信息获取模块10,用于分别获取分布式存储集群发生故障前后的集群信息;
本实施例中,集群故障恢复时长既可以是预先估算得到并保存,以作为后续实际发生故障时集群故障恢复的参考时长,也可以是在实际发生故障时估算得到。
本实施例中,在集群运行正常时,获取集群发生故障前的集群信息,而在集群发生磁盘变动情况时,比如添加磁盘或删除磁盘,获取集群发生故障后的集群信息。需要说明的是,可以通过模拟磁盘变动情况,进而获得集群发生故障后的集群信息。需要说明的是,集群信息可通过在集群后台读取配置文件或执行命令的方式获得。
本模块中获取的集群信息主要用于构造osd与pg的拓扑结构,因此,可选的,集群信息包括:
(1)集群的故障域级别
故障域级别用于对集群中故障所处的设备层级进行划分,包括主机级别、osd级别;
(2)集群的osd信息
osd,objectstoragedevice,对象存储设备,比如磁盘,用于提供存储资源,其功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他osd守护进程的心跳来向ceph系统提供一些监控信息。
osd信息包括osd标识,可在集群中唯一区别一个osd。
(3)集群的pg信息
pg,placementgroup,归置组,用于对存储中的对象进行组织和位置映射,这是一个逻辑的概念,一个pg会被映射到n个osd上,而每个osd上都会承载大量的pg,即pg和osd之间是“多对多”的映射关系。
pg信息包括pg标识,可在集群中唯一区别一个pg。
此外需要进一步说明的是,为估算集群故障恢复时长,还可以获取集群的其他信息,比如集群的总数据量、集群中单个osd的读写性能等。
crush算法模块20,用于基于所述集群信息,分别采用crush算法构建集群发生故障前后对应的对象存储设备osd与归置组pg的拓扑结构;
结构比对模块30,用于将集群发生故障前后对应的osd与pg的拓扑结构进行比对,确定发生数据迁移的osd与pg;
crush算法是一种受控复制的分布式hash算法,是用于控制数据分布的一种方法,能够高效稳定的将数据分布在普通的结构化的集群中。它是一种伪随机的算法,在相同的环境下,相似的输入得到的结果之间没有相关性,相同的输入得到的结果是确定的。它只需要一个集群的描述地图和一些规则就可以根据一个整型的输入得到存放数据的一个设备列表。
本实施例中,基于crush算法的特性,以集群发生故障前的集群信息为输入参数,可获得集群正常状态下的pg与osd之间的拓扑结构;而以集群发生故障后的集群信息为输入参数,则可获得集群中磁盘变动后的pg与osd之间的拓扑结构。
在分布式存储集群中,数据迁移会导致osd与pg相互之间的映射关系发生改变,因此,通过比对集群发生故障前后对应的osd与pg的拓扑结构,即可确定发生数据迁移的osd与pg。
时长估算模块40,用于基于发生数据迁移的osd与pg,估算集群故障恢复时长。
本实施例中,若集群中数据迁移结束,则集群故障恢复,因此,集群故障恢复时长等于集群中数据迁移所花费的时长,而集群中数据迁移所花费的时长主要与以下因素相关:一是集群中磁盘的读写性能,二是需要迁移的数据量。因此,在集群中磁盘的读写性能可确定的情况下,估算集群故障恢复时长可等价于计算集群发生迁移的数据量。本实施例具体基于发生数据迁移的osd与pg来估算集群故障恢复时长。
本实施例根据分布式存储集群的自身状态参数,采用crush算法构建集群发生故障前后osd与pg之间的拓扑结构变化,进而确定集群中发生数据迁移的osd与pg,最后再基于集群中发生数据迁移的osd与pg,估算出集群故障恢复时间,进而可对客户提供指导建议。
参照图4,图4为图3中时长估算模块一实施例的功能模块示意图。基于上述实施例,本实施例中,时长估算模块40包括:
数据量计算单元401,用于基于发生数据迁移的osd与pg,计算集群中平均每个osd发生迁移的数据量;
时长估算单元402,用于计算迁移所述数据量的时间,以估算集群故障恢复时长。
通常,在集群中磁盘的读写性能可确定的情况下,估算集群故障恢复时长可等价于计算集群发生迁移的数据量,因此,本实施例中具体基于发生数据迁移的osd与pg,计算集群中平均每个osd发生迁移的数据量,并在获得集群发生迁移的数据量后,通过计算迁移该数据量的花费时间,即可估算出集群故障恢复时长。需要说明的是,由于本发明采用统计学方法计算集群发生迁移的数据量,因此计算得到的集群故障恢复时长为估算值。
本实施例将估算集群故障恢复时长等价于集群中平均每个osd发生迁移的数据量对应的迁移时间,而集群中平均每个osd发生迁移的数据量对应的迁移时间可通过量化计算得到,因而实现了对集群故障恢复时长的科学估算,进而可对客户提供指导建议。
进一步可选的,在本发明集群故障恢复时长估算装置一实施例中,数据量计算单元401具体通过执行以下处理流程计算集群发生迁移的数据量:
1、基于发生数据迁移的osd与pg,确定发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数;
2、根据发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数,计算发生数据迁移的osd中平均每个osd发生数据迁移的pg数,以及根据集群当前的总数据量计算平均每个pg所管理的数据量;
3、根据平均每个osd发生数据迁移的pg数、平均每个pg所管理的数据量,计算集群中平均每个osd发生迁移的数据量。
本实施例中,数据迁移具体发生在osd上,而pg用于对存储中的对象进行组织和位置映射,因此,需要确定发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数。
例如,osd1上存在5个pg发生了数据迁移,osd2上存在10个pg发生了数据迁移,osd3上存在20个pg发生了数据迁移。由于分布式存储集群支持并发进行数据迁移,因此,只需确定一个osd发生迁移的数据量即可。
本实施例中具体根据平均每个osd发生数据迁移的pg数、平均每个pg所管理的数据量,计算集群中平均每个osd发生迁移的数据量,也即将集群中平均每个osd发生迁移的数据量对应的迁移时间作为集群故障恢复时长的估算值。
其中,对发生数据迁移的osd数以及每个发生数据迁移的osd对应的pg数进行方差运算,从而得出平均每个osd发生数据迁移的pg数。
另外,由于分布式集群的数据存储比较均衡,也即各pg管理的数据量相差不大,因此,可根据集群当前的总数据量,计算出平均每个pg所管理的数据量。其中,集群中的总pg数可由步骤s10中获得的集群的pg信息确定,而集群当前的总数据量既可以由步骤s10中与其他集群信息一起获得,也可以单独获得。
参照图5,图5为本发明集群故障恢复时长估算装置第二实施例的功能模块示意图。基于上述实施例,本实施例中,所述集群故障恢复时长估算装置还包括:性能计算模块50;
本实施例中,性能计算模块50用于:对集群中osd所在磁盘的读写性能进行抽样;计算各抽样数据的算术平均数,并将计算结果作为集群中osd的平均读写性能;
本实施例中,时长估算单元402具体用于:根据集群中平均每个osd发生迁移的数据量、集群中osd的平均读写性能,计算迁移所述数据量的时间,以估算集群故障恢复时长。
本实施例对于磁盘的读写性能的评价指标不限,例如磁盘的iops,也就是在一秒内磁盘进行多少次i/o读写;也可以是磁盘的吞吐量,也就是每秒磁盘i/o的流量,即磁盘写入加上读出的数据的大小。
通过对各抽样数据求算数平均数,得到集群中osd的平均读写性能,进而可用于计算迁移一个osd上一定数据量所花费的时间(即使用osd上待迁移的数据量除以osd的平均读写性能,得到迁移数据的花费时间),从而可估算出集群故障的恢复时长。
参照图6,图6为本发明集群故障恢复时长估算装置第三实施例的功能模块示意图。基于上述实施例,本实施例中,所述集群故障恢复时长估算装置还包括:
告警模块60,用于基于估算的集群故障恢复时长进行告警,以告知集群发生故障后的预计恢复时间。
为在集群发生故障后能够给到客户端用户的指导建议,因此,本实施例中,可基于估算的集群故障恢复时长进行告警,以告知集群发生故障后的预计恢复时间,从而省却用户长时间等待,用户只需要在告警给出的恢复时间内查看集群状态即可。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有集群故障恢复时长估算程序,所述集群故障恢复时长估算程序被处理器执行时实现如上述任一项实施例中所述的集群故障恢复时长估算方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。