既然是講原理,那些“為什么需要RAID6”、“RAID6的優勢”等內容就都省去了。直接進入枯燥無趣的理論。
  
    一、RAID5和XOR運算
  
    為了照顧初學者,還是先把相關基本概念介紹一下,老手可以跳過這部分直接看下面。(別低頭!是看本帖下面,想些什么吶~)


    XOR運算是數理邏輯的基本運算之一,在課本上的符號是一個圓圈里面一個加號。實在懶得用插入符號功能,大家就湊合著看吧。


    兩個數字之間的XOR運算定義是:



    (忽然想起試行新車牌的時候,有些深圳人用三位二進制數標記性別。010是男的,101是女的。Sorry,扯遠了。)


    多個數字XOR的時候,有兩個特點:



    磁盤陣列中的RAID5之所以能夠容錯,就是利用了XOR運算的這些特點。上面例子中的a、b、c、d就可以看作是四顆磁盤上的數據,其中三個是應用數據,剩下一個是校驗。碰到故障的時候,甭管哪個找不到了,都可以用剩下的三個數字XOR一下算出來。


    在實際應用中,陣列控制器一般要先把磁盤分成很多條帶(英文叫Stripe,注意不是Stripper),然后再對每組條帶做XOR。
  
    見下面第一個圖:




    掃盲部分就講這么多,再不懂就google吧,滿山遍野都是RAID5算法的介紹。
  
    二、RAID6和Reed-Solomon編碼


    本來想寫成“李德-所羅門編碼”,但那樣就不方便大家一邊看帖子一邊google了。Reed-Solomon編碼是通訊領域中經常碰到的一個算法,已經有15年以上的歷史了。(靠!講存儲嘛,跟通訊有個鳥關系?)


    其實很多校驗算法都是通訊領域最先研究出來,然后才應用到其他領域的。前面說到的XOR算法對一組數據只能產生一個校驗,搞通訊的工程師們覺得不夠可靠,于是就研究出很多能對一組數據產生多個校驗的算法。Reed-Solomon編碼是其中應用最廣泛的一個,咱們以前經常用的ADSL、xDSL、高速Modem都有采用。后來手機、衛星電視、數字電視、CD唱片、DVD、條碼系統、還有……(有完沒完!說存儲呢?。┻B高級點兒的服務器內存也用這個算法做校驗和糾錯。(總算跟存儲沾上點兒邊~)


    現在存儲的工程師也覺得RAID5中只能容忍一顆磁盤離線不夠理想,需要一種容忍多顆磁盤離線的技術,自然就會想到Reed-Solomon編碼啦。把這種算法應用到存儲中,就可以讓N顆磁盤的空間裝應用數據,M顆磁盤的空間裝校驗碼(對一組N個數據生成M個校驗,但實際上校驗碼是分散在所有磁盤上的),這樣只要離線的磁盤不大于M顆,數據就不會丟失。


    Reed-Solomon編碼理論中有一個公式:


    N + M + 1 = 2的b次方(在電腦里寫公式真是麻煩?。?/P>

    其中b是校驗字的位數。(校驗字是生成校驗過程需要用的一個東東,不是最后的校驗碼。)舉例來說,如果用8位的字節做校驗字,那么M + N = 255,而RAID6是特指M = 2,這樣N = 253。


    就是說,用8位字節做校驗字的話,理論上一個RAID6的磁盤組可以容下253顆磁盤。


    當然啦,實際應用中,太多的磁盤一起做運算會嚴重影響性能,所以陣列控制器和芯片的設計者都會把磁盤組的容量限制在16顆左右。(做了這么多無聊算術題,還是沒提RAID6到底是啥?。┪?!喂!別走啊,很快就講到RAID6的實現啦。


    賣了這么多關子,實在是因為RAID6這個概念所指的意義太混亂。從功能上講,能實現兩顆磁盤掉線容錯的,都叫RAID6。(至少我認識的銷售們都這么認為。)但是實行這一功能的方式卻有很多很多。(沉默3分鐘)


    真的很多!哎喲!別打啊~


    Intel的P+Q RAID6,NetApp的RAID-DP,HP的RAID5-DP,還要很多實驗室中的原型機都能實行這個功能。但是由于機制不同,各種所謂的RAID6,其性能表現、磁盤負載分布、錯誤恢復方式都完全不同。


    你讓我從哪說起好哩?
  
    三、基于P+Q的RAID6
  
    在Intel的80333IOP芯片中,有一個新的引擎叫P+Q單元,是專門用來處理RAID6加速的。詳情請查閱Intel官方網站……(雞蛋、西紅柿、拖鞋。咦!這是誰的臭襪子?)


    對比RAID5的機制,Intel的P+Q RAID6是這樣寫磁盤的:
  
    見下面第二個圖:



    這里每個條帶中的P,跟RAID5里面的P意義完全一樣,就是同一條帶中除Q以外其它數據的XOR運算結果。而Q呢,就是理解這個技術的關鍵所在了。


    咳~咳~聽好了。


    Q是同一條帶中各數據的女朋友們進行XOR運算的結果。別翻白眼啊,書上就是這么寫的??!哦,還是英文的,我翻譯給你聽。


    “把條帶中每個數據分別GF一下,然后這些結果再XOR,就得到Q?!保ù蟾?,你到底懂不懂??!GF是Galois Field的縮寫,是法國著名數學奇才伽羅瓦發明的一種數學變換。)


    哦,想起來了。伽羅瓦嘛,發明群論的那個。生于法國大革命前,二十出頭就英年早逝,還是為了個姑娘跟人決斗被打死的。最著名的成果就是給3次以上方程判了死刑。是我人生第二偶像啊……(唐僧?。?/P>

    這個GF變換呢,就是這個淘氣的伽同學當年為了逃避老師點名,而發明的一種教室換座位方法。按照這種方法,每個人都不會坐在自己的座位上,而且每個人都肯定會有座位。而且任意個同學的座位號進行XOR運算之后,仍然跑不出這個教室里的座位號。(這個伽同學好像很無聊噢!沒辦法,人家聰明嘛?。?/P>

    扯太遠啦!回到正題。


    在Intel 80333IOP中存著兩個表格,分別對應GF正向變換和反向變換。任何一個8位二進制數,都可以直接在表格中查到對應的GF變換結果。(我還是想把這個結果說成是源數據的女朋友~)


    這兩個表格分別在Intel 80333IOP研發手冊的第445頁和446頁,不過我估計大部分人會懶得去看。也是,看了又能怎么樣呢?反正Intel已經把那玩意固化到芯片里了。(哇!都半夜2點了,說完P+Q RAID6的恢復,我要先zZZ……了。)


    如果一顆磁盤掉線,根本不需要Q用P直接就搞定了,跟RAID5一樣。


    如果兩顆磁盤掉線,又分做兩種情況:



    結合上面表格的例子,如果磁盤5和磁盤6掉線。那條帶1和條帶2就屬于情況A;而條帶3、4、5和6屬于情況B。


待續


    本文版權歸作者及DoSTOR所有,如需轉載請與本站聯系!

未經允許不得轉載:存儲在線-存儲專業媒體 » DoSTOR技術大講堂:RAID-6原理解析連載(一)
分享到

dostor

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走