CN116795295A - 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 - Google Patents
磁盘阵列中的数据处理方法及装置、存储介质、电子设备 Download PDFInfo
- Publication number
- CN116795295A CN116795295A CN202311030383.2A CN202311030383A CN116795295A CN 116795295 A CN116795295 A CN 116795295A CN 202311030383 A CN202311030383 A CN 202311030383A CN 116795295 A CN116795295 A CN 116795295A
- Authority
- CN
- China
- Prior art keywords
- target
- data
- state
- data block
- block
- 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 abstract description 9
- 238000000034 method Methods 0.000 claims abstract description 84
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000004044 response Effects 0.000 claims description 44
- 230000002159 abnormal effect Effects 0.000 claims description 26
- 238000012795 verification Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 18
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000004364 calculation method Methods 0.000 description 19
- 230000005012 migration Effects 0.000 description 17
- 238000013508 migration Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本申请实施例提供了一种磁盘阵列中的数据处理方法及装置、存储介质、电子设备,其中,该方法应用于磁盘阵列控制器,包括:接收主机发送的目标操作指令;基于目标操作指令从数据状态位图中读取目标子条带的目标状态信息,其中,目标子条带用于在磁盘阵列中对数据进行分块存储,目标状态信息包括数据块状态和校验块状态,数据块状态用于表示目标子条带中的数据块是否被使用,校验块状态用于表示目标子条带的冗余状态;基于目标状态信息响应目标操作指令,对目标子条带执行数据处理。通过本申请,解决了相关技术中在RAID***中对数据的处理效率较低的问题,进而达到了提升了RAID***任务的处理效率的效果。
Description
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种磁盘阵列中的数据处理方法及装置、存储介质、电子设备。
背景技术
随着数据存储需求的不断增长,数据丢失和***故障的风险也随之增加。为了保护数据的安全性和可靠性,RAID***应运而生。RAID***通过将数据分散存储在多个物理磁盘上,并采用冗余备份技术,从而提高了数据的容错能力和可靠性。RAID***采用的不同级别具有不同的数据冗余管理方法和数据存储策略。例如,RAID 5/6/三校验使用了不同的校验数据生成算法,分别可以抵抗RAID***中有1/2/3块盘磁盘发生故障的情况,并保证在这种情况下数据完整性不受影响。
但现有的RAID***支持读写等操作,但RAID***无法知晓当前的存储设备上有哪些数据是主机写入的有效数据,哪些数据是未被使用的无效数据。RAID在处理数据写入时,需要更新条带中的数据块和校验块,需要执行数据更新。由于无法知晓条带中数据的有效性,可能需要读无效的数据块并参与计算,这就降低了操作效率。RAID***在一致性同步、重构、迁移、扩容、一致性校验时,需要处理所有的条带数据,无法根据数据的有效行优化处理,效率较低。
针对上述技术问题,相关技术中尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种磁盘阵列中的数据处理方法及装置、存储介质、电子设备,以至少解决相关技术中在RAID***中对数据的处理效率较低的问题。
根据本申请的一个实施例,提供了一种磁盘阵列中的数据处理方法,应用于磁盘阵列控制器,包括:接收主机发送的目标操作指令,其中,上述主机与上述磁盘阵列控制器连接,上述磁盘阵列控制器与磁盘阵列连接,上述磁盘阵列中包括多个磁盘,上述磁盘用于存储数据块;基于上述目标操作指令从数据状态位图中读取目标子条带的目标状态信息,其中,上述目标子条带用于在上述磁盘阵列中对数据进行分块存储,上述目标状态信息包括数据块状态和校验块状态,上述数据块状态用于表示上述目标子条带中的数据块是否被使用,上述校验块状态用于表示上述目标子条带的冗余状态;基于上述目标状态信息响应上述目标操作指令,对上述目标子条带执行数据处理。
根据本申请的另一个实施例,提供了一种磁盘阵列中的数据处理装置,包括:第一接收模块,用于接收主机发送的目标操作指令,其中,上述主机与上述磁盘阵列控制器连接,上述磁盘阵列控制器与磁盘阵列连接,上述磁盘阵列中包括多个磁盘,上述磁盘用于存储数据块;第一读取模块,用于基于上述目标操作指令从数据状态位图中读取目标子条带的目标状态信息,其中,上述目标子条带用于在上述磁盘阵列中对数据进行分块存储,上述目标状态信息包括数据块状态和校验块状态,上述数据块状态用于表示上述目标子条带中的数据块是否被使用,上述校验块状态用于表示上述目标子条带的冗余状态;第一响应模块,用于基于上述目标状态信息响应上述目标操作指令,对上述目标子条带执行数据处理。
在一个示例性实施例中,上述第一读取模块,包括:第一获取单元,用于获取上述目标操作指令中包括的数据块起始位置和数据块长度;第一确定单元,用于利用上述数据块起始位置和上述数据块长度确定上述目标子条带;第一读取单元,用于从上述数据状态位图中读取上述目标子条带的目标状态信息。
在一个示例性实施例中,上述第一响应模块,包括:第二读取单元,用于在上述目标操作指令为从上述目标子条带中读取目标数据块的操作指令时,读取上述目标数据块的数据块状态,其中,上述目标数据块是上述目标子条带中多个数据块中的数据块;第一响应单元,用于在上述目标数据块的数据块状态的状态值是第一预设值的情况下,响应上述目标操作指令,向上述主机反馈上述目标数据块为空的信息,其中,上述第一预设值用于表示上述目标数据块为空。
在一个示例性实施例中,上述第一响应模块,包括:第二读取单元,用于在上述目标操作指令为从上述目标子条带中读取目标数据块的操作指令时,读取上述目标数据块的数据块状态,其中,上述目标数据块是上述目标子条带中多个数据块中的数据块;第三读取单元,用于在上述目标数据块的数据块状态的状态值是第二预设值,且上述目标数据块处于异常磁盘中的情况下,读取上述校验块状态,其中,上述校验块状态用于表示上述目标子条带中包括的校验块的状态,上述第二预设值用于表示上述目标数据块中包括数据;第四读取单元,用于在上述校验块状态的状态值是第三预设值的情况下,读取上述校验块中的数据和上述目标子条带中状态值是上述第二预设值的数据块中的数据,其中,上述状态值是上述第二预设值的数据块均设置在正常磁盘中,上述第二预设值用于表示上述数据块中包括数据;第二响应单元,用于响应上述目标操作指令,将上述校验块中的数据和上述目标子条带中状态值是上述第二预设值的数据块中的数据发送至上述主机。
在一个示例性实施例中,上述装置还包括:第二读取模块,用于在上述校验块状态的状态值是第四预设值的情况下,读取上述校验块中的数据和上述目标子条带中处于正常磁盘的数据块中的数据;第二响应模块,用于响应上述目标操作指令,将上述校验块中的数据和上述目标子条带中处于正常磁盘的数据块中的数据发送至上述主机。
在一个示例性实施例中,上述第一响应模块,包括:第五读取单元,用于在上述目标操作指令为向上述目标子条带中写入上述数据的操作指令时,读取上述校验块状态,其中,上述校验块状态用于表示上述目标子条带中包括的校验块的状态;第六读取单元,用于在上述校验块状态的状态值是第三预设值的情况下,读取目标数据块的数据块状态,其中,上述目标数据块是上述目标子条带中多个数据块中的数据块;第七读取单元,用于在上述目标数据块状态的状态值是第一预设值的情况下,读取上述目标子条带中的其他数据块,其中,上述其他数据块是上述目标子条带中除上述目标数据块之外的数据块,上述其他数据块的数据块状态的状态值是第二预设值,上述第一预设值用于表示上述目标数据块为空,上述第二预设值用于表示上述其他数据块中包括数据;第三响应单元,用于响应上述目标操作指令,利用上述其他数据块将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述装置还包括:第三响应模块,用于在上述校验块状态的状态值是第四预设值的情况下,响应上述目标操作指令,利用上述目标数据块的数量将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述第一响应模块,包括:第八读取单元,用于在上述目标操作指令为向上述目标子条带中写入上述数据的操作指令时,读取上述校验块状态,其中,上述校验块状态用于表示上述目标子条带中包括的校验块的状态;第九读取单元,用于在目标数据块处于异常磁盘中,且上述校验块状态的状态值是第三预设值的情况下,读取目标数据块的数据块状态;第十读取单元,用于在上述目标数据块的数据块状态的状态值是第一预设值的情况下,读取上述校验块中的数据,其中,上述第一预设值用于表示上述目标数据块为空;第四响应单元,用于响应上述目标操作指令,利用上述校验块中的数据和上述数据更新上述校验块的校验状态。
在一个示例性实施例中,上述装置还包括:第三读取模块,用于在上述目标数据块状态的状态值是第二预设值的情况下,读取上述目标子条带中的其他数据块,其中,上述其他数据块是上述目标子条带中除上述目标数据块之外的数据块,上述其他数据块的数据块状态的状态值是第二预设值,上述第二预设值用于表示上述其他数据块不为空;第四响应模块,用于响应上述目标操作指令,利用上述其他数据块将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述装置还包括:第一更新模块,用于在上述目标操作指令为向上述目标子条带中写入上述目标数据的操作指令时,读取上述校验块状态之后,在目标数据块处于异常磁盘中,且校验块状态的状态值是第四预设值的情况下,利用数据块对目标子条带进行更新。
在一个示例性实施例中,第四读取模块,用于在上述目标操作指令为向上述目标子条带中写入上述目标数据的操作指令时,读取上述校验块状态之后,在上述目标子条带中包括异常磁盘,且上述目标数据块处于正常磁盘中的情况下,读取上述目标数据块的数据块状态;第五读取模块,用于在上述目标数据块的数据块状态的状态值是第一预设值的情况下,读取上述校验块中的数据;第二更新模块,用于利用上述校验块中的数据和上述目标数据更新上述校验块的校验状态。
在一个示例性实施例中,上述装置还包括:第六读取模块,用于在上述目标子条带中包括异常磁盘,且上述目标数据块处于正常磁盘中的情况下,读取上述目标数据块的数据块状态之后,在上述目标数据块状态的状态值是第二预设值的情况下,读取上述目标子条带中的其他数据块,其中,上述其他数据块是上述目标子条带中除上述目标数据块之外的数据块,上述其他数据块的数据块状态的状态值是第二预设值,上述第二预设值用于表示上述其他数据块不为空;第三更新模块,用于利用上述其他数据块将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述装置还包括:第四更新模块,用于在上述目标操作指令为向上述目标子条带中写入上述目标数据的操作指令时,读取上述校验块状态之后,在上述目标子条带中包括异常磁盘、上述目标数据块处于正常磁盘中,且上述校验块状态的状态值是第四预设值的情况下,将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述装置还包括:第七读取模块,用于接收主机发送的目标操作指令之后,在上述目标操作指令为重新构建目标数据块时,读取上述目标数据块的数据块状态和上述目标子条带的校验块状态,其中,上述目标数据块是上述目标子条带中多个数据块中的数据块;第八读取模块,用于在上述目标数据块的数据块状态的状态值是第二预设值,且上述目标数据块的校验块状态的状态值是第三预设值的情况下,读取上述目标子条带中的其他数据块,其中,上述其他数据块是上述目标子条带中除上述目标数据块之外的数据块,上述其他数据块的数据块状态的状态值是第二预设值,上述第二预设值用于表示上述其他数据块不为空;第一写入模块,用于利用上述其他数据块中的数据和上述目标数据块的校验块中的数据计算重新构建后的目标数据块,并将上述重新构建后的目标数据块中的数据写入上述磁盘阵列。
在一个示例性实施例中,上述装置还包括:第一确定模块,用于上述目标操作指令为重新构建上述目标数据块时,读取目标数据块的数据块状态和校验块状态之后,在上述目标数据块的数据块状态的状态值是第二预设值、上述目标数据块的校验块状态的状态值是第四预设值,且上述目标子条带中包括数据块状态的状态值是第一预设值的情况下,利用上述其他数据块重新确定上述目标子条带的校验数据块;第一修改模块,用于将重新确定的校验数据块的校验状态的状态值修改为第三预设值。
在一个示例性实施例中,上述装置还包括:第九读取模块,用于上述目标操作指令为重新构建上述目标数据块时,读取目标数据块的数据块状态和校验块状态之后,在上述目标数据块的数据块状态的状态值是第二预设值、上述目标数据块的校验块状态的状态值是第四预设值,且上述目标子条带中的其他数据块的数据块状态的状态值均是第二预设值的情况下,读取上述目标子条带中的所有数据块和校验数据块;第二写入模块,用于利用上述目标子条带中的所有数据块和校验数据块计算重新构建后的目标数据块,并将上述重新构建后的目标数据块中的数据写入上述磁盘阵列。
在一个示例性实施例中,上述装置还包括:第一迁移模块,用于接收主机发送的目标操作指令之后,在上述目标操作指令为迁移上述目标子条带中的数据块,且上述目标子条带中包括目标数据块的情况下,将上述目标数据块迁移至其他子条带中存储,其中,上述目标数据块是上述目标子条带中数据块状态的状态值为第二预设值的数据块;第一计算模块,用于利用上述目标数据块计算上述目标子条带的校验数据块;第二修改模块,用于在上述目标子条带中包括数据块状态的状态值为第一预设值的其他数据块的情况下,利用上述其他数据块修改上述校验数据块的校验值。
在一个示例性实施例中,上述装置还包括:第十读取模块,用于接收主机发送的目标操作指令之后,在确定上述磁盘阵列中增加磁盘,得到扩容后的子条带的情况下,读取上述目标子条带的数据块状态和校验块状态;第二迁移模块,用于在目标数据块的数据块状态的状态值是第二预设值的情况下,将上述目标数据块中的数据迁移至上述扩容后的子条带中;第二确定模块,用于利用上述扩容后的子条带中包括的数据块的数据块状态确定上述扩容后的子条带中的校验块的校验状态。
在一个示例性实施例中,上述装置还包括:第十一读取模块,用于接收主机发送的目标操作指令之后,在上述目标操作指令为校验上述目标子条带的操作指令时,读取上述目标子条带中所有数据块的数据块状态;第一校验模块,用于在目标数据块的数据块状态的状态值是第二预设值,且上述目标子条带的校验块的校验状态的状态值是第四预设值的情况下,利用上述校验块和上述目标子条带中所有数据块对上述目标子条带进行一致性校验;第二校验模块,用于在目标数据块的数据块状态的状态值是第二预设值,且上述目标子条带的校验块的校验状态的状态值是第三预设值的情况下,利用上述校验块和数据块状态的状态值是第二预设值的数据块对上述目标子条带进行一致性校验。
在一个示例性实施例中,上述装置还包括:第五更新模块,用于基于上述目标状态信息响应上述目标操作指令,对上述目标数据执行数据操作之后,利用对上述目标子条带执行的数据操作对上述数据块状态和上述校验块状态进行更新。
在一个示例性实施例中,上述装置还包括:第一获取模块,用于基于上述目标操作指令从数据状态位图中读取目标子条带的目标状态信息之前,获取上述磁盘阵列中多个子条带的状态,其中,一个上述子条带的状态中包括多个数据块状态和一个校验块状态,其中,多个上述数据块状态用于表示上述子条带中多个数据块的状态,上述校验块状态用于表示上述子条带中校验块的状态;第一生成模块,用于利用多个上述子条带的状态生成上述数据状态位图,并缓存上述数据状态位图。
在一个示例性实施例中,上述装置还包括:第一存储模块,用于利用多个上述子条带的状态生成上述数据状态位图,并缓存上述数据状态位图之后,在上述磁盘阵列停止工作时,将上述数据状态位图存储至上述磁盘阵列中的磁盘中,其中,上述磁盘中包括存储上述数据状态位图的预设数据区。
在一个示例性实施例中,上述装置还包括:第十二读取模块,用于在上述磁盘阵列停止工作时,将上述数据状态位图存储至上述磁盘阵列中的磁盘中之后,在上述磁盘阵列开启工作时,从上述预设数据区中读取上述数据状态位图。
在一个示例性实施例中,上述装置还包括:第一设置模块,用于基于上述目标操作指令从数据状态位图中读取目标子条带的目标状态信息之前,在对上述磁盘阵列执行初始化操作时,将上述磁盘阵列中多个子条带的数据块状态的状态值均设置为第一预设值,并将多个上述子条带的校验块状态的状态值均设置为第三预设值;第三修改模块,用于在接收上述主机发送的上述目标操作指令之后,基于上述目标操作指令的指令类型修改上述数据块状态的状态值;第四修改模块,用于基于修改后的数据块状态的状态值修改上述校验块状态的状态值。
根据本申请的又一个实施例,还提供了一种磁盘阵列***,包括主机、磁盘阵列控制器和磁盘阵列,其中,所述主机与所述磁盘阵列控制器连接,所述磁盘阵列控制器与磁盘阵列连接,所述磁盘阵列中包括多个磁盘,磁盘用于存储数据块,所述磁盘阵列控制器用于执行上述步骤。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,由于磁盘阵列控制器接收主机发送的目标操作指令,基于目标操作指令从数据状态位图中读取目标子条带的目标状态信息,按照目标自条带中的数据块状态和校验块状态可以确定出数据块的有效性,从而可以对有效的数据块进行处理,无需关注无效的数据块。从而提升了RAID***任务的处理效率。因此,可以解决相关技术中在RAID***中对数据的处理效率较低的问题。
附图说明
图1是本申请实施例的一种磁盘阵列中的数据处理方法的移动终端的硬件结构框图;
图2是根据本申请实施例的磁盘阵列中的数据处理方法的流程图;
图3是根据本申请实施例的RAID***中一个子条带在磁盘上分布的基本结构图;
图4是根据本申请实施例的RAID***的结构示意图;
图5是根据本申请实施例的数据状态位图的结构图;
图6是根据本申请实施例的RAID组的结构示意图;
图7是根据本申请实施例的数据读取的整体流程图;
图8是根据本申请实施例的本实施例写入数据的流程图;
图9是根据本申请实施例的本实施例中存在损坏磁盘的情况下写入数据的流程图;
图10是根据本申请实施例的重新构建数据块的流程图;
图11是根据本申请实施例的对单个子条带的迁移流程图;
图12是根据本申请实施例的扩容操作的流程图;
图13是根据本申请实施例的一致性校验操作流程图;
图14是根据本申请实施例的磁盘阵列中的数据处理装置的结构框图;
图15是根据本申请实施例的电子设备的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
下面对本申请中的相关技术解释如下:
RAID:Redundant Array of Independent Disks,磁盘冗余阵列。将多个磁盘设备组合起来,成为一个或多个存储阵列组,目的为提升性能、增加冗余以保护数据。
Stripe:条带,条带是RAID***中将数据在多个硬盘上分块存储的一种方法。RAID***将数据分割成多个块,然后将这些块依次存储到多个硬盘上。不同磁盘相同位置上存储的数据块被称为一个条带。
RMW:Read-Construct-Write,读-重构-写,一种RAID***中条带数据更新的方法,读取条带中被更新的数据和校验数据,然后计算新的校验数据,再将更新数据和校验数据写入磁盘。
RCW:Read-Modify-Write,读-修改-写,一种RAID***中条带数据更新的方法,读取条带中未被更新的数据盘,和被写入数据一起计算校验数据,再将更新数据和新生成的校验写入磁盘。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种磁盘阵列中的数据处理方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的磁盘阵列中的数据处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种磁盘阵列中的数据处理方法,图2是根据本申请实施例的磁盘阵列中的数据处理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,接收主机发送的目标操作指令,其中,主机与磁盘阵列控制器连接,磁盘阵列控制器与磁盘阵列连接,磁盘阵列中包括多个磁盘,磁盘用于存储数据块;
步骤S204,基于目标操作指令从数据状态位图中读取目标子条带的目标状态信息,其中,目标子条带用于在磁盘阵列中对数据进行分块存储,目标状态信息包括数据块状态和校验块状态,数据块状态用于表示目标子条带中的数据块是否被使用,校验块状态用于表示目标子条带的冗余状态;
步骤S206,基于目标状态信息响应目标操作指令,对目标子条带执行数据处理。
其中,上述步骤的执行主体可以为磁盘阵列控制器等,但不限于此。
可选地,目标操作指令可以是RAID***支持的IO操作指令,IO操作指令包括读取、写入、写零、丢弃等指令。
可选地,数据状态位图中记录了RAID***在磁盘上存储数据的状态,RAID***中存储的数据可分为两种:主机写入的用户数据块和RAID***为了实现数据冗余生成的校验数据。而RAID***是一个存储设备,其数存取只能按最小的单元操作,这里一个最小的单元即为一个数据块。RAID***存放两种类型的数据块:用户数据块(简称为数据块)和校验数据块(简称为校验块),数据块大小为RAID***中的最小数据单元,例如,数据块的大小为512B或者4kB。RAID***中所有磁盘上相同位置的数据块组成一个子条带。一个子条带中包括多个数据块,根据RAID级别不同,可以包括1个或2个或3个校验块。RAID级别包括RAID5、RAID6、RAIDTP等。子条带是RAID***中数据在物理硬盘上存储的基本单位。子条带是将数据在多个硬盘上分块存储的一种方法。RAID***将数据分割成多个块,然后将这些块依次存储到多个硬盘上。例如,如果一个文件被分成4个块,而RAID***有4个硬盘,那么第一个块将被存储在第一个硬盘上,第二个块将被存储在第二个硬盘上,以此类推。这样,文件的每个块都会被分配到不同的硬盘上进行存储,从而提高了数据读取和写入的速度。
可选地,RAID***中一个子条带在磁盘上分布的基本结构如图3所示,例如,以RAID5***为例,由4块磁盘组成,因此一个子条带有三个位数据块,一个位校验块。如果是RAID6***则需要两个校验数据块,RAID三校验***则需要三个校验数据块。每个数据块的大小被称为条带单元大小。条带单元大小通常为64kB到1MB。
可选地,RAID***是一种存储设备,属于块设备类型。块设备只能通过最小的数据单元数据块来访问。每个数据块的大小通常为512字节或4KB,这个大小也被称为块大小或扇区大小。数据的访问是通过逻辑块地址(LBA)来进行的,LBA是对块设备上数据的逻辑编号。块设备上的每个块都被分配了一个唯一的LBA,从而允许主机访问特定的数据块。
可选地,如图4所示,RAID***包括主机、磁盘阵列控制器和磁盘阵列,其中,主机与磁盘阵列控制器连接,磁盘阵列控制器与磁盘阵列连接,磁盘阵列中包括多个磁盘,磁盘用于存储数据块。
主机,RAID***的使用方,可以向RAID控制器发出以下操作命令:读取:读取RAID***中一个或者多个连续的数据块;写入:向RAID***写入一个或者多个连续的数据块;写零:向RAID***中写入一个或者多个连续的全零数据块。该操作仅有写入命令,无数传输过程;丢弃:向RAID***发送命令指示一个或者多个数据块已不再被使用。该操作无数据传输过程;启动或关闭:启动或者关闭RAID***。以上操作的基本单位都是RAID***中的最小数据单元,通常为512B或者4kB。
RAID控制器,执行主机发送的各种IO命令操作,完成数据在磁盘上的写入和读取,并根据RAID级别生成校验数据,实现数据的冗余保护。
缓存,用于存放RAID控制器运行时使用的临时数据,以及缓存数据状态位图。
磁盘阵列,磁盘阵列中包括多个磁盘,多个磁盘组成了一个RAID组,用于存放用户数据和RAID控制器生成用于冗余保护的校验数据。也用于存放RAID组运行相关的一些数据。
可选地,基于目标操作指令从数据状态位图中读取目标子条带的目标状态信息之前,上述方法还包括:获取磁盘阵列中多个子条带的状态,其中,一个子条带的状态中包括多个数据块状态和一个校验块状态,其中,多个数据块状态用于表示子条带中多个数据块的状态,校验块状态用于表示子条带中校验块的状态;利用多个子条带的状态生成数据状态位图,并缓存数据状态位图。在本实施例中,数据状态位图在RAID***运行时存放于缓存中。例如,数据状态位图的结构如图5所示,对数据块和校验块分别设置状态位。其中,对于数据块,每一个数据块设置一个状态位;对于校验块,无论一个子条带中有几个校验块(RAID5、RAID 6、RAID 三校验分别有1、2、3个校验块),都只设置一个状态位。可选地,每个数据块状态位记录两种状态:状态1,用于表示数据块为未使用状态;状态2,用于表示数据块为已使用状态。每个校验块块状态位记录两种状态:状态1,用于表示校验数据为子条带中所有状态1数据块的校验和(简称为部分校验);状态2,用于表示校验数据为子条带中所有数据块的校验和(简称为全校验)。
可选地,利用多个子条带的状态生成数据状态位图,并缓存数据状态位图之后,方法还包括:在磁盘阵列停止工作时,将数据状态位图存储至磁盘阵列中的磁盘中,其中,磁盘中包括存储数据状态位图的预设数据区。在本实施例中,在RAID组正常运行时,数据状态位图存放在RAID***中的缓存中使用。当RAID组关闭时,数据状态位图需要做持久化存储。例如,通过以下方式存储数据状态位图:
S1,RAID组在创建时在每块磁盘上预留空间,用于存放数据状态位图。如图6所示的RAID组由N个磁盘组成,每个磁盘上预留数据状态位图区。
S2,根据RAID组的级别,确定数据状态位图在多个磁盘上存放的份数,以保证RAID***中出现坏盘时,数据状态位图依然能够被正确读取。例如,RAID5至少在两块磁盘上存放两份数据状态位图,RAID6至少在三块磁盘上存放三份数据状态位图,RAID三校验至少在四块磁盘上存放四份数据状态位图。
S3,当RAID***执行关闭操作时,将***缓存中的数据状态位图写入磁盘上预留的数据区。
S4,当RAID***启动时,从磁盘上预留的预设数据区中读取数据状态位图到***缓存中使用。
通过本申请,由于磁盘阵列控制器接收主机发送的目标操作指令,基于目标操作指令从数据状态位图中读取目标子条带的目标状态信息,按照目标自条带中的数据块状态和校验块状态可以确定出数据块的有效性,从而可以对有效的数据块进行处理,无需关注无效的数据块。从而提升了RAID***任务的处理效率。因此,可以解决相关技术中在RAID***中对数据的处理效率较低的问题。
在一个示例性实施例中,基于目标操作指令从数据状态位图中读取目标子条带的目标状态信息,包括:获取目标操作指令中包括的数据块起始位置和数据块长度;利用数据块起始位置和数据块长度确定目标子条带;从数据状态位图中读取目标子条带的目标状态信息。在本实施例中,按照数据块长度从数据块起始位置开始查找,可以准确的出需要执行操作的目标子条带。
在一个示例性实施例中,基于目标状态信息响应目标操作指令,对目标子条带执行数据处理,包括:在目标操作指令为从目标子条带中读取目标数据块的操作指令时,读取目标数据块的数据块状态,其中,目标数据块是目标子条带中多个数据块中的数据块;在目标数据块的数据块状态的状态值是第一预设值的情况下,响应目标操作指令,向主机反馈目标数据块为空的信息,其中,第一预设值用于表示目标数据块为空。在本实施例中,目标数据块为空表示目标数据块中没有存储数据,读出的数据是空,只需要向主机反馈全零的数据即可。需要说明的是,目标数据块可以是一个数据块,也可以是目标子条带中的多个数据块,具体包括的数量可以从目标操作指令中包括的数据块起始位置和数据块长度确定。读取其他数据块中的数据的方式和目标数据块的方式相同。
在一个示例性实施例中,基于目标状态信息响应目标操作指令,对目标子条带执行数据处理,包括:在目标操作指令为从目标子条带中读取目标数据块的操作指令时,读取目标数据块的数据块状态,其中,目标数据块是目标子条带中多个数据块中的数据块;在目标数据块的数据块状态的状态值是第二预设值,且目标数据块处于异常磁盘中的情况下,读取校验块状态,其中,校验块状态用于表示目标子条带中包括的校验块的状态,第二预设值用于表示目标数据块中包括数据;在校验块状态的状态值是第三预设值的情况下,读取校验块中的数据和目标子条带中状态值是第二预设值的数据块中的数据,其中,状态值是第二预设值的数据块均设置在正常磁盘中,第二预设值用于表示数据块中包括数据;响应目标操作指令,将校验块中的数据和目标子条带中状态值是第二预设值的数据块中的数据发送至主机。在本实施例中,目标数据块的数据块状态的状态值是第二预设值则表示目标数据块中包括数据,需要进步一判断目标数据块是否在异常磁盘(例如,损坏的磁盘)上,在目标数据块处于异常磁盘中的情况下,进一步判断校验块的状态,按照校验块的状态判断是否需要读取出全部数据。第三预设值可以是1,用于表示校验块为目标子条带中所有状态为1的数据块的校验和,状态值为1的数据块用于表示数据块为空。在校验块的状态值为1时,只需要读取包括数据的数据块,并不需要读取全部的数据块,从而可以提高数据处理的效率。
在一个示例性实施例中,上述方法还包括:在校验块状态的状态值是第四预设值的情况下,读取校验块中的数据和目标子条带中处于正常磁盘的数据块中的数据;响应目标操作指令,将校验块中的数据和目标子条带中处于正常磁盘的数据块中的数据发送至主机。在本实施例中,第四预设值可以是2,用于表示校验块为目标子条带中所有数据块的校验和。在校验块的状态值为2时,需要读取所有处于正常磁盘中的数据块,并不需要读取全部的数据块,从而可以提高数据处理的效率。
例如,如图7所示,是本实施例数据读取的整体流程图,包括以下步骤:
S701,读取子条带(相当于上述中的目标子条带)中目标数据块的状态;
S702,判断目标数据块的状态值;
S703,在目标数据块的状态值是1的情况下,返回全零给主机;
S704,在目标数据块的状态值不是1(例如是2或者其他值),且子条带中存在损坏的磁盘的情况下,判断被读取的目标数据块是否在损坏的磁盘上;
S705,在目标数据块不在损坏的磁盘上的情况下,从磁盘中读取目标数据块中的数据,并返回给主机;
S706,在目标数据块在损坏的磁盘上的情况下,读取校验块的状态值;
S707,判断校验块的状态值;
S708,校验块的状态值是1的情况下,从磁盘中读取校验块中的数据,并读取所有状态值为2的正常磁盘中数据块中的数据,状态值为2的数据块中包括数据;
S709,将读取的数据返回至主机;
S710,校验块的状态值不是1(是2或者其他值)的情况下,从磁盘中读取校验块的数据和所有正常磁盘中的数据块的数据,并将读取的数据返回至主机。
在一个示例性实施例中,基于目标状态信息响应目标操作指令,对目标子条带执行数据处理,包括:在目标操作指令为向目标子条带中写入数据的操作指令时,读取校验块状态,其中,校验块状态用于表示目标子条带中包括的校验块的状态;在校验块状态的状态值是第三预设值的情况下,读取目标数据块的数据块状态,其中,目标数据块是目标子条带中多个数据块中的数据块;在目标数据块状态的状态值是第一预设值的情况下,读取目标子条带中的其他数据块,其中,其他数据块是目标子条带中除目标数据块之外的数据块,其他数据块的数据块状态的状态值是第二预设值,第一预设值用于表示目标数据块为空,第二预设值用于表示其他数据块中包括数据;响应目标操作指令,利用其他数据块将数据更新至目标子条带中。在本实施例中,在执行写入数据的操作时,需要判断目标子条带中是否存在损坏的磁盘,在没有损坏的磁盘的情况下,通过判断校验块的状态值和数据块的状态值确定可以写入数据块的具体操作流程,从而可以提高数据的写入效率。例如,在校验块状态的状态值是第三预设值(例如是1),数据块的状态值也是1,则从目标子条带中读取状态值是2的数据块,对状态值是2的数据块执行RCW计算;在校验块状态的状态值是第四预设值(例如是2),数据块的状态值也是2,则从目标子条带中读取状态值是2的数据块,对状态值是2的数据块执行RCW计算,或者执行RMW计算;在校验块状态的状态值是第四预设值的情况下,对数据块执行RCW计算或者RMW计算。本实施例通过数据块的状态和校验块的状态确定需要执行的计算,并不需要对所有的数据块执行计算,从而可以有效的提高数据的处理效率。
例如,如图8所示,是本实施例写入数据的流程图,包括以下步骤:
S801,读取目标子条带中校验块的状态值;
S802,判断校验块的状态值;
S803,在校验块的状态值是1的情况下,读取目标子条带中目标数据块的状态值;
S804,判断目标数据块的状态值;
S805,在目标数据块的状态值是1的情况下,读取所有状态值为2的数据块,并对所有状态值为2的数据块执行RCW计算,并写入磁盘;
S806,在目标数据块的状态值不是1的情况下,仅读取所有状态值为2的数据块,并对所有状态值为2的数据块执行RCW计算,并写入磁盘;或者执行RMW计算,并写入磁盘;
S807,根据规则更新目标子条带中的数据块的状态值和校验块的状态值。
S808,在校验块的状态值不是1的情况下,对目标子条带中目标数据块执行RCW计算,并写入磁盘;或者执行RMW计算,并写入磁盘。
在一个示例性实施例中,基于目标状态信息响应目标操作指令,对目标子条带执行数据处理,包括:在目标操作指令为向目标子条带中写入数据的操作指令时,读取校验块状态,其中,校验块状态用于表示目标子条带中包括的校验块的状态;在目标数据块处于异常磁盘中,且校验块状态的状态值是第三预设值的情况下,读取目标数据块的数据块状态;在目标数据块的数据块状态的状态值是第一预设值的情况下,读取校验块中的数据,其中,第一预设值用于表示目标数据块为空;响应目标操作指令,利用校验块中的数据和数据更新校验块的校验状态。在本实施例中,在存在损坏的磁盘的情况下,通过判断目标数据块是否在损坏的磁盘上,并判断数据块的状态和校验块的状态执行对数据块的写入操作,并不需要对全部数据块执行操作,可以有效的提高数据的写入效率。
可选地,上述方法还包括:在目标数据块状态的状态值是第二预设值的情况下,读取目标子条带中的其他数据块,其中,其他数据块是目标子条带中除目标数据块之外的数据块,其他数据块的数据块状态的状态值是第二预设值,第二预设值用于表示其他数据块不为空;响应目标操作指令,利用其他数据块将数据更新至目标子条带中。
在一个示例性实施例中,在目标操作指令为向目标子条带中写入目标数据的操作指令时,读取校验块状态之后,上述方法还包括:在目标数据块处于异常磁盘中,且校验块状态的状态值是第四预设值的情况下,利用数据块对目标子条带进行更新。
可选地,在目标操作指令为向目标子条带中写入数据的操作指令时,读取校验块状态之后,上述方法还包括:在目标子条带中包括异常磁盘,且数据块处于正常磁盘中的情况下,读取数据块的数据块状态;在目标数据块的数据块状态的状态值是第一预设值的情况下,读取校验块中的数据;利用校验块中的数据和目标数据更新校验块的校验状态。
可选地,在目标子条带中包括异常磁盘,且目标数据块处于正常磁盘中的情况下,读取目标数据块的数据块状态之后,上述方法还包括:在目标数据块状态的状态值是第二预设值的情况下,读取目标子条带中的其他数据块,其中,其他数据块是目标子条带中除目标数据块之外的数据块,其他数据块的数据块状态的状态值是第二预设值,第二预设值用于表示其他数据块不为空;利用其他数据块将数据更新至目标子条带中。
可选地,在目标操作指令为向目标子条带中写入数据的操作指令时,读取校验块状态之后,上述方法还包括:在目标子条带中包括异常磁盘、目标数据块处于正常磁盘中,且校验块状态的状态值是第四预设值的情况下,将数据更新至目标子条带中。
例如,如图9所示,是本实施例中存在损坏磁盘的情况下,写入数据的流程图,包括以下步骤:
S901,读取目标子条带中校验块的状态值;
S902,判断目标数据块是否在损坏的磁盘上;
S903,在目标数据块不在损坏的磁盘上的情况下,判断校验块的状态值;
S904,在校验块的状态值是1的情况下,读取目标子条带中数据块的状态值;
S905,判断数据块的状态值;
S906,在数据块的状态值是1的情况下,读取校验块中的数据,并与需要写入的数据重新计算校验块,将需要写入的数据和新的校验块写入磁盘,并转至S908;
S907,在数据块的状态值不是1的情况下,读取状态值为2的数据块,对状态值为2的数据块执行RMW计算并写入磁盘,并转至S908;
S908,根据规则更新目标子条带中的数据块的状态值和校验块的状态值;
S909,在校验块的状态值不是1的情况下,对目标子条带中数据块执行RMW计算,并写入磁盘,并转至S908;
S910,在目标数据块在损坏的磁盘上的情况下,判断校验块的状态值;
S911,在校验块的状态值是1的情况下,读取目标子条带中目标数据块的状态;
S912,判断目标数据块的状态值;
S913,在目标数据块的状态值是1的情况下,读取校验块中的数据,并与需要写入的数据重新计算校验块,将需要写入的数据和新的校验块写入磁盘,并转至S908;
S914,在目标数据块的状态值不是1的情况下,读取状态值为2的数据块,对状态值为2的数据块执行RMW计算并写入磁盘,并转至S908;
S915,在校验块的状态值不是1的情况下,对目标子条带中数据块执行RCW计算,并写入磁盘,并转至S908。
在一个示例性实施例中,基于目标操作指令从数据状态位图中读取目标子条带的目标状态信息之前,上述方法还包括:在对磁盘阵列执行初始化操作时,将磁盘阵列中多个子条带的数据块状态的状态值均设置为第一预设值,并将多个子条带的校验块状态的状态值均设置为第三预设值;在接收主机发送的目标操作指令之后,基于目标操作指令的指令类型修改数据块状态的状态值。在本实施例中,在初始化阶段,将所有的数据块和校验块均设置为1,不用向磁盘写入任何数据。
在一个示例性实施例中,接收主机发送的目标操作指令之后,上述方法还包括:在目标操作指令为重新构建目标数据块时,读取目标数据块的数据块状态和目标子条带的校验块状态,其中,目标数据块是目标子条带中多个数据块中的数据块;在目标数据块的数据块状态的状态值是第二预设值,且目标数据块的校验块状态的状态值是第三预设值的情况下,读取目标子条带中的其他数据块,其中,其他数据块是目标子条带中除目标数据块之外的数据块,其他数据块的数据块状态的状态值是第二预设值,第二预设值用于表示其他数据块不为空;利用其他数据块中的数据和目标数据块的校验块中的数据计算重新构建后的目标数据块,并将重新构建后的目标数据块中的数据写入磁盘阵列。在本实施例中,通过确定重新构建的数据块的状态,可以对数据进行恢复处理,增加了数据处理的效率。
可选地,目标操作指令为重新构建目标数据块时,读取目标数据块的数据块状态和校验块状态之后,方法还包括:在目标数据块的数据块状态的状态值是第二预设值、目标数据块的校验块状态的状态值是第四预设值,且目标子条带中包括数据块状态的状态值是第一预设值的情况下,利用其他数据块重新确定目标子条带的校验数据块;将重新确定的校验数据块的校验状态的状态值修改为第三预设值。本实施例通过其他数据块重新确定出目标子条带的校验数据块,可以准确的确定出重新构建的数据块的状态。
可选地,目标操作指令为重新构建目标数据块时,读取目标数据块的数据块状态和校验块状态之后,方法还包括:在目标数据块的数据块状态的状态值是第二预设值、目标数据块的校验块状态的状态值是第四预设值,且目标子条带中的其他数据块的数据块状态的状态值均是第二预设值的情况下,读取目标子条带中的所有数据块和校验数据块;利用目标子条带中的所有数据块和校验数据块计算重新构建后的目标数据块,并将重新构建后的目标数据块中的数据写入磁盘阵列。
例如,如图10所示,是本实施例中重新构建数据块的流程图,包括以下步骤:
S1001,读取目标子条带中被重新构建的数据块的状态和校验块的状态;
S1002,判断目标子条带中所有数据块的状态值;
S1003,在目标子条带中的数据块的状态值不是1的情况下,判断校验块的状态值;
S1004,在校验块的状态值是1的情况下,从磁盘中读取目标子条带中状态值是2的数据块;
S1005,从磁盘中读取目标子条带中校验块的数据;
S1006,按照目标子条带中校验块的数据和目标子条带中状态值是2的数据块,计算出被恢复的数据块,得到重新构建的数据块,并写入磁盘中;
S1007,在校验块的状态值不是1的情况下,判断目标子条带中是否包括状态值是1的数据块;
S1008,在目标子条带中包括状态值是1的数据块的情况下,从磁盘中读取目标子条带中状态值是2的数据块;
S1009,重新计算目标子条带中校验块,并写入磁盘中;
S1010,将目标子条带中校验块的状态值修改为1;
S1011,在目标子条带中不包括状态值是1的数据块的情况下,从磁盘中读取目标子条带中所有的数据块;
S1012,从磁盘中读取目标子条带中的校验块中的数据;
S1013,利用从磁盘中读取目标子条带中所有的数据块、目标子条带中的校验块中的数据,计算出被恢复的数据块,得到重新构建的数据块,并写入磁盘中。
在一个示例性实施例中,接收主机发送的目标操作指令之后,方法还包括:在目标操作指令为迁移目标子条带中的数据块,且目标子条带中包括目标数据块的情况下,将目标数据块迁移至其他子条带中存储,其中,目标数据块是目标子条带中数据块状态的状态值为第二预设值的数据块;利用目标数据块计算目标子条带的校验数据块;在目标子条带中包括数据块状态的状态值为第一预设值的其他数据块的情况下,利用其他数据块修改校验数据块的校验值。在本实施例中,迁移目标子条带中的数据块包括级别迁移,级别迁移指RAID5、RAID6、RAIDTP三种RAID级别之间的迁移。级别迁移仅影响校验数据块的个数。由于本实施例中所有的校验数据块只对应一个校验块状态,因此级别迁移不影响数据状态位图的结构。传统的RAID控制器处理级别迁移时,需要按迁移前后条带上数据块的变化状态,对数据块进行搬移,并计算条带新的校验数据。本实施例以子条带为最小处理单元,并根据子条带状态位信息,仅对有效数据进行处理,可以减小级别迁移过程中的数据搬移操作。
例如,如图11所示,是本实施例中对单个子条带的迁移流程图,包括以下步骤:
S1101,读取目标子条带中所有的数据块的状态;
S1102,判断所有的数据块中是否存在状态值是2的数据块;
S1103,所有的数据块中存在状态值是2的数据块的情况下,迁移状态值是2的数据块;
S1104,使用所被迁移的数据块计算出校验块,并写入磁盘;
S1105,判断是否存在状态值是1的数据块;
S1106,在存在状态值是1的数据块的情况下,修改检验块的状态值为1;
S1107,在不存在状态值是1的数据块的情况下,修改检验块的状态值为2。
在一个示例性实施例中,接收主机发送的目标操作指令之后,方法还包括:在确定磁盘阵列中增加磁盘,得到扩容后的子条带的情况下,读取目标子条带的数据块状态和校验块状态;在目标数据块的数据块状态的状态值是第二预设值的情况下,将目标数据块中的数据迁移至扩容后的子条带中;利用扩容后的子条带中包括的数据块的数据块状态确定扩容后的子条带中的校验块的校验状态。在本实施例中,扩容操作需要增加新的磁盘存储数据,因此导致每个子条带中数据块的个数增加,此扩容操作会改变数据状态位图的结构。扩容操作将使数据在RAID***上重新排布,本实施例按照数据位状态位图,扩容操作可以仅搬移有用数据,减少扩容操作过程中的IO操作,提升扩容操作的效率。
例如,如图12所示,是本实施例中扩容操作的流程图,包括以下步骤:
S1201,读取扩容之前的数据块的状态;
S1202,判断是否存在状态值是2的数据块;
S1203,在存在状态值是2的数据块的情况下,迁移所有状态值是2的数据块;
S1204,使用被迁移的数据块计算出校验块,并写入磁盘;
S1205,修改扩容后子条带数据块的状态,将被迁移数据块的状态值设置为2,其他数据块的状态值设置为1;
S1206,判断是否存在状态值是1的数据块;
S1207,在存在状态值是1的数据块的情况下,修改扩容后子条带的校验块的状态值为1;
S1208,在不存在状态值是1的数据块的情况下,修改扩容后子条带的校验块的状态值为2。
在一个示例性实施例中,接收主机发送的目标操作指令之后,方法还包括:在目标操作指令为校验目标子条带的操作指令时,读取目标子条带中所有数据块的数据块状态;在目标数据块的数据块状态的状态值是第二预设值,且目标子条带的校验块的校验状态的状态值是第四预设值的情况下,利用校验块和目标子条带中所有数据块对目标子条带进行一致性校验;在目标数据块的数据块状态的状态值是第二预设值,且目标子条带的校验块的校验状态的状态值是第三预设值的情况下,利用校验块和数据块状态的状态值是第二预设值的数据块对目标子条带进行一致性校验。在本实施例中,根据数据位状态位图,一致性校验操作可以仅对有效数据进行校验,减少过程中的IO操作,提升一致性校验的效率。
例如,一致性校验操作以单个子条带为最小单元,如图13所示,包括以下步骤:
S1301,读取子条带中的所有数据块的状态;
S1302,判断是否存在状态值是2的数据块;
S1303,在存在状态值是2的数据块的情况下,判断校验块的状态值;
S1304,在校验块的状态值是2的情况下,从磁盘中读取校验块和所有数据块执行一致性校验;
S1305,在校验块的状态值不是2的情况下,从磁盘中读取校验块和状态值是2的数据块执行一致性校验;
S1306,根据实际校验结果返回成功或失败;
S1307,在不存在状态值是2的数据块的情况下,返回校验成功。
在一个示例性实施例中,基于目标状态信息响应目标操作指令,对目标子条带执行数据操作之后,方法还包括:利用对目标子条带执行的数据操作对数据块状态和校验块状态进行更新。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种磁盘阵列中的数据处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图14是根据本申请实施例的磁盘阵列中的数据处理装置的结构框图,如图14所示,该装置包括:
第一接收模块1402,用于接收主机发送的目标操作指令,其中,主机与磁盘阵列控制器连接,磁盘阵列控制器与磁盘阵列连接,磁盘阵列中包括多个磁盘,磁盘用于存储数据块;
第一读取模块1404,用于基于目标操作指令从数据状态位图中读取目标子条带的目标状态信息,其中,目标子条带用于在磁盘阵列中对数据进行分块存储,目标状态信息包括数据块状态和校验块状态,数据块状态用于表示目标子条带中的数据块是否被使用,校验块状态用于表示目标子条带的冗余状态;
第一响应模块1406,用于基于目标状态信息响应目标操作指令,对目标子条带执行数据处理。
在一个示例性实施例中,上述第一读取模块,包括:
第一获取单元,用于获取上述目标操作指令中包括的数据块起始位置和数据块长度;
第一确定单元,用于利用上述数据块起始位置和上述数据块长度确定上述目标子条带;
第一读取单元,用于从上述数据状态位图中读取上述目标子条带的目标状态信息。
在一个示例性实施例中,上述第一响应模块,包括:
第二读取单元,用于在上述目标操作指令为从上述目标子条带中读取目标数据块的操作指令时,读取上述目标数据块的数据块状态,其中,上述目标数据块是上述目标子条带中多个数据块中的数据块;
第一响应单元,用于在上述目标数据块的数据块状态的状态值是第一预设值的情况下,响应上述目标操作指令,向上述主机反馈上述目标数据块为空的信息,其中,上述第一预设值用于表示上述目标数据块为空。
在一个示例性实施例中,上述第一响应模块,包括:
第二读取单元,用于在上述目标操作指令为从上述目标子条带中读取目标数据块的操作指令时,读取上述目标数据块的数据块状态,其中,上述目标数据块是上述目标子条带中多个数据块中的数据块;
第三读取单元,用于在上述目标数据块的数据块状态的状态值是第二预设值,且上述目标数据块处于异常磁盘中的情况下,读取上述校验块状态,其中,上述校验块状态用于表示上述目标子条带中包括的校验块的状态,上述第二预设值用于表示上述目标数据块中包括数据;
第四读取单元,用于在上述校验块状态的状态值是第三预设值的情况下,读取上述校验块中的数据和上述目标子条带中状态值是上述第二预设值的数据块中的数据,其中,上述状态值是上述第二预设值的数据块均设置在正常磁盘中,上述第二预设值用于表示上述数据块中包括数据;
第二响应单元,用于响应上述目标操作指令,将上述校验块中的数据和上述目标子条带中状态值是上述第二预设值的数据块中的数据发送至上述主机。
在一个示例性实施例中,上述装置还包括:
第二读取模块,用于在上述校验块状态的状态值是第四预设值的情况下,读取上述校验块中的数据和上述目标子条带中处于正常磁盘的数据块中的数据;
第二响应模块,用于响应上述目标操作指令,将上述校验块中的数据和上述目标子条带中处于正常磁盘的数据块中的数据发送至上述主机。
在一个示例性实施例中,上述第一响应模块,包括:
第五读取单元,用于在上述目标操作指令为向上述目标子条带中写入上述数据的操作指令时,读取上述校验块状态,其中,上述校验块状态用于表示上述目标子条带中包括的校验块的状态;
第六读取单元,用于在上述校验块状态的状态值是第三预设值的情况下,读取目标数据块的数据块状态,其中,上述目标数据块是上述目标子条带中多个数据块中的数据块;
第七读取单元,用于在上述目标数据块状态的状态值是第一预设值的情况下,读取上述目标子条带中的其他数据块,其中,上述其他数据块是上述目标子条带中除上述目标数据块之外的数据块,上述其他数据块的数据块状态的状态值是第二预设值,上述第一预设值用于表示上述目标数据块为空,上述第二预设值用于表示上述其他数据块中包括数据;
第三响应单元,用于响应上述目标操作指令,利用上述其他数据块将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述装置还包括:
第三响应模块,用于在上述校验块状态的状态值是第四预设值的情况下,响应上述目标操作指令,利用上述目标数据块的数量将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述第一响应模块,包括:
第八读取单元,用于在上述目标操作指令为向上述目标子条带中写入上述数据的操作指令时,读取上述校验块状态,其中,上述校验块状态用于表示上述目标子条带中包括的校验块的状态;
第九读取单元,用于在目标数据块处于异常磁盘中,且上述校验块状态的状态值是第三预设值的情况下,读取目标数据块的数据块状态;
第十读取单元,用于在上述目标数据块的数据块状态的状态值是第一预设值的情况下,读取上述校验块中的数据,其中,上述第一预设值用于表示上述目标数据块为空;
第四响应单元,用于响应上述目标操作指令,利用上述校验块中的数据和上述数据更新上述校验块的校验状态。
在一个示例性实施例中,上述装置还包括:
第三读取模块,用于在上述目标数据块状态的状态值是第二预设值的情况下,读取上述目标子条带中的其他数据块,其中,上述其他数据块是上述目标子条带中除上述目标数据块之外的数据块,上述其他数据块的数据块状态的状态值是第二预设值,上述第二预设值用于表示上述其他数据块不为空;
第四响应模块,用于响应上述目标操作指令,利用上述其他数据块将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述装置还包括:第一更新模块,用于在上述目标操作指令为向上述目标子条带中写入上述目标数据的操作指令时,读取上述校验块状态之后,在目标数据块处于异常磁盘中,且校验块状态的状态值是第四预设值的情况下,利用数据块对目标子条带进行更新。
在一个示例性实施例中,第四读取模块,用于在上述目标操作指令为向上述目标子条带中写入上述目标数据的操作指令时,读取上述校验块状态之后,在上述目标子条带中包括异常磁盘,且上述目标数据块处于正常磁盘中的情况下,读取上述目标数据块的数据块状态;
第五读取模块,用于在上述目标数据块的数据块状态的状态值是第一预设值的情况下,读取上述校验块中的数据;
第二更新模块,用于利用上述校验块中的数据和上述目标数据更新上述校验块的校验状态。
在一个示例性实施例中,上述装置还包括:第六读取模块,用于在上述目标子条带中包括异常磁盘,且上述目标数据块处于正常磁盘中的情况下,读取上述目标数据块的数据块状态之后,在上述目标数据块状态的状态值是第二预设值的情况下,读取上述目标子条带中的其他数据块,其中,上述其他数据块是上述目标子条带中除上述目标数据块之外的数据块,上述其他数据块的数据块状态的状态值是第二预设值,上述第二预设值用于表示上述其他数据块不为空;
第三更新模块,用于利用上述其他数据块将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述装置还包括:
第四更新模块,用于在上述目标操作指令为向上述目标子条带中写入上述目标数据的操作指令时,读取上述校验块状态之后,在上述目标子条带中包括异常磁盘、上述目标数据块处于正常磁盘中,且上述校验块状态的状态值是第四预设值的情况下,将上述数据更新至上述目标子条带中。
在一个示例性实施例中,上述装置还包括:第七读取模块,用于接收主机发送的目标操作指令之后,在上述目标操作指令为重新构建目标数据块时,读取上述目标数据块的数据块状态和上述目标子条带的校验块状态,其中,上述目标数据块是上述目标子条带中多个数据块中的数据块;
第八读取模块,用于在上述目标数据块的数据块状态的状态值是第二预设值,且上述目标数据块的校验块状态的状态值是第三预设值的情况下,读取上述目标子条带中的其他数据块,其中,上述其他数据块是上述目标子条带中除上述目标数据块之外的数据块,上述其他数据块的数据块状态的状态值是第二预设值,上述第二预设值用于表示上述其他数据块不为空;
第一写入模块,用于利用上述其他数据块中的数据和上述目标数据块的校验块中的数据计算重新构建后的目标数据块,并将上述重新构建后的目标数据块中的数据写入上述磁盘阵列。
在一个示例性实施例中,上述装置还包括:
第一确定模块,用于上述目标操作指令为重新构建上述目标数据块时,读取目标数据块的数据块状态和校验块状态之后,在上述目标数据块的数据块状态的状态值是第二预设值、上述目标数据块的校验块状态的状态值是第四预设值,且上述目标子条带中包括数据块状态的状态值是第一预设值的情况下,利用上述其他数据块重新确定上述目标子条带的校验数据块;
第一修改模块,用于将重新确定的校验数据块的校验状态的状态值修改为第三预设值。
在一个示例性实施例中,上述装置还包括:第九读取模块,用于上述目标操作指令为重新构建上述目标数据块时,读取目标数据块的数据块状态和校验块状态之后,在上述目标数据块的数据块状态的状态值是第二预设值、上述目标数据块的校验块状态的状态值是第四预设值,且上述目标子条带中的其他数据块的数据块状态的状态值均是第二预设值的情况下,读取上述目标子条带中的所有数据块和校验数据块;
第二写入模块,用于利用上述目标子条带中的所有数据块和校验数据块计算重新构建后的目标数据块,并将上述重新构建后的目标数据块中的数据写入上述磁盘阵列。
在一个示例性实施例中,上述装置还包括:第一迁移模块,用于接收主机发送的目标操作指令之后,在上述目标操作指令为迁移上述目标子条带中的数据块,且上述目标子条带中包括目标数据块的情况下,将上述目标数据块迁移至其他子条带中存储,其中,上述目标数据块是上述目标子条带中数据块状态的状态值为第二预设值的数据块;
第一计算模块,用于利用上述目标数据块计算上述目标子条带的校验数据块;
第二修改模块,用于在上述目标子条带中包括数据块状态的状态值为第一预设值的其他数据块的情况下,利用上述其他数据块修改上述校验数据块的校验值。
在一个示例性实施例中,上述装置还包括:第十读取模块,用于接收主机发送的目标操作指令之后,在确定上述磁盘阵列中增加磁盘,得到扩容后的子条带的情况下,读取上述目标子条带的数据块状态和校验块状态;
第二迁移模块,用于在目标数据块的数据块状态的状态值是第二预设值的情况下,将上述目标数据块中的数据迁移至上述扩容后的子条带中;
第二确定模块,用于利用上述扩容后的子条带中包括的数据块的数据块状态确定上述扩容后的子条带中的校验块的校验状态。
在一个示例性实施例中,上述装置还包括:第十一读取模块,用于接收主机发送的目标操作指令之后,在上述目标操作指令为校验上述目标子条带的操作指令时,读取上述目标子条带中所有数据块的数据块状态;
第一校验模块,用于在目标数据块的数据块状态的状态值是第二预设值,且上述目标子条带的校验块的校验状态的状态值是第四预设值的情况下,利用上述校验块和上述目标子条带中所有数据块对上述目标子条带进行一致性校验;
第二校验模块,用于在目标数据块的数据块状态的状态值是第二预设值,且上述目标子条带的校验块的校验状态的状态值是第三预设值的情况下,利用上述校验块和数据块状态的状态值是第二预设值的数据块对上述目标子条带进行一致性校验。
在一个示例性实施例中,上述装置还包括:
第五更新模块,用于基于上述目标状态信息响应上述目标操作指令,对上述目标数据执行数据操作之后,利用对上述目标子条带执行的数据操作对上述数据块状态和上述校验块状态进行更新。
在一个示例性实施例中,上述装置还包括:
第一获取模块,用于基于上述目标操作指令从数据状态位图中读取目标子条带的目标状态信息之前,获取上述磁盘阵列中多个子条带的状态,其中,一个上述子条带的状态中包括多个数据块状态和一个校验块状态,其中,多个上述数据块状态用于表示上述子条带中多个数据块的状态,上述校验块状态用于表示上述子条带中校验块的状态;
第一生成模块,用于利用多个上述子条带的状态生成上述数据状态位图,并缓存上述数据状态位图。
在一个示例性实施例中,上述装置还包括:
第一存储模块,用于利用多个上述子条带的状态生成上述数据状态位图,并缓存上述数据状态位图之后,在上述磁盘阵列停止工作时,将上述数据状态位图存储至上述磁盘阵列中的磁盘中,其中,上述磁盘中包括存储上述数据状态位图的预设数据区。
在一个示例性实施例中,上述装置还包括:第十二读取模块,用于在上述磁盘阵列停止工作时,将上述数据状态位图存储至上述磁盘阵列中的磁盘中之后,在上述磁盘阵列开启工作时,从上述预设数据区中读取上述数据状态位图。
在一个示例性实施例中,上述装置还包括:
第一设置模块,用于基于上述目标操作指令从数据状态位图中读取目标子条带的目标状态信息之前,在对上述磁盘阵列执行初始化操作时,将上述磁盘阵列中多个子条带的数据块状态的状态值均设置为第一预设值,并将多个上述子条带的校验块状态的状态值均设置为第三预设值;
第三修改模块,用于在接收上述主机发送的上述目标操作指令之后,基于上述目标操作指令的指令类型修改上述数据块状态的状态值。
第四修改模块,用于基于修改后的数据块状态的状态值修改上述校验块状态的状态值。
根据本申请的又一个实施例,还提供了一种磁盘阵列***,包括主机、磁盘阵列控制器和磁盘阵列,其中,所述主机与所述磁盘阵列控制器连接,所述磁盘阵列控制器与磁盘阵列连接,所述磁盘阵列中包括多个磁盘,磁盘用于存储数据块,所述磁盘阵列控制器用于执行上述步骤。
本申请的实施例还提供了一种电子设备,图15是根据本申请实施例的电子设备的示意图,如图15所示,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (28)
1.一种磁盘阵列中的数据处理方法,其特征在于,应用于磁盘阵列控制器,包括:
接收主机发送的目标操作指令,其中,所述主机与所述磁盘阵列控制器连接,所述磁盘阵列控制器与磁盘阵列连接,所述磁盘阵列中包括多个磁盘,所述磁盘用于存储数据块;
基于所述目标操作指令从数据状态位图中读取目标子条带的目标状态信息,其中,所述目标子条带用于在所述磁盘阵列中对数据进行分块存储,所述目标状态信息包括数据块状态和校验块状态,所述数据块状态用于表示所述目标子条带中的数据块是否被使用,所述校验块状态用于表示所述目标子条带的冗余状态;
基于所述目标状态信息响应所述目标操作指令,对所述目标子条带执行数据处理。
2.根据权利要求1所述的方法,其特征在于,基于所述目标操作指令从数据状态位图中读取目标子条带的目标状态信息,包括:
获取所述目标操作指令中包括的数据块起始位置和数据块长度;
利用所述数据块起始位置和所述数据块长度确定所述目标子条带;
从所述数据状态位图中读取所述目标子条带的目标状态信息。
3.根据权利要求1所述的方法,其特征在于,基于所述目标状态信息响应所述目标操作指令,对所述目标子条带执行数据处理,包括:
在所述目标操作指令为从所述目标子条带中读取目标数据块的操作指令时,读取所述目标数据块的数据块状态,其中,所述目标数据块是所述目标子条带中多个数据块中的数据块;
在所述目标数据块的数据块状态的状态值是第一预设值的情况下,响应所述目标操作指令,向所述主机反馈所述目标数据块为空的信息,其中,所述第一预设值用于表示所述目标数据块为空。
4.根据权利要求1所述的方法,其特征在于,基于所述目标状态信息响应所述目标操作指令,对所述目标子条带执行数据处理,包括:
在所述目标操作指令为从所述目标子条带中读取目标数据块的操作指令时,读取所述目标数据块的数据块状态,其中,所述目标数据块是所述目标子条带中多个数据块中的数据块;
在所述目标数据块的数据块状态的状态值是第二预设值,且所述目标数据块处于异常磁盘中的情况下,读取所述校验块状态,其中,所述校验块状态用于表示所述目标子条带中包括的校验块的状态,所述第二预设值用于表示所述目标数据块中包括数据;
在所述校验块状态的状态值是第三预设值的情况下,读取所述校验块中的数据和所述目标子条带中状态值是所述第二预设值的数据块中的数据,其中,所述状态值是所述第二预设值的数据块均设置在正常磁盘中,所述第二预设值用于表示所述数据块中包括数据;
响应所述目标操作指令,将所述校验块中的数据和所述目标子条带中状态值是所述第二预设值的数据块中的数据发送至所述主机。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在所述校验块状态的状态值是第四预设值的情况下,读取所述校验块中的数据和所述目标子条带中处于正常磁盘的数据块中的数据;
响应所述目标操作指令,将所述校验块中的数据和所述目标子条带中处于正常磁盘的数据块中的数据发送至所述主机。
6.根据权利要求1所述的方法,其特征在于,基于所述目标状态信息响应所述目标操作指令,对所述目标子条带执行数据处理,包括:
在所述目标操作指令为向所述目标子条带中写入所述数据的操作指令时,读取所述校验块状态,其中,所述校验块状态用于表示所述目标子条带中包括的校验块的状态;
在所述校验块状态的状态值是第三预设值的情况下,读取目标数据块的数据块状态,其中,所述目标数据块是所述目标子条带中多个数据块中的数据块;
在所述目标数据块状态的状态值是第一预设值的情况下,读取所述目标子条带中的其他数据块,其中,所述其他数据块是所述目标子条带中除所述目标数据块之外的数据块,所述其他数据块的数据块状态的状态值是第二预设值,所述第一预设值用于表示所述目标数据块为空,所述第二预设值用于表示所述其他数据块中包括数据;
响应所述目标操作指令,利用所述其他数据块将所述数据更新至所述目标子条带中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述校验块状态的状态值是第四预设值的情况下,响应所述目标操作指令,利用所述目标数据块的数量将所述数据更新至所述目标子条带中。
8.根据权利要求1所述的方法,其特征在于,基于所述目标状态信息响应所述目标操作指令,对所述目标子条带执行数据处理,包括:
在所述目标操作指令为向所述目标子条带中写入所述数据的操作指令时,读取所述校验块状态,其中,所述校验块状态用于表示所述目标子条带中包括的校验块的状态;
在目标数据块处于异常磁盘中,且所述校验块状态的状态值是第三预设值的情况下,读取目标数据块的数据块状态;
在所述目标数据块的数据块状态的状态值是第一预设值的情况下,读取所述校验块中的数据,其中,所述第一预设值用于表示所述目标数据块为空;
响应所述目标操作指令,利用所述校验块中的数据和所述数据更新所述校验块的校验状态。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在所述目标数据块状态的状态值是第二预设值的情况下,读取所述目标子条带中的其他数据块,其中,所述其他数据块是所述目标子条带中除所述目标数据块之外的数据块,所述其他数据块的数据块状态的状态值是第二预设值,所述第二预设值用于表示所述其他数据块不为空;
响应所述目标操作指令,利用所述其他数据块将所述数据更新至所述目标子条带中。
10.根据权利要求8所述的方法,其特征在于,在所述目标操作指令为向所述目标子条带中写入所述目标数据的操作指令时,读取所述校验块状态之后,所述方法还包括:
在目标数据块处于异常磁盘中,且所述校验块状态的状态值是第四预设值的情况下,利用所述数据块对所述目标子条带进行更新。
11.根据权利要求8所述的方法,其特征在于,在所述目标操作指令为向所述目标子条带中写入所述数据的操作指令时,读取所述校验块状态之后,所述方法还包括:
在所述目标子条带中包括异常磁盘,且所述数据块处于正常磁盘中的情况下,读取所述数据块的数据块状态;
在所述目标数据块的数据块状态的状态值是第一预设值的情况下,读取所述校验块中的数据;
利用所述校验块中的数据和所述目标数据更新所述校验块的校验状态。
12.根据权利要求11所述的方法,其特征在于,在所述目标子条带中包括异常磁盘,且所述目标数据块处于正常磁盘中的情况下,读取所述目标数据块的数据块状态之后,所述方法还包括:
在所述目标数据块状态的状态值是第二预设值的情况下,读取所述目标子条带中的其他数据块,其中,所述其他数据块是所述目标子条带中除所述目标数据块之外的数据块,所述其他数据块的数据块状态的状态值是第二预设值,所述第二预设值用于表示所述其他数据块不为空;
利用所述其他数据块将所述数据更新至所述目标子条带中。
13.根据权利要求8所述的方法,其特征在于,在所述目标操作指令为向所述目标子条带中写入所述数据的操作指令时,读取所述校验块状态之后,所述方法还包括:
在所述目标子条带中包括异常磁盘、所述目标数据块处于正常磁盘中,且所述校验块状态的状态值是第四预设值的情况下,将所述数据更新至所述目标子条带中。
14.根据权利要求1所述的方法,其特征在于,接收主机发送的目标操作指令之后,所述方法还包括:
在所述目标操作指令为重新构建目标数据块时,读取所述目标数据块的数据块状态和所述目标子条带的校验块状态,其中,所述目标数据块是所述目标子条带中多个数据块中的数据块;
在所述目标数据块的数据块状态的状态值是第二预设值,且所述目标数据块的校验块状态的状态值是第三预设值的情况下,读取所述目标子条带中的其他数据块,其中,所述其他数据块是所述目标子条带中除所述目标数据块之外的数据块,所述其他数据块的数据块状态的状态值是第二预设值,所述第二预设值用于表示所述其他数据块不为空;
利用所述其他数据块中的数据和所述目标数据块的校验块中的数据计算重新构建后的目标数据块,并将所述重新构建后的目标数据块中的数据写入所述磁盘阵列。
15.根据权利要求14所述的方法,其特征在于,所述目标操作指令为重新构建所述目标数据块时,读取目标数据块的数据块状态和校验块状态之后,所述方法还包括:
在所述目标数据块的数据块状态的状态值是第二预设值、所述目标数据块的校验块状态的状态值是第四预设值,且所述目标子条带中包括数据块状态的状态值是第一预设值的情况下,利用所述其他数据块重新确定所述目标子条带的校验数据块;
将重新确定的校验数据块的校验状态的状态值修改为第三预设值。
16.根据权利要求14所述的方法,其特征在于,所述目标操作指令为重新构建所述目标数据块时,读取目标数据块的数据块状态和校验块状态之后,所述方法还包括:
在所述目标数据块的数据块状态的状态值是第二预设值、所述目标数据块的校验块状态的状态值是第四预设值,且所述目标子条带中的其他数据块的数据块状态的状态值均是第二预设值的情况下,读取所述目标子条带中的所有数据块和校验数据块;
利用所述目标子条带中的所有数据块和校验数据块计算重新构建后的目标数据块,并将所述重新构建后的目标数据块中的数据写入所述磁盘阵列。
17.根据权利要求1所述的方法,其特征在于,接收主机发送的目标操作指令之后,所述方法还包括:
在所述目标操作指令为迁移所述目标子条带中的数据块,且所述目标子条带中包括目标数据块的情况下,将所述目标数据块迁移至其他子条带中存储,其中,所述目标数据块是所述目标子条带中数据块状态的状态值为第二预设值的数据块;
利用所述目标数据块计算所述目标子条带的校验数据块;
在所述目标子条带中包括数据块状态的状态值为第一预设值的其他数据块的情况下,利用所述其他数据块修改所述校验数据块的校验值。
18.根据权利要求1所述的方法,其特征在于,接收主机发送的目标操作指令之后,所述方法还包括:
在确定所述磁盘阵列中增加磁盘,得到扩容后的子条带的情况下,读取所述目标子条带的数据块状态和校验块状态;
在目标数据块的数据块状态的状态值是第二预设值的情况下,将所述目标数据块中的数据迁移至所述扩容后的子条带中;
利用所述扩容后的子条带中包括的数据块的数据块状态确定所述扩容后的子条带中的校验块的校验状态。
19.根据权利要求1所述的方法,其特征在于,接收主机发送的目标操作指令之后,所述方法还包括:
在所述目标操作指令为校验所述目标子条带的操作指令时,读取所述目标子条带中所有数据块的数据块状态;
在目标数据块的数据块状态的状态值是第二预设值,且所述目标子条带的校验块的校验状态的状态值是第四预设值的情况下,利用所述校验块和所述目标子条带中所有数据块对所述目标子条带进行一致性校验;
在目标数据块的数据块状态的状态值是第二预设值,且所述目标子条带的校验块的校验状态的状态值是第三预设值的情况下,利用所述校验块和数据块状态的状态值是第二预设值的数据块对所述目标子条带进行一致性校验。
20.根据权利要求1所述的方法,其特征在于,基于所述目标状态信息响应所述目标操作指令,对所述目标子条带执行数据操作之后,所述方法还包括:
利用对所述目标子条带执行的数据操作对所述数据块状态和所述校验块状态进行更新。
21.根据权利要求1所述的方法,其特征在于,基于所述目标操作指令从数据状态位图中读取目标子条带的目标状态信息之前,所述方法还包括:
获取所述磁盘阵列中多个子条带的状态,其中,一个所述子条带的状态中包括多个数据块状态和一个校验块状态,其中,多个所述数据块状态用于表示所述子条带中多个数据块的状态,所述校验块状态用于表示所述子条带中校验块的状态;
利用多个所述子条带的状态生成所述数据状态位图,并缓存所述数据状态位图。
22.根据权利要求21所述的方法,其特征在于,利用多个所述子条带的状态生成所述数据状态位图,并缓存所述数据状态位图之后,所述方法还包括:
在所述磁盘阵列停止工作时,将所述数据状态位图存储至所述磁盘阵列中的磁盘中,其中,所述磁盘中包括存储所述数据状态位图的预设数据区。
23.根据权利要求22所述的方法,其特征在于,在所述磁盘阵列停止工作时,将所述数据状态位图存储至所述磁盘阵列中的磁盘中之后,所述方法还包括:
在所述磁盘阵列开启工作时,从所述预设数据区中读取所述数据状态位图。
24.根据权利要求1所述的方法,其特征在于,基于所述目标操作指令从数据状态位图中读取目标子条带的目标状态信息之前,所述方法还包括:
在对所述磁盘阵列执行初始化操作时,将所述磁盘阵列中多个子条带的数据块状态的状态值均设置为第一预设值,并将多个所述子条带的校验块状态的状态值均设置为第三预设值;
在接收所述主机发送的所述目标操作指令之后,基于所述目标操作指令的指令类型修改所述数据块状态的状态值;
基于修改后的数据块状态的状态值修改所述校验块状态的状态值。
25.一种磁盘阵列中的数据处理装置,其特征在于,包括:
第一接收模块,用于接收主机发送的目标操作指令,其中,所述主机与磁盘阵列控制器连接,所述磁盘阵列控制器与磁盘阵列连接,所述磁盘阵列中包括多个磁盘,所述磁盘用于存储数据块;
第一读取模块,用于基于所述目标操作指令从数据状态位图中读取目标子条带的目标状态信息,其中,所述目标子条带用于在所述磁盘阵列中对数据进行分块存储,所述目标状态信息包括数据块状态和校验块状态,所述数据块状态用于表示所述目标子条带中的数据块是否被使用,所述校验块状态用于表示所述目标子条带的冗余状态;
第一响应模块,用于基于所述目标状态信息响应所述目标操作指令,对所述目标子条带执行数据处理。
26.一种磁盘阵列***,其特征在于,包括主机、磁盘阵列控制器和磁盘阵列,其中,所述主机与所述磁盘阵列控制器连接,所述磁盘阵列控制器与磁盘阵列连接,所述磁盘阵列中包括多个磁盘,磁盘用于存储数据块,所述磁盘阵列控制器用于执行所述权利要求1至24任一项中所述的方法的步骤。
27.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至24任一项中所述的方法的步骤。
28.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至24任一项中所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311030383.2A CN116795295B (zh) | 2023-08-16 | 2023-08-16 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311030383.2A CN116795295B (zh) | 2023-08-16 | 2023-08-16 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116795295A true CN116795295A (zh) | 2023-09-22 |
CN116795295B CN116795295B (zh) | 2023-11-17 |
Family
ID=88043911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311030383.2A Active CN116795295B (zh) | 2023-08-16 | 2023-08-16 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795295B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149094A (zh) * | 2023-10-30 | 2023-12-01 | 苏州元脑智能科技有限公司 | 确定数据区状态的方法、装置、磁盘阵列及存储*** |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581690A (en) * | 1993-06-29 | 1996-12-03 | Digital Equipment Corporation | Method and apparatus for preventing the use of corrupt data in a multiple disk raid organized storage system |
CN101546249A (zh) * | 2008-03-26 | 2009-09-30 | 中兴通讯股份有限公司 | 磁盘阵列在线容量扩展方法 |
CN101566924A (zh) * | 2008-04-23 | 2009-10-28 | 中兴通讯股份有限公司 | 一种磁盘阵列的数据读写方法 |
WO2014010077A1 (ja) * | 2012-07-13 | 2014-01-16 | 富士通株式会社 | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム |
CN105302492A (zh) * | 2015-11-18 | 2016-02-03 | 浙江大华技术股份有限公司 | 一种磁盘阵列raid重建方法及装置 |
CN107885620A (zh) * | 2017-11-22 | 2018-04-06 | 华中科技大学 | 一种提高固态盘阵列性能和可靠性的方法及*** |
CN112783689A (zh) * | 2021-02-08 | 2021-05-11 | 上海交通大学 | 一种基于lrc编码的部分条带写优化方法及装置 |
CN115202575A (zh) * | 2022-06-22 | 2022-10-18 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
-
2023
- 2023-08-16 CN CN202311030383.2A patent/CN116795295B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581690A (en) * | 1993-06-29 | 1996-12-03 | Digital Equipment Corporation | Method and apparatus for preventing the use of corrupt data in a multiple disk raid organized storage system |
CN101546249A (zh) * | 2008-03-26 | 2009-09-30 | 中兴通讯股份有限公司 | 磁盘阵列在线容量扩展方法 |
CN101566924A (zh) * | 2008-04-23 | 2009-10-28 | 中兴通讯股份有限公司 | 一种磁盘阵列的数据读写方法 |
WO2014010077A1 (ja) * | 2012-07-13 | 2014-01-16 | 富士通株式会社 | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム |
CN105302492A (zh) * | 2015-11-18 | 2016-02-03 | 浙江大华技术股份有限公司 | 一种磁盘阵列raid重建方法及装置 |
CN107885620A (zh) * | 2017-11-22 | 2018-04-06 | 华中科技大学 | 一种提高固态盘阵列性能和可靠性的方法及*** |
CN112783689A (zh) * | 2021-02-08 | 2021-05-11 | 上海交通大学 | 一种基于lrc编码的部分条带写优化方法及装置 |
CN115202575A (zh) * | 2022-06-22 | 2022-10-18 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149094A (zh) * | 2023-10-30 | 2023-12-01 | 苏州元脑智能科技有限公司 | 确定数据区状态的方法、装置、磁盘阵列及存储*** |
CN117149094B (zh) * | 2023-10-30 | 2024-02-09 | 苏州元脑智能科技有限公司 | 确定数据区状态的方法、装置、磁盘阵列及存储*** |
Also Published As
Publication number | Publication date |
---|---|
CN116795295B (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10606491B2 (en) | Providing redundancy in a virtualized storage system for a computer system | |
US9910748B2 (en) | Rebuilding process for storage array | |
CN110531940B (zh) | 视频文件处理方法及装置 | |
US10365983B1 (en) | Repairing raid systems at per-stripe granularity | |
US8209587B1 (en) | System and method for eliminating zeroing of disk drives in RAID arrays | |
EP3617867B1 (en) | Fragment management method and fragment management apparatus | |
CN107526535B (zh) | 用于管理存储***的方法和*** | |
EP2942713A1 (en) | Storage system and storage apparatus | |
CN111433746A (zh) | 使用故障存储设备的重建助手 | |
CN110096219B (zh) | 从驱动器组生成的驱动器区段池的有效容量 | |
CN111344679B (zh) | 用于增强独立磁盘冗余阵列重建的机器学习的方法和*** | |
JP2014174992A (ja) | システム・リブートを通じて改善されたキャッシュ・ランプアップを達成するためにキャッシュ・ストアを管理するためのシステム、方法、およびコンピュータ可読媒体 | |
CN116795295B (zh) | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 | |
JP4884721B2 (ja) | 記憶装置のフォーマットを不要としたストレージシステム及び記憶制御方法 | |
JP7472341B2 (ja) | ストレージシステム及びストレージシステムの制御方法 | |
US7346733B2 (en) | Storage apparatus, system and method using a plurality of object-based storage devices | |
CN112513804A (zh) | 一种数据处理方法及装置 | |
CN111124262A (zh) | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 | |
CN116974458A (zh) | 用于处理数据的方法、电子设备和计算机程序产品 | |
CN102789370A (zh) | 一种raid阵列同步方法及装置 | |
US11487428B2 (en) | Storage control apparatus and storage control method | |
US8418029B2 (en) | Storage control device and storage control method | |
CN116204137B (zh) | 基于dpu的分布式存储***、控制方法、装置及设备 | |
CN105573862B (zh) | 一种恢复文件***的方法和设备 | |
CN111124746A (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 |