具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种RAID5磁盘阵列中写入数据的方法,如图1所示,包括以下步骤:
步骤101,判断写入新数据的数据盘是否完成格式化。
步骤102,所述判断结果为否,按照大写方式在所述写入新数据的数据盘中写入新数据。
其中,按照大写方式在所述写入新数据的数据盘中写入新数据包括:
获得写入新数据的数据盘之外的数据盘中原有的数据;
根据新数据和写入新数据的数据盘之外的数据盘中原有的数据生成校验数据,所述校验数据用于在有数据盘失效时进行数据恢复;
将所述校验数据写入校验盘,并将所述新数据写入所述写入新数据的数据盘。
本发明的实施例中,在写入数据的数据盘没有完成格式化时,按照大写方式写入数据,即在写入新数据的数据盘中写入新数据,在校验盘中写入根据新数据和写入新数据的数据盘之外的数据盘中原有的数据生成的新的校验数据,保证了新的校验数据的正确性,从而实现了在未完成格式化的RAID5磁盘阵列中的数据写入。
本发明实施例提供了一种写入数据的方法,如图2所示,包括以下步骤:
步骤201,接收写请求。
步骤202,判断磁盘阵列类型。若磁盘阵列为RAID10,则转步骤203;若磁盘阵列为RAID5,则转步骤204。
步骤203,按照RAID10的写入方式在写请求对应磁盘中写入数据,结束数据写入。
RAID10的冗余方式是通过镜像实现的,对镜像而言,每次写操作都与盘上原有数据状态无关,即使原有盘上数据不满足RAID10要求也无所谓,经过新数据写入后,必然会重新满足,所以RAID10可以直接写入数据。
步骤204,判断需要写入新数据的数据盘是否完成格式化,若判断结果为是,则转步骤205;若判断结果为否,则转步骤206。
步骤205,按照读请求数量最少的方式在需要写入新数据的数据盘中写入新数据。
在RAID5中,读请求越少就意味着写性能越高。当需要写入新数据的数据盘的数目大于写入新数据的数据盘之外的数据盘的数目时,采用大写的方式写入数据,即获得写入新数据的数据盘之外的数据盘中原有的数据;根据所述新数据和所述写入新数据的数据盘之外的数据盘中原有的数据生成校验数据,即对所述新数据和所述写入新数据的数据盘之外的数据盘中原有的数据进行异或运算,得到所述校验数据;将所述校验数据写入校验盘,并将所述新数据写入数据盘。当需要写入新数据的数据盘的数目小于不需写入新数据的数据盘时,则采用小写方式写入数据,即获得需要写入新数据的数据盘中原有的数据和校验盘中原有的校验数据,在原有的校验数据中除去需要写入新数据的数据盘中原有的数据的贡献,然后和新数据一起生成新的校验数据,将新的校验数据写入校验盘,并将新数据写入数据盘。
步骤206,判断写入新数据的数据盘之外的数据盘中是否有盘失效,即判断写入新数据的数据盘之外的数据盘中是否有盘无法进行数据读取和写入,若有磁盘无法读取和写入数据,则认为此盘失效。若判断结果为是,则转步骤207;若判断结果为否,则转步骤208。
步骤207,按照RAID5数据重构方式将失效磁盘的数据恢复。
读取校验盘中原有的校验数据和有效数据盘中原有的数据;对所述校验盘中原有的校验数据和所述有效数据盘中原有的数据进行异或计算,得到失效数据盘的原有数据。这时,可以将失效盘的原有数据缓存在内存中,以便在写入数据时调用。
步骤208,按照大写方式在需要写入新数据的数据盘中写入新数据。
获得写入新数据的数据盘之外的数据盘中原有的数据,如果存在失效磁盘,则需从缓存中读取步骤207获得的失效磁盘中原有数据;将所述新数据和所述写入新数据的数据盘之外的数据盘中原有的数据进行异或运算,得到新的校验数据;将新的校验数据写入校验盘,并将所述新数据写入到需要写入新数据的数据盘中。
使用大写方式进行数据写入的原因是大写过程是从需要写入新数据的数据盘之外的数据盘读出原有的数据,与需要写入的新数据一起计算出新的校验数据,然后将新的校验数据存入校验磁盘中替换原有的校验数据,这样得到的新的校验数据是一定满足RAID5的要求的,即后续如果有数据盘失效,可以通过新的校验数据和其他数据盘中的数据恢复失效数据盘中的数据,从而保证数据盘中数据的安全性。
本发明的实施例中,在写入数据的数据盘没有完成格式化时,按照大写方式写入数据,即在写入新数据的数据盘中写入新数据,在校验盘中写入根据新数据和写入新数据的数据盘之外的数据盘中原有的数据生成的新的校验数据,保证了新的校验数据的正确性,从而实现了在未完成格式化的RAID5磁盘阵列中的数据写入。
本发明实施例提供了一种RAID5磁盘阵列中写入数据的装置,如图3所示,包括:
第一判断单元301,用于判断写入新数据的数据盘是否完成格式化;
大写单元302,用于若所述第一判断单元301判断结果为否,按照大写方式在所述写入新数据的数据盘中写入新数据。
其中,还包括:
第二判断单元303,用于若所述第一判断单元301判断结果为是,判断所述写入新数据的数据盘的数目是否大于所述写入新数据的数据盘之外的数据盘的数目;
小写单元304,用于若所述第二判断单元303判断结果为否,按照小写方式在所述写入新数据的数据盘中写入新数据;
所述大写单元302,还用于若所述第二判断单元303判断结果为是,按照大写方式在所述写入新数据的数据盘中写入新数据。
其中,所述大写单元302包括:
获取子单元3021,用于获得所述写入新数据的数据盘之外的数据盘中原有的数据;
生成子单元3022,用于根据新数据和所述获取子单元3021获取的写入新数据的数据盘之外的数据盘中原有的数据生成校验数据,所述校验数据用于在有数据盘失效时进行数据恢复;
写入子单元3023,用于将所述生成子单元3022生成的校验数据写入校验盘,并将所述新数据写入所述写入新数据的数据盘。
其中,当所述写入新数据的数据盘之外的数据盘中有数据盘失效时,所述获取子单元3021具体用于读取检验盘中原有的校验数据和有效数据盘中原有的数据;对所述检验盘中原有的校验数据和所述有效数据盘中原有的数据进行异或计算,得到失效数据盘中原有的数据。
其中,所述生成子单元3022对所述新数据和所述写入新数据的数据盘之外的数据盘中原有的数据进行异或运算,得到所述校验数据。
本发明的实施例中,在写入数据的数据盘没有完成格式化时,按照大写方式写入数据,即在写入新数据的数据盘中写入新数据,在校验盘中写入根据新数据和写入新数据的数据盘之外的数据盘中原有的数据生成的新的校验数据,保证了新的校验数据的正确性,从而实现了在未完成格式化的RAID5磁盘阵列中的数据写入。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以可借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。