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. SIEM部署的几条最佳实践
  2. 漂亮,LSTM模型结构的可视化
  3. Activity的setContentView的流程
  4. Elasticsearch Javascript API增删改查
  5. learn avalon2
  6. Flash中的“插入关键帧”和“插入空白关键帧”的区别
  7. 使用 docker 部署 mdnice
  8. HDU 1950 Bridging signals
  9. 掌握shell编程中数组的常见用法及示例
  10. 停止追赶最新的 RPA 趋势
  11. C 语言实例 - 斐波那契数列
  12. sublime text3 3176激活
  13. ndk android studio万年坑
  14. 程序实现对数据排序并按出现次数进行排序 目录 1. 题目程序实现对数据排序并按出现次数进行排序 1 2. 思路 2 3. 效果 2 4. 代码 /00listPrj/src/Sort.java 2
  15. matlab中的矩阵元素表示和求和
  16. SqlServer误删数据恢复
  17. 100+大屏模板免费领!葡萄城BI行业应用方案重磅发布!
  18. PMP证书到期后,有没有必要续证了
  19. 自如网杭州市租房数据分析(1)
  20. 黑马程序员_常见异常

热门文章

  1. CCNP350-401学习笔记(151-200题)
  2. Git命令与使用详细教程
  3. 从零开始学习SFR-- 3.0
  4. 控制摄像头拍照(一)
  5. 转 jdk8 jvm调优参数配置
  6. 课题研究过程可能遇到的问题
  7. 编写测试用例的七种方法
  8. 首届未来科学大奖得主薛其坤:神奇的量子世界
  9. 剑指offer保姆级题解全集—C/C++版
  10. python中def什么时候用_Python中定义函数def的使用方法