久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

raid6磁盤陣列的Q校驗(yàn)算法是什么

197次閱讀
沒有評論

共計(jì) 3087 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。

本文丸趣 TV 小編為大家詳細(xì)介紹“raid6 磁盤陣列的 Q 校驗(yàn)算法是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“raid6 磁盤陣列的 Q 校驗(yàn)算法是什么”文章能幫助大家解決疑惑,下面跟著丸趣 TV 小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

   【前言】

    RAID 為廉價(jià)磁盤冗余陣列(Redundant Array of Inexpensive Disks),RAID 技術(shù)將一個(gè)個(gè)單獨(dú)的磁盤以不同的組合方式形成一個(gè)邏輯硬盤,從而提高了磁盤讀取的性能和數(shù)據(jù)的安全性。不同的組合方式用 RAID 級別來標(biāo)識,常見 RAID 的級別有 0、1、01、10、5、6 等等。具體實(shí)現(xiàn)的數(shù)據(jù)存儲的原理請參考相關(guān)文章。本章主要概述 Linux 環(huán)境下 RAID 6 級別的存儲原理。Linux 環(huán)境下配置 RAID 的命令是“mdadm”。

   【RAID 6 概述】

    RAID 6 是指帶有兩種分布存儲的奇偶校驗(yàn)碼(既 P 和 Q)的獨(dú)立硬盤結(jié)構(gòu)。與 RAID 5 相比,RAID 6 增加了第二個(gè)獨(dú)立校驗(yàn)碼(Q)信息塊,兩個(gè)獨(dú)立的奇偶校驗(yàn)系統(tǒng)使用不同的算法,數(shù)據(jù)的可靠性非常高,即使兩塊硬盤同時(shí)失效也不會影響數(shù)據(jù)的使用,主要是用于要求數(shù)據(jù)絕對安全的場合。如下圖:

    上圖中 Q 為 RAID 6 的第二個(gè)校驗(yàn)信息塊,采用的是非常復(fù)雜的“伽羅華域”算法,稍后會講到。

   【RAID 6 的 P 校驗(yàn)概述】

    其實(shí) RAID 6 的 P 校驗(yàn)和 RAID 5 的校驗(yàn)是一樣的,都是采用的“異或”運(yùn)算。異或運(yùn)算符的原則就是相同為 0,不同為 1 的。在 RAID 5 的環(huán)境中只能掉一塊硬盤,但是 RAID 6 在 RAID 5 的基礎(chǔ)上添加了 Q 校驗(yàn),因此 RAID 6 支持同時(shí)掉兩塊盤。異或運(yùn)算如下:

 P = A + B + C = A xor B xor C
 A = P - B - C = P xor B xor C

注意:上述的加減法都是異或運(yùn)算。

   【RAID 6 的 Q 校驗(yàn)概述】

    是“0-255”的一個(gè)有限域 GF(2^8),在 GF(2^8) 內(nèi)不管是是加、減、乘、除都不會超過這個(gè)范圍。并且,加減法可逆,乘除法可逆,而且計(jì)算的值在 GF(2^8) 內(nèi)是唯一的。注意:此處提到的加、減、乘、除法不是日常使用的加減乘除,而是“伽羅華域”內(nèi)的運(yùn)算。在 GF(2^8) 中,如果 2 的 n 次方大于某個(gè)值(本原多項(xiàng)式)就會對該值(本原多項(xiàng)式)取余,結(jié)果又會返回到 GF(2^8) 中。因此,保證了 2^0 到 2^255 的結(jié)果值在 GF(2^8) 內(nèi)是唯一的。

    在 GF(2^8) 中一共有 16 個(gè)本原多項(xiàng)式,分別如下:

 1 x8+x7+x6+x5+x4+x2+1 1 1111 0101 = 0x1F5 
 2 x8+x7+x6+x5+x2+x+1 1 1110 0111 = 0x1E7
 3 x8+x7+x6+x3+x2+x+1 1 1100 1111 = 0x1CF
 4 x8+x7+x6+x+1 1 1100 0011 = 0x1C3
 5 x8+x7+x5+x3+1 1 1010 1001 = 0x1A9
 6 x8+x7+x3+x2+1 1 1000 1101 = 0x18D
 7 x8+x7+x2+x+1 1 1000 0111 = 0x187
 8 x8+x6+x5+x4+1 1 0111 0001 = 0x171
 9 x8+x6+x5+x3+1 1 0110 1001 = 0x169
 10 x8+x6+x5+x2+1 1 0110 0101 = 0x165
 11 x8+x6+x5+x+1 1 0110 0011 = 0x163
 12 x8+x6+x4+x3+x2+x+1 1 0101 1111 = 0x15F
 13 x8+x6+x3+x2+1 1 0100 1101 = 0x14D
 14 x8+x5+x3+x2+1 1 0010 1101 = 0x12D
 15 x8+x5+x3+x+1 1 0010 1011 = 0x12B
 16 x8+x4+x3+x2+1 1 0001 1101 = 0x11D

    RAID 6 常用的本原多項(xiàng)式為 0X11D,既上列中最后一個(gè)。Linux 環(huán)境中的 RAID 6 也是如此。

    好了回到 Q 校驗(yàn)上,Q 校驗(yàn)和 P 校驗(yàn)結(jié)合正好組成了一個(gè)二元一次方程,K1、K2、K3 為 GF(2^8) 中多項(xiàng)式的數(shù)值。

