今天我們來聊一聊Raid,做一期輕科普,跟大家一起了解下各種Raid是怎麼回事、有什麼作用、有哪些優缺點、如何實現等等。
注:IT之家小編個人習慣拼作Raid,但RAID和raid這些拼法也都有衆多擁趸。維基百科都拼作RAID,畢竟是首字母集合,應該是比較标準的拼法,另外兩種是當做單詞來用了,不過大家開心就好,不影響理解。
何為Raid
我們首先來認識一下這個概念,Raid全稱為Redundant Arrays of Independent Drives,中文名稱為磁盤陣列,直譯為“冗餘獨立驅動器陣列”。簡單來說就是多個硬盤組成的邏輯陣列。組Raid就是将多塊獨立的硬盤組合行成單一的邏輯陣列,當做一個整體來使用,用以實現提高傳輸速度、安全性等功能,多用于文件服務器或NAS。
Raid的種類
下面我們依次介紹較常見的Raid0/1/10/5/6和更高級一些的Raidz/z2,并分别介紹它們的工作原理和優缺點。不常見的Raid2/3/4和各種奇奇怪怪的組合如Raid100/30/50/60等就不多說了,理解了基礎的,組合自然就明白了。如果沒有标注,默認不同硬盤的容量相同。
1、Raid0
Raid0需要最少兩塊。
以兩塊硬盤為例,組Raid後容量為兩者之和,讀寫數據時,同時對兩塊硬盤進行讀寫。
優點是帶寬翻倍,理論上讀寫速度也翻倍。但缺點也是緻命的,由于是将整體數據同時分别寫在兩塊硬盤上,讀取時也要同時讀出才能得到完整的數據,所以隻要陣列中一塊硬盤損壞,整個陣列中的所以數據全部丢失,所以才有了著名的“Raid0一時爽,一直Raid0一直爽”,啊,不好意思拿錯稿子了,是“Raid0一時爽,數據火葬場”。
總結來講,速度×N,風險×N,利用率100%。
2、Raid1
Raid1最少也需要兩塊硬盤。
同樣以兩塊硬盤為例,容量相當于最小的一塊,多塊同理。寫入數據時,同時在所有硬盤上寫入相同的數據,相當于做了鏡像或備份,讀取時如果一塊硬盤損壞,還可以從陣列中其他的硬盤中讀出完整數據。
優點是冗餘性和安全性翻倍,缺點是利用率低。
總結,速度×1,風險×1/N,利用率1/N。
3、Raid10
顧名思義,就是Raid1 0,是Raid1和Raid0的結合,讓兩者取長補短。最少需要四塊硬盤,或者m×n塊的靈活組合都可,正是因為其是兩種Raid模式的結合。
以四塊硬盤為例,其中兩塊用作備份盤,兩塊用作增速盤。
先提一下Raid10的特殊實現方式,叫Raid10而不叫Raid01是有道理的,需要先把四塊硬盤分為兩組,組内先進行類似Raid1的組合,互為鏡像,稱作“做鏡像”,再對兩個“Raid1陣列”進行類似Raid0的組合,稱為“做條帶”。所以在讀寫時,同時對四塊硬盤進行讀寫,其中每組寫入不同數據(原數據中不同位置的數據,有可能相同,如1101中的前兩個1,下同),每組中兩塊硬盤寫入相同的數據。
優點是兼顧傳輸速度與安全性,缺點是性能開銷大,而且……額……貴,權且當作方案的缺點吧。
總結,以四塊硬盤為例,速度×2,風險×½,利用率50%。
同理,Raid01的原理大家可以反過來理解,先做條帶,再做鏡像。
4、Raid5
Raid5最少需要三塊硬盤,其中需要拿出相當于一塊硬盤的容量來存校驗碼,校驗碼采用奇偶校驗方式算出,校驗碼不可全部在一塊硬盤,其餘用來存數據。用來存校驗碼的容量由從所有硬盤中不同位置取出相同的容量組成,加起來等于一塊硬盤的容量,以三塊硬盤為例,三塊硬盤中各取出⅓的容量,被取出的容量在三塊硬盤中不全在同一位置。
寫入數據時,同時在兩塊硬盤上分别寫入不同數據,最後一塊硬盤寫入算出的校驗碼,下一次寫入的校驗碼不可與上一次的校驗碼存于同一塊硬盤。如果某一塊硬盤損壞,則隻需要替換掉損壞的硬盤,通過均勻分布在各硬盤中的數據和校驗碼,就可以恢複重建損壞硬盤中的數據。
優點是一定程度上兼顧了傳輸速度和安全性。缺點是現實中數據恢複速度和成功率并不十分理想。還有不得不提的局限性,不管陣列中有多少塊硬盤,同時損壞兩塊都是無法恢複的,整個陣列中的數據全部丢失。
總結,速度×(N-1),風險不會算,改天去請教一下理學院的學長……可以肯定的是風險比Raid1大,利用率為(N-1)/N。
另外,如果硬盤容量不同,Raid5會在每塊硬盤中都取容量最小的硬盤的容量來使用,其餘的都不用,但群輝的SHR技術可以将浪費的容量利用起來,感興趣的朋友可以去了解一下。
5、Raid6
Raid6可以說是Raid5的升級版,最少需要四塊硬盤,其中兩塊硬盤的容量用以存儲兩位奇偶校驗碼,校驗碼分配方式與Raid5類似。
同理,同時損壞三塊硬盤,整個陣列無法恢複。
總結,速度×(N-2),風險不會算但比Raid5小比Raid1大,利用率為(N-2)/N。
6、Raidz/Raidz2
這兩種“Raid模式”分别可以看做Raid5和Raid6的改進,雖然名叫“Raid”但并不是同一回事。
Raidz/z2基于更先進的ZFS文件系統,擁有更加先進的冗餘機制,解決了Raid5/6“全盤重寫”的問題。這個不是一時半會可以講完的,為了篇幅和不喧賓奪主的考慮,暫且留個坑吧。
實現方式
Raid陣列的實現分為硬實現和軟實現,組成的陣列分别稱為硬Raid和軟Raid。
我們分别來看:
1、硬實現/硬Raid
硬實現是通過硬件(Raid卡)來實現Raid陣列的方式。對磁盤的數據讀寫由Raid卡主控完成,系統會将整個陣列識别為單一硬盤。
優點是對CPU的依賴非常小,性能較好,有緩存的Raid卡還可以提高随機讀寫性能。
缺點是不夠靈活,用Raid卡組Raid後,如果不解除/撤銷/取消,陣列中的硬盤直接挂載到别的電腦上是無法使用的。以及需要額外的硬件,成本較高。
2、軟實現/軟Raid
軟Raid就是通過軟件方式實現的Raid,包括從BIOS中設置。磁盤數據的讀寫由CPU完成,系統可以識别出陣列中所有的硬盤。
優點是使用靈活,拆下後可直接在其他電腦上使用,成本較低,操作簡單。
缺點是對CPU依賴較大,性能較差。
了解了上述内容,想要組Raid的小夥伴們心中應該是有底了,可以按需選擇自己想要的方式。最後IT之家還要提醒一句,數據千萬條,安全第一條。Raid不規範,自己兩行淚。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!