RAID(獨立磁盤冗余陣列)
在大數據技術出現之前,人們就需要面對這些關於存儲的問題,對應的解決方案就是RAID技術。
RAID 等級 | RAID0 | RAID1 | RAID3 | RAID5 | RAID6 | RAID10 |
別名 | 條帶 | 鏡像 | 專用奇偶校驗條帶 | 分布奇偶校驗條帶 | 雙重奇偶校驗條帶 | 鏡像加條帶 |
容錯性 | 無 | 有 | 有 | 有 | 有 | 有 |
冗余類型 | 無 | 有 | 有 | 有 | 有 | 有 |
熱備份選擇 | 無 | 有 | 有 | 有 | 有 | 有 |
讀性能 | 高 | 低 | 高 | 高 | 高 | 高 |
隨機寫性能 | 高 | 低 | 低 | 一般 | 低 | 一般 |
連續寫性能 | 高 | 低 | 低 | 低 | 低 | 一般 |
需要磁盤數 | n≥1 | 2n (n≥1) | n≥3 | n≥3 | n≥4 | 2n(n≥2)≥4 |
可用容量 | 全部 | 50% | (n-1)/n | (n-1)/n | (n-2)/n | 50% |
RAID(獨立磁盤冗余陣列)技術主要是為了改善磁盤的存儲容量,讀寫速度,增強磁盤的可用性和容錯能力。目前服務器級別的計算機都支持插入多塊磁盤(8塊或者更多),通過使用RAID技術,實現數據在多塊磁盤上的並發讀寫和數據備份。
常用RAID技術有以下幾種,如圖所示。
RAID0
- 數據在從內存緩沖區寫入磁盤時,根據磁盤數量將數據分成N份,這些數據同時並發寫入N塊磁盤,使得數據整體寫入速度是一塊磁盤的N倍。讀取的時候也一樣,因此RAID0具有極快的數據讀寫速度,但是RAID0不做數據備份,N塊磁盤中只要有一塊損壞,數據完整性就被破壞,所有磁盤的數據都會損壞。
RAID1
- 數據在寫入磁盤時,將一份數據同時寫入兩塊磁盤,這樣任何一塊磁盤損壞都不會導致數據丟失,插入一塊新磁盤就可以通過復制數據的方式自動修復,具有極高的可靠性。
RAID3
- 一般情況下,一台服務器上不會出現同時損壞兩塊磁盤的情況,在只損壞一塊磁盤的情況下,如果能利用其他磁盤的數據恢復損壞磁盤的數據,這樣在保證可靠性和性能的同時,磁盤利用率也得到大幅提升。
- 在數據寫入磁盤的時候,將數據分成N-1份,並發寫入N-1塊磁盤,並在第N塊磁盤記錄校驗數據,任何一塊磁盤損壞(包括校驗數據磁盤),都可以利用其他N-1塊磁盤的數據修復。
- 但是在數據修改較多的場景中,任何磁盤修改數據都會導致第N塊磁盤重寫校驗數據,頻繁寫入的后果是第N塊磁盤比其他磁盤容易損壞,需要頻繁更換,所以RAID3很少在實踐中使用。
RAID5
- 相比RAID3,更多被使用的方案是RAID5。
- RAID5和RAID3很相似,但是校驗數據不是寫入第N塊磁盤,而是螺旋式地寫入所有磁盤中。這樣校驗數據的修改也被平均到所有磁盤上,避免RAID3頻繁寫壞一塊磁盤的情況。
RAID6
- 如果數據需要很高的可靠性,在出現同時損壞兩塊磁盤的情況下(或者運維管理水平比較落后,壞了一塊磁盤但是遲遲沒有更換,導致又壞了一塊磁盤),仍然需要修復數據,這時候可以使用RAID6。
- RAID6和RAID5類似,但是數據只寫入N-2塊磁盤,並螺旋式地在兩塊磁盤中寫入校驗信息(使用不同算法生成)。
RAID10
- 結合RAID0和RAID1兩種方案,將所有磁盤平均分成兩份,數據同時在兩份磁盤寫入,相當於RAID1,但是在每一份磁盤里面的N/2塊磁盤上,利用RAID0技術並發讀寫,既提高可靠性又改善性能,不過RAID10的磁盤利用率較低,有一半的磁盤用來寫備份數據。
在相同磁盤數目(N)的情況下,各種RAID技術的比較如下表所示。
RAID技術有硬件實現,比如專用的RAID卡或者主板直接支持,也可以通過軟件實現,在操作系統層面將多塊磁盤組成RAID,在邏輯視作一個訪問目錄。RAID技術在傳統關系數據庫及文件系統中應用比較廣泛,是改善計算機存儲特性的重要手段。
RAID技術只是在單台服務器的多塊磁盤上組成陣列,大數據需要更大規模的存儲空間和訪問速度。將RAID技術原理應用到分布式服務器集群上,就形成了Hadoop分布式文件系統HDFS的架構思想。