《大型網站技術架構核心原理與案例分析》讀書筆記之RAID技術
RAID(廉價磁碟冗餘陣列)技術主要是為了改善磁碟的訪問延遲,增強磁碟的可用性和容錯能力。目前伺服器級別的計算機都支援插入多塊磁碟(8塊或者更多),通過使用RAID技術,實現資料在多塊磁碟上的併發讀寫和資料備份。
假設伺服器有N塊磁碟。
RAID0
資料在從記憶體緩衝區寫入磁碟時,根據磁碟數量將資料分成N份,這些資料同時併發寫入N塊磁碟,使得資料整體寫入速度是一塊磁碟的N倍。讀取時也一樣,因此RAID0具有極快的資料讀寫速度,但是RAID0不做資料備份,N塊磁碟中只要有一塊損壞,資料完整性就被破壞,所有磁碟的資料都會損壞。
RAID1
資料在寫入磁碟時,將一份資料同時寫入兩塊磁碟,這樣任何一塊磁碟損壞都不會導致資料丟失,插入一塊新磁碟就可以通過複製資料的方式自動修復,具有極高的可靠性。
RAID10
結合RAID0和RAID1兩種方案,將所有磁碟平均分成兩份,資料同時在兩份磁碟寫入,相當於RAID1,但是在每一份磁盤裡面的N/2塊磁碟上,利用RAID0技術讀寫,既提高可靠性又改善效能,不過RAID10的磁碟利用率較低,有一半的磁碟用來寫備份資料。
RAID3
一般情況下,一臺伺服器不會出現同時損壞兩塊磁碟的情況,在只損壞一塊磁碟的情況下,如果能利用其它磁碟的資料恢復損壞磁碟的資料,這樣在保證可靠性和效能的同時,磁碟利用率也得到大幅提升。
在資料寫入磁碟的時候,將資料分成N-1份,併發寫入N-1份塊磁碟,並在第N塊磁碟記錄校驗資料,任何一塊磁碟損壞(包括校驗資料磁碟),都可以利用其它(N-1)塊磁碟的資料恢復。
但是在資料修改較多的場景中,修改任何磁碟資料都會導致第N塊磁碟重寫校驗資料,頻繁寫入的後果是第N塊磁碟比其他磁碟更容易損壞,需要頻繁更換,所以RAID3很少在實踐中使用。
RAID5
相比RAID3,方案RAID5被更多的使用。
RAID5和RAID3很相似,但是校驗資料不是寫入到第N塊磁碟,而是螺旋式的寫入所有磁碟中。這樣校驗資料的修改也被平均到所有磁碟上,避免RAID3頻繁寫壞一塊磁碟的情況。
RAID6
如果資料需要很高的可靠性,在出現同時損壞兩塊磁碟的情況下(或者運維管理水平比較落後,壞了一塊磁碟但是遲遲沒有更換,導致又壞了一塊),仍然需要修復資料,這時候可以使用RAID6。
RAID6和RAID5很相似,但是資料只寫入N-2塊磁碟,並螺旋式地在兩塊磁碟中寫入校驗資訊(使用不同演算法生成)。
在相同磁碟數目(N)的情況下,各種RAID技術的比較如下表:
RAID技術可以通過硬體實現,比如專用的RAID卡或者主機板直接支援,也可以通過軟體實現。RAID技術在傳統關係資料庫及檔案系統中應用比較廣泛,但是在大型網站比較喜歡用NoSql,以及分散式檔案系統,RAID技術卻遭到冷落。