磁碟陣列RAID5原理RAID5是利用同位演算法對磁碟陣列資料進行冗餘,允許在一塊盤出現故障的情況下保證資料安全。即保證了陣列的讀寫效率,又可以節約企業成本。同位演算法原理:A值 B值 Xor結果 0 0 0 1 0 1 0 1 1 1 1 0 通過觀察可以看出,同位可以保證資料運算後位元不變,而且參加運算中的任何一個數都可以由其他數字異或產生,這是RAID5資料恢複基本原理。RAID5的同位資訊是在磁碟上交叉存放的。
RAID5是帶有分布式同位位元的塊層級條帶卷,需要3塊及以上個磁碟,RAID5具有很高的讀效能,但是寫效能則一般,因為在資料寫入的過程中要進行同位運算並將校正碼寫到磁碟中。
有四種分布方式:
1、向左對稱(backw parity或者backw321或者Left Synchronous (Standard))
2、向左非對稱(backw dynamic或者backw dyn或者Left Asynchronous(continuous))
3、向右對稱(forward parity或者forward 123或者Right Synchronous (Standard))
4、向右非對稱(forward dynamic或者forwar dyn或者Left Asynchronous(continuous))
RAID5旋轉方式1
RAID5旋轉方式2
基本上,左/右指的是校正資訊如何分布,而對稱/非對稱指的是資料如何分布。"左"演算法中,校正從最後一個磁碟開始,每一個條帶將校正向靠近第一個磁碟的方向移動一個磁碟的位置(必要時重繞)。而"右"演算法則相反,其校正從第一個磁碟開始,每一個條帶將校正向靠近最後一個磁碟的方向移動一個磁碟的位置(必要時重繞)。"非對稱"演算法將給定條帶的資料區塊按簡單的順序方式放置,必要時跳過條帶,並且總是從第一個磁碟上的第一個條帶的資料區塊開始。與之不同的是,"對稱"演算法並不是將條帶的第一個塊放在第一個磁碟上,而是連續將資料區塊按順序磁碟序列的方式分布,只是在必要時重繞回第一個磁碟。因此對稱演算法對於大量順序讀操作有更好的效能,例如,因為實際讀磁碟是均勻跨多個磁碟的。分析出RAID5的塊大小,盤序,校正資訊的旋轉方向,就可以用資料恢複軟體重組RAID5,進行資料恢複。
在使用mdadm建立RAID陣列時,可以使用--layout=<type>來指定資料和同位資訊在陣列如何分布儲存,此處的<type>有如下4個參數:
Left-asymmetric:對照上面的左非對稱演算法的資料分布執行個體,該演算法描述的資料分布是,在陣列上從第一個陣列段到最後一個陣列段依次的存入資料區塊,與此同時,同位塊P也從最後一個陣列段到第一個陣列段依次寫入。
Right-asymmetric:資料區塊在陣列上從第一個陣列段到最後一個陣列段依次的存入資料區塊,與此同時,同位塊P也從第一個陣列段到最後一個陣列段依次寫入。
Left-symmetric:這個是RAID5預設的分布演算法,也是對於讀請求效能最佳的資料分布機制。同位資訊P從最後一個陣列段到第一個陣列段依次寫入。資料區塊從左向右寫,且每行的資料區塊都先在校正塊P後面開始寫,直到寫滿。
Right-symmetric:同位資訊P從第一個陣列段到最後一個陣列段依次寫入。資料區塊從左向右寫,且每行的資料區塊都先在校正塊P後面開始寫,直到寫滿。
RAID5資料更新的開銷
對於RAID5來說,每次資料更新需要如下4次I/O操作:
-從磁碟上讀出需要更新的某個資料;
-更新該資料,但是此時同位資訊還沒更新過來;
-讀出其他塊的資料並計算出校正資訊;
-寫回更新後的資訊和校正資訊;
RAID5的資料更新開銷相對較大,以上4次I/O操作對於讀寫操作頻繁的應用是致命,其效能的下降被作業系統層強大的cache所掩蓋了,對於效能的下降感覺不明顯。