raid 5 算法研究
RAID -5 算法詳解 過年了,,業(yè)務(wù)相對較少,整天在辦公室沒什么事,,突然就想起了raid 5,,便有研究的沖動,以下是我對raid 5的理解
首先我們知道,,硬盤物理上都是以0和1來存放數(shù)據(jù),它并不認(rèn)識什么AIX,、oracle之類的,,在raid 5的世界里,只有0和1,。
現(xiàn)假設(shè)有四塊硬盤做raid-5,,其中,硬盤一,、二,、三是專門存放數(shù)據(jù)的,,硬盤四是存放校驗(yàn)碼。如下: (raid 5 是以條帶化來存放數(shù)據(jù)的,。如,,有一個數(shù)據(jù)包是110(下面的條帶一),它將會分布在各個硬盤上,。)
硬盤
|
條帶一
|
條帶二
|
條帶三
|
條帶四
|
條帶五
|
條帶六
|
條帶七
|
條帶八
|
|
硬盤一
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
|
硬盤二
|
1
|
0
|
1
|
1
|
0
|
0
|
1
|
0
|
|
硬盤三
|
0
|
1
|
0
|
1
|
1
|
0
|
1
|
0
|
|
結(jié)果(硬盤四)
|
0
|
0
|
1
|
0
|
1
|
1 |
1
|
0 |
|
當(dāng)有一個數(shù)據(jù)包110要存放到raid 5里時,,控制器便會算出校驗(yàn)碼(也就是硬盤四的結(jié)果)。 硬盤四算出的方法是: 硬盤四=硬盤一 XOR 硬盤二 XOR 硬盤三 硬盤四= 1 XOR 1 XOR 0 =0 因此,,控制器先將110存放到前面硬盤一,、二、三里,,然后,,再把算出的結(jié)果存放到硬盤四里。 XOR算法(異或算法)說明: 1 XOR 1=0 1 XOR 0=1 數(shù)的運(yùn)算結(jié)果與數(shù)的運(yùn)算次序無關(guān),。如1 XOR 0 = 0 XOR 1
如上所示,,現(xiàn)假設(shè)硬盤一失效,現(xiàn)在要算出條帶一上硬盤一的數(shù)據(jù),,如下: 公式:硬盤一 = 硬盤二 XOR硬盤三 XOR硬盤四 代入數(shù)字:硬盤一 = 1 XOR 0 XOR 0 = 1 因此,,可用此方法算出硬盤一上的數(shù)據(jù)。
當(dāng)更換了硬盤一時,,控制器將根據(jù)這個算法,,利用其它的硬盤,算出硬盤一的數(shù)據(jù),,進(jìn)行數(shù)據(jù)恢復(fù),。
以此類推,可以保證,,任何一個硬盤損壞了,,都可以通過這樣的算法,算出其上面的數(shù)據(jù),。
所以raid 5最少要三塊盤,,最少兩個硬盤進(jìn)行異或運(yùn)算,一個硬盤存放運(yùn)算結(jié)果,,可用空間為N-1個硬盤空間(N為硬盤總數(shù)),。
以上只是為了方便說明,真正的raid 5是不會專門用一個硬盤來放校驗(yàn)結(jié)果數(shù)據(jù)的,。而是幾個硬盤輪流來充當(dāng)校驗(yàn)結(jié)果的角色,。
呵呵,希望大家多加指正和補(bǔ)充。 |
|