目前常用硬盤分爲IDE、SATA、SCSI幾種,最大的區分的就是接口上的不同。服務器上一般採用後面兩種:SATA和SCSI,也有DIY採用比較新的SAS硬盤。下面我們就SATA、SCSI、SAS等接口技術作簡單介紹。
三、 RAID的選用
獨立磁盤冗餘陣列的英文名稱爲Redundant Array of Independent Disks,也就是我們通常所說的RAID。RAID的作用就是把多個獨立的磁盤組合在一起,成爲一個磁盤組,而這個磁盤組我們可以將它看成一個大的磁盤,這是因爲這個磁盤組的性能並沒有受到多個磁盤組合而造成性能減弱,相反還有所增強,因此,RAID技術被廣泛用於數據存儲行業中。在大型存儲中,我們通常通過存儲機櫃來實現數據存儲;而在服務器上的存儲,我們就通過支持RAID功能的RAID卡來實現。
1、 RAID種類及作用
RAID分爲很多種,如常見的RAID 0、RAID 1一直到RAID 7,另外還有組合,如RAID0+1(也被稱爲RAID 10)、RAID0+5(50)、RAID 5+3(RAID 53),每一個RAID級別都有其優點和缺點。下面和大家一起認識四種常用的RAID (RAID 0、RAID1、RAID0+1、RAID5)工作方式。
RAID 0
採用磁盤分段的方法把數據寫到多個磁盤,而不是隻寫到一個盤上,這叫RAID 0,在磁盤陣列子系統中,數據按系統規定的“段”(Segment)爲單位依次寫入多個磁盤,例如數據段1寫入磁盤1,段2寫入磁盤2,段3寫入磁盤3等等。當數據寫完最後一個磁盤時,它就重新從盤1的下一可用段開始寫入,寫數據的全過程按此重複直至數據寫完;簡單來說RAID 0使用的是平行存取方式。
我們來看一下RAID 0系統的工作原理,圖1是由三塊磁盤組成的RAID 0系統:
圖1 RAID 0系統的工作原理
由上圖可以清楚地看到,該系統由三塊磁盤同時讀寫同一數據的不同數據塊來達到三倍於原來磁盤的速度。實際上,RAID也可以只使用兩塊磁盤。上圖中,在任何時刻,這三塊磁盤都在同步地工作,但它們讀寫的內容卻完全不同。由於一個傳輸過程由三個磁盤各完成1/3,也就相當於傳輸帶寬增加了三倍,所以操作時間也就減少了2/3。其中RAID 0控制器的作用就是將原來的數據均分爲三份給三塊磁盤寫入或將三塊磁盤讀出的數據合併在一塊兒交給外部數據總線。磁盤數量越多,速度就越快,容量就越大(單盤速度×硬盤數量=RAID0的總速度;單盤容量×硬盤數量=RAID0的總容量)。但是,可靠性是單獨使用一塊磁盤的1/N。磁盤量越多,可靠性就越低(即是容易比單盤發生故障),一個磁盤出故障或磁盤壞了數據將會丟失。所以RAID 0最好備份一下結構和分區表信息,便於一般故障的恢復。
RAID 1
RAID 1稱爲磁盤鏡像:把一個磁盤的數據鏡像到另一個磁盤上,在不影響性能情況下最大限度的保證系統的可靠性、可修復性,具有很高的數據冗餘能力,但磁盤利用率爲50%,成本高,多用在保存關鍵性重要數據的場合。但是在RAID中,它同樣是佔用了一些CPU時間,把寫往主盤的數據同步地寫到鏡像盤。它的工作方式如圖2所示。
圖2 RAID 1工作原理圖示
上圖中,寫在磁盤1和磁盤2上的數據是完全一樣的,如寫在磁盤1上的數據1、2、3,也同樣寫在磁盤2上,對外只顯示一個帶有數據1、2、3的磁盤。
RAID 1有以下特點:
RAID 1的每一個磁盤都具有一個對應的鏡像盤,任何時候數據都同步鏡像,系統可以從一組鏡像盤中的任何一個磁盤讀取數據。
磁盤所能使用的空間只有磁盤容量總和的一半,系統成本高。
只要系統中任何一對鏡像盤中至少有一塊磁盤可以使用,甚至可以在一半數量的磁盤出現問題時系統都可以正常運行。
出現磁盤故障之後RAID系統不再可靠,因爲只有一個磁盤正常運作,應當及時的更換損壞的磁盤,否則剩餘的鏡像磁盤時間長了也可能出現問題,那麼整個系統就會崩潰。
更換新盤後原有數據會需要很長時間同步鏡像,外界對數據的訪問不會受到影響,只是這時整個系統的性能有所下降。
RAID 1磁盤控制器的負載相當大,用多個磁盤控制器可以提高數據的安全性和可用性。
RAID1磁盤的寫速度可能下降1/4左右,讀取速度比單盤可能提高1/4 左右,因爲RAID1讀取時,系統會同時從兩個盤上搜索,把先讀取到的數據傳輸回來。
RAID 1+0(也被稱爲RAID 10)
雖然RAID 1也可以獲得少許的性能提升,但是相對RAID 0來說恐怕是微不足道了。因此,在性能和安全兼顧的情況下,就出現了RAID 1+0。RAID 1+0至少使用4個磁盤,這樣,RAID 1+0在理論上同時保證了RAID 0的性能和RAID 1的安全性,代價是比RAID 0或1再多一倍的磁盤數量。其工作原理如圖3所示。RAID 10是建立在RAID 0和RAID 1基礎上的,具體的組合結構看圖:
圖3 RAID 1+0工作原理圖示
從中可以看出,RAID 1在這裏就是一個冗餘的備份陣列,而RAID 0則負責數據的讀寫陣列。其實,圖3只是一種RAID 10方式,更多的情況是從主通路分出兩路(以4個磁盤時爲例),做Striping操作,即把數據分割,而這分出來的每一路則再分兩路,做Mirroring操作,即互做鏡像。這就是RAID 10名字的來歷(也因此被很多人稱爲RAID 0+1)。
由於利用了RAID 0較高的讀寫效率和RAID 1較高的數據保護、恢復能力,使RAID 10成爲了一種性價比較高的等級,目前幾乎所有的RAID控制卡都支持這一等級。但是,RAID 10對存儲容量的利用率和RAID 1一樣低,只有50%,讀寫速度增加是單盤的一倍。下面就讓我們總結一下它的特點:
擁有RAID 1 數據保護及容錯能力,具有RAID 0比較高的I/O帶寬,容錯處理的系統和單獨的鏡像基本上一樣。對在RAID 1基礎上提高性能,RAID10 它就是完美的解決方案。適用於數據庫服務器等需要高性能、高容錯而對容量要求不大的場合上。
由於存儲容量的利用率較低,成本昂貴造成非常有限的擴展性。並且所有磁盤必須並行存取,工作使用磁軌的持續性能被減弱。
RAID 5
RAID 5 是一種存儲性能、數據安全和存儲成本兼顧的方案,它使用的是Disk Striping(硬盤分割)技術,RAID 5不是利用鏡像而是利用分散奇偶校驗冗餘數據。RAID 5可以理解爲是RAID 0和RAID 1的折衷方案,RAID 5可以爲系統提供數據安全保障,但保障程度要比Mirror(鏡像)低而磁盤空間利用率要比Mirror高。
如上圖所示,四個硬盤組成的RAID 5採用數據分塊並行傳送的方法,但是它在數據分塊之後需計算它們的奇偶校驗和。數據存儲方式爲: P4爲磁盤1的數據0,數據3和數據6的奇偶校驗信息,其它以此類推;P3爲磁盤2的數據1,數據4和數據9的奇偶校驗信息;P2爲磁盤3的數據2,數據7和數據10的奇偶校驗信息;P1爲磁盤4的數據5,數據8和數據11的奇偶校驗信息。由圖中可以看出,RAID 5不對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁盤上。
RAID 5具有和RAID 0相近似的數據讀取速度,只是多了一個奇偶校驗信息,寫入數據的速度比對單個磁盤進行寫入操作稍慢。同時由於多個數據對應一個奇偶校驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較低。RAID5是採用奇偶校驗的方法維護數據,這些奇偶校驗的信息只佔用一塊磁盤的容量,所以RAID5的實際容量相當於陣列中的磁盤數減1,數據讀寫速度等於單盤的速度×盤數,具有相對較好的綜合性能。
RAID 5E(RAID 5 Enhencement)是在 RAID 5級別基礎上的改進,與RAID 5類似,數據的校驗信息均勻分佈在各硬盤上,但是在每個硬盤上都保留了一部分未使用的空間,這部分空間沒有進行條帶化,最多允許兩塊物理硬盤出現故障。看起來,RAID 5E和RAID 5加一塊熱備盤好象差不多,其實由於RAID 5E是把數據分佈在所有的硬盤上,性能會與RAID5 加一塊熱備盤要好。當一塊硬盤出現故障時,有故障硬盤上的數據會被壓縮到其它硬盤上未使用的空間,邏輯盤保持RAID 5級別。
RAID 5E
RAID 5EE
與RAID 5E相比,RAID 5EE的數據分佈更有效率,每個硬盤的一部分空間被用作分佈的熱備盤,它們是陣列的一部分,當陣列中一個物理硬盤出現故障時,數據重建的速度會更快。
綜上所述,RAID 總體來說有以下作用:
增強了速度 ,服務器可以在同一時間從多個磁盤上讀取數據。l
提升I/O每秒的數量,增加可用運用時間,減少維護。l
增加資料安全性及穩定性, 大量資料快速及簡易管理。l
擴容了存儲能力,多個磁盤組成更大的空間提供給服務器使用。l
可高效恢復磁盤,RAID提供了相當高的數據冗餘功能,我們可以保證數據的完整無缺。l
2、 軟RAID與硬RAID
RAID也有全軟、半軟半硬與全硬之分。全軟RAID就是指RAID的所有功能都是操作系統(OS)與CPU來完成,沒有第三方的控制/處理(業界稱其爲RAID協處理器)與I/O芯片。這樣,有關RAID的所有任務的處理都由CPU來完成,可想而知這是效率最低的一種RAID。由於全軟RAID是在操作系統下實現RAID,不能保護系統盤,亦即系統分區不能參與實現RAID。有些操作系統,RAID的配置信息存在系統信息中,而不是存在磁盤上,當系統崩潰,需重新安裝時,RAID的信息也會丟失。尤其是全軟RAID 5是CPU的增強方式,會導致30%-40%的I/O功能降低,所以在服務器中不建議使用全軟RAID。
半軟半硬RAID是一種把初級的RAID功能附加給SCSI或者SATA卡而產生的產品,它把軟件RAID功能集成到了產品的固件上,從而提高了產品的功能和容錯能力。它可以支持RAID 0和RAID 1 RAID (1+0)。但因爲缺乏自己的I/O處理芯片,所以這方面的工作仍要由CPU與驅動程序來完成。而且,半軟半硬RAID所採用的RAID控制/處理芯片的能力一般都比較弱,不能支持高的RAID等級。
全硬的RAID則全面具備了自己的RAID控制/處理與I/O處理芯片,甚至還有陣列緩衝(Array Buffer),對CPU的佔用率以及整體性能是這三種類型中最優勢的,但設備成本也是三種類型中最高的。簡單來說半軟半硬是依靠主機本身CPU和內存運行,全硬RAID,自帶有微處理與I/O處理芯片及內存,不依靠你主機的CPU內存,直接把相關信息提交給OS處理,從而使性能獲得很大的提高。它的缺點是要佔用PCI總線帶寬,所以PCI I/O 可能變成陣列速度的瓶頸。
RAID卡有多種,除主板集成能夠做的RAID的硬RAID外,還有各種專門RAID卡。如泰安7901以及目前板載SATA RAID都是典型的HOST RAID卡,只有I/O處理芯片,雖然它也能做RAID1,RAID0和RAID10,但都是通過BIOS和驅動程序實現的,其性能較全硬RAID卡如Adaptec的2系列的(2030s等)要低,優點是價格要低至少一半。
其實要識別全硬RAID也很簡單:如果不掛驅動在LINUX下能認到RAID而不是單磁盤的就是全硬RAID了。因爲LINUX對RAID驅分很嚴,HOST RAID是作爲軟RAID來對待的,沒有廠家專用驅動LINUX就把它當作SCSI卡來處理。
3、 RAID的可靠度
根據平均故障間隔時間(MTBF),可以推斷出單隻磁盤的規定時間的無故障可靠度概率。這裏所說的可靠度是指在規定的時間內,在規定的條件下,完成規定功能的能力,以概率計量。按RAID可靠度的數學模型,可計算出常見RAID的可靠度,見下表。從該表不難看出,IDE的RAID 1也有極高的可靠度。由於SCSI硬盤比IDE硬盤價格要貴,性能高出不少,爲了獲得比較合理的結論,可選擇以下方式比較:規定時間內、相同價格下比可靠度;或規定時間內、相同可靠度下比價格;當然還有其他的比較方式。不難得出以下結論:SCSI硬盤一次性投資較大,相對一勞永逸,RAID的可選形式較多。IDE硬盤一次性投資小,要達到規定可靠度,必須分段投資,總價仍較低,相對麻煩,RAID的可選形式較少。
RAID可靠度表:
|
時間 |
一年 |
兩年 |
三年 |
SCSI硬盤可靠度 |
單隻硬盤 |
0.991278257 |
0.982632582 |
0.974062314 |
Raid 0 |
0.982632583 |
0.965566792 |
0.948797391 |
|
Raid 1 |
0.999923931 |
0.999698372 |
0.999327236 |
|
Raid 1+0 |
0.999847868 |
0.999396836 |
0.998654925 |
|
Raid 5(2/3) |
0.99977312 |
0.999105595 |
0.998016609 |
|
IDE硬盤可靠度 |
單隻硬盤 |
0.978338064 |
0.957145367 |
0.936411745 |
Raid 0 |
0.957145367 |
0.916127254 |
0.876866957 |
|
Raid 1 |
0.99953076 |
0.99816348 |
0.995956533 |
|
Raid 1+0 |
0.999061741 |
0.996330333 |
0.991929417 |
|
Raid 5(2/3) |
0.9986126109 |
0.9946478482 |
0.9883838357 |