P = A + B + C
Q = A*K1 + B*K2 + C*K3

   【伽羅華域的乘除法運(yùn)算】

    伽羅華域中的加減法也是異或運(yùn)算,所以就不做詳細(xì)解釋了,重點(diǎn)解釋一下乘除法。通過上面的 Q 校驗(yàn)知道 Q 校驗(yàn)的生成需要伽羅華域中的乘法運(yùn)算,計(jì)算乘法運(yùn)算是一件非常復(fù)雜的事情,最好的解決辦法就是將 GF(2^8) 中所有多項(xiàng)式的值生成表格,通過查表得知乘法運(yùn)算的值。

    1、生成正表 GFILOG

    通過下表的方法生成正表 GFILOG,注意:此表的本原多項(xiàng)式為 0X11D。

    2、生成反表 GFLOG

    有了正向變換表,要得到逆向表就很簡單了,把正向中的表變換值做為索引,在把正向表中的索引作為值就 OK 了。如下表:

    3、計(jì)算乘除法運(yùn)算(查表法)

  乘法:A * K1 = GFILOG[(GFLOG[A]+GFLOG[K1]) mod 255];
  除法:A / K1 = GFILOG[(GFLOG[A]-GFLOG[K1]+255) mod 255];

    現(xiàn)在知道了伽羅華域的乘除法,那么我們計(jì)算 Q 校驗(yàn)就方便了許多。

   【根據(jù) Q 校驗(yàn)生成丟失的數(shù)據(jù)】

    當(dāng) RAID 6 中壞掉兩塊磁盤,那該如何生成丟失的數(shù)據(jù)呢?用 RAID 6 的一個(gè)條帶舉例說明。

    1、如果某個(gè)條帶中丟失的兩塊數(shù)據(jù)是 P 和 Q,那么正好,數(shù)據(jù)沒有丟失,正常提取即可。

    2、如果某個(gè)條帶中丟失的兩塊數(shù)據(jù)是 P 和 A,那么可以根據(jù) Q 校驗(yàn)計(jì)算出 A 的數(shù)據(jù)。

 P = A*K1 + B*K2 + C*K3
 A*K1 = P + B*K2 + C*K3
 A = (P + B*K2 + C*K3)/ K1 // 注:K1 可以同過查表獲取 

    3、如果某個(gè)條帶中丟失的兩塊數(shù)據(jù)是 Q 和 A,那么可以根據(jù)校驗(yàn) P 計(jì)算出 A 的數(shù)據(jù)。

 P = A + B + C
 A = P + B + C

    4、如果某個(gè)條帶中丟失的兩塊數(shù)據(jù)是 A 和 B,那么可以根據(jù)校驗(yàn) P 和 Q 計(jì)算出 A 和 B 的數(shù)據(jù)。

 P = A + B + C
 Q = A*K1 + B*K2 + C*K3
 A = P + B + C
 Q = (P + B + C)*K1 + B*K2 +C*K3
 Q = P*K1 + B*K1 + C*K1 + B*K2 + C*K3
 Q = P*K1 + C*K1 + C*K3 + B*K1 + B*K2
 Q + P*K1 + C*K1 + C*K3 = (K1+K2) * B
 B = ( Q + P*K1 + C*K1 + C*K3) / (K1+K2)

    計(jì)算出 B 的值以后,再根據(jù) P 校驗(yàn)和計(jì)算出 A 的值就容易很多了。

 A = P + B + C

   【Linux 環(huán)境下的 RAID 6】

    根據(jù)前的內(nèi)容已經(jīng)知道 RAID 6 的大致原理了。因?yàn)橘ち_華域的本原多項(xiàng)式有 16 種,因此 RAID 6 的種類有很多,再加上 K 值的不固定。因此計(jì)算某個(gè) RAID 6 的 Q 校驗(yàn)值會變的很復(fù)雜。不過 Linux 環(huán)境下的 RAID 6 的 K 值經(jīng)過測試,其值根據(jù)夠成 RAID 6 陣列的磁盤數(shù),從本原多項(xiàng)式 0X11D 的開始取(RAID 6 總磁盤數(shù) -2)個(gè)多項(xiàng)式的值作為 K 的值。

讀到這里,這篇“raid6 磁盤陣列的 Q 校驗(yàn)算法是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計(jì)3087字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宁阳县| 连城县| 庆云县| 临西县| 凤台县| 高台县| 安溪县| 镇安县| 喀什市| 三都| 丘北县| 荣昌县| 永定县| 镇赉县| 阿荣旗| 丽水市| 阜宁县| 客服| 云安县| 托里县| 玉环县| 司法| 哈尔滨市| 凉城县| 新乡县| 泗阳县| 漳浦县| 周至县| 武山县| 波密县| 克东县| 望江县| 保定市| 随州市| 长武县| 绵竹市| 宜章县| 留坝县| 大渡口区| 朝阳区| 蓝田县|