System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 存储卷初始化下重启控制器保持读写IO一致的方法及系统技术方案_技高网

存储卷初始化下重启控制器保持读写IO一致的方法及系统技术方案

技术编号:40425502 阅读:6 留言:0更新日期:2024-02-20 22:45
本发明专利技术公开了一种存储卷初始化下重启控制器保持读写IO一致的方法及系统,所述方法包括:在存储双控系统中,创建磁盘阵列,将硬盘条带化;新建存储卷;判断所述硬盘的逻辑块地址是否被初始化;其中,当所述硬盘的逻辑块地址没有被初始化,将所述逻辑块地址标记为可写但不可读;当对储存卷进行读写时,判断控制器是否重启;其中,当双控系统中的第一控制器重启时,将所述控制器逻辑块地址上的已更新的数据通过非透明桥同步到第二控制器上的缓存上进行校验运算,生成新的条带校验数据P、Q。通过本公开的处理方案,可以解决存储卷初始化时数据读写时控制器重启数据不一致问题,能够保证数据安全,提高存储的稳定性,增强同有存储产品的竞争力。

【技术实现步骤摘要】

本专利技术涉及数据存储,特别是涉及一种存储卷初始化下重启控制器保持读写io一致的方法。


技术介绍

1、自进入21世纪以来,随着物联网和大数据的崛起,当今社会正在迈入信息化大数据时代。处在大时代背景下,为我们带来便捷的同时,也带来了众多挑战,如何保证数据存储的安全性和高效性,是存储业界面临的共同难题。目前常见的底层存储控制系统架构主要由控制器和磁盘框组成,控制器与磁盘之间的数据交互路径在一定程度上决定了存储系统的数据传输能力,一条可靠的io交互路径,在保证io传输的稳定性的同时,还要最大限度的提升io传输的速率。

2、磁盘阵列可以有效的提高存储系统的可靠性和性能,同时也存在显著的缺点,那就是由于多个设备(磁盘)同时使用,导致了可靠性降低,raid(redundant array ofinexpensive disk,磁盘阵列)就是为了解决这个问题而产生的,raid通过给磁盘阵列增加冗余磁盘提高了磁盘阵列的可靠性。所谓冗余磁盘,即该磁盘用来存放一些冗余信息,而这些冗余信息可用来在必要的时候进行有效数据恢复,从而增加磁盘阵列的可靠性,以raid6为例,raid6实现了磁盘的冗余纠错功能,大大提高了磁盘的有效利用率。其基本原理是这样的:根据条带化的数据生成校验信息,存放在磁盘中。

3、生成pq校验位的公式一般是这样的:

4、p=d1 xor d2 xor d3 xor d4 xor d5;

5、q=(d1*k1)xor(d2*k2)xor(d3*k3)xor(d4*k4)xor(d5*k5);

6、k为常量系数,取值1到255之间正整数

7、p q为校验位,d1~d5分别代表五个数据位,xor表示异或操作。

8、如图1所示,当d1,d2,d3,d4,d5中其余的一个数据丢失的时候,可以利用其余数据位和校验位pq进行恢复。

9、如图2所示,在创建一个raid系统时,磁盘可能是新盘,也可能是一块已经被使用过的数据盘,这些盘上的数据不会全是零。在这种情况下,采用这些盘构建的数据条带一定不能满足数据一致性的需求。即每个条带中的数据按照一定规则计算得到的编码数据和条带中的编码数据是不相符的。这种数据不一致的条带将会对raid数据一致性问题引入极大的风险。

10、如果一个条带中的数据不一致,即条带中的数据计算得到的编码结果和存储的编码数据不相同,那么一旦一个磁盘发生故障,那么通过存储在条带中的编码数据将无法正确恢复丢失的数据块。所以,一个数据不一致的条带将会在故障发生时导致数据正确性问题。

11、正因为这个原因,在创建一个raid的时候需要考虑将系统中所有的条带进行初始化,以此来保证条带中数据的一致性。条带初始化通常是通过全盘写零的方式初始化raid系统中的所有的条带。数据全零的条带,其校验数据也为零。因此,全零数据可以保证条带的一致性。

12、raid系统初始化过程是一个非常漫长的过程,其主要原因是需要对系统中所有条带进行初始化。还需要考虑和前端用户io之间的性能平衡,所以,raid系统初始化往往是一个后台执行的一个过程,会持续较长时间,并且对前端应用的性能造成影响。

13、当存储系统的卷正在进行初始化时,raid系统中数据和校验位不一致时,如果系统突然断电,条带数据无法正常更新完成,那么此时就会出现条带中的数据部分更新完成。在这种情况下,当系统重启之后,条带中的数据是不完整的,校验数据和条带中的有效数据无法匹配上,就会出现数据不一致问题。如图3所示。

14、具体描述如下:

15、在卷初始化的时候,同时对这个卷进行读写,这时候就会更改raid中的数据,如图3所示的d2数据被更新成了d2’,但是条带的校验数据p、q没有被更新完成,此时系统由于发生故障而重启。在这种情况下,条带数据处于不一致的状态。系统重启之后,通常raid系统无法感知这种数据不一致的条带。在这种情况下,如果条带中的d3没有进行初始化,那么它所在的区域是不可读的区域,那么需要通过校验数据pq恢复d3。在数据恢复过程中,pq都是老校验位,d2’是新数据,那么显然恢复出来的数据会发生错误,不再是原来的d3数据,出现了数据一致性问题。

16、由此可见,上述现有的数据io方法在使用上,显然仍存在有不便与缺陷,而亟待加以进一步改进。如何能创设一种新的保持读写io一致的方法,成为当前业界急需改进的目标。


技术实现思路

1、有鉴于此,本公开实施例提供一种存储卷初始化下重启控制器保持读写io一致的方法,至少部分解决现有技术中存在的问题。

2、第一方面,本公开实施例提供了一种存储卷初始化下重启控制器保持读写io一致的方法,所述方法包括以下步骤:

3、在存储双控系统中,创建磁盘阵列,将硬盘条带化;

4、新建存储卷;

5、判断所述硬盘的逻辑块地址是否被初始化;其中,当所述硬盘的逻辑块地址没有被初始化,将所述逻辑块地址标记为可写但不可读;

6、当对储存卷进行读写时,判断控制器是否重启;其中,当双控系统中的第一控制器重启时,将所述控制器逻辑块地址上的已更新的数据通过非透明桥同步到第二控制器上的缓存上进行校验运算,生成新的条带校验数据p、q。

7、根据本公开实施例的一种具体实现方式,所述方法还包括:

8、当所述第一控制器重新启动后,将所述第二控制器缓存上的数据重新下刷到所述第一控制器磁盘阵列的条带上。

9、根据本公开实施例的一种具体实现方式,所述磁盘阵列为raid5或raid6。

10、根据本公开实施例的一种具体实现方式,所述新建存储卷包括将存储卷初始化,包括:将所述存储卷进行写0操作和条带化操作。

11、第二方面,本公开实施例还提供了一种存储卷初始化下重启控制器保持读写io一致的系统,包括:

12、一个或多个处理器;

13、存储装置,用于存储一个或多个程序,

14、当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现前述第一方面或第一方面的任一实现方式中的任一项所述的存储卷初始化下重启控制器保持读写io一致的方法。

15、本公开实施例中的存储卷初始化下重启控制器保持读写io一致的方法,可以解决存储卷初始化时数据读写时控制器重启数据不一致问题,能够保证数据安全,提高存储的稳定性,增强同有存储产品的竞争力。

本文档来自技高网...

【技术保护点】

1.一种存储卷初始化下重启控制器保持读写IO一致的方法,其特征在于,所述方法包括以下步骤:

2.根据权利要求1所述的存储卷初始化下重启控制器保持读写IO一致的方法,其特征在于,所述方法还包括:

3.根据权利要求1所述的存储卷初始化下重启控制器保持读写IO一致的方法,其特征在于,所述磁盘阵列为raid5或raid6。

4.根据权利要求1所述的存储卷初始化下重启控制器保持读写IO一致的方法,其特征在于,所述新建存储卷包括将存储卷初始化,包括:将所述存储卷进行写0操作和条带化操作。

5.一种存储卷初始化下重启控制器保持读写IO一致的系统,其特征在于,包括:

【技术特征摘要】

1.一种存储卷初始化下重启控制器保持读写io一致的方法,其特征在于,所述方法包括以下步骤:

2.根据权利要求1所述的存储卷初始化下重启控制器保持读写io一致的方法,其特征在于,所述方法还包括:

3.根据权利要求1所述的存储卷初始化下重启控制器保持读写io一致的方法,其特征在于,...

【专利技术属性】
技术研发人员:宋腾
申请(专利权)人:北京同有飞骥科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1