如何在ZFS中實現RAID結構

來源:互聯網
上載者:User
轉自http://hi.baidu.com/lanyun001/blog/item/b54dcd39498cf1f63b87ce55.html
RAID是“Redundant Array of Independent Disk”的縮寫,中文意思是獨立冗餘磁碟陣列。冗餘磁碟陣列技術誕生於1987年,由美國加州大學伯克利分校提出。
RAID技術在儲存領域的有著非常重要的作用,滿足了不同的需求。RAID按照實現原理的不同分為不同的層級,不同的層級之間工作模式是有區別的。整個的 RAID結構是一些磁碟結構,通過對磁碟進行組合達到提高效率,減少錯誤的目的,不要因為這麼多名詞而被嚇壞了,它們的原理實際上十分簡單。下面我就給大家簡單介紹一下在ZFS中可以實現的三種RAID技術:RAID 0、RAID 1和RAID Z(RAID 5的改進)。

RAID 0:無差錯控制的帶區組

要實現RAID0必須要有兩個以上硬碟,RAID0實現了帶區組,資料並不是儲存在一個硬碟上,而是分成資料區塊儲存在不同磁碟機上。RAID0分為串聯卷和並兩卷兩種。
串聯卷寫資料是按照順序寫進不同的可用分區,當第一個分區寫滿時才寫第二個分區,這種儲存方式只是為我們提供了一種方便的管理結構,便於我們將多個硬碟組合起來,卻沒有實現更好的效能。
並聯卷在寫資料時,是將資料平均分布到各個分區上。因為將資料分布在不同磁碟機上,所以資料吞吐率大大提高,磁碟機的負載也比較平衡。如果剛好所需要的資料在不同的磁碟機上效率最好。它不需要計算校正碼,實現容易。它的缺點是它沒有資料差錯控制,如果一個磁碟機中的資料發生錯誤,即使其它盤上的資料正確也無濟於事了。不應該將它用於對資料穩定性要求高的場合。如果使用者進行圖象(包括動畫)編輯和其它要求傳輸比較大的場合使用RAID0比較合適。同時,RAID0可以提高資料轉送速率,比如所需讀取的檔案分布在兩個硬碟上,這兩個硬碟可以同時讀取。那麼原來讀取同樣檔案的時間被縮短為1/2。在所有的層級中,RAID
0的速度是最快的。但是RAID 0沒有冗餘功能的,如果一個磁碟(物理)損壞,則所有的資料都無法使用。
在ZFS檔案系統裡,我們可以很容易的實現這種結構,在我們組建儲存池的過程中,我們就可以建立我們需要的RAID結構的儲存池,而在預設情況下,ZFS建立的就是RAID0結構的儲存池。
例如:命令   Tonsen#zpool create mypool c0d0 c0d1 就是將c0d0和c0d1組成了一個RAID0結構的儲存池,以後向這個池中增加資料時,它的資料分布就是採用平均分布的形式。

RAID 1:鏡象結構

對於使用這種RAID1結構的裝置來說,RAID控制器必須能夠同時對兩個盤進行讀操作和對兩個鏡象盤進行寫操作,所以必須有兩個磁碟機。因為是鏡象結構在一組盤出現問題時,可以使用鏡象,提高系統的容錯能力。它比較容易設計和實現。每讀一次盤只能讀出一塊資料,也就是說資料區塊傳送速率與單獨的盤的讀取速率相同。因為RAID1的校正十分完備,因此對系統的處理能力有很大的影響,通常的RAID功能由軟體實現,而這樣的實現方法在伺服器負載比較重的時候會大大影響伺服器效率。當您的系統需要極高的可靠性時,如進行資料統計,那麼使用RAID1比較合適。而且RAID1支援人員“熱替換”,即不斷電的情況下對故障磁碟進行更換,更換完畢只要從鏡像盤上恢複資料即可。當主硬碟損壞時,鏡像硬碟就可以代替主硬碟工作。鏡像硬碟相當於一個備份盤,可想而知,這種硬碟模式的安全性是非常高的,RAID
1的資料安全性在所有的RAID層級上來說是最好的。但是其磁碟的利用率卻只有50%,是所有RAID層級中最低的。
在ZFS檔案系統裡,我們可以通過在命令中增加mirror參數來構建鏡像結構的儲存池。
例如:命令 Tonsen#zpool create mypool mirror c0d0 c0d1 就是將c0d0和c0d1組成了一個RAID1結構的鏡像儲存池,以後向這個池中增加資料時,它的資料分布是會寫到它所有的鏡像盤上。
使用命令 Tonsen#zpool status 我們可以很清楚的看到鏡像結構,如下:
   pool: mypool
