CN112764968A - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112764968A CN112764968A CN202011596564.8A CN202011596564A CN112764968A CN 112764968 A CN112764968 A CN 112764968A CN 202011596564 A CN202011596564 A CN 202011596564A CN 112764968 A CN112764968 A CN 112764968A
- Authority
- CN
- China
- Prior art keywords
- block
- node
- data
- task
- offline
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims description 41
- 230000002159 abnormal effect Effects 0.000 claims abstract description 134
- 230000007704 transition Effects 0.000 claims abstract description 74
- 238000000034 method Methods 0.000 claims description 83
- 125000004122 cyclic group Chemical group 0.000 claims description 76
- 238000012545 processing Methods 0.000 claims description 73
- 238000004140 cleaning Methods 0.000 claims description 53
- 238000004590 computer program Methods 0.000 claims description 23
- 230000010076 replication Effects 0.000 claims description 18
- 238000013461 design Methods 0.000 description 30
- 238000007726 management method Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 12
- 238000013507 mapping Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000008439 repair process Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据处理方法、装置、设备及存储介质,主节点通过获取集群中各个节点上报的对象状态信息,并根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及该目标节点上的离线对象,将该目标节点上离线对象的离线信息添加至目标节点的状态变迁表中,在目标节点上离线对象的离线时长大于离线阈值,则生成针对该目标节点的副本补齐任务,并下发给集群的在线备节点,在线备节点可以根据接收到的副本补齐任务执行副本的补齐。该技术方案,主节点可以及时确定出状态异常的节点,并及时生成针对该节点的副本补齐任务,为后续副本补齐任务的执行奠定了基础,提供了数据补齐效率。
Description
技术领域
本申请涉及云存储技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
云存储系统是一种网络存储系统,其通过集群应用、网络技术或分布式文件系统等功能,可以将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能。
在云存储系统中,为了提高数据的安全性,云存储系统通常通过多副本冗余存储来保证数据的可靠性。例如,采用2份副本存储时,将1份副本数据存储在一个数据节点上,而将另外1份副本数据存储在其他数据节点上。这样,在存储副本数据的磁盘发生故障或节点发生故障导致副本数据丢失时,可以基于用户的读操作对丢失的副本数据进行修复。
然而,现有副本数据的修复需要依赖用户的读操作触发,若丢失的数据不是用户经常访问的热数据,则无法触发副本数据的修复,导致丢失的数据长期处于副本不足的状态,这时,若存储其他副本数据的节点或磁盘在这段时间内发生故障,则会导致其他的副本数据也丢失,影响了数据的读写业务,存在数据可靠性低的问题。
发明内容
本申请提供一种数据处理方法、装置、设备及存储介质,以克服现有云存储系统中副本数据可靠性低的问题。
第一方面,本申请实施例提供一种数据处理方法,包括:
获取集群中各个节点上报的对象状态信息,所述对象状态信息包括:节点状态信息和所属节点上每个块设备的状态信息;
根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及所述目标节点上的离线对象,所述离线对象至少包括如下一种:离线节点、在线节点上的离线块设备;
将所述目标节点上离线对象的离线信息添加至所述目标节点的状态变迁表中,所述状态变迁表用于记录离线对象的标识、离线对象的离线时间点、是否针对每个离线对象生成副本任务;
若所述目标节点上离线对象的离线时长大于离线阈值,则生成针对所述目标节点的副本补齐任务。
在第一方面的一种可能设计中,所述方法还包括:
将所述目标节点的副本补齐任务添加至集群副本补齐任务表中,并更新所述目标节点的状态变迁表;
通过周期性扫描所述集群副本补齐任务表,确定所述目标节点上离线对象的状态信息是否发生变化;
在确定所述目标节点上离线对象的状态信息未发生变化时,向所述集群中的所有在线节点下发所述副本补齐任务。
可选的,在所述向所述集群中的所有在线节点下发所述副本补齐任务之后,所述方法还包括:
确定所述副本补齐任务是否成功下发至所述集群中的所有在线节点;
在所述副本补齐任务成功下发至所述集群中的所有在线节点时,将所述副本补齐任务的状态设置为已下发;
在所述副本补齐任务成功下发至所述集群中的部分在线节点时,将所述副本补齐任务的状态设置为下发中;
在所述副本补齐任务未成功下发至所述集群中的任意一个在线节点时,将所述副本补齐任务的状态设置为未下发。
可选的,所述方法还包括:
通过周期性扫描所述目标节点的状态变迁表,检测所述目标节点上的离线对象是否再次上线;
在确定所述目标节点上的离线对象再次上线时,根据所述目标节点对应状态变迁表中的信息,确定所述目标节点是否已生成副本补齐任务;
在确定所述目标节点已生成副本补齐任务时,确定所述副本补齐任务的下发状态;
在所述副本补齐任务的下发状态为已下发时,生成针对所述目标节点的副本清理任务;
在所述副本补齐任务的下发状态为下发中时,停止所述副本补齐任务的下发,并删除所述目标节点生成的所述副本补齐任务以及删除所述目标节点对应状态变迁表中的所述离线对象的离线信息;
在所述副本补齐任务的下发状态为未下发时,删除所述目标节点生成的所述副本补齐任务并删除所述目标节点对应状态变迁表中的所述离线对象的离线信息;
在确定所述目标节点未生成副本补齐任务时,删除所述目标节点对应状态变迁表中的所述离线对象的离线信息。
可选的,在所述生成针对所述目标节点的副本清理任务之后,所述方法还包括:
向所述目标节点下发所述副本清理任务;
在确定所述副本清理任务下发成功时,删除所述目标节点对应状态变迁表中所述离线对象的离线信息。
第二方面,本申请实施例提供一种数据处理方法,包括:
接收主节点下发的副本补齐任务,所述副本补齐任务携带任务状态、离线对象的标识;
通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致;
在确定所述块表中存在对象标识与所述副本补齐任务中离线对象的标识一致时,生成针对所述副本补齐任务的数据块复制任务,所述数据块复制任务携带源数据块的标识;
执行所述数据块复制任务。
在第二方面的一种可能设计中,在所述通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致之前,所述方法还包括:
将所述副本补齐任务存储至所述当前节点的副本补齐任务表中;
根据所述副本补齐任务表中每条副本补齐任务的任务状态,确定所述副本补齐任务表中每条副本补齐任务的执行顺序。
在第二方面的另一种可能设计中,在所述接收主节点下发的副本补齐任务之后,所述方法还包括:
周期性检测所述副本补齐任务对应的离线对象是否再次上线;
若确定所述副本补齐任务对应的离线对象再次上线,则停止所述副本补齐任务的执行,并将所述副本补齐任务的任务状态变更为已终止。
在第二方面的再一种可能设计中,所述执行所述数据块复制任务,包括:
根据所述当前节点所属的虚拟组,确定所述数据块复制任务的目的节点,所述虚拟组是存储副本数据的主节点和备节点的组合;
利用所述当前节点中的数据服务实例,将所述源数据块中的副本数据复制到所述目的节点中。
在第二方面的又一种可能设计中,所述方法还包括:
接收所述主节点下发的副本清理任务,所述副本清理任务携带待清理数据块的标识;
根据所述待清理数据块标识和所述当前节点的块表,确定出所述待清理数据块的配对块信息,所述配对块信息包括:本地数据块的标识和配对节点上的对端数据块的标识;
根据所述配对块信息,通过与所述配对节点进行交互,确定所述本地数据块是否为所述对端数据块的当前配对块;
在确定所述本地数据块不是所述对端数据块的当前配对块时,确定所述本地数据块为所述待清理数据块;
将所述本地数据块的状态设置为待删除,并向所述当前节点的异常块表中添加一条待删除记录。
可选的,在所述将所述本地数据块的状态设置为待删除,并向所述当前节点的异常块表中添加一条待删除记录之后,所述方法还包括:
通过定时扫描所述异常块表,确定所述异常块表中存在的待删除记录;
确定所述待删除记录中的数据块是否为冗余块;
在确定所述待删除记录中的数据块为冗余块时,从所述当前节点的块表中清除所述冗余块的索引信息,并删除所述当前节点上所述冗余块中数据。
在第二方面的又一种可能设计中,所述方法还包括:
根据所述当前节点中的块表,周期性检测所述当前节点中已使用的数据块是否为异常块;
对于所述当前节点中的异常块,查询所述当前节点的块表,确定所述异常块的对端块;
通过与所述对端块所在的节点进行交互,确定所述对端块的匹配块是否为所述异常块;
在所述对端块的匹配块不是所述异常块时,确定所述异常块已无效并删除所述异常块;
在所述对端块的匹配块是所述异常块时,通过与所述对端块的所在的节点进行交互,将所述对端块中的数据复制到当前节点中的一个新数据块中;
更新所述当前节点中块表的索引信息,并向所述对端块的所在的节点发送索引更新请求,所述索引更新请求用于指示所述对端块所在的节点更新块表中的索引信息。
可选的,所述根据所述当前节点中的块表,周期性检测所述当前节点中已使用的数据块是否为异常块,包括:
对于每个已使用的数据块,获取所述数据块中的主信息区数据;
对所述主信息区数据进行循环冗余校验,得到第一循环冗余校验值;
在所述第一循环冗余校验值与所述数据块中记录的第二循环冗余校验值不一致时,确定所述数据块为异常块;
在所述第一循环冗余校验值与所述数据块中记录的第二循环冗余校验值一致时,根据所述数据块中数据区的存储数据和每条数据的循环冗余校验值,确定所述数据块是否为异常块。
可选的,所述根据所述数据块中数据区的存储数据和每条数据的循环冗余校验值,确定所述数据块是否为异常块,包括:
对于按照先后顺序从所述数据块的数据区中读取的每条数据,基于预设规则对所述数据进行循环冗余校验,得到第三循环冗余校验值;
在所述第三循环冗余校验值与所述数据区中记录的所述数据的循环冗余校验值不一致时,确定所述数据块为异常块;
在所述第三循环冗余校验值与所述数据区中记录的所述数据的循环冗余校验值一致时,依次对剩余的数据进行校验,直到确定所述数据块为异常块,或者所述数据区的所有数据均通过校验。
第三方面,本申请实施例提供一种数据处理装置,包括:
获取模块,用于获取集群中各个节点上报的对象状态信息,所述对象状态信息包括:节点状态信息和所属节点上每个块设备的状态信息;
处理模块,用于根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及所述目标节点上的离线对象,以及将所述目标节点上离线对象的离线信息添加至所述目标节点的状态变迁表中,所述离线对象至少包括如下一种:离线节点、在线节点上的离线块设备,所述状态变迁表用于记录离线对象的标识、离线对象的离线时间点、是否针对每个离线对象生成副本任务;
生成模块,用于在所述目标节点上离线对象的离线时长大于离线阈值时,生成针对所述目标节点的副本补齐任务。
在第三方面的一种可能设计中,所述处理模块,还用于:
将所述目标节点的副本补齐任务添加至集群副本补齐任务表中,并更新所述目标节点的状态变迁表;
通过周期性扫描所述集群副本补齐任务表,确定所述目标节点上离线对象的状态信息是否发生变化;
所述装置还包括:发送模块;
所述发送模块,用于在确定所述目标节点上离线对象的状态信息未发生变化时,向所述集群中的所有在线节点下发所述副本补齐任务。
可选的,所述处理模块,还用于在所述发送模块向所述集群中的所有在线节点下发所述副本补齐任务之后,确定所述副本补齐任务是否成功下发至所述集群中的所有在线节点,在所述副本补齐任务成功下发至所述集群中的所有在线节点时,将所述副本补齐任务的状态设置为已下发,在所述副本补齐任务成功下发至所述集群中的部分在线节点时,将所述副本补齐任务的状态设置为下发中,以及在所述副本补齐任务未成功下发至所述集群中的任意一个在线节点时,将所述副本补齐任务的状态设置为未下发。
可选的,所述处理模块,还用于:
通过周期性扫描所述目标节点的状态变迁表,检测所述目标节点上的离线对象是否再次上线;
在确定所述目标节点上的离线对象再次上线时,根据所述目标节点对应状态变迁表中的信息,确定所述目标节点是否已生成副本补齐任务;
在确定所述目标节点已生成副本补齐任务时,确定所述副本补齐任务的下发状态;
所述生成模块,还用于在所述副本补齐任务的下发状态为已下发时,生成针对所述目标节点的副本清理任务;
所述处理模块,还用于:
在所述副本补齐任务的下发状态为下发中时,停止所述副本补齐任务的下发,生成针对所述目标节点的副本清理任务,删除所述目标节点生成的所述副本补齐任务以及删除所述目标节点对应状态变迁表中的所述离线对象的离线信息;
在所述副本补齐任务的下发状态为未下发时,删除所述目标节点生成的所述副本补齐任务并删除所述目标节点对应状态变迁表中的所述离线对象的离线信息;
在确定所述目标节点未生成副本补齐任务时,删除所述目标节点对应状态变迁表中的所述离线对象的离线信息。
可选的,所述发送模块,还用于在所述生成模块生成针对所述目标节点的副本清理任务之后,向所述目标节点下发所述副本清理任务;
所述处理模块,还用于在确定所述副本清理任务下发成功时,删除所述目标节点对应状态变迁表中所述离线对象的离线信息。
第四方面,本申请实施例提供一种数据处理方法,包括:
接收模块,用于接收主节点下发的副本补齐任务,所述副本补齐任务携带任务状态、离线对象的标识;
判断模块,用于通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致;
处理模块,用于在确定所述块表中存在对象标识与所述副本补齐任务中离线对象的标识一致时,生成针对所述副本补齐任务的数据块复制任务,所述数据块复制任务携带源数据块的标识,并执行所述数据块复制任务。
在第四方面的一种可能设计中,所述处理模块,还用于在所述判断模块通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致之前,将所述副本补齐任务存储至所述当前节点的副本补齐任务表中,根据所述副本补齐任务表中每条副本补齐任务的任务状态,确定所述副本补齐任务表中每条副本补齐任务的执行顺序。
在第四方面的另一种可能设计中,所述判断模块,还用于在所述接收模块接收主节点下发的副本补齐任务之后,周期性检测所述副本补齐任务对应的离线对象是否再次上线;
所述处理模块,还用于在确定所述副本补齐任务对应的离线对象再次上线时,停止所述副本补齐任务的执行,并将所述副本补齐任务的任务状态变更为已终止。
在第四方面的另一种可能设计中,所述处理模块,用于执行所述数据块复制任务,具体为:
所述处理模块,具体用于:
根据所述当前节点所属的虚拟组,确定所述数据块复制任务的目的节点,所述虚拟组是存储副本数据的主节点和备节点的组合;
利用所述当前节点中的数据服务实例,将所述源数据块中的副本数据复制到所述目的节点中。
在第四方面的再一种可能设计中,所述接收模块,还用于接收所述主节点下发的副本清理任务,所述副本清理任务携带待清理数据块的标识;
所述处理模块,还用于根据所述待清理数据块标识和所述当前节点的块表,确定出所述待清理数据块的配对块信息,所述配对块信息包括:本地数据块的标识和配对节点上的对端数据块的标识;
所述判断模块,还用于根据所述配对块信息,通过与所述配对节点进行交互,确定所述本地数据块是否为所述对端数据块的当前配对块;
所述处理模块,还用于在确定所述本地数据块不是所述对端数据块的当前配对块时,确定所述本地数据块为所述待清理数据块,以及将所述本地数据块的状态设置为待删除,并向所述当前节点的异常块表中添加一条待删除记录。
可选的,所述处理模块,还用于在将所述本地数据块的状态设置为待删除,并向所述当前节点的异常块表中添加一条待删除记录之后,通过定时扫描所述异常块表,确定所述异常块表中存在的待删除记录;
所述判断模块,还用于确定所述待删除记录中的数据块是否为冗余块;
所述处理模块,还用于在确定所述待删除记录中的数据块为冗余块时,从所述当前节点的块表中清除所述冗余块的索引信息,并删除所述当前节点上所述冗余块中数据。
在第四方面的又一种可能设计中,所述判断模块,还用于根据所述当前节点中的块表,周期性检测所述当前节点中已使用的数据块是否为异常块;
所述处理模块,还用于对于所述当前节点中的异常块,查询所述当前节点的块表,确定所述异常块的对端块;
所述判断模块,还用于通过与所述对端块所在的节点进行交互,确定所述对端块的匹配块是否为所述异常块;
所述处理模块,还用于:
在所述对端块的匹配块不是所述异常块时,确定所述异常块已无效并删除所述异常块;
在所述对端块的匹配块是所述异常块时,通过与所述对端块的所在的节点进行交互,将所述对端块中的数据复制到当前节点中的一个新数据块中;
更新所述当前节点中块表的索引信息,并向所述对端块的所在的节点发送索引更新请求,所述索引更新请求用于指示所述对端块所在的节点更新块表中的索引信息。
可选的,所述处理模块,还用于:
对于每个已使用的数据块,获取所述数据块中的主信息区数据;
对所述主信息区数据进行循环冗余校验,得到第一循环冗余校验值;
在所述第一循环冗余校验值与所述数据块中记录的第二循环冗余校验值不一致时,确定所述数据块为异常块;
在所述第一循环冗余校验值与所述数据块中记录的第二循环冗余校验值一致时,根据所述数据块中数据区的存储数据和每条数据的循环冗余校验值,确定所述数据块是否为异常块。
可选的,所述处理模块,用于根据所述数据块中数据区的存储数据和每条数据的循环冗余校验值,确定所述数据块是否为异常块,具体为:
所述处理模块,具体用于:
对于按照先后顺序从所述数据块的数据区中读取的每条数据,基于预设规则对所述数据进行循环冗余校验,得到第三循环冗余校验值;
在所述第三循环冗余校验值与所述数据区中记录的所述数据的循环冗余校验值不一致时,确定所述数据块为异常块;
在所述第三循环冗余校验值与所述数据区中记录的所述数据的循环冗余校验值一致时,依次对剩余的数据进行校验,直到确定所述数据块为异常块,或者所述数据区的所有数据均通过校验。
第五方面,本申请实施例提供一种计算机设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序指令,所述处理器执行所述计算机程序指令时实现如上述第一方面以及各可能设计所述的方法。
第六方面,本申请实施例提供一种计算机设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序指令,所述处理器执行所述计算机程序指令时实现如上述第二方面以及各可能设计所述的方法。
第七方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面以及各可能设计所述的方法。
第八方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第二方面以及各可能设计所述的方法。
第九方面,本申请实施例提供一种程序,当该程序被处理器执行时,用于执行如第一方面以及各可能设计所述的方法。
第十方面,本申请实施例提供一种程序,当该程序被处理器执行时,用于执行如第二方面以及各可能设计所述的方法。
第十一方面,本申请实施例提供一种计算机程序产品,包括程序指令,程序指令用于实现如第一方面以及各可能设计所述的方法。
第十二方面,本申请实施例提供一种计算机程序产品,包括程序指令,程序指令用于实现如第二方面以及各可能设计所述的方法。
第十三方面,本申请实施例提供了一种芯片,包括:处理模块与通信接口,该处理模块能执行第一方面以及各可能设计所述的方法。
进一步地,该芯片还包括存储模块(如,存储器),存储模块用于存储指令,处理模块用于执行存储模块存储的指令,并且对存储模块中存储的指令的执行使得处理模块执行第一方面以及各可能设计所述的方法。
第十四方面,本申请实施例提供了一种芯片,包括:处理模块与通信接口,该处理模块能执行第二方面以及各可能设计所述的方法。
进一步地,该芯片还包括存储模块(如,存储器),存储模块用于存储指令,处理模块用于执行存储模块存储的指令,并且对存储模块中存储的指令的执行使得处理模块执行第二方面以及各可能设计所述的方法。
本申请实施例提供的数据处理方法、装置、设备及存储介质,主节点通过获取集群中各个节点上报的对象状态信息,并根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及该目标节点上的离线对象,将该目标节点上离线对象的离线信息添加至目标节点的状态变迁表中,在目标节点上离线对象的离线时长大于离线阈值,则生成针对该目标节点的副本补齐任务,并下发给集群的在线备节点,在线备节点可以根据接收到的副本补齐任务执行副本的补齐。该技术方案,主节点可以及时确定出状态异常的节点,并及时生成针对该节点的副本补齐任务,为后续副本补齐任务的执行奠定了基础,提供了数据补齐效率。
附图说明
图1为本申请实施例提供的数据处理方法的应用场景示意图;
图2为本申请实施例中数据写入到节点的流程框图;
图3是典型的64MB大小数据块的物理结构示意图;
图4为终端设备向集群的节点写数据的流程示意图;
图5为节点为待写入的数据分配数据块的流程示意图;
图6为本申请提供的数据处理方法实施例一的流程示意图;
图7为本申请提供的数据处理方法实施例二的流程示意图;
图8为本申请提供的数据处理方法实施例三的流程示意图;
图9为本申请提供的数据处理方法实施例四的流程示意图;
图10为本申请提供的数据处理方法实施例五的流程示意图;
图11为本申请提供的数据处理方法实施例六的流程示意图;
图12为本申请提供的数据处理方法实施例七的流程示意图;
图13为本申请实施例提供的数据处理装置实施例一的结构示意图;
图14为本申请实施例提供的数据处理装置实施例二的结构示意图;
图15为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在介绍本申请的技术方案之前,首先对本申请设计的部分术语进行解释说明:
多副本:为了提升数据可靠性,对象文件在写入时,会同时在不同存储节点或设备上写两份或多份,当云存储系统中一个或多个存储节点故障时,不影响数据的读写业务;
副本补齐:在云存储系统中,每个对象数据在不同的存储节点中存在多个副本,当某个节点异常,将该节点上的数据通过其它副本,复制到其它正常节点上,保证数据时刻存在多份。
在云存储系统,针现有方案中副本数据的修复需要依赖用户的读操作来触发,导致丢失的副本数据可能长期处于副本不足状态,若在副本不足的时间段内,存储另一个副本数据的节点或磁盘故障时,会导致存储的数据均丢失,导致数据无法被正常访问,存在数据可靠性得不到保证的问题。因此,需要一种策略来解决无中心的分布式云存储系统中副本丢失无法快速修复的技术问题。
作为一种示例,现有无中心的分布式云存储系统可以依赖分布式哈希表(distributed hash table,DHT)技术实现无中心节点的环形结构,具体实现主要采用一致性HASH算法,并且分布式云存储系统通常以单条数据为基础进行副本存储。但该方案会存在一些问题,例如,单条数据量过多时,一个节点的数据量通常需要以亿级别计算,这样节点扫描并发现副本丢失的过程很漫长,执行完一次扫描所用的时间也将很漫长。若集群中某个节点或某个设备掉线后,则需要其他在线节点全盘扫描自身的索引数据库才能发现其副本数据所在的位置,进而才能够执行副本补齐的方案,存在副本补齐效率低的问题。
针对上述问题,本申请提出了一种基于数据块存储的副本补齐方案,解决无中心存储的副本补齐,具体的,在需要进行副本存储时,首先确定出用于存储副本数据的主节点和备节点,然后将副本数据分别写入到主节点的数据块(称为该副本数据的主数据块)中和备节点的数据块(称为该副本数据的副本数据块)中,进而在云存储系统中,通过主节点和备节点之间的信息交互,识别副本数据的丢失,并实现副本数据的补齐。该技术方案,不仅能够及时补齐丢失的副本数据,而且以数据块为扫描基础,能够更快的发现异常块,从而能够更快的修复丢失的数据,保证了数据安全性。
示例性的,图1为本申请实施例提供的数据处理方法的应用场景示意图。如图1所示,该应用场景可以包括:云存储系统11和至少一个终端设备12。其中,云存储系统11可以包括:多个节点。在本申请的实施例中,多个节点和至少一个终端设备12之间均可以相互通信。
在本实施例中,多个节点中的每个节点均可以具有调度、管理和存储的功能。在具体应用中,可以采用Linux虚拟服务器(Linux virtual server,LVS)技术,从多个节点中确定出作为管理和调度角色的主节点111,利用该主节点111实现与每个终端设备12的通信,并实现调度任务。
示例性的,在本实施例中的云存储系统中,LVS技术可以虚拟出一个IP地址(即,虚拟IP),该虚拟IP位于哪个节点上,哪个节点便可以作为主节点111,相应的,云存储系统中除该主节点111之外的节点可以称为备节点112。
值得说明的是,该主节点111可以同时作为调度服务器、管理服务器和存储服务器,备节点112可以同时作为管理服务器和存储服务器。
具体的,主节点111可以接收集群中各个备节点心跳同步的对象状态信息(可以包括节点的状态信息和该节点上部署的块设备的状态信息),从而根据该对象状态信息,确定节点的在线情况,进而为后续向节点写入副本数据、及时发现副本数据的丢失和补齐副本数据的执行等步骤奠定了基础。
可以理解的是,本申请实施例提供的数据处理方法需要基于副本数据的主节点确定策略、存储策略等实现,因而,下面在介绍本申请的技术方案之前,首先介绍副本数据的存储方案。
在本申请的实施例中,对数据进行存储时,首先在节点中预置数据路由表的生成算法,并基于该生成算法生成数据路由表,其中,该数据路由表的特点是数据模数固定,且数据模数较小,具体的,该数据模数等于集群中节点个数与设定小倍数的乘积,例如,若节点个数为N,则该设定小倍数至少是(N-1)。示例性的,对于具有10个节点的集群,设定小倍数可以为10,此时,该集群的数据模数可以为10*10=100,其与一致性HASH算法中数据模数(通常为2的32次方,即4294967296)相比,数据模数减少了很多,从而使得节点能够基于数据块存储多副本数据。
可选的,在本申请的实施例中,根据集群中的数据模数可以确定虚拟组(virtualgroup,VG),该虚拟组是虚拟节点的组合,例如,在集群的数据模数为100时,可以得到100个VG,每个VG中存在一对有序虚拟节点分别作为某数据的副本1、副本2存储的节点。可以理解的是,在实际应用中,虚拟组中的主备虚拟节点与集群中的节点具有一一对应的关系,即确定该数据的虚拟组时,便可以确定了该数据对应副本在集群中的主节点和备节点。
在存储数据时,通过为数据分配数据块进行存储,分配的数据块以VG ID(VG ID,例如,上述的1~100中的某个数字)作为其中一个标识,并且标记是主数据块,还是备数据块。
可以理解的是,在本实施例中,每个数据块中仅能存储具有相同VG ID的数据,且副本1、副本2所在的数据块也具有相同的VG ID。
示例性的,图2为本申请实施例中数据写入到节点的流程框图。如图2所示,当终端设备有多个数据需要存储时,首先确定出每个数据对应的key值,然后,对每个数据对应的key进行HASH运算,进而对得到的HASH值使用取模算法进行VG分配,例如,终端设备的客户端有N个数据需要存储,此处以数据1和数据2的处理进行解释说明,即,数据1对应的key值为key1,数据2对应的key值为key2,由于hash(key1)%100=1,则数据1被分配到VGID为1的VG1中,由于hash(key2)%100=3,则数据2被分配到VG ID为3的VG3中。
可选的,如图2所示,VG1包括虚节点1和虚节点2,则终端设备可以将数据1的副本1写入到集群中的节点1中,进而存储至节点1对应的存储介质中,相应的,将数据1的副本2写入到集群中的节点2中,进而存储至节点2对应的存储介质中。同理,VG3包括虚节点3和虚节点4,则终端设备可以将数据2的副本1写入到集群中的节点3中,进而存储至节点3对应的存储介质中,相应的,将数据2的副本2写入到集群中的节点4中,进而存储至节点4对应的存储介质中。
可以理解的是,本申请实施例可以根据副本的数量确定每个VG组中的虚节点个数,并根据实际需要确定每个VG包括的虚节点,此处不对其进行限定。
在实际应用中,终端设备生成VG的方式有很多种,可以根据实际业务需要进行实现,从而满足集群不同节点间的负载均衡需要。
示例性的,下述介绍一种基于节点容量负载均衡生成VG的示例,以理解VG的实现方式。
具体的,首先按照节点的容量为每个节点分配比例系数。假设集群中共有4个节点,且节点的容量一致,此时,节点1至节点4的容量百分比系数分别为25,得到100个虚拟节点,其中,节点1对应的虚拟节点1、节点2对应的虚拟节点2、节点3对应的虚拟节点3以及节点4对应的虚拟节点4分别有25个。
其次,将100个虚拟节点作为100个VG中的虚拟主节点进行排列,例如,100个虚拟主节点依次为:123412341234…1234。
可选的,本申请中可以预设2种算法(分别是算法A和算法B)生成虚拟组。算法A和算法B的区别是生成100个虚拟主节点时,进行排序的顺序不同。算法A的原则是尽量将所有节点按顺序依次穿插排列,算法B的原则是尽量将虚拟节点个数更多的节点排列在前面,且相同节点排在一起。例如,虚拟节点共包括:5个虚拟节点1、3个虚拟节点2和2个虚拟节点3。使用算法A时,虚拟主节点的排序为:1231231211,使用算法B时,虚拟主节点的排序为1111122233。类似的,基于上述算法可以确定出作为主虚拟节点的100个虚拟节点。
可选的,在生成虚拟组时,可以根据每个节点的比例系数确定使用的算法。例如,若集群中存在节点的比例系数大于或等于50,即该节点的容量大于或等于集群容量的50%,则使用算法B,否则,使用算法A。该方法是根据实际测试结果得出的一个结论。
最后,按照主备节点不同的挑选原则,为100个VG分别选择虚拟备节点。
可选的,选取虚拟备节点的算法可以如下:
(1)优先选择当前剩余虚拟节点最多的节点元素;
(2)且该虚拟备节点必须和该VG中已确定的虚拟主节点不同;
(3)若不存在满足(1)和(2)的虚拟节点,则该VG的虚拟备节点暂不选择,使用占位符填满。其中,占位符是先占住一个固定的位置,等着后续再往里面添加内容的符号;
(4)一轮选择完毕后,若存在填写为占位符的虚拟备节点,则根据随机选择算法随机挑选一个满足(2)的虚拟节点作为该VG组的虚拟备节点。可选的,随机选择算法是将除虚拟主节点外的其他虚拟节点,按照节点当前容量系数等比例扩大后,再加上VG ID的值,随后进行HASH排序,从而选取排序后的首个节点作为该VG的虚拟备节点。
在本申请中,由于虚拟主节点、虚拟备节点的比例系数完全按照节点的实际容量比例生成的,因此,实现了根据节点容量进行负载分配的负载均衡策略。可以理解的是,集群中各个节点的比例系数相加后,需要和VG个数一致。当单个节点下线或节点容量低于容量阈值时,且单个节点下线或节点容量低于容量阈值的时长超过预设的时间阈值,将该节点从对应的VG中剔除,并重新生成VG。
上述介绍了数据写入存储节点的数据路由方式,下述主要介绍副本1数据到达主节点后如何从主节点中选取主数据块写入副本1,以及副本2到达备节点后如何从备节点中选择备数据块如下副本2,以及如何绑定主数据块和备数据块的关系。
示例性的,首先明确一下数据块的具体概念和结构。图3是典型的64MB大小数据块的物理结构示意图。如图3所示,数据块中会被指定一些字段作为块属性,数据块的一些必要的属性可以包括:块名、VG版本、任务码、块类型、块状态、依赖块数据进行计算得出的CRC等。
示例性的,数据块包括主信息区、数据区、全局索引区和备信息区。其中,主信息区可以块名、VG版本、任务码、块类型(可以为主块、备块、对象块中的一种)、块状态(可以为打开、满块、关闭、使用中、数据复制中、索引生成中等的一种)、块大小、主(备)区大小、数据区偏移、索引区偏移、数据个数、备份块、保留区、CRC等;数据区可以写入数据1至数据n,且每个数据的位置可以包括:K值(Key)、索引版本、VG版本、创建时间、数据起始位置、数据大小、数据总大小、数据类型、数据偏移、保留区、CRC、数据等;全局索引区可以包括索引1至索引n,且每个索引可以包括K值(Key)、状态、起始位置、数据大小、保留区、CRC等。可以理解的是,本申请实施例并不限定数据块中各字段的属性,其可以根据实际情况进行确定,此处不再赘述。
在实际应用中,一个未被使用的数据块被称作一个“空闲块”,终端设备的应用程序需要向数据块写入数据时,可以向文件系统管理程序申请一个空闲块,且申请出来的空闲块属性均尚未指定,由使用该数据块的应用程序对属性值进行赋值。在申请到一个新的空闲块,并开始写入数据时,首先会初始化数据块的主信息区和备信息区,然后从数据区的起始位置开始顺序写数据,写完每条数据后,会实时或定时更新数据区索引和全局索引,未写满的数据块还可以被再次使用,并被标记为待使用,等待下次符合条件的数据写入。
可选的,在使用主备数据块写两副本数据时,主备数据块的数据完全一致,但其他信息可能会有区别,例如,块状态、主备类型等,此处不进行赘述。
示例性的,图4为终端设备向集群的节点写数据的流程示意图。如图4所示,在本实施例中,终端设备的客户端应用程序对待存储数据分配VG组和确定VG组包括的各节点后,可以定时向集群的各节点同步当前的VG信息和虚拟节点信息(每个虚拟节点的进程实例、每个进程的剩余容量),并且可以根据用户的数据存储请求(例如,传入的key)定位VG组,并选择出操作数据的节点(例如,节点1),并向节点1上的数据服务(例如,数据服务1)发起数据写入请求,节点1上的数据服务1接收到数据写入请求后,调用本地文件系统层接口,将本地的存储介质(存储介质1或存储介质2)写入数据,确定出写入的主数据块,写入数据完成后,根据VG中记录的虚拟备节点选取备节点,同步往备节点的备数据块中同步写入数据。若此时尚未在备节点中申请备数据块,则备节点的数据服务2将申请一个新的空闲块作为备数据块,且数据服务1和数据服务2均将记录下该备数据块的信息。
在本实施例中,数据每次写入数据块后需要判断是否满块(满块,即单个块剩余空闲容量低于最低能写入数据的阈值),若数据块已被写满,则记录相应块信息后关闭块(需要记录的块信息包括:块内索引区、块内主备区、块表、索引表等);对于未写满的块,归还给数据服务的块管理模块,在块内信息和块表中均将记录下主备块的绑定关系,主备块的绑定关系具体为:相同的唯一标识码,主块记录备块信息,备块记录主块信息等。
可选的,如果数据未写完,则继续写入数据,如果全部数据写完,则更新对象索引表。
可以理解的是,当向节点中写入数据时,首先需要确定出数据被分配写入的数据块。示例性的,图5为节点为待写入的数据分配数据块的流程示意图。在实际应用中,节点中预置有三维静态数组:块[VG信息][块属性][副本数],其中,VG信息指的是所属VG的标识,是块名的一级映射表,块属性主要是主块或备块,副本数为单副本或双副本。
示例性的,终端设备通过向节点(节点的块管理层)发送写数据请求,申请用于存储数据的块列表,该写数据请求携带副本数、VG信息、文件大小(数据量大小)、块属性等信息,这时,如图5所示,节点的块管理层确定待写入块列表的步骤如下:
S501、根据副本数、VG信息、块属性确定块映射表。
其中,该块映射表用于记录节点中数据块的大小和使用信息。
S502、判断块映射表对应的数据块集合是否存在符合文件大小的数据块;若否,先执行S503和S504,再执行S505,若是,执行S505;
具体的,节点的块管理层根据文件大小,在块映射表对应的数据块集合中查找是否存在符合数据大小的块。可选的,对于数据量比较大的文件,符合文件大小的数据块应该是占用未写入过任何数据的数据块,对于数据量较小的文件,符合文件大小的数据块可以是不同对象复用的同一个数据块。
如果块映射表对应的数据块集合块的总剩余空间大于需要申请的总空间大小,则直接在块映射表中将目标数据块标记为正在使用中,否则,首先申请空闲块,然后再将确定的目标数据块标记为正在使用中。
S503、判断是否从文件系统层申请到符合文件大小的空闲块,若是,执行S504,否则结束;
S504、初始化上述空闲块,并将其添加至块映射表对应的数据块集合中。
如果块映射表对应的数据块集合块的总剩余空间小于需要申请的总空间大小,则计算除了数据块集合的总剩余空间之外还需要的块空间,并向文件系统层申请欠缺的空闲块,在申请到空闲块时初始化这些空闲块,添加这些空闲块到块映射表对应的数据块集合中。
S505、在块映射表中将确定的待写入块标记为正在使用中;
S506、输出申请的块列表信息。
该块列表信息包括块名,以及申请写的起始位置偏移信息,若写入数据过程中出现异常,则恢复数据块的偏移信息,并计算该数据在每个块的起始偏移和结束偏移,从而控制数据写入时该落在那个块。
通过图5所示实施例的介绍,确定了待写入数据对应的节点以及对应节点中的数据块,为后续副本数据的补齐提供和了实现基础。
以上介绍了如何将双副本数据写入到在不同节点上的主数据块、备数据块中。在此基础上,副本补齐功能实现为:在双副本数据中某一副本丢失后,能够自动识别副本丢失事件,并生成副本补齐任务。副本丢失可以包括节点级副本丢失、磁盘级副本丢失和数据块级副本丢失。例如,节点级副本丢失可以是节点宕机无法恢复,磁盘级副本丢失可以是磁盘下线无法恢复,数据块级副本丢失可以是数据块损坏等。
可选的,在副本补齐任务完成中或完成后,若丢失的副本找回,需要清除冗余副本并释放存储空间。其中,副本找回可以是存储副本的节点再次上线,且其中数据能够正常访问,或存储副本的掉线磁盘重新上线且数据能够正常访问。在实际应用中,由于数据块级副本丢失一般是指数据块中数据因设备掉电等原因未成功刷入磁盘,导致数据完整性遭破坏等,而对于此种原因生成的异常块通常在使用新数据块恢复副本后即删除,因此,数据块级副本丢失不存在副本找回的场景。
可以理解的是,为实现节点磁盘级副本补齐,需要依赖主节点中的块管理模块,主节点中预置有一个块表,利用块表记录下每个块配对的块(主块/备块)所在节点ID、块设备ID(例如,磁盘ID)。这样,一旦某个节点、块设备下线,所有节点通过扫描本地的块表,检查每一个块记录,能够针对配对块所在节点/设备下线的块,生成副本块补齐任务,进而完成副本补齐任务。若已经下发副本补齐任务的下线节点/磁盘再次上线,则执行冗余副本清理。
为实现数据块级副本补齐,需要依赖每个块中存储的信息区CRC校验码与基于数据区数据生成的CRC校验码。利用主动巡检机制,或被动检测机制,来判断基于数据区数据生成的CRC校验码与信息区CRC校验码是否相符,不相符则判定为异常块(也称脏块),需要启用副本数据执行块数据补齐,并在数据补齐完成后删除脏块。
由于单个数据块大小通常为64MB/128MB,对于常用的KB级别的文件,一个数据块可以存储上万条文件,因此,解决了以单条数据为基础进行副本存储时,副本补齐扫描数据慢的问题,从而加快了扫描速度,提高了发现损坏数据的速度,加快了修复数据的速度,保障了数据安全性。
在实际应用中,对于副本数据的处理,集群中的节点可以通过预置的不同子模块执行。例如,表1示例性的给出了节点包括的主要子模块。如表1所示,每个节点均可以包括:副本补齐任务生成子模块(子模块编号为PD-009-001)、副本补齐任务执行子模块(子模块编号为PD-009-002)、冗余副本数据清理子模块(子模块编号为PD-009-003)和数据块副本补齐任务子模块(子模块编号为PD-009-004),其在节点中均属于关键模块。
可以理解的是,在本申请实施例中,各子模块名称是基于其能够实现的功能命名的,相应的子模块编号是根据实际情况定义的,此处不再赘述。
表1
子模块编号 | 子模块名称 | 是否关键模块 |
PD-009-001 | 副本补齐任务生成子模块 | 是 |
PD-009-002 | 副本补齐任务执行子模块 | 是 |
PD-009-003 | 冗余副本数据清理子模块 | 是 |
PD-009-004 | 数据块副本补齐任务子模块 | 是 |
其中,副本补齐任务生成子模块、副本补齐任务执行子模块和冗余副本数据清理子模块用于实现节点级和/或磁盘级的副本补齐任务,数据块副本补齐任务子模块用于实现数据块级的副本补齐任务。
在上述内容的基础上,下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图6为本申请提供的数据处理方法实施例一的流程示意图。该方法以集群中的主节点为执行主体进行解释说明。如图6所示,该数据处理方法可以包括如下步骤:
S601、获取集群中各个节点上报的对象状态信息,该对象状态信息包括:节点状态信息和所属节点上每个块设备的状态信息。
在本申请的实施例中,集群中各个节点可以向主节点上报自身的对象状态信息,该对象状态信息可以包括节点状态信息和所属节点上每个块设备的状态信息。也即,在本实施例中,对象是指节点和节点上的各磁盘等块设备。
可以理解的是,在本实施例中,集群中的主节点也可以称为集群中的Leader节点,其是采用LVS技术从多个节点中确定出的作为管理和调度角色的一个节点。
具体的,各个节点的存储服务向自身的管理服务心跳上报节点的在线状态以及每个块设备在线状态,这样各个节点的管理服务可以将自身节点的对象状态信息上报给集群中的主节点,由主节点根据各个节点上报的对象状态信息确定是否需要执行副本补齐方案。
S602、根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及目标节点上的离线对象。
其中,该离线对象至少包括如下一种:离线节点、在线节点上的离线块设备。
可选的,当集群中的从节点或者节点上的某个块设备下线时,主节点便可以基于节点上报的对象状态信息感知到节点的状态异常,便可以将该节点定义为目标节点。因而,在本实施例中,目标节点上的离线对象既可以指处于离线状态的离线节点,也可以指在线节点上处于离线状态的离线块设备,还可以指离线节点和该离线节点上的离线块设备。
S603、将目标节点上离线对象的离线信息添加至目标节点的状态变迁表中。
在本实施例中,该状态变迁表用于记录离线对象的标识、离线对象的离线时间点、是否针对每个离线对象生成副本任务。
可选的,主节点中预置有状态变迁表,利用该状态变迁表记录目标节点上的离线对象的离线信息。
具体的,在主节点感知到节点下线时,将该节点确定为离线节点,并在该状态变迁表中记录一条离线节点记录;同样,当节点上的块设备离线时,则将该块设备确定为离线块设备,并在状态变迁表中记录一条离线块设备记录。也即,该状态变迁表中记录有离线节点和/或离线块设备的标识(Identitydocument,ID)、离线节点和/或离线块设备的离线时间点(指系统当前时间)、是否针对离线节点和/或离线块设备已生成副本补齐任务等。
可以理解的是,若状态变迁表中已经存在同样的离线节点记录和/或离线块设备记录,则无需在该状态变迁表中重复添加。
S604、在目标节点上离线对象的离线时长大于离线阈值时,生成针对该目标节点的副本补齐任务。
在实际应用中,主节点的管理服务可以定时检测状态变迁表,若目标节点上离线对象的离线时长超过离线阈值,即,离线对象离线超过预设的离线阈值时,离线对象(离线节点和/或离线块设备)仍未上线,则生成一条针对该目标节点的副本补齐任务。可选的,该离线补齐任务中具有唯一的任务ID(任务ID保持唯一,由时间戳+随机码生成)、任务类型(节点任务、块设备任务)、离线对象标识(离线节点ID和/或离线块设备ID)、任务生成时间、任务状态(未下发、下发中、已下发)、待下发节点列表、各节点下发状态等。
可以理解的是,在生成副本补齐任务时,若状态变迁表中既有同一个块设备的离线记录,也有该块设备所在节点的节点离线记录。若二者需要同时生成副本补齐任务,则可以不生成针对该块设备的副本补齐任务,仅生成该块设备所在节点的副本补齐任务。
本申请实施例提供的数据处理方法,主节点通过获取集群中各个节点上报的对象状态信息,并根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及该目标节点上的离线对象,将该目标节点上离线对象的离线信息添加至目标节点的状态变迁表中,在目标节点上离线对象的离线时长大于离线阈值,则生成针对该目标节点的副本补齐任务。该技术方案,主节点可以及时确定出状态异常的节点,并及时生成针对该节点的副本补齐任务,为后续副本补齐任务的执行奠定了基础,提供了数据补齐效率。
可选的,在上述实施例的基础上,图7为本申请提供的数据处理方法实施例二的流程示意图。如图7所示,该数据处理方法还可以包括如下步骤:
S701、将目标节点的副本补齐任务添加至集群副本补齐任务表中,并更新目标节点的状态变迁表。
在本实施例中,主节点在生成针对目标节点的副本补齐任务时,便可以将该副本补齐任务插入到主节点的集群数据库中的集群副本补齐任务表中,并及时更新目标节点的状态变迁表,以便后续可以及时实现副本补齐任务的下发。
S702、通过周期性扫描集群副本补齐任务表,确定目标节点上离线对象的状态信息是否发生变化。
可选的,为了避免集群中出现副本冗余,主节点将生成的针对目标节点的副本补齐任务添加至集群副本补齐任务表中,还可以定时检测该集群副本补齐任务表,判断目标节点上离线对象的状态信息是否发生变化,并根据判断结果执行后续任务
作为一种示例,若目标节点上离线对象的离线时长未超过离线阈值,即主节点的管理服务检测到目标节点或目标节点上离线块设备在预设的离线阈值内上线,则可以直接删除状态变迁表中的离线记录,而无需执行下发针对该目标节点的副本补齐任务。
S703、在确定目标节点上离线对象的状态信息未发生变化时,向集群中的所有在线节点下发该副本补齐任务。
作为一种示例,若目标节点上离线对象的离线时长超过离线阈值,即主节点的管理服务检测到目标节点上的离线对象在预设的离线阈值内未上线,则可以将该目标节点的副本补齐任务下发至集群中的所有在线节点,以使在线节点各自执行自检测,从而确定自身是否需要执行副本补齐。
在实际应用中,副本补齐任务的下发是指主节点的管理服务定时扫描集群副本补齐任务表,在确定目标节点上离线对象的状态信息在离线阈值对应的时间段内未发生变化时,则向集群中的所有在线节点的存储服务下发该副本补齐任务。
相应的,在上述S703之后,该方法还可以包括如下步骤:
S704、判断副本补齐任务是否成功下发至该集群中的所有在线节点;若是,执行S705;若否,执行S706。
在本实施例中,主节点可以根据副本补齐任务的下发情况,执行不同的流程。例如,首先判断副本补齐任务是否成功下发至该集群中的所有在线节点。
S705、将副本补齐任务的状态设置为已下发。
作为一种示例,在确定副本补齐任务成功下发至该集群中的所有在线节点时,表明该集群中的所有在线节点均接收到了该副本补齐任务,此时,便可以将副本补齐任务的状态设置为已下发。
S706、判断副本补齐任务是否成功下发至该集群中的部分在线节点;若是,执行S707;若否,执行S708。
作为另一种示例,若主节点确定副本补齐任务并没有成功下发至该集群中的所有在线节点,这时可以判断副本补齐任务是否成功下发至该集群中的部分在线节点。
S707、将副本补齐任务的状态设置为下发中。
可选的,在确定副本补齐任务成功下发至该集群中的部分在线节点时,表明该集群中有的在线节点接收到了该副本补齐任务,但该集群中有的在线节点并未接收到该副本补齐任务,因而,可以将副本补齐任务的状态设置为下发中。
S708、将副本补齐任务的状态设置为未下发。
可选的,在副本补齐任务未成功下发至集群中的任意一个在线节点时,表明该集群中的所有在线节点并未接收到该副本补齐任务,因而,可以将副本补齐任务的状态设置为未下发。
由上述S704至S708可知,若主节点的管理服务向各节点的存储服务下发副本补齐任务时,若成功下发至所有的在线节点,则将该副本补齐任务的状态置为“已下发”;若只成功下发至部分在线节点,则将该副本补齐任务的状态置为“下发中”;若该副本补齐任务下发在所有在线节点时均失败,则保持该副本补齐任务的状态置为“未下发”。
本申请实施例提供的数据处理方法,主节点在生成目标节点的副本补齐任务时,可以将该副本补齐任务添加至集群副本补齐任务表中,并更新该目标节点的状态变迁表,随后便可以通过周期性扫描集群副本补齐任务表,确定目标节点上离线对象的状态信息是否发生变化,在确定目标节点上离线对象的状态信息未发生变化时,向集群中的所有在线节点下发该副本补齐任务,相应的,可以根据副本补齐任务成功下发至集群中的在线节点的状态,设置副本补齐任务的状态。该技术方案中,主节点能够有效管理副本补齐任务的下发情况,为后续副本的管理和处理奠定了基础。
进一步的,在上述实施例的基础上,图8为本申请提供的数据处理方法实施例三的流程示意图。如图8所示,该数据处理方法还可以包括如下步骤:
S801、通过周期性扫描目标节点的状态变迁表,检测目标节点上的离线对象是否再次上线;若是,执行S802;若否,继续执行S801;
可选的,主节点的管理服务可以定时扫描目标节点的状态变迁表,判断该目标节点上的离线对象是否再次上线。当目标节点上的离线对象(离线节点和/或离线块设备)再次上线时,可以确定副本补齐任务的所处的状态,例如,是否生成,生成后是否下发,并根据副本补齐任务的所处的状态,执行后续操作。
作为一种示例,若主节点确定目标节点上的离线对象没有再次上线,则继续检测,否则,判断是否生成针对该目标节点的副本补齐任务。
S802、根据目标节点对应状态变迁表中的信息,确定目标节点是否已生成副本补齐任务;若是,执行S803;若否,执行S807。
示例性的,若主节点确定目标节点上的离线对象再次上线,则可以通过查询目标节点对应状态变迁表,根据该目标节点对应状态变迁表中的信息,判断副本补齐任务是否已生成。若目标节点的状态变迁表中的“是否已生成副本任务”为“是”,则可能需要进行冗余副本数据清理流程,即执行S803。若目标节点的状态变迁表中的“是否已生成副本任务”为“否”,则执行下述S807。
S803、确定副本补齐任务的下发状态。
作为一种示例,在确定目标节点已生成副本补齐任务时,此时需要确定副本任务的下发状态,并根据该下发状态后续操作。
作为一种示例,在确定副本补齐任务的下发状态为已下发时,执行S804;
S804、生成针对目标节点的副本清理任务。
作为另一种示例,在确定副本补齐任务的下发状态为未下发时,执行S805;
S805、删除目标节点生成的该副本补齐任务并删除目标节点对应状态变迁表中的该离线对象的离线信息。
作为再一种示例,在确定副本补齐任务的下发状态为下发中时,执行S806;
S806、停止副本补齐任务的下发,生成针对该目标节点的副本清理任务,删除目标节点生成的该副本补齐任务以及删除目标节点对应状态变迁表中的离线对象的离线信息。
S807、删除目标节点对应状态变迁表中的离线对象的离线信息。
示例性的,若目标节点的状态变迁表中的“是否已生成副本任务”为“否”,则表示主节点暂未生成针对目标节点的副本补齐任务,此时不需要进行副本清理,直接删除该状态变迁表中的记录即可。
示例性的,在上述S804或S806之后,所述方法还包括:
S808、向目标节点下发副本清理任务。
S809、在确定该副本清理任务下发成功时,删除目标节点对应状态变迁表中该离线对象的离线信息。
可选的,在确定副本补齐任务的下发状态为已下发或下发中时,此时需要进行冗余副本的清理工作。
具体的,主节点生成针对目标节点的副本清理任务,并将该副本清理任务下发至目标节点,例如,由leader节点的管理服务向目标节点的存储服务下发一条副本清理任务,下发成功后,主节点的管理服务可以删除状态变迁表中的针对该离线对象的离线信息。
本申请提供的数据处理方法,主节点通过周期性扫描目标节点的状态变迁表,检测目标节点上的离线对象是否再次上线,在确定目标节点上的离线对象再次上线时,根据目标节点对应状态变迁表中的信息,确定目标节点是否已生成副本补齐任务,在确定目标节点已生成副本补齐任务时,确定副本补齐任务的下发状态,并根据副本补齐任务的下发状态确定是否需要生成副本清理任务。该技术方案中,在目标节点上的离线对象再次上线时,能够及时停止副本补齐任务的执行,进一步的,在已经下发副本补齐任务时,还能够生成副本清理任务,从而及时清除掉冗余副本,在保证数据安全的基础上,避免了冗余副本占据存储空间的问题。
可选的,图9为本申请提供的数据处理方法实施例四的流程示意图。该方法以集群中的备节点为执行主体进行解释说明。如图9所示,该数据处理方法可以包括如下步骤:
S901、接收主节点下发的副本补齐任务,该副本补齐任务携带任务状态、离线对象的标识。
在本实施例中,当主节点下发副本补齐任务后,集群中的各个在线节点均可以接收主节点下发的副本补齐任务,例如,备节点的管理服务接收主节点下发的副本补齐任务,并将其传输给该备节点的存储服务。可选的,该存储服务可以基于该副本补齐任务在本地数据库的副本补齐任务表中插入一条副本补齐任务。
可以理解的是,该副本补齐任务携带的除主节点下发的任务状态、离线对象的标识等信息外,还需要增加一列值“当前扫描块表位置”,该位置初始为空,这样备节点在下次扫描时可以从当前扫描块表位置开始扫描。
可选的,在本实施例中,备节点在接收主节点下发的副本补齐任务之后,还可以周期性检测该副本补齐任务对应的离线对象是否再次上线,若确定该副本补齐任务对应的离线对象再次上线,则停止该副本补齐任务的执行,并将该副本补齐任务的任务状态变更为已终止。
具体的,各个备节点的存储服务可以定时扫描本地的副本补齐任务表,由于各个副本补齐任务携带有任务状态(未执行或执行中或已执行或已终止),因而,在每次扫描执行副本补齐任务的过程中,一旦发现目标节点上的离线对象上线,则停止副本补齐任务的执行,并将副本补齐任务的任务状态置为“已终止”。
S902、通过扫描当前节点的块表,确定该块表中是否存在对象标识与该副本补齐任务中离线对象的标识一致。
在实际应用中,每个节点均具有一个块表,该块表中记录有与其存储的副本相匹配的其他副本所在的节点的标识,因而,备节点可以通过扫描自身中的块表,可以判断该块表中是否存在对象标识与该副本补齐任务中离线对象的标识一致,也即,该块表中对象标识中存储副本的其他配对副本是否丢失。
可选的,在S902之前,可以将副本补齐任务存储至当前节点的副本补齐任务表中,根据该副本补齐任务表中每条副本补齐任务的任务状态,确定该副本补齐任务表中每条副本补齐任务的执行顺序。
具体的,节点的存储服务可以一次获取副本补齐任务表中所有副本补齐任务的任务状态,并优先执行状态为“执行中”的副本补齐任务。若同时获取到多个任务状态为“未执行”的副本补齐任务,则在扫描副本补齐任务表的过程中同时执行这多个副本补齐任务,进而避免块表的重复扫描。
S903、在确定该块表中存在对象标识与副本补齐任务中离线对象的标识一致时,生成针对副本补齐任务的数据块复制任务。
其中,该数据块复制任务携带源数据块的标识。
可选的,若当前备节点确定其块表中存在对象标识与副本补齐任务中离线对象的标识一致,即上述副本补齐任务对应节点上离线对象中丢失的数据可以利用该节点的数据块复制任务得到。所以,在本实施例中,该节点可以生成针对该副本补齐任务的数据块复制任务。
可以理解的是,备节点开始执行副本补齐任务后,其存储服务便扫描本地的块表,若该块表中记录的主块和/或备块的对象标识(节点ID和/或设备ID)与副本补齐任务中的离线对象的标识(离线节点ID和/设备ID)一致,则生成一条数据块复制任务。在整个块表扫描完毕后,将该副本补齐任务的任务状态更新为“已完成”。
S904、执行该数据块复制任务。
在本实施例中,备节点生成针对副本补齐任务的数据复制任务时,便可以执行该数据块复制任务。
示例性的,备节点可以根据当前节点所属的虚拟组,确定该数据块复制任务的目的节点,该虚拟组是存储副本数据的主节点和备节点的组合,利用该当前节点中的数据服务实例,将源数据块中的副本数据复制到目的节点中。
可选的,备节点首先需要选择副本补齐的目的节点。即,该备节点的存储服务生成的数据块复制任务和节点中数据复制模块生成的异步复制任务相同。在选择数据块复制任务的目的节点时,首先根据本机记录的最新VG组来进行选择。例如,若副本所在的数据块中记录的VG号为1000,则在选择复制副本的目标节点时,首先选择当前记录的第1000个VG组中的主备节点。若所选出的主备节点中不包括副本的源节点,则将当前主节点定为复制副本的目的节点;若所选出的主备节点中包括副本的源节点,则将剩余的主节点或备节点定为目复制副本的目的节点。
可以理解的是,不管是节点级副本补齐,还是块设备级副本补(磁盘级副本补齐),仅需要选择数据补齐的目的节点,对目的设备不做限制,目的设备的选择由当前节点的写数据模块决定。
在实际应用中,当前备节点生成数据块复制任务后,可以由当前备节点具有的各个数据服务实例定时扫描执行。为了避免多个数据服务实例之间执行同一个数据块复制任务发生冲突,各个数据服务实例仅负责执行自身所管理的块设备的任务,并在数据块复制任务完成后,删除该数据块复制任务。
本申请实施例提供的数据处理方法,集群中的备节点可以接收主节点下发的副本补齐任务,通过扫描当前节点的块表,确定该块表中是否存在对象标识与该副本补齐任务中离线对象的标识一致,若是,则生成针对副本补齐任务的数据块复制任务,并执行该数据块复制任务。该技术方案中,集群中的备节点能够实现丢失副本的补齐,保证了数据安全性,提供了系统稳定性。
示例性的,在上述图9所示实施例的基础上,图10为本申请提供的数据处理方法实施例五的流程示意图。如图10所示,该数据处理方法还可以包括如下步骤:
S1001、接收主节点下发的副本清理任务,该副本清理任务携带待清理数据块的标识。
可选的,在本申请的实施例中,主节点的管理服务会定时扫描状态变迁表,在离线对象再次上线,且状态变迁表中显示已经针对该离线对象生成了副本补齐任务,这时,主节点会向下发副本补齐任务的节点下发副本清理任务,这时,备节点可以向本地数据库插入一条副本清理任务。
可选的,该副本清理任务中记录有当前节点扫描的块表位置,块表的初始位置为空,若该副本清理任务针对的是块设备,则该副本清理任务中还记录有块设备的ID。
S1002、根据待清理数据块标识和当前节点的块表,确定出待清理数据块的配对块信息。
其中,该配对块信息包括:本地数据块的标识和配对节点上的对端数据块的标识。
在本实施例中,备节点的存储服务根据副本清理任务遍历扫描本地块表,确定出该副本清理任务对应的待清理数据块标识,并根据块表中记录的配对块信息向其对端数据块(主块和/或副块)所在的节点进行查询,获取对端数据块所在节点的配对块信息,例如,对端数据块所在节点中记录的该本地数据块的标识和配对节点上的对端数据块的标识。
S1003、根据该配对块信息,通过与配对节点进行交互,确定本地数据块是否为该对端数据块的当前配对块。
可选的,备节点在确定出待清理数据块的配对块信息后,可以向配对节点发送查询请求,以使配对节点确定“本地数据块是否为该对端数据块的当前配对块”,并根据判断结果确定后续操作。可选的,在确定本地数据块是对端数据块的当前配对块时,确定本地数据块不是冗余块。
可以理解的是,针对块表中的某个数据块,若在查询过程中遇到查询失败的情况,例如,配对节点不在线、配对节点的数据库异常,则首先进行多次重试,若重试仍失败,则跳过该本地数据块,并将失败的本地数据块的标识添加到副本清理任务失败记录表中,从而解决由于部分失败数据块导致的存储服务反复扫描的块表问题。
S1004、在确定本地数据块不是对端数据块的当前配对块时,确定本地数据块为待清理数据块。
可选的,在备节点顺序扫描块表的过程中,若确定本地数据块不是对端数据块的当前配对块,则说明该本地数据块为冗余块,即该本地数据块为待清理数据块。
S1005、将本地数据块的状态设置为待删除,并向当前节点的异常块表中添加一条待删除记录。
对于确定为待清理数据块的本地数据块,备节点可以将该本地数据块的状态设置为“待删除”,但存储服务不直接修改块表,而是向另外的异常块表中记录一条待删除记录,以在后续再进行一次确认,以保证数据的安全性。
可以理解的是,备节点在顺序扫描块表中的所有数据块后,备节点的存储服务可以删除本地块表中的副本清理任务记录。
进一步的,如图10所示,在本实施例中,在上述S1005之后,该方法还可以包括如下步骤:
S1006、通过定时扫描异常块表,确定该异常块表中存在的待删除记录。
在本实施例中,备节点的各个数据服务实例可以定时扫描该备节点上的异常块表,并查看异常块表中是否有待删除记录,即确定该备节点是否有待删除任务需要执行。
S1007、在确定该待删除记录中的数据块为冗余块时,从当前节点的块表中清除该冗余块的索引信息,并删除当前节点上冗余块中数据。
可选的,对于异常块表中的待删除记录,备节点为了保证数据安全性,可以再向配对节点发送一次查询请求,以使得该配对节点确认待删除记录中的数据块是否为冗余块。
作为一种示例,在确定该待删除记录中的数据块为冗余块时,首先清理该数据块中存储的数据对应的数据库索引,即从当前节点的块表中清除该冗余块的索引信息,再删除该数据块,即删除了当前节点上冗余块中数据。删除完成后,冗余副本数据清理完毕。
本申请实施例提供的数据处理方法,集群中的备节点可以接收主节点下发的副本清理任务,根据待清理数据块标识和当前节点的块表,确定出待清理数据块的配对块信息,根据该配对块信息,通过与配对节点进行交互,确定本地数据块是否为该对端数据块的当前配对块,若否,则确定本地数据块为待清理数据块,这时将本地数据块的状态设置为待删除,并向当前节点的异常块表中添加一条待删除记录,进一步的,还可以通过定时扫描异常块表,确定该异常块表中存在的待删除记录,并确定该待删除记录中的数据块为冗余块时,再从当前节点的块表中清除该冗余块的索引信息,并删除当前节点上冗余块中数据。该技术方案,在节点中存在冗余副本时,在保证数据安全性的基础上,可以及时删除冗余数据,保证了节点中存储空间中利用效率。
示例性的,在上述图9或图10所示实施例的基础上,图11为本申请提供的数据处理方法实施例六的流程示意图。如图11所示,该数据处理方法还可以包括如下步骤:
S1101、根据当前节点中的块表,周期性检测当前节点中已使用的数据块是否存在异常块;若是,执行S1102;若否,执行S1101。
在实际应用中,由备节点上的各个数据服务实例来管理各自块设备中的块,因此,数据块的数据丢失、损坏、副本补齐都需要由数据服务进行发现并及时执行。
可选的,备节点上的数据服务判断数据块是否为异常块(也称为坏块)的方式主要有两种,一种是主动巡检各个数据库进行数据校验,一旦发现某个数据块中记录的CRC校验码与根据数据计算出的CRC校验码不符,则认定为该数据块为坏块,该种方式能够及时发现异常的数据块;另一种是被动发现,在每次读数据时对单条数据的数据区进行CRC校验,对于校验失败的块认定为坏块,这种方式可能存在发现不及时的问题。
S1102、对于当前节点中的异常块,查询该当前节点的块表,确定异常块的对端块。
可选的,备节点可以将确定的异常块的信息添加至节点上的异常块表中,这样,备节点在后续可以巡检异常块表,然后针对该异常块表中的每条异常记录,分别确定出是否为异常块。
对于异常块表中的每条异常记录,备节点首先可以查询当前节点的块表,首先确定出该异常块的对端块,即配对块,然后再判断该异常块是否确实存在异常。
S1103、通过与对端块所在的节点进行交互,确定对端块的匹配块是否为该异常块;若否,执行S1104;若是,执行S1105。
示例性的,该备节点在确定出异常块的对端块时,在对端块所在的节点侧,判断对端块的匹配块是否为该异常块,并将判断结果传输给异常块所在的备节点。
S1104、确定异常块已无效并删除该异常块。
作为一种示例,在对端块的匹配块不是异常块时,备节点向对端块所在的节点查询该异常块的信息,若对端块记录的配对块不是该异常块,则可以认为该异常块中的数据已无效,可以直接将坏块删除,且从坏块表中删除,从而清除异常块中的数据,释放该异常块中数据占据的空间。
S1105、通过与该对端块的所在的节点进行交互,将该对端块中的数据复制到当前节点中的一个新数据块中。
作为一种示例,在对端块的匹配块是该异常块时,即对端块记录的配对块确实为本异常块,则向对端块所在的节点发送数据复制请求,以请求复制该对端块中的数据。同时,在该备节点的本地打开一个新的数据块,遵循数据块异步复制相同的规则,将对端块中的数据复制到上述新打开的数据块中。
S1106、更新当前节点中块表的索引信息,并向对端块的所在的节点发送索引更新请求,该索引更新请求用于指示对端块所在的节点更新块表中的索引信息。
可选的,当备节点从对端块所在的节点,将对端块中的数据成功复制到该备节点时,可以更新该备节点上块表中的索引信息,并在更新成功后,向对端块所在的节点发送索引更新请求,进而修改对端块所在节点上块表中记录的配对块的信息。
可以理解的是,在上述的任意一个步骤失败时,则跳过该异常块,等待下一轮巡检。
本申请实施例提供的数据处理方法,备节点根据当前节点中的块表,周期性检测当前节点中已使用的数据块是否为异常块,对于当前节点中的异常块,查询当前节点的块表,确定异常块的对端块,并通过与对端块所在的节点进行交互,确定对端块的匹配块是否为该异常块,若否,确定该异常块已无效并删除该异常块,若是,通过与对端块的所在的节点进行交互,将对端块中的数据复制到当前节点中的一个新数据块中,更新当前节点中块表的索引信息,并向对端块的所在的节点发送索引更新请求,以指示对端块所在的节点更新块表中的索引信息。该技术方案,能够及时发现损坏的数据块并进行修复,保证了数据的安全性。
示例性的,在上述图11所示实施例的基础上,图12为本申请提供的数据处理方法实施例七的流程示意图。如图12所示,上述S1101可以通过如下步骤实现:
S1201、对于每个已使用的数据块,获取该数据块中的主信息区数据。
在本实施例中,备节点针对本地块表中的每个已使用的数据块,打开该数据块后,便可以读取该数据块中主信息区数据。
S1202、对该主信息区数据进行循环冗余校验,得到第一循环冗余校验值。
示例性的,备节点可以针对每个已使用的数据块,对主信息区数据进行循环冗余校验(cyclic redundancy check,CRC),计算该主信息区数据的CRC校验值,得到第一循环冗余校验值。本申请实施例保护通过CRC校验确定主信息区的数据是否异常的方案,进而确定该主信息区所在的数据块是否异常的方案。
S1203、判断该第一循环冗余校验值与数据块中记录的第二循环冗余校验值是否一致;若否,执行S1204;若是,执行S1205。
S1204、确定数据块为异常块。
在本实施例中,在第一循环冗余校验值与数据块中记录的第二循环冗余校验值不一致时,表示主信息区数据可能出现了异常,因而,可以将该数据块确定为异常块,以便后续进行再次确认,从而可以在确定该数据块异常时,执行上述图10所示实施例的方案。
S1205、根据数据块中数据区的存储数据和每条数据的循环冗余校验值,确定数据块是否为异常块。
在本实施例中,在第一循环冗余校验值与数据块中记录的第二循环冗余校验值一致时,表示主信息区数据中的正常,可以继续向后校验数据区。具体的,可以根据数据块中数据区的存储数据和每条数据的循环冗余校验值,判断该数据块是否为异常块。
示例性的,该S1205可以通过如下步骤实现:
对于按照先后顺序从数据块的数据区中读取的每条数据,基于预设规则对该数据进行循环冗余校验,得到第三循环冗余校验值;判断该第三循环冗余校验值与数据区中记录的该数据的循环冗余校验值是否一致,若否,则确定该数据块为异常块,若是,则依次对剩余的数据进行校验,直到确定该数据块为异常块,或者该数据区的所有数据均通过校验。
具体的,对于数据区的校验,备节点顺序读取数据区的每条数据,按照预设规则(例如,预设规则为取该数据的前30字节+末尾30字节,计算CRC校验值)计算该条数据的CRC校验值,并将其与该数据区中记录的CRC校验值进行比较,若一致,则检查下一条数据;若不一致,则认定该数据块为异常块,并将其放入异常块表中。
可选的,当单个数据块中所有数据都校验通过后,关闭该数据块,并打开块列表中下一个数据块,执行以上步骤,当块列表中所有块校验完毕后,等待一个循环间隔时间,开始下一轮巡检。
本申请实施例提供的数据处理方法,对于每个已使用的数据块,获取该数据块中的主信息区数据,对该主信息区数据进行循环冗余校验,得到第一循环冗余校验值,在第一循环冗余校验值与数据块中记录的第二循环冗余校验值不一致时,可以确定该数据块为异常块,否则,根据数据块中数据区的存储数据和每条数据的循环冗余校验值,确定数据块是否为异常块。该技术方案中,备节点可以主动对数据块巡检,能够及时发现异常块,为异常数据的快速修复,奠定了基础。
综上所述,本申请实施例提供的路由块表生成方式,数据模数相对较小,能够使得数据按照数据块分离存储,因而,基于数据块的数据存储策略提出的数据处理方法,能够快速发现节点上的副本丢失,进而能够及时进行数据副本补齐,提升了数据安全性。在实际应用中,由于单个数据块大小通常为64MB/128MB,对于常用的KB级别的文件,一个数据块可以存储上万条文件,因此,该技术方案很好的解决了现有以单条数据为基础为副本进行存储时,存在的副本补齐扫描数据慢的问题,本申请的技术方案,以数据块为粒度,加快了扫描速度,进而加快了发现损坏数据的速度,为更快速的修复数据奠定了基础,保障了数据安全性。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图13为本申请实施例提供的数据处理装置实施例一的结构示意图。如图13所示,该数据处理装置可以包括:
获取模块1301,用于获取集群中各个节点上报的对象状态信息,所述对象状态信息包括:节点状态信息和所属节点上每个块设备的状态信息;
处理模块1302,用于根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及所述目标节点上的离线对象,以及将所述目标节点上离线对象的离线信息添加至所述目标节点的状态变迁表中,所述离线对象至少包括如下一种:离线节点、在线节点上的离线块设备,所述状态变迁表用于记录离线对象的标识、离线对象的离线时间点、是否针对每个离线对象生成副本任务;
生成模块1303,用于在所述目标节点上离线对象的离线时长大于离线阈值时,生成针对所述目标节点的副本补齐任务。
在本申请实施例的一种可能设计中,处理模块1302,还用于:
将所述目标节点的副本补齐任务添加至集群副本补齐任务表中,并更新所述目标节点的状态变迁表;
通过周期性扫描所述集群副本补齐任务表,确定所述目标节点上离线对象的状态信息是否发生变化;
可选的,该装置还可以包括:发送模块1304。
该发送模块1304,用于在确定所述目标节点上离线对象的状态信息未发生变化时,向所述集群中的所有在线节点下发所述副本补齐任务。
可选的,处理模块1302,还用于在发送模块1304向所述集群中的所有在线节点下发所述副本补齐任务之后,确定所述副本补齐任务是否成功下发至所述集群中的所有在线节点,在所述副本补齐任务成功下发至所述集群中的所有在线节点时,将所述副本补齐任务的状态设置为已下发,在所述副本补齐任务成功下发至所述集群中的部分在线节点时,将所述副本补齐任务的状态设置为下发中,以及在所述副本补齐任务未成功下发至所述集群中的任意一个在线节点时,将所述副本补齐任务的状态设置为未下发。
可选的,处理模块1302,还用于:
通过周期性扫描所述目标节点的状态变迁表,检测所述目标节点上的离线对象是否再次上线;
在确定所述目标节点上的离线对象再次上线时,根据所述目标节点对应状态变迁表中的信息,确定所述目标节点是否已生成副本补齐任务;
在确定所述目标节点已生成副本补齐任务时,确定所述副本补齐任务的下发状态;
生成模块1303,还用于在所述副本补齐任务的下发状态为已下发时,生成针对所述目标节点的副本清理任务;
处理模块1302,还用于:
在所述副本补齐任务的下发状态为下发中时,停止所述副本补齐任务的下发,生成针对所述目标节点的副本清理任务,删除所述目标节点生成的所述副本补齐任务以及删除所述目标节点对应状态变迁表中的所述离线对象的离线信息;
在所述副本补齐任务的下发状态为未下发时,删除所述目标节点生成的所述副本补齐任务并删除所述目标节点对应状态变迁表中的所述离线对象的离线信息;
在确定所述目标节点未生成副本补齐任务时,删除所述目标节点对应状态变迁表中的所述离线对象的离线信息。
可选的,发送模块1304,还用于在所述生成模块生成针对所述目标节点的副本清理任务之后,向所述目标节点下发所述副本清理任务;
处理模块1302,还用于在确定所述副本清理任务下发成功时,删除所述目标节点对应状态变迁表中所述离线对象的离线信息。
本申请实施例提供的装置,可用于执行上述方法实施例中的主节点的技术方案,其实现原理和技术效果类似,在此不再赘述。
图14为本申请实施例提供的数据处理装置实施例二的结构示意图。如图14所示,该数据处理装置可以包括:
接收模块1401,用于接收主节点下发的副本补齐任务,所述副本补齐任务携带任务状态、离线对象的标识;
判断模块1402,用于通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致;
处理模块1403,用于在确定所述块表中存在对象标识与所述副本补齐任务中离线对象的标识一致时,生成针对所述副本补齐任务的数据块复制任务,所述数据块复制任务携带源数据块的标识,并执行所述数据块复制任务。
在本申请实施例的一种可能设计中,处理模块1403,还用于在所述判断模块通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致之前,将所述副本补齐任务存储至所述当前节点的副本补齐任务表中,根据所述副本补齐任务表中每条副本补齐任务的任务状态,确定所述副本补齐任务表中每条副本补齐任务的执行顺序。
在本申请实施例的另一种可能设计中,判断模块1402,还用于在所述接收模块接收主节点下发的副本补齐任务之后,周期性检测所述副本补齐任务对应的离线对象是否再次上线;
处理模块1403,还用于在确定所述副本补齐任务对应的离线对象再次上线时,停止所述副本补齐任务的执行,并将所述副本补齐任务的任务状态变更为已终止。
在本申请实施例的另一种可能设计中,处理模块1403,用于执行所述数据块复制任务,具体为:
处理模块1403,具体用于:
根据所述当前节点所属的虚拟组,确定所述数据块复制任务的目的节点,所述虚拟组是存储副本数据的主节点和备节点的组合;
利用所述当前节点中的数据服务实例,将所述源数据块中的副本数据复制到所述目的节点中。
在本申请实施例的再一种可能设计中,接收模块1401,还用于接收所述主节点下发的副本清理任务,所述副本清理任务携带待清理数据块的标识;
处理模块1403,还用于根据所述待清理数据块标识和所述当前节点的块表,确定出所述待清理数据块的配对块信息,所述配对块信息包括:本地数据块的标识和配对节点上的对端数据块的标识;
判断模块1402,还用于根据所述配对块信息,通过与所述配对节点进行交互,确定所述本地数据块是否为所述对端数据块的当前配对块;
处理模块1403,还用于在确定所述本地数据块不是所述对端数据块的当前配对块时,确定所述本地数据块为所述待清理数据块,以及将所述本地数据块的状态设置为待删除,并向所述当前节点的异常块表中添加一条待删除记录。
可选的,处理模块1403,还用于在将所述本地数据块的状态设置为待删除,并向所述当前节点的异常块表中添加一条待删除记录之后,通过定时扫描所述异常块表,确定所述异常块表中存在的待删除记录;
判断模块1402,还用于确定所述待删除记录中的数据块是否为冗余块;
处理模块1403,还用于在确定所述待删除记录中的数据块为冗余块时,从所述当前节点的块表中清除所述冗余块的索引信息,并删除所述当前节点上所述冗余块中数据。
在本申请实施例的又一种可能设计中,判断模块1402,还用于根据所述当前节点中的块表,周期性检测所述当前节点中已使用的数据块是否为异常块;
处理模块1403,还用于对于所述当前节点中的异常块,查询所述当前节点的块表,确定所述异常块的对端块;
判断模块1402,还用于通过与所述对端块所在的节点进行交互,确定所述对端块的匹配块是否为所述异常块;
处理模块1403,还用于:
在所述对端块的匹配块不是所述异常块时,确定所述异常块已无效并删除所述异常块;
在所述对端块的匹配块是所述异常块时,通过与所述对端块的所在的节点进行交互,将所述对端块中的数据复制到当前节点中的一个新数据块中;
更新所述当前节点中块表的索引信息,并向所述对端块的所在的节点发送索引更新请求,所述索引更新请求用于指示所述对端块所在的节点更新块表中的索引信息。
可选的,处理模块1403,还用于:
对于每个已使用的数据块,获取所述数据块中的主信息区数据;
对所述主信息区数据进行循环冗余校验,得到第一循环冗余校验值;
在所述第一循环冗余校验值与所述数据块中记录的第二循环冗余校验值不一致时,确定所述数据块为异常块;
在所述第一循环冗余校验值与所述数据块中记录的第二循环冗余校验值一致时,根据所述数据块中数据区的存储数据和每条数据的循环冗余校验值,确定所述数据块是否为异常块。
可选的,处理模块1403,用于根据所述数据块中数据区的存储数据和每条数据的循环冗余校验值,确定所述数据块是否为异常块,具体为:
处理模块1403,具体用于:
对于按照先后顺序从所述数据块的数据区中读取的每条数据,基于预设规则对所述数据进行循环冗余校验,得到第三循环冗余校验值;
在所述第三循环冗余校验值与所述数据区中记录的所述数据的循环冗余校验值不一致时,确定所述数据块为异常块;
在所述第三循环冗余校验值与所述数据区中记录的所述数据的循环冗余校验值一致时,依次对剩余的数据进行校验,直到确定所述数据块为异常块,或者所述数据区的所有数据均通过校验。
本申请实施例提供的装置,可用于执行上述实施例中的备节点的技术方案,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,确定模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上确定模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
图15为本申请实施例提供的计算机设备的结构示意图。如图15所示,该电子设备可以包括:处理器1501、存储器1502、收发器1503和系统总线1504。其中,存储器1502和收发器1503通过系统总线1504与处理器1501连接并完成相互间的通信,存储器1502用于存储计算机执行指令,收发器1503用于和其他设备进行通信。
作为一种示例,处理器1501执行上述计算机执行指令时实现如上述方法实施例中主节点的技术方案。
作为另一种示例,处理器1501执行上述计算机执行指令时实现如上述方法实施例中备节点的技术方案。
该图15中提到的系统总线可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(random access memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器CPU、网络处理器(networkprocessor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选的,本申请实施例还提供了一种云存储系统,该云存储系统可以包括多个节点,每个节点具有调度和管理功能;该多个节点中包括:具有副本丢失发现的主节点以及执行副本补齐的备节点。
其中,主节点可以实现上述方法实施例中的主节点的技术方案,备节点可以实现上述方法实施例中的备节点的技术方案,具体可以参见上述方法实施例,此处不再赘述。
可选的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当其在计算机上运行时,使得计算机执行如上述方法实施例中主节点的技术方案。
可选的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当其在计算机上运行时,使得计算机执行如上述方法实施例中备节点的技术方案。
可选的,本申请实施例还提供一种运行指令的芯片,所述芯片用于执行上述方法实施例中主节点的技术方案。
可选的,本申请实施例还提供一种运行指令的芯片,所述芯片用于执行如上述方法实施例中备节点的技术方案。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,至少一个处理器可以从所述计算机可读存储介质中读取所述计算机程序,所述至少一个处理器执行所述计算机程序时可实现如上述方法实施例中备节点的技术方案。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,至少一个处理器可以从所述计算机可读存储介质中读取所述计算机程序,所述至少一个处理器执行所述计算机程序时可实现如上述方法实施例中主节点的技术方案。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (18)
1.一种数据处理方法,其特征在于,包括:
获取集群中各个节点上报的对象状态信息,所述对象状态信息包括:节点状态信息和所属节点上每个块设备的状态信息;
根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及所述目标节点上的离线对象,所述离线对象至少包括如下一种:离线节点、在线节点上的离线块设备;
将所述目标节点上离线对象的离线信息添加至所述目标节点的状态变迁表中,所述状态变迁表用于记录离线对象的标识、离线对象的离线时间点、是否针对每个离线对象生成副本任务;
若所述目标节点上离线对象的离线时长大于离线阈值,则生成针对所述目标节点的副本补齐任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述目标节点的副本补齐任务添加至集群副本补齐任务表中,并更新所述目标节点的状态变迁表;
通过周期性扫描所述集群副本补齐任务表,确定所述目标节点上离线对象的状态信息是否发生变化;
在确定所述目标节点上离线对象的状态信息未发生变化时,向所述集群中的所有在线节点下发所述副本补齐任务。
3.根据权利要求2所述的方法,其特征在于,在所述向所述集群中的所有在线节点下发所述副本补齐任务之后,所述方法还包括:
确定所述副本补齐任务是否成功下发至所述集群中的所有在线节点;
在所述副本补齐任务成功下发至所述集群中的所有在线节点时,将所述副本补齐任务的状态设置为已下发;
在所述副本补齐任务成功下发至所述集群中的部分在线节点时,将所述副本补齐任务的状态设置为下发中;
在所述副本补齐任务未成功下发至所述集群中的任意一个在线节点时,将所述副本补齐任务的状态设置为未下发。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
通过周期性扫描所述目标节点的状态变迁表,检测所述目标节点上的离线对象是否再次上线;
在确定所述目标节点上的离线对象再次上线时,根据所述目标节点对应状态变迁表中的信息,确定所述目标节点是否已生成副本补齐任务;
在确定所述目标节点已生成副本补齐任务时,确定所述副本补齐任务的下发状态;
在所述副本补齐任务的下发状态为已下发时,生成针对所述目标节点的副本清理任务;
在所述副本补齐任务的下发状态为下发中时,停止所述副本补齐任务的下发,生成针对所述目标节点的副本清理任务,删除所述目标节点生成的所述副本补齐任务以及删除所述目标节点对应状态变迁表中的所述离线对象的离线信息;
在所述副本补齐任务的下发状态为未下发时,删除所述目标节点生成的所述副本补齐任务并删除所述目标节点对应状态变迁表中的所述离线对象的离线信息;
在确定所述目标节点未生成副本补齐任务时,删除所述目标节点对应状态变迁表中的所述离线对象的离线信息。
5.根据权利要求4所述的方法,其特征在于,在所述生成针对所述目标节点的副本清理任务之后,所述方法还包括:
向所述目标节点下发所述副本清理任务;
在确定所述副本清理任务下发成功时,删除所述目标节点对应状态变迁表中所述离线对象的离线信息。
6.一种数据处理方法,其特征在于,包括:
接收主节点下发的副本补齐任务,所述副本补齐任务携带任务状态、离线对象的标识;
通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致;
在确定所述块表中存在对象标识与所述副本补齐任务中离线对象的标识一致时,生成针对所述副本补齐任务的数据块复制任务,所述数据块复制任务携带源数据块的标识;
执行所述数据块复制任务。
7.根据权利要求6所述的方法,其特征在于,在所述通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致之前,所述方法还包括:
将所述副本补齐任务存储至所述当前节点的副本补齐任务表中;
根据所述副本补齐任务表中每条副本补齐任务的任务状态,确定所述副本补齐任务表中每条副本补齐任务的执行顺序。
8.根据权利要求6所述的方法,其特征在于,在所述接收主节点下发的副本补齐任务之后,所述方法还包括:
周期性检测所述副本补齐任务对应的离线对象是否再次上线;
若确定所述副本补齐任务对应的离线对象再次上线,则停止所述副本补齐任务的执行,并将所述副本补齐任务的任务状态变更为已终止。
9.根据权利要求6-8任一项所述的方法,其特征在于,所述执行所述数据块复制任务,包括:
根据所述当前节点所属的虚拟组,确定所述数据块复制任务的目的节点,所述虚拟组是存储副本数据的主节点和备节点的组合;
利用所述当前节点中的数据服务实例,将所述源数据块中的副本数据复制到所述目的节点中。
10.根据权利要求6-8任一项所述的方法,其特征在于,所述方法还包括:
接收所述主节点下发的副本清理任务,所述副本清理任务携带待清理数据块的标识;
根据所述待清理数据块标识和所述当前节点的块表,确定出所述待清理数据块的配对块信息,所述配对块信息包括:本地数据块的标识和配对节点上的对端数据块的标识;
根据所述配对块信息,通过与所述配对节点进行交互,确定所述本地数据块是否为所述对端数据块的当前配对块;
在确定所述本地数据块不是所述对端数据块的当前配对块时,确定所述本地数据块为所述待清理数据块;
将所述本地数据块的状态设置为待删除,并向所述当前节点的异常块表中添加一条待删除记录。
11.根据权利要求10所述的方法,其特征在于,在所述将所述本地数据块的状态设置为待删除,并向所述当前节点的异常块表中添加一条待删除记录之后,所述方法还包括:
通过定时扫描所述异常块表,确定所述异常块表中存在的待删除记录;
确定所述待删除记录中的数据块是否为冗余块;
在确定所述待删除记录中的数据块为冗余块时,从所述当前节点的块表中清除所述冗余块的索引信息,并删除所述当前节点上所述冗余块中数据。
12.根据权利要求6-8任一项所述的方法,其特征在于,所述方法还包括:
根据所述当前节点中的块表,周期性检测所述当前节点中已使用的数据块是否为异常块;
对于所述当前节点中的异常块,查询所述当前节点的块表,确定所述异常块的对端块;
通过与所述对端块所在的节点进行交互,确定所述对端块的匹配块是否为所述异常块;
在所述对端块的匹配块不是所述异常块时,确定所述异常块已无效并删除所述异常块;
在所述对端块的匹配块是所述异常块时,通过与所述对端块的所在的节点进行交互,将所述对端块中的数据复制到当前节点中的一个新数据块中;
更新所述当前节点中块表的索引信息,并向所述对端块的所在的节点发送索引更新请求,所述索引更新请求用于指示所述对端块所在的节点更新块表中的索引信息。
13.根据权利要求12所述的方法,其特征在于,所述根据所述当前节点中的块表,周期性检测所述当前节点中已使用的数据块是否为异常块,包括:
对于每个已使用的数据块,获取所述数据块中的主信息区数据;
对所述主信息区数据进行循环冗余校验,得到第一循环冗余校验值;
在所述第一循环冗余校验值与所述数据块中记录的第二循环冗余校验值不一致时,确定所述数据块为异常块;
在所述第一循环冗余校验值与所述数据块中记录的第二循环冗余校验值一致时,根据所述数据块中数据区的存储数据和每条数据的循环冗余校验值,确定所述数据块是否为异常块。
14.根据权利要求13所述的方法,其特征在于,所述根据所述数据块中数据区的存储数据和每条数据的循环冗余校验值,确定所述数据块是否为异常块,包括:
对于按照先后顺序从所述数据块的数据区中读取的每条数据,基于预设规则对所述数据进行循环冗余校验,得到第三循环冗余校验值;
在所述第三循环冗余校验值与所述数据区中记录的所述数据的循环冗余校验值不一致时,确定所述数据块为异常块;
在所述第三循环冗余校验值与所述数据区中记录的所述数据的循环冗余校验值一致时,依次对剩余的数据进行校验,直到确定所述数据块为异常块,或者所述数据区的所有数据均通过校验。
15.一种数据处理装置,其特征在于,包括:
获取模块,用于获取集群中各个节点上报的对象状态信息,所述对象状态信息包括:节点状态信息和所属节点上每个块设备的状态信息;
处理模块,用于根据各个节点上报的对象状态信息,确定出状态异常的目标节点以及所述目标节点上的离线对象,以及将所述目标节点上离线对象的离线信息添加至所述目标节点的状态变迁表中,所述离线对象至少包括如下一种:离线节点、在线节点上的离线块设备,所述状态变迁表用于记录离线对象的标识、离线对象的离线时间点、是否针对每个离线对象生成副本任务;
生成模块,用于在所述目标节点上离线对象的离线时长大于离线阈值时,生成针对所述目标节点的副本补齐任务。
16.一种数据处理装置,其特征在于,包括:
接收模块,用于接收主节点下发的副本补齐任务,所述副本补齐任务携带任务状态、离线对象的标识;
判断模块,用于通过扫描当前节点的块表,确定所述块表中是否存在对象标识与所述副本补齐任务中离线对象的标识一致;
处理模块,用于在确定所述块表中存在对象标识与所述副本补齐任务中离线对象的标识一致时,生成针对所述副本补齐任务的数据块复制任务,所述数据块复制任务携带源数据块的标识,并执行所述数据块复制任务。
17.一种计算机设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序指令,其特征在于,所述处理器执行所述计算机程序指令时实现如上述权利要求1-5任一项所述的方法;或者
所述处理器执行所述计算机程序指令时实现如上述权利要求6-14任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述权利要求1-5任一项所述的方法;或者
所述计算机执行指令被处理器执行时用于实现如上述权利要求6-14任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011596564.8A CN112764968B (zh) | 2020-12-29 | 2020-12-29 | 数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011596564.8A CN112764968B (zh) | 2020-12-29 | 2020-12-29 | 数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764968A true CN112764968A (zh) | 2021-05-07 |
CN112764968B CN112764968B (zh) | 2024-02-13 |
Family
ID=75696995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011596564.8A Active CN112764968B (zh) | 2020-12-29 | 2020-12-29 | 数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764968B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608683A (zh) * | 2021-06-30 | 2021-11-05 | 山东海量信息技术研究院 | 一种双活磁盘的清理方法、系统及相关装置 |
CN114153389A (zh) * | 2021-11-22 | 2022-03-08 | 浙江大华技术股份有限公司 | 一种异常zone自动补齐方法、装置及设备 |
CN114625325A (zh) * | 2022-05-16 | 2022-06-14 | 阿里云计算有限公司 | 分布式存储系统及其存储节点离线处理方法 |
CN115002193A (zh) * | 2022-04-27 | 2022-09-02 | 骤雨湾(武汉)技术服务有限公司 | 多路远程服务选取方法、设备、存储介质及装置 |
CN115361439A (zh) * | 2022-07-12 | 2022-11-18 | 北京奇艺世纪科技有限公司 | 节点管理方法、装置、电子设备及存储介质 |
TWI784750B (zh) * | 2021-10-15 | 2022-11-21 | 啟碁科技股份有限公司 | 終端裝置的資料處理方法及終端裝置的資料處理系統 |
CN116909760A (zh) * | 2023-09-13 | 2023-10-20 | 中移(苏州)软件技术有限公司 | 数据处理方法、装置、可读存储介质、电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017050179A1 (zh) * | 2015-09-25 | 2017-03-30 | 阿里巴巴集团控股有限公司 | 一种库存系统数据更新方法及装置 |
CN110263050A (zh) * | 2019-05-06 | 2019-09-20 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111400112A (zh) * | 2020-03-18 | 2020-07-10 | 深圳市腾讯计算机系统有限公司 | 分布式集群的存储系统的写入方法、装置及可读存储介质 |
-
2020
- 2020-12-29 CN CN202011596564.8A patent/CN112764968B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017050179A1 (zh) * | 2015-09-25 | 2017-03-30 | 阿里巴巴集团控股有限公司 | 一种库存系统数据更新方法及装置 |
CN110263050A (zh) * | 2019-05-06 | 2019-09-20 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111400112A (zh) * | 2020-03-18 | 2020-07-10 | 深圳市腾讯计算机系统有限公司 | 分布式集群的存储系统的写入方法、装置及可读存储介质 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608683A (zh) * | 2021-06-30 | 2021-11-05 | 山东海量信息技术研究院 | 一种双活磁盘的清理方法、系统及相关装置 |
CN113608683B (zh) * | 2021-06-30 | 2024-05-07 | 山东海量信息技术研究院 | 一种双活磁盘的清理方法、系统及相关装置 |
TWI784750B (zh) * | 2021-10-15 | 2022-11-21 | 啟碁科技股份有限公司 | 終端裝置的資料處理方法及終端裝置的資料處理系統 |
CN114153389A (zh) * | 2021-11-22 | 2022-03-08 | 浙江大华技术股份有限公司 | 一种异常zone自动补齐方法、装置及设备 |
CN114153389B (zh) * | 2021-11-22 | 2024-08-09 | 浙江大华技术股份有限公司 | 一种异常zone自动补齐方法、装置及设备 |
CN115002193A (zh) * | 2022-04-27 | 2022-09-02 | 骤雨湾(武汉)技术服务有限公司 | 多路远程服务选取方法、设备、存储介质及装置 |
CN114625325A (zh) * | 2022-05-16 | 2022-06-14 | 阿里云计算有限公司 | 分布式存储系统及其存储节点离线处理方法 |
CN115361439A (zh) * | 2022-07-12 | 2022-11-18 | 北京奇艺世纪科技有限公司 | 节点管理方法、装置、电子设备及存储介质 |
CN115361439B (zh) * | 2022-07-12 | 2024-03-15 | 北京奇艺世纪科技有限公司 | 节点管理方法、装置、电子设备及存储介质 |
CN116909760A (zh) * | 2023-09-13 | 2023-10-20 | 中移(苏州)软件技术有限公司 | 数据处理方法、装置、可读存储介质、电子设备 |
CN116909760B (zh) * | 2023-09-13 | 2023-11-28 | 中移(苏州)软件技术有限公司 | 数据处理方法、装置、可读存储介质、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112764968B (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112764968B (zh) | 数据处理方法、装置、设备及存储介质 | |
US20210004355A1 (en) | Distributed storage system, distributed storage system control method, and storage medium | |
JP6708948B2 (ja) | ブロックストレージ | |
JP4519563B2 (ja) | 記憶システム及びデータ処理システム | |
US7937546B2 (en) | Data duplication control method | |
US8510508B2 (en) | Storage subsystem and storage system architecture performing storage virtualization and method thereof | |
US8060468B2 (en) | Storage system and data recovery method | |
US20060047926A1 (en) | Managing multiple snapshot copies of data | |
US20070168634A1 (en) | Storage system and storage control method | |
US20080184000A1 (en) | Storage module and capacity pool free capacity adjustment method | |
WO2016147281A1 (ja) | 分散型ストレージシステム及び分散型ストレージシステムの制御方法 | |
WO2014007249A1 (ja) | I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法 | |
JP4849960B2 (ja) | レプリケーションボリュームの容量拡張方法 | |
CN112799841B (zh) | 一种数据对象存储管理的方法和装置 | |
CN106326239A (zh) | 分布式文件系统及其文件元信息管理方法 | |
WO2014205847A1 (zh) | 一种分区平衡子任务下发方法、装置与系统 | |
CN113448502B (zh) | 分布式存储系统和存储控制方法 | |
CN109407975B (zh) | 写数据方法与计算节点以及分布式存储系统 | |
CN110245129B (zh) | 一种分布式全局数据去重方法和装置 | |
US7549029B2 (en) | Methods for creating hierarchical copies | |
CN109271376A (zh) | 数据库升级方法、装置、设备及存储介质 | |
CN113377292B (zh) | 一种单机存储引擎 | |
JP6853227B2 (ja) | ストレージシステム及びストレージ制御方法 | |
CN107943412B (zh) | 一种分区分裂、删除分区中数据文件的方法、装置及系统 | |
CN111435286A (zh) | 一种数据存储方法、装置和系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |