RAID 6是指带有两种分布存储的奇偶校验码(既P和Q)的独立硬盘结构。与RAID 5相比,RAID 6增加了第二个独立校验码(Q)信息块,两个独立的奇偶校验系统使用不同的算法,数据的可靠性非常高,即使两块硬盘同时失效也不会影响数据的使用,主要是用于要求数据绝对安全的场合。如下图:

【RAID 6的P校验概述】

其实RAID 6的P校验和RAID 5的校验是一样的,都是采用的“异或”运算。异或运算如下:

P = A1xor A2 xor A3

Q=(A1*K1) xor (A2*K2) xor (A3*K3)

(“*”号代表伽罗瓦域乘,K为常量系数,取值1到255之间正整数,A1~A3:条带化的数据)

“伽罗华域”实际上就是“0-255”的一个有限域GF(2^8),在GF(2^8)内不管是是加、减、乘、除都不会超过这个范围。并且,加减法可逆,乘除法可逆,而且计算的值在GF(2^8)内是唯一的。注意:此处提到的加、减、乘、除法不是日常使用的加减乘除,而是“伽罗华域”内的运算。在GF(2^8)中,如果2的n次方大于某个值(本原多项式)就会对该值(本原多项式)取余,结果又会返回到GF(2^8)中。因此,保证了2^0到2^255的结果值在GF(2^8)内是唯一的。

GF(2^8)中一共有16个本原多项式:

RAID 6常用的本原多项式为0X11D。(X8=x4+x3+x2+1;     Xn代表x的n次方。这里X我们取值为2;)

1、生成正表GFILOG

通过下表的方法生成正表GFILOG,注意:此表的本原多项式为0X11D。

2、生成反表GFLOG

有了正向变换表,要得到逆向表就很简单了,把正向中的表变换值做为索引,在把正向表中的索引作为值就OK了。如下表:

3、计算乘除法运算(查表法:gftable代表GF正向变换表, gfitable代表GF反向变换表)

A1*K=gftable[(gfitable[A1]+gfitable[k]) mod 255];
A1/K=A1*K=gftable[(gfitable[A1]-gfitable[k]+255) mod 255];
当A1或K其中一个为零时或两个都等于零时, 上面的乘公式不成立。而应该是(A1*0=A1,K*0=K,0*0=0)。当A1等于K时,A1/K=0,当k等于0时,A1/0=D.

现在知道了伽罗华域的乘除法,那么我们计算Q校验就方便了许多。回到Q校验上,Q校验和P校验结合正好组成了一个二元一次方程,K1、K2、K3为GF(2^8)中多项式的数值。

P = A1 + A2 + A3

Q = A1*K1 + A2*K2 + A3*K3

【根据Q校验生成丢失的数据】

当RAID 6中坏掉两块磁盘,那该如何生成丢失的数据呢?用RAID 6的一个条带举例说明。

1、如果某个条带中丢失的两块数据是P和Q,那么正好,数据没有丢失,正常提取即可。

2、如果某个条带中丢失的两块数据是P和A1,那么可以根据Q校验计算出A1的数据。

P = A1*K1 + A2*K2 + A3*K3

A1*K1 = P + A2*K2 + A3*K3

A 1= (P + A2*K2 +A3*K3)/ K1   //注:K1可以通过查表获取

3、如果某个条带中丢失的两块数据是Q和A1,那么可以根据校验P计算出A1的数据。

P = A1 + A2 + A3

A = P + A2 + A3

根据前的内容已经知道伽罗华域的本原多项式有16种,K值经过测试,其值根据够成RAID 6阵列的磁盘数,从本原多项式0X11D的开始取(RAID 6总磁盘数 -2)个多项式的值作为K的值。

raid6 p和q计算方法相关推荐

  1. 《计算机系统结构》期末复习

    资源已上传CSDN 系统结构基本概念 按功能划分的多级层次结构 翻译:将L+1级程序全部转化成L级程序,再去执行新产生的L级程序 解释:每一条L+1级指令被译码后,直接去执行一串等效的L级指令 计算机 ...

  2. 12.文件系统——磁盘管理之RAID概述

    一.什么是RAID 从上个世纪80年代起,主流的硬盘接口主要有两类: A.IDE:用于桌面系统 B.SCSI:用于工业系统(因为转速高,平均巡道时间短,性能较IDE好) SCSI的性能虽然优于IDE, ...

  3. opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧

    前言 fps,是 frames per second 的简称,也就是我们常说的"帧率".在游戏领域中,fps 作为衡量游戏性能的基础指标,对于游戏开发和手机 vendor 厂商都是 ...

  4. 1.4、云计算HCIA虚拟化存储基础知识

    目标:了解华为虚拟化方案 掌握虚拟化中存储架构 了解磁盘类型 区分集中存储和分布式存储 掌握虚拟化存储和非虚拟化存储的区别 了解虚拟机磁盘的类型 了解华为虚拟产品的存储特点 一.存储分类 1.DAS( ...

  5. raid卡直通模式会走缓存吗_磁盘阵列 RAID 技术如何保护数据

    RAID 的名称为磁盘阵列,它的作用,是在多块硬盘组成的系统中,牺牲一块至多块硬盘的容量,来对数据的存储提供一定的容错能力. 基本的 RAID 级别有 RAID0.RAID1.RAID5.RAID6. ...

  6. numpy 函数里面的axis参数的含义

    前言 numpy支持对矩阵和数组进行运算,因此很多numpy的很多运算都需要指定操作的维数参数axis(当然这些axis都有带默认值的),本博客以numpy.sum求和函数为例,具体分析axis参数不 ...

  7. 时间序列预测之为何舍弃LSTM而选择Informer?(Informer模型解读)

    LSTM的劣势 Figure 1: (a) LSTF can cover an extended period than the short sequence predictions, making ...

  8. 存储RAID——RAID级别

    目录 RAID基本概念 RAID实现方式 RAID的数据组织形式 RAID的数据保护方式 RAID级别 RAID0 RAID1 RAID3 不怎么用了 RAID5 RAID6 RAID6 P+Q: R ...

  9. 电容充放电时间的计算方法(重点是对于恒流充放电的常用公式:⊿Vc=I*⊿t/C,其出自公式:Vc=Q/C=I*t/C。)电荷泵(无电感)中电容恒流放电的滤波可以参考4-20毫安的采集中RC滤波电路

    电容充放电时间的计算方法 电子发烧友网•来源:fqj • 2019-05-29 14:55 • 45861次阅读  0 1L.C元件称为"惯性元件",即电感中的电流.电容器两端的电 ...

最新文章

  1. python中args1是什么意思_理解Python中的*,*args
  2. tar 解压命令学习与总结
  3. python3.6.2安装教程-python 3.6.2 安装配置方法图文教程
  4. [转载] Web Service工作原理及实例
  5. python pip国内源_【Python】设置pip源为国内源及简单操作
  6. JQuery知识点汇总
  7. 工业交换机中:千兆级别和快速级别传输效率对比
  8. 嵌入式C开发中用到的位域结构体
  9. 使用Nuget 安装指定版本package或者更新package到指定版本
  10. 串口 多个activity 安卓_一个Activity实时向另一个Activity发送消息
  11. 从零开始学Pytorch之数据操作
  12. oracle统计信息导出与导入目的,Oracle统计信息的导出与导入
  13. 如何监控mysql主从之间的延迟
  14. 进击的雨燕----------基本运算符
  15. 更改虚拟机centos7的系统时间
  16. Altium DesignerPCB画3Dbody
  17. 我心中的超短系统之人气、情绪、大局观、仓控
  18. Python之pandas学习【5】:导入导出数据
  19. zip直链生成网站_防止赖床的闹钟软件、免费好用的看图软件、色卡生成器 今天有什么?...
  20. mysqldump 使用总结

热门文章

  1. VLAN经典诠释(转)
  2. 合理的估算线程池的大小
  3. c语言万年历如何实现横向打印,用C语言如何编写“万年历”
  4. CSDN问答频道“华章杯”1月排行榜活动开始,丰厚奖品等你拿
  5. 《细节决定成败》 汪中求著
  6. 值得学习的linux内核开发
  7. best-pay-sdk 微信请求支付的时候出现org.simpleframework.xml.core.ElementException:appid is null 问题
  8. linux vim 复制一个单词,Vim复制粘贴与寄存器
  9. 用java实现combin函数_【算法-Java实现】组合总和
  10. 癌症新知和癌症真相的区别_旧版代码是癌症