state: ONLINE
scrub: none requested
config:

NAME           STATE     READ WRITE CKSUM
mypool       ONLINE    0     0     0
   mirror    ONLINE    0     0     0
       c0d0    ONLINE    0     0     0
       c0d1    ONLINE    0     0     0

errors: No known data errors

我們甚至可以在ZFS中將RAID0和RAID1組合起來,形成一個綜合的RAID結構。
例如:命令 Tonsen#zpool create mypool mirror c0d0 c0d1 mirror c1d0 c1d1   就是將c0d0、c0d1和c1d0、c1d1分別組成兩個鏡像,然後這兩個鏡像又構成一個RAID0的結構。這種結構既提高了可靠性也提高了效能。
使用命令 Tonsen#zpool status 查看一下它的結構,如下:
   pool: mypool
state: ONLINE
scrub: none requested
config:

NAME           STATE     READ WRITE CKSUM
mypool       ONLINE    0     0     0
   mirror    ONLINE    0     0     0
       c0d0    ONLINE    0     0     0
       c0d1    ONLINE    0     0     0
   mirror    ONLINE    0     0     0
       c1d0    ONLINE    0     0     0
       c1d1    ONLINE    0     0     0

errors: No known data errors

RAID 5:分布式同位的獨立磁碟結構

它的同位碼存在於所有磁碟上,其中的p0代表第0帶區的同位值,其它的意思也相同。RAID5的讀出效率很高,寫入效率一般,塊式的集體訪問效率不錯。因為同位碼在不同的磁碟上,所以提高了可靠性,允許單個磁碟出錯。RAID 5也是以資料的校正位來保證資料的安全,但它不是以單獨硬碟來存放資料的校正位,而是將資料區段的校正位互動存放於各個硬碟上。這樣,任何一個硬碟損壞,都可以根據其它硬碟上的校正位來重建損壞的資料。硬碟的利用率為n-1。但是它對資料轉送的並行性解決不好,而且控制器的設計也相當困難。而對於RAID
5來說,大部分資料轉送只對一塊磁碟操作,可進行並行操作。在RAID 5中有“寫損失”,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的資料及奇偶資訊,兩次寫新的資料及奇偶資訊。

RAID Z:是RAID5的改進版本,是solaris10裡ZFS特有的一種Raid層級。

容錯能力與RAID 5相同,但是對於RAID 5的寫入漏洞問題提供了軟體解決方案,使用動態條帶化。傳統的RAID 5都存在著“寫漏洞”,就是說如果RAID 5的stripe在正寫資料時,如果這時候電源中斷,那麼同位資料將跟該部分資料不同步,因此前邊的寫無效;RAID-Z用了“variable- width RAID stripes”技術,因此所有的寫都是full-stripe writes。之所以能實現這種技術,就是因為ZFS整合了檔案系統和裝置管理,使得檔案系統的中繼資料有足夠的資訊來控制“variable-width
RAID stripes”。理論上說,建立RAID-Z需要至少三塊磁碟,這跟RAID 5差不多。

例如:Tonsen#zpool create mypool raidz c0d0 c0d1 c1d0 c1d1 就是建立了一個由c0d0、c0d1、c1d0和c1d1四塊硬碟組成的raidz結構。
使用命令 Tonsen#zpool status 來查看它的結構如下:
pool: mypool
state: ONLINE
scrub: none requested
config:

NAME           STATE     READ WRITE CKSUM
mypool       ONLINE    0     0     0
   raidz1    ONLINE    0     0     0
       c0d0    ONLINE    0     0     0
       c0d1    ONLINE    0     0     0
       c1d0    ONLINE    0     0     0
       c1d1    ONLINE    0     0     0

errors: No known data errors

在ZFS檔案系統裡,我們可以通過很簡單的方式,就能組織我們需要的各種RAID結構的儲存單元,這為我們提供了異常強大的儲存管理能力.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.