数据写入方法、系统、存储硬盘、电子设备及存储介质与流程

文档序号:33518500发布日期:2023-03-22 06:15阅读:39来源:国知局
数据写入方法、系统、存储硬盘、电子设备及存储介质与流程

1.本发明涉及数据存储技术领域,尤其涉及一种数据写入方法、系统、存储硬盘、电子设备及存储介质。


背景技术:

2.随着第五代移动通信技术(5th generation mobile communication technology,简称5g)、人工智能(artificial intelligence,简称ai)和大数据等技术应用,以ai安防为主的平安城市、智慧交通、智慧医疗和智慧教育等需求持续增长,促使视频监控设备走向智能化,同时对承载视频ai分析的视频存储提出了新的挑战。
3.分布式视频存储系统可以建立稳定和高性能的视频接入、汇聚、存储和联网的基座,助力上层的业务平台(包括视频业务平台和数据业务平台)和ai计算业务。分布式视频存储的可靠性要求包括三点:视频录像不丢失、冗余模式下的数据恢复,以及冗余失效后残盘可读写三点要求,现有分布式存储系统往往满足视频录像不丢失和冗余模式下数据恢复的要求,如需再实现冗余失效后残盘可读写的要求,就需要提高冗余度,但这种方式的弊端就是降低了存储的有效容量利用率,减少了存储空间。
4.因此,现在亟需一种数据写入方法、系统、存储硬盘、电子设备及存储介质来解决上述问题。


技术实现要素:

