硬盤陣列(Redundant Arrays of Independent Disks,RAID),是由很多塊獨立的硬盤,組合成一個容量巨大的硬盤組。
現如今,基本所有的服務器都通過RAID卡對硬盤進行管理。硬盤插入到服務器的槽位后由背板的線纜連接RAID卡進行一個統一的管理,然后提供給操作系統,操作系統不能直接使用硬盤。
以下為一些常見的RAID級別:
RAID 0
將數據分成若干相等大小的數據塊,把他們寫在不同的硬盤上,以獨立的方式實現多塊硬盤的并讀訪問,并發執行I/O操作。基本能夠發揮出所有硬盤的性能,但是RAID0沒有冗余機制,硬盤越多固然性能越好,然而出現故障導致卷組不可用的概率也越高。建議配合上層應用能夠提供冗余的場景一起使用。
RAID 1
當上層數據下發時,會將數據完全一致地寫在兩塊硬盤上,實現數據冗余,可以用兩塊硬盤中讀取數據,提升讀性能。當一塊硬盤發生故障,系統自動從另一塊硬盤讀取數據,提高可靠性,但是成本更高,適用于對數據可靠性要求高的應用,如:將系統盤放在RAID 1上面。
RAID 5
將數據和相對應的奇偶校驗信息分別存儲在不同的硬盤上,奇偶校驗信息占一個硬盤的空間,允許損壞一個硬盤。當一個硬盤損壞時,可以根據剩余的數據和相對應的奇偶校驗信息計算出損壞的數據,恢復數據時性能會受到較大的影響。RAID 5寫性能偏低,尤其是隨機寫性能,建議在讀寫不太頻繁的場景上使用,如:用作數據備份。
RAID 6
與RAID 5 相似,擁有兩套獨立的奇偶校驗信息,可以允許損壞兩塊硬盤。
RAID卡除了將硬盤組建不同RAID級別的功能之外,還能提供加速讀寫的緩存功能。
每張RAID卡都擁有大小不等的緩存。
Read Policy
1、Read Ahead:預讀緩存模式,將當前讀取的后續塊數據也預先讀取保存在緩存中,可以快速對應后續的讀取操作。當第二次讀取相同的數據時,不需要再次從硬盤里面讀取數據,頻繁讀取的熱點數據保存在緩存中,可以大大提升讀性能。
2、No Read Ahead:不通過緩存進行讀取操作。
Write Policy
1、Write Back:WB回寫模式,該模式會將上層的數據先寫入RAID卡緩存當中,再將緩存中的數據寫入硬盤中,對于上層應用而言,當數據寫入緩存中時就已經認為落盤成功了,因此WB模式可以提升寫性能。
2、Write Througt:WT直寫模式,該模式會直接將數據寫入到硬盤當中。
開啟WB模式的前提是RAID卡帶有電池,確保在服務器斷電的情況下依然能將緩存里面的數據寫入硬盤中。當服務器的RAID卡電池出現故障或者電量不足的情況,WB模式會被強制切換成WT模式,防止出現數據丟失,然而讀策略不會受到任何影響,這是因為寫到緩存里面的數據是臟數據,與硬盤里面的數據不一致,而讀到緩存里面的數據與硬盤里面的數據完全一致,即使丟失了也沒有任何關系。
WB模式能夠提升寫性能,這有個前提是上層下發的數據量不大,可以被RAID卡緩存所容納,但是當上層下發大量數據時,緩存很快就會被擊穿。我們可以通過一個實驗去驗證,將一塊硬盤的寫策略調整為WB模式,然后利用fio工具去模擬上層數據下發
可以看到,當上層有大量數據下發時,緩存很快就被擊穿,寫性能呈現斷崖式下劃
上文提到了各個RAID級別的特點及優劣勢,下面我們通過fio工具測試,直觀的感受一下不同RAID的性能。
一塊盤RAID0基本可以發揮這塊盤的所有性能,通過以上測試數據可以發現:
RAID1使用兩塊盤,讀能發揮出兩塊盤的性能,而寫性能基本與單塊盤一致,說明可以同時從兩塊盤讀取不同的數據內容,而寫時需要將相同的數據寫在兩塊盤中。
RAID5使用三塊盤,讀能基本能發揮出三塊盤的性能,但是寫性能不高,尤其是隨機寫性能更是慘不忍睹
現如今,對硬盤的性能要求越來越高,SATA、SAS因為本身的缺陷,性能基本不會超過600MiB/s,因此對NVMe盤的需求越來越多,尤其是數據庫等對底層硬件性能要求比較高的行業。
NVMe盤直通到cpu,無法通過RAID卡進行管理,因此也不能通過RAID卡去創建不同的RAID級別。目前給NVMe做raid的方式有兩種,一種是軟RAID,另一種是Intel VROC
軟RAID
軟RAID的實現沒有硬件參與,完全通過軟件模仿磁盤陣列的方式來實現,通過CPU內核計算RAID邏輯
Intel VROC
Intel VROC 是一種混合 RAID 解決方案。它的屬性與硬件 RAID 類似,是因為英特爾卷管理設備(英特爾 VMD)的一項關鍵芯片功能是通過新的英特爾至強可擴展處理器提供的。英特爾虛擬 RAID on CPU (VROC)利用英特爾 VMD 來聚合 NVMe 固態盤,從而實現可引導 RAID。英特爾 VROC 還具有軟件 RAID 等屬性。例如:它使用一些 CPU 內核來計算 RAID 邏輯。由于這種軟件與芯片相結合,英特爾 VROC 稱為混合 RAID 解決方案。
目前,英特爾至強可擴展處理器基本都支持VMD,但是并不是cpu支持就可以使用VROC了,需要滿足以下幾個條件:
1.VMD是一個比較新的技術,需要將服務器的引導模式調整為UEFI引導模式。
2.需要VROC Key,Intel VROC 是一種通過 OEM 或 ODM 與支持服務級別協議一起銷售的許可產品。Intel VROC 硬件密鑰是獲取Intel VROC 軟件許可的機制。某些 OEM/ODM 通過在其主板上添加密鑰標頭,構建了支持Intel VROC 的服務器和工作站。每個VROC Key的售價在100美金左右。
VROC Key有幾個不同的型號,每個型號Key的功能都有一些差別,有些型號的Key可以支持其余品牌的NVMe盤,但是出于兼容性考慮,還是不建議使用其余品牌的NVMe盤 。
3.服務器支持,并不是每一臺服務器都可以安裝VROC Key,需要服務器的主板有相應的槽位可以插入VROC Key。
VROC的管理方式以及系統上面的展示與軟RAID非常相似。
VROC與軟RAID都使用mdadm的命令進行管理,VROC需要安裝相對應版本的mdadm rpm包。
rpm –U mdadm-4.0-13.1.IntelVROC6.0.el7.x86_64.rpm
VROC與軟RAID這么相似,那么在性能上有什么差距嗎?我們可以通過實驗看一下
RAID 0
為了效果更加明顯,使用了三塊盤創建RAID0,結果顯示VROC與軟RAID沒有明顯的性能差距
RAID 1
VROC與軟RAID組建RAID1各項性能基本一致
RAID 5
VROC與軟RAID組建的raid5各項性能基本一致,但是兩者的寫性能都是偏低的,通過觀察cpu的使用率可以發現,VROC與軟RAID都是單核進程,所在core的使用率也已經被打滿了,cpu的性能也是制約RAID5寫性能的一項因素
通過以上的測試可以發現,VROC與軟RAID的性能基本是一致的,因為兩者都需要使用cpu內核去來計算RAID邏輯。而VROC有硬件的支持,具備了一些其他的功能
VROC可以作為系統盤使用,VROC有硬件的支持,在沒有安裝操作系統之前就可以在BIOS里面使用NVMe盤創建RAID,然后再將系統安裝在這塊raid卷組上面。
VROC擁有熱備功能,當檢測到設備故障時,熱備盤可用于重建RAID
NVMe盤一直沒有很好的方式去定位,而VROC可以準確定位到NVMe盤
ledctl locate=/dev/nvme0n1
通過以上命令可以使指定的NVMe盤閃燈
性能方面,VROC與軟RAID基本一致。軟RAID的優勢是不需要額外的成本,而VROC優勢是有硬件的支持,具備一些特性(可引導RAID、NVMe盤定位等),以及有Intel的技術服務。兩者各有優勢,所以,可以根據實際的需求去選擇使用哪一項技術
服務電話: 400-678-1800 (周??周五 09:00-18:00)
商務合作: 0571-87770835
市場反饋: marketing@woqutech.com
地址: 杭州市濱江區濱安路1190號智匯中?A座1101室