本发明涉及raid存储,尤其涉及一种tp-raid快速切换为raid 6的方法、装置、存储服务器及介质。
背景技术:
1、raid(redundant arrays of independent disks)即具有冗余能力的磁盘阵列,磁盘阵列是通过将多个独立磁盘组合一起,从而得到一个容量巨大的磁盘组。具体的,raid主要利用数据条带、数据校验和/或镜像三种技术来获得较强的性能、更高的可靠性、较好的容错能力和较强的扩展性。根据不同的数据应用需求,可以单独运用或者组合运用上述三种技术的策略和架构,按照不同的策略和架构,raid可以被分为不同的等级:raid 0,raid 1,raid 5,raid 6和raid 10;其中,raid 5(分布式奇偶校验的独立磁盘结构)以及raid 6(带两种分布式奇偶校验码的独立磁盘结构)即为两种单独运用数据校验技术的raid策略,并且其二者的每个条带组分别由若干数据块以及两个校验块组成。
2、随着技术的发展,磁盘的寿命增长,组建的服务器存储的数据量更大,raid技术已经逐渐无法满足当前的存储需求,因此出现了对tp-raid的需求。相比于raid5和raid6,tp-raid是一种能够同时支持三个错误块的raid算法,相应的tp-raid的每个条带组中将由若干数据块以及三个校验块组成。tp-raid的算法原理的一般解释即是所构建的一元三次方程组具有唯一解的raid关系式。然而,考虑到产品实现需要向客户支持多种方案,当用户需要由tp-raid切换为raid5或raid6时,可以采用重新编码的方式实现切换,重新编码的过程及缺陷包括:首先抛弃所有的校验信息,然后进行数据迁移,再重新读取所有的数据进行编码,这样的运算操作需要对所有的数据进行两次的读写,速度很慢且损耗极大;并且由于raid6相较于raid5的算法更加复杂,重新编码难度更大,更加制约了向raid6切换的速度。因此如何实现tp-raid快速切换为raid 6的方案是本领域内亟需解决的技术问题。
技术实现思路
1、为了提供一种操作更为简单、执行速度更快的tp-raid切换为raid 6的方案,在本发明的第一方面,提出了一种tp-raid快速切换为raid 6的方法,所述方法包括对tp-raid盘中的每k+3个连续的tp-raid条带组执行以下步骤:对比采用相同负载均衡策略下的tp-raid落盘方式和raid 6落盘方式;确定由所述tp-raid落盘方式切换为所述raid 6落盘方式时数据块迁移数量最少的k+2个tp-raid条带组,其中k为tp-raid条带组中数据块的数量;将所述k+2个tp-raid条带组划分至移动组,将剩余的tp-raid条带组划分至重算组;确定需要空出的tp-raid盘;对所述移动组中保存于所述需要空出的tp-raid盘中的第一数据块进行条带组内的数据迁移,并重新计算新的校验块以将所述k+2个tp-raid条带组转化为raid 6条带组;对所述重算组中所有的第二数据块重新进行负载分配。
2、在一个或多个实施例中,当采用左旋不对齐的负载均衡策略时,将所述k+2个tp-raid条带组划分至移动组,将剩余的tp-raid条带组划分至重算组,包括:将第1个tp-raid条带组划分至重算组,将第2到第k+3个tp-raid条带组划分至移动组;所述第1个tp-raid条带组的落盘形式包括:以磁盘号递增顺序依次为第二校验块、第三校验块、k个数据块以及第一校验块。
3、在一个或多个实施例中,所述需要空出的tp-raid盘包括k+3个tp-raid盘中的任意一个。
4、在一个或多个实施例中,对所述移动组中保存于所述需要空出的tp-raid盘中的第一数据块进行条带组内的数据迁移,包括:将每个所述第一数据块迁移到其所在的tp-raid条带组的第三校验块所在的落盘位置并替换所述第三校验块;其中,所述第三校验块为tp-raid条带组中沿数据块1向数据块k方向遇到的第三个校验块。
5、在一个或多个实施例中,所述方法还包括在由所述第一数据块替换所述第三校验块之前,记录所述第三校验块,所述重新计算新的校验块以将所述k+2个tp-raid条带组转化为raid 6条带组,包括:根据所述tp-raid条带组中原有的校验块重新计算属于所述raid6条带组的新的校验块;使用所述新的校验块替换所述tp-raid条带组原有的第一校验块和第二校验块;其中,所述第一校验块为tp-raid条带组中沿据块1向数据块k方向遇到的第一个校验块,所述第二校验块为tp-raid条带组中沿数据块1向数据块k方向遇到的第二个校验块。
6、在一个或多个实施例中,根据所述tp-raid条带组中原有的校验块重新计算属于所述raid 6条带组的新的校验块,包括:将所述tp-raid条带组的落盘方式代入tp-raid关系式中获得第一方程组;将对应所述tp-raid条带组的raid 6条带组的落盘方式代入raid6关系式中获得第二方程组;基于所述第一方程组和所述第二方程组获得属于所述raid 6条带组的第四校验块和第五校验块。
7、在一个或多个实施例中,所述tp-raid关系式由每个tp-raid条带组中的数据块、校验块及其落盘位置确定;所述raid6关系式由每个raid6条带组中的数据块、校验块及其落盘位置确定;所述tp-raid关系式与所述raid 6关系式采用相同的里德所罗门码构建;所述负载均衡策略包括:左旋不对齐、右旋不对齐、左旋对齐以及右旋对齐。
8、在一个或多个实施例中,所述装置配置用于以tp-raid盘中的每k+3个连续的tp-raid条带组作为一组进行处理,所述装置包括:分析模块,配置用于对比采用相同负载均衡策略下的tp-raid落盘方式和raid 6落盘方式,确定由所述tp-raid落盘方式切换为所述raid 6落盘方式时数据块迁移数量最少的k+2个tp-raid条带组,其中k为tp-raid条带组中数据块的数量;分组模块,配置用于将所述k+2个tp-raid条带组划分至移动组,将剩余的tp-raid条带组划分至重算组;空盘模块,配置用于选择需要空出的tp-raid盘;组内迁移模块,配置用于对所述移动组中保存于所述需要空出的tp-raid盘中的第一数据块进行条带组内的数据迁移,并重新计算新的校验块以将所述k+2个tp-raid条带组转化为raid 6条带组;负载分配模块,配置用于对所述重算组中所有的第二数据块重新进行负载分配。
9、在本发明的第二方面,提出了一种tp-raid快速切换为raid 6的存储服务器,包括:一个或多个控制器、系统存储器;以及多个数据存储器;其中,所述系统存储器中存储有可执行的计算机程序,所述计算机程序被所述一个或多个控制器执行时用于实现如上述任意一实施例中所述的tp-raid快速切换为raid 6的方法的步骤以将所述多个数据存储的存储方式由tp-raid切换为raid 6。
10、在本发明的第三方面,提出了一种可读存储介质,包括:可执行的计算机程序,所述计算机程序被执行时用于实现如上述任意一实施例中所述的tp-raid快速切换为raid 6的方法的步骤。
11、本发明的有益效果包括:本发明方法通过分析采用相同负载均衡策略下的tp-raid落盘方式和raid 6落盘方式,从而确定出最小的数据迁移方案——对k+2个tp-raid条带组进行条带组内的数据块迁移,并重新计算校验块以将k+2个tp-raid条带组直接转化为raid6条带组,从而避免了大规模的数据迁移;并且由于本技术是在并未改变原有tp-raid的负载均衡策略,因此,可以直接在原有tp-raid的编码的基础上进行少量修改,从而进一步提升整体的切换速度。