5.针对现有技术存在的问题,本发明提供一种数据写入方法、系统、存储硬盘、电子设备及存储介质。
6.本发明提供一种数据写入方法,包括:获取主磁盘节点的状态信息;其中,所述主磁盘节点表示待写入目标存储数据的磁盘节点;若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点,其中,所述备磁盘节点和所述主磁盘节点之间属于不同的故障域;在确定所述主磁盘节点的状态信息为正常状态之后,将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点。
7.根据本发明提供的一种数据写入方法,在所述获取主磁盘节点的状态信息之前,所述方法还包括:根据预设冗余副本数和预设数据分组,从所有磁盘节点中确定多个对应的第一故障域,其中,所述第一故障域为待写入对象分块的主磁盘节点;所述对象分块是基于所述预设数据分组,对所述目标存储数据进行拆分得到的;获取多个第二故障域,并将所述第二故障域对应的磁盘节点作为备磁盘节点,构建各个所述第一故障域与各个所述第二故障域之间一一对应的映射关系;根据所述映射关系,生成数据分组列表,其中,所述数据分组列表中各个数据分组
内的所述第一故障域与所述第二故障域为不同故障域;在所述将所述目标存储数据写入到对应的备磁盘节点之前,所述方法还包括:根据所述数据分组列表,确定所述主磁盘节点处于冗余失效状态时对应的备磁盘节点。
8.根据本发明提供的一种数据写入方法,在所述获取主磁盘节点的状态信息之后,所述方法还包括:获取故障域状态信息,所述故障域状态信息为所述主磁盘节点对应的所有故障域的状态信息;根据所述故障域状态信息,确定当前时刻各个所述数据分组内的故障磁盘节点数量;在所述故障磁盘节点数量大于预设故障阈值的情况下,确定所述数据分组处于冗余失效状态。
9.根据本发明提供的一种数据写入方法,所述方法还包括:在所述故障磁盘节点数量小于或等于所述预设故障阈值的情况下,确定所述数据分组处于待降级状态;基于当前未发生故障的磁盘节点,对存在所述待降级状态的数据分组列表进行调整。
10.根据本发明提供的一种数据写入方法,所述方法还包括:在所述故障磁盘节点数量为零时,确定所述数据分组处于正常状态,将所述目标存储数据写入到所述主磁盘节点。
11.根据本发明提供的一种数据写入方法,在所述基于当前未发生故障的磁盘节点,对存在所述待降级状态的数据分组列表进行调整之后,所述方法还包括:将所述目标存储数据写入到调整后的数据分组列表中的主磁盘节点。
12.根据本发明提供的一种数据写入方法,所述获取多个第二故障域,并将所述第二故障域对应的磁盘节点作为备磁盘节点,构建各个所述第一故障域与各个所述第二故障域之间一一对应的映射关系,包括:通过哈希算法,确定分块存储映射关系,所述分块存储映射关系表示所述目标存储数据中各个对象分块与对应的目标故障域之间的映射关系,所述目标故障域为待写入对象分块的第一故障域;根据所述分块存储映射关系,从所有磁盘节点中获取多个所述第二故障域,并将故障域互为不同的目标故障域与第二故障域进行关联,构建得到所述映射关系。
13.根据本发明提供的一种数据写入方法,所述根据所述映射关系,生成数据分组列表,包括:根据所述映射关系,将所述第一故障域对应的磁盘节点标记为主磁盘节点,将所述第二故障域对应的磁盘节点标记为备磁盘节点;基于主磁盘节点和备磁盘节点各自对应的标识符信息,构建主磁盘列表和备磁盘列表;根据所述主磁盘列表和所述备磁盘列表,生成所述数据分组列表。
14.根据本发明提供的一种数据写入方法,所述基于当前未发生故障的磁盘节点,对
存在所述待降级状态的数据分组列表进行调整,包括:根据当前时刻所述主磁盘节点中磁盘数量的变化情况,确定当前未发生故障的磁盘节点;基于数据迁移最小化原则,根据所述冗余副本数和所述未发生故障的磁盘节点,对所述数据分组列表进行调整,得到调整后的数据分组列表;根据所述调整后的数据分组列表和原始数据分组列表,确定新的数据分组列表,其中,所述原始数据分组列表为未进行当前调整轮次前的数据分组列表。
15.根据本发明提供的一种数据写入方法,所述根据所述调整后的数据分组列表和原始数据分组列表,确定新的数据分组列表,包括:若所述主磁盘节点的标识符信息存在于所述原始数据分组列表的主磁盘列表中,确定将所述主磁盘节点的标识符信息添加到新的主磁盘列表中,所述新的主磁盘列表为所述调整后的数据分组列表中的主磁盘列表;若不存在,确定将所述主磁盘节点的标识符信息添加到新的备磁盘列表中,所述新的备磁盘列表为所述调整后的数据分组列表中的备磁盘列表;根据所述新的主磁盘列表和所述新的备磁盘列表,生成新的数据分组列表。
16.根据本发明提供的一种数据写入方法,所述根据所述新的主磁盘列表和所述新的备磁盘列表,生成新的数据分组列表,包括:在所述新的主磁盘列表中的磁盘数量小于所述预设冗余副本数的情况下,将所述新的备磁盘列表中的磁盘节点对应的标识符信息,添加到所述新的主磁盘列表;在所述新的主磁盘列表中的磁盘数量等于所述预设冗余副本数的情况下,确定已完成数据分组列表的调整,得到所述新的数据分组列表。
17.根据本发明提供的一种数据写入方法,所述将故障域互为不同的所述目标故障域与所述第二故障域进行关联,构建得到所述映射关系,包括:基于所述预设冗余副本数和预设冗余模式,确定备磁盘节点对应的最小副本数;将所述最小副本数对应的第二故障域与所述目标故障域进行关联。
18.根据本发明提供的一种数据写入方法,在所述获取主磁盘节点的状态信息之前,所述方法还包括:构建磁盘节点写入标签,所述磁盘节点写入标签的值包括将存储数据写入主磁盘节点,以及将存储数据写入备磁盘节点;在所述获取主磁盘节点的状态信息之后,所述方法还包括:根据所述状态信息,对所述磁盘节点写入标签的值进行更新,以根据更新后的磁盘节点写入标签,将所述目标存储数据写入到对应的磁盘节点;根据所述更新后的磁盘节点写入标签,从对应的磁盘节点读取存储数据。
19.根据本发明提供的一种数据写入方法,在所述将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点之后,所述方法还包括:对所述备磁盘节点中已存储的目标存储数据进行删除处理。
20.根据本发明提供的一种数据写入方法,所述对所述备磁盘节点中已存储的目标存储数据进行删除处理,包括:获取备磁盘数据转移持续时长,其中,所述备磁盘数据转移持续时长表示将所述
备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点之后的持续时长;在所述备磁盘数据转移持续时长大于或等于预设备份数据删除时长后,将所述备磁盘节点中已存储的目标存储数据删除。
21.根据本发明提供的一种数据写入方法,在所述若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点之后,所述方法还包括:接收第一输入,其中,所述第一输入包括在确定所述状态信息为冗余失效状态时,从所述备磁盘节点中读取所述目标存储数据的操作;响应于所述第一输入,获取所述备磁盘节点中已存储的目标存储数据。
22.本发明还提供一种数据写入系统,包括:磁盘状态采集模块,用于获取主磁盘节点的状态信息;其中,所述主磁盘节点表示待写入目标存储数据的磁盘节点;备磁盘写入模块,用于若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点,其中,所述备磁盘节点和所述主磁盘节点之间属于不同的故障域;数据恢复模块,用于在确定所述主磁盘节点的状态信息为正常状态之后,将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点。
23.本发明还提供一种存储硬盘,包括上述的数据写入系统。
24.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据写入方法。
25.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据写入方法。
26.本发明提供的数据写入方法、系统、存储硬盘、电子设备及存储介质,可在存储节点发生故障且导致冗余失效的场景下,保障新的视频数据仍然能够持续写入和读取,并在不降低存储有效容量利用率的前提下,增加冗余故障节点的数量,大大提升视频存储在故障场景下的可用性,实现冗余失效后残盘仍可读写,满足视频存储场景的业务持续写入要求。
附图说明
27.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图进行简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1为现有技术中数据存储过程的示意图;图2为本发明提供的数据写入方法的流程示意图;图3为本发明提供的主备磁盘数据组列表与现有数据组列表的对比示意图;图4为本发明提供的数据分组的磁盘节点调整流程示意图;图5为本发明提供的冗余失效状态下的主备磁盘切换流程示意图;图6为本发明提供的数据写入和读取的整体流程示意图;图7为本发明提供的数据写入系统的结构示意图;
图8为本发明提供的视频存储架构的示意图;图9为本发明提供的电子设备的结构示意图。
具体实施方式
29.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.分布式存储系统中为了提高读写时的效率,往往会将待存储的数据切分成一个个大小整齐划一的对象,然后根据副本冗余数,将对象存储到多个存储磁盘上。为了便于对同一个对象的这些副本进行统一的管理,引入数据组进行管理。图1为现有技术中数据存储过程的示意图,可参考图1所示,在写入一个文件时,首先将这个文件拆分成多个对象;然后,将每个对象划分到对应的一个数据组,也可以将多个对象划分到同一个数据组;每个数据组对应数据冗余数的存储磁盘,也就实现了文件以副本数的写入存储。每个对象都会固定映射进一个数据组中,所以当要寻找一个对象时,只需要先找到对象所属的数据组,然后遍历这个数据组就可以了,无需遍历所有对象。而且,在数据迁移时,也是以数据组作为基本单位进行迁移。
31.现有分布式存储集群一般通过副本或者纠删的冗余模式,来保证故障场景下数据的一致性和可靠性,并通过监控组件来进行故障检测和恢复,还包括数据在集群节点间的迁移和平衡来保证数据的一致性。具体地,监控组件通过一系列的map文件来跟踪整个集群的健康状态,所有的集群节点都向监控节点报告状态,并分享每一个状态变化的信息,例如,集群map存储集群的节点信息,数据磁盘map存储节点的磁盘信息,数据组map存储数据组对应的数据磁盘以及数据组的状态等。通过map文件存储集群中的存储设备信息,以及故障域层次结构在故障域中定义如何存储数据的规则。
32.分布式存储集群在初始化时,首先建立存储池,用于存储文件的逻辑分区,每个池都包含一定数量的数据组,每个数据组中分配对应副本数的磁盘,并保证各磁盘在不同的故障域中,如三副本节点故障域的场景,就会把一个数据组映射到三个不同磁盘节点的3个数据磁盘上,并将这些磁盘信息存储到数据组map文件的磁盘列表中,以保证数据副本的可靠性。当集群接收到来自客户端的请求时,通过写入文件的id信息,利用hash计算出文件分块后的多个对象需要存储到哪些数据组中,然后将这些对象存储到数据组磁盘列表的第一个磁盘中,当配置的副本数大于1时,再将它复制到数据组中其他故障区域的磁盘中,从而以冗余模式对文件进行分布式存储。通过监控组件监控各磁盘节点的状态,在进行数据写入时,如果出现磁盘或节点故障,就会更新故障磁盘所在数据组的状态,当出现故障的磁盘超过一定时间后仍然未恢复,就再次为数据组再选择一个磁盘加入(该磁盘为冗余磁盘),如果所有的磁盘(如两副本故障域或三副本故障域等)都故障了,那么这个数据组就不可再进行读写了,进而所有通过hash映射到此数据组的文件都不可再读写了,导致视频存储场景对当下发生的记录和即将发生的录像会存储失败,并且将永远无法再找回,可见视频存储场景对业务的持续写的重要性。
33.现有分布式存储方法,虽然可通过副本模式或纠删模式下的副本数来提高故障的
冗余度,以此保证业务的持续读写。但是,不管是副本模式还是纠删模式,均需牺牲一定的有效容量利用率来实现,例如,4磁盘节点2副本(10个1t盘/每节点),有效容量为20t,有效容量利用率为50%,最多可故障1个磁盘节点;如需支持2个节点同时故障,就需提高冗余度,如三副本,实际有效容量降为13.3t,有效容量利用率为33%,有效容量利用率则下降了17%。而在视频存储业务中,每天都有大量的视频数据产生,如以提高副本数的方式来提高数据的可靠性,成本将会是巨大的。
34.针对现有分布式视频存储中存在的问题,本发明在分布式视频存储技术的基础上,提出了一种对数据组内的存储磁盘再设置备份磁盘节点的方式,在有效容量利用率一定的情况下,保证数据组内数据磁盘超故障域后,即使冗余失效,也能够保证当前时刻的视频数据能够持续写入存储,并保证写入的数据可正常读写。
35.图2为本发明提供的数据写入方法的流程示意图,如图2所示,本发明提供了一种数据写入方法,包括:步骤201,获取主磁盘节点的状态信息;其中,所述主磁盘节点表示待写入目标存储数据的磁盘节点。
36.在本发明中,需要在数据组map文件中添加一个备份的磁盘列表,用于保存备磁盘节点的磁盘信息;同时,在元数据中添加一个backflag标签,用于记录数据是写在主磁盘节点列表上还是备磁盘节点列表上,其中,backflag标签默认标记为false,代表写入到主磁盘节点列表中。本发明以4节点设置二副本节点为故障域的存储池进行说明,其中,磁盘节点1的数据磁盘从1至10(即数据磁盘1、数据磁盘2,

,数据磁盘10),磁盘节点2的数据磁盘从11至20(即数据磁盘11、数据磁盘12,

,数据磁盘20),磁盘节点3的数据磁盘从21至30(即数据磁盘21、数据磁盘22,

,数据磁盘30),磁盘节点4的数据磁盘从31至40(即数据磁盘31、数据磁盘32,

,数据磁盘40)。在本发明中,分布式存储集群中的存储池为冗余模式,即根据预设的副本数,设置有相应数量的故障域,当磁盘状态未出现故障或存在故障的磁盘数量未超最小副本数量时,数据是写入到主磁盘节点的。因此,在本发明中,在进行视频数据写入时,首先需要获取当前时刻主磁盘节点的状态信息,以确定需要将视频数据写入到主磁盘节点还是备磁盘节点。
37.步骤202,若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点,其中,所述备磁盘节点和所述主磁盘节点之间属于不同的故障域。
38.在本发明中,如果数据组中的各磁盘状态正常,则数据组的状态正常;如果数据组中部分磁盘故障,未超过故障域(如副本模式场景至少剩有1副本,纠删2+1模式场景至少剩有2副本),则数据组状态为降级状态;如果磁盘超故障域,则数据组的状态为异常状态,即冗余失效状态。在本发明中,当数据组中对应的主磁盘节点都处于正常和降级两种状态下,数据可直接写入主磁盘列表中对应的磁盘节点,此时,备磁盘列表不写入数据,不会降低有效容量利用率。
39.进一步地,在确定主磁盘节点处于冗余失效状态时,则表示当前无法将数据写入到主磁盘节点,此时所有故障域均出现问题,需要将数据写入到备磁盘节点。需要说明的是,在本发明中,主磁盘节点和备磁盘节点是根据故障域进行设置的,即保证数据待写入的主磁盘节点和备磁盘节点均属于不同故障域,即每个磁盘节点即可以是主磁盘节点也可以是备磁盘节点,例如,在2副本数的情况下,数据a的主磁盘节点为数据磁盘1和数据磁盘11,
备磁盘节点为数据盘21和数据磁盘31,即在正常状态下,数据a将被写入磁盘节点1和磁盘节点2中,当处于冗余失效时,也就是磁盘节点1和磁盘节点2出现故障时,此时将数据a暂时写入磁盘节点3和磁盘节点4中;而数据b的主磁盘节点为数据磁盘21和数据磁盘31,备磁盘节点为数据盘1和数据磁盘11,即在正常状态下,数据b将被写入磁盘节点3和磁盘节点4中,当处于冗余失效时,也就是磁盘节点3和磁盘节点4出现故障时,此时将数据b暂时写入磁盘节点1和磁盘节点2中。
40.步骤203,在确定所述主磁盘节点的状态信息为正常状态之后,将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点。
41.在本发明中,只有在数据组状态中的磁盘节点存在冗余失效的情况下,才会将数据写入切换到备磁盘列表中的磁盘节点进行读写,并且在主磁盘列表中的磁盘节点恢复后,需要将备磁盘节点中的数据迁回至对应的主磁盘节点。
42.本发明提供的数据写入方法,可在存储节点发生故障且导致冗余失效的场景下,保障新的视频数据仍然能够持续写入和读取,并在不降低存储有效容量利用率的前提下,增加冗余故障节点的数量,大大提升视频存储在故障场景下的可用性,实现冗余失效后残盘仍可读写,满足视频存储场景的业务持续写入要求。
43.在上述实施例的基础上,在所述获取主磁盘节点的状态信息之前,所述方法还包括:根据预设冗余副本数和预设数据分组,从所有磁盘节点中确定多个对应的第一故障域,其中,所述第一故障域为待写入对象分块的主磁盘节点;所述对象分块是基于所述预设数据分组,对所述目标存储数据进行拆分得到的;获取多个第二故障域,并将所述第二故障域对应的磁盘节点作为备磁盘节点,构建各个所述第一故障域与各个所述第二故障域之间一一对应的映射关系;根据所述映射关系,生成数据分组列表,其中,所述数据分组列表中各个数据分组内的所述第一故障域与所述第二故障域为不同故障域;在所述将所述目标存储数据写入到对应的备磁盘节点之前,所述方法还包括:根据所述数据分组列表,确定所述主磁盘节点处于冗余失效状态时对应的备磁盘节点。
44.在本发明中,首先根据预设冗余副本数和预设数据分组,创建存储池。具体地,通过监控组件创建一定数量的数据分组,并根据设置的副本数(如二副本)调用磁盘分配算法,从而利用磁盘分配算法,根据集群中的节点个数,以及各节点上的磁盘个数和容量等,计算出各数据分组对应的磁盘节点,保证各数据分组中的磁盘分配在不同故障域节点上。在本发明中,由于需要构建主磁盘列表和备磁盘列表,所以传递的副本数需要为原副本数乘2,图3为本发明提供的主备磁盘数据组列表与现有数据组列表的对比示意图,其中,图3中的(a)为现有磁盘分配列表,图3中的(b)本发明提供的磁盘分配列表,可参考图3所示,本发明相比现有技术中的数据组列表,还创建了备磁盘列表,使得副本数提高,但这些新增的副本数不会影响有效容量利用率,只有在冗余失效时,才会使用备磁盘节点。需要说明的是,本发明对于设置备磁盘节点的约束条件为:在分配完主磁盘节点之后,从剩余的故障域磁盘数(即与主磁盘节点属于不同故障域的磁盘节点)中选取的备磁盘节点,需满足冗余的最小副本数,以2副本模式为例,在确定2个故障域节点的主磁盘后,至少需要有一个备磁盘
节点;对于纠删2+1模式场景,在选完3个主磁盘节点后,需要选取至少2个备磁盘节点,以保证在原来冗余场景失效后,备份的磁盘列表能满足故障域的读写要求。可参考图3中的(b),以4磁盘节点2副本为例,通过磁盘分配算法,计算出各数据分组的磁盘列表,再优先分配副本数的磁盘节点给主磁盘列表(分配2个磁盘节点,且这2个磁盘节点也为不同故障域);最后,根据主磁盘列表已选取的磁盘节点的故障域,从剩余磁盘节点中选取数据磁盘,以保证备磁盘节点和主磁盘节点也属于不同的故障域,从而构建得到备磁盘列表。
45.在上述实施例的基础上,在所述获取主磁盘节点的状态信息之后,所述方法还包括:获取故障域状态信息,所述故障域状态信息为所述主磁盘节点对应的所有故障域的状态信息;根据所述故障域状态信息,确定当前时刻各个所述数据分组内的故障磁盘节点数量;在所述故障磁盘节点数量大于预设故障阈值的情况下,确定所述数据分组处于冗余失效状态。
46.在本发明中,当需要对视频数据进行存储写入时,通过监控组件对各磁盘节点的状态信息进行监控,从而实时获取到主磁盘节点出现故障的磁盘数量是否超过了预设故障阈值。在本发明中,预设故障阈值根据故障域数量设置,例如,对于节点出现故障且冗余未失效的情况,副本模式场景下至少还剩有1副本(如3副本,最多故障2个磁盘节点,则预设故障阈值为2,即当主磁盘节点中的3个故障域发生故障的磁盘节点数量超过2个,此时数据分组待写入的主磁盘节点为冗余失效状态),而纠删2+1模式下场景至少还剩有2副本。
47.在上述实施例的基础上,所述方法还包括:在所述故障磁盘节点数量小于或等于所述预设故障阈值的情况下,确定所述数据分组处于待降级状态;基于当前未发生故障的磁盘节点,对存在所述待降级状态的数据分组列表进行调整。
48.在本发明中,当主磁盘节点中存在故障节点且故障节点的数量未超过故障域(即小于或等于预设故障阈值)时,各磁盘节点和各数据分组中的数据使用容量就会不一样,需要通过分布式存储系统的均衡机制调整各数据分组中的磁盘列表(即数据分组列表),以保证各节点和各数据分组的容量均衡。在本发明中,通过监控组件检测到存储池的磁盘变化,然后启用均衡机制重新分配各数据分组中的磁盘成员,在对数据分组中磁盘成员进行调整的过程中,也需要同步对备份磁盘列表的成员进行调整。需要说明的是,在对存储池进行扩容或缩容等操作后,同样也可对数据分组列表进行调整。
49.在上述实施例的基础上,所述方法还包括:在所述故障磁盘节点数量为零时,确定所述数据分组处于正常状态,将所述目标存储数据写入到所述主磁盘节点。
50.在本发明中,当监控组件检测到当前主磁盘节点全部正常运行无故障时,视频数据可直接写入到主磁盘节点,而备磁盘节点在正常状态时不会启用,保证了有效容量利用率。只有在确定数据分组存在冗余失效状态时,才会将视频数据写入到备磁盘节点,同时也对主磁盘节点对应的数据分组标记为冗余失效状态(异常状态),并启动一个进程解析对应
数据分组上的元数据,将异常前写入的数据标记状态为不可读。
51.在上述实施例的基础上,在所述基于当前未发生故障的磁盘节点,对存在所述待降级状态的数据分组列表进行调整之后,所述方法还包括:将所述目标存储数据写入到调整后的数据分组列表中的主磁盘节点。
52.在本发明中,对于数据组降级场景,如果对存储池进行扩容、缩容或者节点故障(不超故障域),将会导致各磁盘节点和各数据分组中数据使用容量不一样。通过分布式存储系统的均衡机制对各数据分组中的磁盘列表进行调整之后,将根据调整后的数据分组列表,将获取到的视频数据(即目标存储数据)写入调整后的数据分组列表中的主磁盘节点,以通过实时更新的数据分组列表进行数据的写入,使得磁盘存储空间更为均衡。
53.在上述实施例的基础上,所述获取多个第二故障域,并将所述第二故障域对应的磁盘节点作为备磁盘节点,构建各个所述第一故障域与各个所述第二故障域之间一一对应的映射关系,包括:通过哈希算法,确定分块存储映射关系,所述分块存储映射关系表示所述目标存储数据中各个对象分块与对应的目标故障域之间的映射关系,所述目标故障域为待写入对象分块的第一故障域;根据所述分块存储映射关系,从所有磁盘节点中获取多个所述第二故障域,并将故障域互为不同的目标故障域与第二故障域进行关联,构建得到所述映射关系。
54.在本发明中,当分布式存储集群接收到来自客户端的请求后,通过写入文件(即目标存储数据)的id,通过哈希算法计算出目标存储数据中各个对象分块需要存储到哪些数据分组中,然后将这些对象分块存储到数据分组中磁盘列表的主磁盘节点中。在本发明中,需要在数据分组map中添加一个备磁盘列表,用于保存在出现超故障域情况时,数据需要写入哪个磁盘(作为备磁盘节点)的相关信息,同时将原来数据分组中磁盘列表作为主磁盘列表,并且主磁盘列表中的磁盘节点与备磁盘列表中的磁盘节点属于不同故障域,从而根据主备磁盘节点之间的映射关系,在非超故障域的业务读写过程中,仅对主磁盘列表进行读写以及数据备份,这样就能保证不降低磁盘的有效容量利用率。在创建存储池时,监控组件根据冗余策略(如2副本)调用磁盘分配算法,计算出存储池有多少个数据分组,每个数据分组对应哪几个磁盘节点上的数据磁盘,并将各数据磁盘对应的编号id保存到数据分组map的磁盘列表中,列表中的磁盘个数与冗余数一致,对此数据分组的读写也是对应的磁盘进行读写。
55.在上述实施例的基础上,所述根据所述映射关系,生成数据分组列表,包括:根据所述映射关系,将所述第一故障域对应的磁盘节点标记为主磁盘节点,将所述第二故障域对应的磁盘节点标记为备磁盘节点;基于主磁盘节点和备磁盘节点各自对应的标识符信息,构建主磁盘列表和备磁盘列表;根据所述主磁盘列表和所述备磁盘列表,生成所述数据分组列表。
56.在本发明中,数据分组列表中的主磁盘列表和备磁盘列表属于不同的故障域,列表中的每个磁盘节点对于不同数据分组,其主备关系并不是保持不变的,即数据分组1的主磁盘节点,可能是数据分组2的备磁盘节点,而数据分组1的备磁盘节点,对于数据分组2来说为自身的主磁盘节点。因此,需要根据映射关系以及标识符信息,构建每个数据分组的磁
盘列表,进而根据每个数据分组的磁盘列表生成数据分组列表。在本发明中,通过每个主磁盘节点和备磁盘节点的id信息(即标识符信息),构建对应的主磁盘列表和备磁盘列表,从而可根据磁盘节点的id信息将数据写入到对应磁盘中;同时,在数据分组的元数据中添加一个backflag标识,记录数据是写入在了主磁盘节点中还是备磁盘节点中,其中,backflag标识默认标记为false,代表写入到主磁盘列表中,同时根据该标识也可确定每个数据分组对应的主备磁盘节点,即在任意一个数据分组中,当backflag标识为false时,此时写入磁盘为主磁盘节点,当backflag标记置为true时,此时写入磁盘为备磁盘节点,从而构建数据分组的主磁盘列表和备磁盘列表。
57.在上述实施例的基础上,所述基于当前未发生故障的磁盘节点,对存在所述待降级状态的数据分组列表进行调整,包括:根据当前时刻所述主磁盘节点中磁盘数量的变化情况,确定当前未发生故障的磁盘节点;基于数据迁移最小化原则,根据所述冗余副本数和所述未发生故障的磁盘节点,对所述数据分组列表进行调整,得到调整后的数据分组列表;根据所述调整后的数据分组列表和原始数据分组列表,确定新的数据分组列表,其中,所述原始数据分组列表为未进行当前调整轮次前的数据分组列表。
58.在本发明中,图4为本发明提供的数据分组的磁盘节点调整流程示意图,可参考图4所示,当监控组件检测到磁盘变化时,即部分节点发生故障且未超过故障域,或存储池进行扩容和缩容等操作时,启动均衡机制,调用磁盘分配算法,传递副本数为副本数
×
2的值。在本发明中,通过磁盘分配算法,根据传递的副本数,以及原来各数据分组中对应的主磁盘列表信息,根据数据迁移最小化的原则,重新调整各数据分组中的磁盘成员,输出各数据分组中新的磁盘列表。
59.进一步地,在获取到数据分组新的磁盘列表后,由于原来只有主磁盘列表对应磁盘节点存在数据,为了保证数据不丢失及最小调整,将原主磁盘列表中对应的磁盘id仍分配给新的主磁盘列表,剩下且无故障的磁盘id再分配至对应的主备磁盘列表(即新的主磁盘列表和新的备磁盘列表)。
60.在上述实施例的基础上,所述根据所述调整后的数据分组列表和原始数据分组列表,确定新的数据分组列表,包括:若所述主磁盘节点的标识符信息存在于所述原始数据分组列表的主磁盘列表中,确定将所述主磁盘节点的标识符信息添加到新的主磁盘列表中,所述新的主磁盘列表为所述调整后的数据分组列表中的主磁盘列表;若不存在,确定将所述主磁盘节点的标识符信息添加到新的备磁盘列表中,所述新的备磁盘列表为所述调整后的数据分组列表中的备磁盘列表;根据所述新的主磁盘列表和所述新的备磁盘列表,生成新的数据分组列表。
61.在本发明中,可参考图4所示,先遍历新磁盘列表中的所有磁盘,如果磁盘id在原来的主磁盘列表中,则将磁盘id加入新的主磁盘列表,如果不在,则加入新的备磁盘列表;在确定新磁盘列表已全部遍历后,即新磁盘列表中未遍历的磁盘个数为0时,如果新的主磁盘列表中的磁盘个数等于副本数,则表示此时新的主备磁盘列表的磁盘分配完成。
62.在上述实施例的基础上,所述根据所述新的主磁盘列表和所述新的备磁盘列表,
生成新的数据分组列表,包括:在所述新的主磁盘列表中的磁盘数量小于所述预设冗余副本数的情况下,将所述新的备磁盘列表中的磁盘节点对应的标识符信息,添加到所述新的主磁盘列表;在所述新的主磁盘列表中的磁盘数量等于所述预设冗余副本数的情况下,确定已完成数据分组列表的调整,得到所述新的数据分组列表。
63.在本发明中,可参考图4所示,如果新的主磁盘列表中的磁盘个数小于副本数,则从新的备磁盘列表中拷入相应个数(即副本数-新的主磁盘列表磁盘个数)的磁盘id,保证新的主磁盘列表的磁盘个数等于副本数。此时,新的备磁盘列表的磁盘个数不一定等于副本数,只需保证新的备磁盘列表的磁盘个数满足对应冗余策略最小副本数,否则超故障域后数据仍不可写。
64.在上述实施例的基础上,所述将故障域互为不同的所述目标故障域与所述第二故障域进行关联,构建得到所述映射关系,包括:基于所述预设冗余副本数和预设冗余模式,确定备磁盘节点对应的最小副本数;将所述最小副本数对应的第二故障域与所述目标故障域进行关联。
65.在本发明中,备磁盘节点的副本数可以与主磁盘节点一致,也可根据最小副本数进行设置,例如,在一实施例中,2副本模式场景下,主备磁盘节点都可以设置为2个数据磁盘,如主磁盘节点为数据磁盘1和数据磁盘11,备磁盘节点为数据磁盘21和数据磁盘31;而根据最小副本数设置,则主磁盘节点为数据磁盘1和数据磁盘11,备磁盘节点为数据磁盘21或数据磁盘31。
66.进一步地,当监控组件检测到数据分组中主磁盘列表中的所有磁盘均故障,或主磁盘列表中未故障的故障域不满足最小副本数要求时,此时将数据分组置为异常状态,进而将整个存储池置为异常状态,业务读写中断,视频数据停止保存。在视频存储场景中冗余失效后,仍需将新的视频数据保存到残余盘中,图5为本发明提供的冗余失效状态下的主备磁盘切换流程示意图,可参考图5所示,本发明针对冗余失效后场景,能够继续保证视频数据的持续写入。具体地,当获取到客户端发送的文件1写请求后,读写组件获取对应数据分组的状态,在确定数据分组状态为正常或降级状态时,将文件1写入主磁盘节点中;在监控组件检测到数据分组的磁盘超故障域后,将数据分组状态标为异常;同时,启动一个进程解析对应数据分组上的元数据,将异常前写入的数据(即文件1)标记状态为不可读;当再次获取到客户端发送的写请求(写入文件2)时,获到的数据分组状态为异常,此时读写组件将数据写入备磁盘列表的磁盘中,数据写成功。
67.在上述实施例的基础上,在所述获取主磁盘节点的状态信息之前,所述方法还包括:构建磁盘节点写入标签,所述磁盘节点写入标签的值包括将存储数据写入主磁盘节点,以及将存储数据写入备磁盘节点;在所述获取主磁盘节点的状态信息之后,所述方法还包括:根据所述状态信息,对所述磁盘节点写入标签的值进行更新,以根据更新后的磁盘节点写入标签,将所述目标存储数据写入到对应的磁盘节点;根据所述更新后的磁盘节点写入标签,从对应的磁盘节点读取存储数据。
68.在本发明中,首先需要将数据分组的元数据中添加一个backflag标识,记录数据
是写入在了主磁盘中还是备磁盘中。具体地,在进行数据写入时,将文件拆分为一个个对象分块,再根据文件和对象分块计算出待写入的数据分组,并判断对应数据分组的磁盘状态是否为异常,如果状态非异常则向主磁盘列表中的磁盘进行写入,同时将元数据的backflag标记置为false;当状态为异常时,则将数据写入备磁盘列表中的磁盘中,并将元数据的backflag标记置为true。
69.进一步地,当需要从磁盘节点中进行数据读取时,同样根据文件的id计算出对象分块所在的数据分组,再判断数据分组的元数据中对应数据的backflag标识,如果backflag标识为false,说明数据存储在主磁盘列表的磁盘中,向主磁盘进行读取;当标识为true时,则向备磁盘进行数据的读取。
70.在上述实施例的基础上,在所述将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点之后,所述方法还包括:对所述备磁盘节点中已存储的目标存储数据进行删除处理。
71.在本发明中,当监测组件检测到数据分组的磁盘状态由异常恢复到正常或降级状态后,首先将数据组的状态置为正常或降级;同时,启动一个恢复任务,先将之前标记为故障的数据去掉故障标记,恢复读写;并判断备磁盘中是否有该数据分组新写入的数据(即待写入该数据分组的数据,在主磁盘节点超故障域后,数据写入备磁盘中),如果没有,则恢复结束;如果备磁盘中存在待写入数据分组主磁盘的数据,则将元数据中backflag为true的数据复制到主磁盘列表的磁盘中,并且将复制完的元数据backflag标识改为false,同步删除备磁盘中的数据,释放磁盘的容量,从而不会额外增加数据的存储容量。
72.在上述实施例的基础上,所述对所述备磁盘节点中已存储的目标存储数据进行删除处理,包括:获取备磁盘数据转移持续时长,其中,所述备磁盘数据转移持续时长表示将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点之后的持续时长;在所述备磁盘数据转移持续时长大于或等于预设备份数据删除时长后,将所述备磁盘节点中已存储的目标存储数据删除。
73.在本发明中,可通过设置一个预设备份数据删除时长,当备磁盘节点的数据已复制到主磁盘节点后,在一定时间段内暂时不删除该数据,在该时间段内,若主磁盘节点稳定运行,则表示主磁盘也恢复,此时再将备磁盘节点中存储的数据进行删除,以提高数据存储稳定性和安全性。
74.在上述实施例的基础上,在所述若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点之后,所述方法还包括:接收第一输入,其中,所述第一输入包括在确定所述状态信息为冗余失效状态时,从所述备磁盘节点中读取所述目标存储数据的操作;响应于所述第一输入,获取所述备磁盘节点中已存储的目标存储数据。
75.在本发明中,在主磁盘节点还未恢复正常状态时,若需要读取数据,此时可根据获取到的操作指令,直接从备磁盘节点中存储的数据进行读取,使得在视频数据的存储节点冗余失效时,不仅能继续进行数据写入,也能在冗余失效解除前进行数据读取,提升了分布式视频存储在故障场景下的可用性。
76.图6为本发明提供的数据写入和读取的整体流程示意图,可参考图6所示,在本发
明中,对于正常状态或降级状态的数据读写场景,此时数据读和写都是在主磁盘列表上。而在异常场景时,即冗余失效状态,需要将数据写入到备磁盘上,且故障后写入的数据可读,故障前写入的数据不可读写。在异常恢复场景下,将恢复后新的数据切换到主磁盘进行写入;同时,将故障后写入到备磁盘上的数据,以后台任务形式持续迁移回主磁盘,并删除备磁盘上数据,释放空间,此时用户对故障前后的写入的数据均可读写。
77.下面对本发明提供的数据写入系统进行描述,下文描述的数据写入系统与上文描述的数据写入方法可相互对应参照。
78.图7为本发明提供的数据写入系统的结构示意图,如图7所示,本发明提供了一种数据写入系统,包括磁盘状态采集模块701、备磁盘写入模块702和数据恢复模块703,其中,磁盘状态采集模块701用于获取主磁盘节点的状态信息;其中,所述主磁盘节点表示待写入目标存储数据的磁盘节点;备磁盘写入模块702用于若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点,其中,所述备磁盘节点和所述主磁盘节点之间属于不同的故障域;数据恢复模块703用于在确定所述主磁盘节点的状态信息为正常状态之后,将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点。
79.本发明提供的数据写入系统,可在存储节点发生故障且导致冗余失效的场景下,保障新的视频数据仍然能够持续写入和读取,并在不降低存储有效容量利用率的前提下,增加冗余故障节点的数量,大大提升视频存储在故障场景下的可用性,实现冗余失效后残盘仍可读写,满足视频存储场景的业务持续写入要求。
80.本发明提供的系统是用于执行上述各方法实施例的,具体流程和详细内容请参照上述实施例,此处不再赘述。
81.本发明还提供一种存储硬盘,包括上述实施例所述的数据写入系统。图8为本发明提供的视频存储架构的示意图,可参考图8所示,本发明提供的基于分布式视频的存储业务框架,包含基础层、视频管理平台和设备应用,其中,基础层是指硬件,操作系统,以及分布式存储集群;视频管理平台是连接摄像机和录像存储的桥梁,同时支持客户端进行录播视频的查看和第三方应用平台的ai分析;设备应用层对应不同的视频数据应用场景。本发明提供的存储硬盘设置在基础层,通过内置的数据写入系统,保证基础层的分布式存储集群,在存储节点发生故障且导致冗余失效的场景下,能够提供持续的业务数据存储。
82.本发明提供的存储硬盘,可在存储节点发生故障且导致冗余失效的场景下,保障新的视频数据仍然能够持续写入和读取,并在不降低存储有效容量利用率的前提下,增加冗余故障节点的数量,大大提升视频存储在故障场景下的可用性,实现冗余失效后残盘仍可读写,满足视频存储场景的业务持续写入要求。
83.图9为本发明提供的电子设备的结构示意图,如图9所示,该电子设备可以包括:处理器(processor)901、通信接口(communications interface)902、存储器(memory)903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信。处理器901可以调用存储器903中的逻辑指令,以执行数据写入方法,该方法包括:获取主磁盘节点的状态信息;其中,所述主磁盘节点表示待写入目标存储数据的磁盘节点;若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点,其中,所述备磁盘节点和所述主磁盘节点之间属于不同的故障域;在确定所述主磁盘节点的状态信息为正常状态之后,将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点。
84.此外,上述的存储器903中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
85.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的数据写入方法,该方法包括:获取主磁盘节点的状态信息;其中,所述主磁盘节点表示待写入目标存储数据的磁盘节点;若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点,其中,所述备磁盘节点和所述主磁盘节点之间属于不同的故障域;在确定所述主磁盘节点的状态信息为正常状态之后,将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点。
86.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的数据写入方法,该方法包括:获取主磁盘节点的状态信息;其中,所述主磁盘节点表示待写入目标存储数据的磁盘节点;若所述状态信息为冗余失效状态,将所述目标存储数据写入到对应的备磁盘节点,其中,所述备磁盘节点和所述主磁盘节点之间属于不同的故障域;在确定所述主磁盘节点的状态信息为正常状态之后,将所述备磁盘节点中已存储的目标存储数据复制到所述主磁盘节点。
87.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
88.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
89.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1