磁盤容錯是指在子系統(tǒng)出現(xiàn)硬盤錯誤或硬盤故障時,可以保證數(shù)據(jù)完整性和數(shù)據(jù)處理能力。RAID控制卡通過冗余的硬盤組在RAID 1、5、6、10、50、60上實現(xiàn)此功能。
在RAID 1中,由于數(shù)據(jù)鏡像存儲于成對的硬盤上,因此在成對的硬盤中的一個產(chǎn)生錯誤或故障時,不會造成數(shù)據(jù)丟失。同理,在RAID 5中,允許1個硬盤故障;在RAID 6中,允許2個硬盤故障。
而對于包含多個子組的RAID,RAID 10、50允許故障盤的個數(shù)與子組數(shù)相同,但是要求每個子組只能包含1個故障盤。RAID 60允許故障盤的個數(shù)為子組數(shù)的2倍,要求每個子組最多包含2個故障盤。
RAID 0不支持容錯特性,當(dāng)RAID 0中的硬盤故障時,該RAID失效,數(shù)據(jù)丟失。
容錯性能提高了系統(tǒng)的可用性,即硬盤故障時,系統(tǒng)仍可正常運行。因此,在故障修復(fù)流程中,容錯是非常重要的特性。
1 一致性校驗
針對有冗余功能的RAID 1、5、6、10、50、60,RAID控制卡可以對RAID組的硬盤數(shù)據(jù)進(jìn)行一致性校驗,對硬盤數(shù)據(jù)進(jìn)行檢驗和計算,并與對應(yīng)的冗余數(shù)據(jù)進(jìn)行比較。如果發(fā)現(xiàn)有數(shù)據(jù)不一致的情況,會嘗試做自動修復(fù)并保存錯誤信息。
由于RAID 0不具備冗余性,因此不支持一致性校驗。
2 熱備份
RAID控制卡的熱備份特性由熱備盤和緊急備份功能實現(xiàn)。
熱備盤
熱備盤是硬盤系統(tǒng)中的一個獨立的硬盤,當(dāng)RAID組中的硬盤故障時,熱備盤自動取代故障盤作為成員盤,并在熱備盤上重構(gòu)故障盤數(shù)據(jù)。
在RAID控制卡的管理界面或命令行工具中,可以指定容量大于或等于RAID組成員盤,且介質(zhì)類型及接口與成員盤相同的空閑盤作為RAID組的熱備盤。
RAID控制卡支持的熱備盤包括下面兩種:
全局熱備盤,為RAID控制卡上所有已配置的RAID組所共有,1塊RAID控制卡中可配置1個或多個全局熱備盤。當(dāng)任意RAID組內(nèi)的成員盤故障時,全局熱備盤均可自動替代。
局部熱備盤,為RAID控制卡上某個指定的RAID組所專有,每個RAID組都可以配置1個或多個局部熱備盤。當(dāng)指定RAID組內(nèi)的成員盤故障時,局部熱備盤可自動替換。
熱備盤有如下特性:
熱備盤僅用于具有冗余功能的RAID組,包括RAID 1、5、6、10、50、60。
熱備盤僅用于替代同一RAID控制卡上的故障盤。
緊急備份
緊急備份功能,是指任意一個具備冗余功能的RAID組中出現(xiàn)成員盤故障且沒有指定熱備盤時,RAID控制卡下屬的空閑盤會自動替代故障成員盤并進(jìn)行重構(gòu),避免數(shù)據(jù)丟失。
緊急備份要求用于備份的空閑盤容量大于等于成員盤容量,且介質(zhì)類型與成員盤相同。
3 RAID重構(gòu)
當(dāng)RAID組中出現(xiàn)故障盤時,可以通過RAID控制卡的數(shù)據(jù)重構(gòu)功能,將故障盤中的數(shù)據(jù)在新盤上重構(gòu)。數(shù)據(jù)重構(gòu)功能僅適用于具有冗余功能的RAID 1、5、6、10、50、60。
RAID控制卡支持熱備盤自動重構(gòu)故障成員盤數(shù)據(jù)。當(dāng)RAID組配置了可用的熱備盤時,在成員盤故障的情況下,熱備盤自動替換故障盤,進(jìn)行數(shù)據(jù)重構(gòu);當(dāng)RAID組沒有可用的熱備盤時,只有更換新盤后才可進(jìn)行數(shù)據(jù)重構(gòu)。當(dāng)熱備盤開始數(shù)據(jù)重構(gòu)后,故障的成員盤就被標(biāo)注為可移除狀態(tài)。如果在數(shù)據(jù)重構(gòu)過程中系統(tǒng)下電,那么在系統(tǒng)重新啟動后,RAID控制卡會繼續(xù)執(zhí)行數(shù)據(jù)重構(gòu)的任務(wù)。
重構(gòu)率,即數(shù)據(jù)重構(gòu)任務(wù)在系統(tǒng)運行的所占用CPU資源的比率,可設(shè)置為0%~100%。0%表示數(shù)據(jù)重構(gòu)任務(wù)只有系統(tǒng)當(dāng)前沒有任何其他任務(wù)運行時,才會啟動數(shù)據(jù)重構(gòu)任務(wù)。100%表示數(shù)據(jù)重構(gòu)任務(wù)占用所有CPU資源。重構(gòu)率可由用戶自行設(shè)置,建議根據(jù)系統(tǒng)的實際情況設(shè)置一個合適的取值。
4 虛擬磁盤的讀寫策略
在創(chuàng)建虛擬磁盤時,會需要對其數(shù)據(jù)讀寫策略進(jìn)行定義,以規(guī)范后續(xù)虛擬磁盤運行過程中數(shù)據(jù)的讀寫方式。
數(shù)據(jù)讀策略
在配置界面中一般體現(xiàn)為“Read Policy”。RAID控制卡支持如下兩種數(shù)據(jù)讀策略:
預(yù)讀取方式:在配置界面中一般有“Always Read Ahead”、“Read Ahead”、“Ahead”等配置選項。使用此策略后,從虛擬磁盤中讀取所需數(shù)據(jù)時,會把后續(xù)數(shù)據(jù)同時讀出放在Cache中,用戶隨后訪問這些數(shù)據(jù)時可以直接在Cache中命中,將減少硬盤尋道操作,節(jié)省響應(yīng)時間,提高了數(shù)據(jù)讀取速度。
要使用該策略,要求RAID控制卡支持?jǐn)?shù)據(jù)掉電保護(hù)功能,但如果此時超級電容異常,可能導(dǎo)致數(shù)據(jù)丟失。
非預(yù)讀取方式:使用此策略后,RAID控制卡接收到數(shù)據(jù)讀取命令時,才從虛擬磁盤讀取數(shù)據(jù),不會做預(yù)讀取的操作。
數(shù)據(jù)寫策略
在配置界面中一般體現(xiàn)為“Write Policy”。RAID控制卡支持如下數(shù)據(jù)寫策略:
回寫:在配置界面中一般體現(xiàn)為“Write Back”等字樣。使用此策略后,需要向虛擬磁盤寫數(shù)據(jù)時,會直接寫入Cache中,當(dāng)寫入的數(shù)據(jù)積累到一定程度,RAID控制卡才將數(shù)據(jù)刷新到虛擬磁盤,這樣不但實現(xiàn)了批量寫入,而且提升了數(shù)據(jù)寫入的速度。當(dāng)控制卡Cache收到所有的傳輸數(shù)據(jù)后,將給主機(jī)返回數(shù)據(jù)傳輸完成信號。
要使用該策略,要求RAID控制卡支持?jǐn)?shù)據(jù)掉電保護(hù)功能,但如果此時超級電容異常,可能導(dǎo)致數(shù)據(jù)丟失。
直寫:在配置界面中一般有“Write Through”等選項。使用此策略后,RAID控制卡向虛擬磁盤直接寫入數(shù)據(jù),不經(jīng)過Cache。當(dāng)硬盤子系統(tǒng)接收到所有傳輸數(shù)據(jù)后,控制卡將給主機(jī)返回數(shù)據(jù)傳輸完成信號。
此種方式不要求RAID控制卡支持?jǐn)?shù)據(jù)掉電保護(hù)功能,即使超級電容故障,也無影響。該寫策略的缺點是寫入速度較低。
與BBU相關(guān)的回寫:在配置界面中一般有“Write Back with BBU”等選項。使用此策略后,當(dāng)RAID控制卡BBU在位且狀態(tài)正常時,RAID控制卡到虛擬磁盤的寫操作會經(jīng)過Cache中轉(zhuǎn)(即回寫方式);當(dāng)RAID控制卡BBU不在位或BBU故障時,RAID控制卡到虛擬磁盤的寫操作會自動切換為不經(jīng)過Cache的直接寫入(即寫通方式)。
強(qiáng)制回寫:在配置界面中一般體現(xiàn)為“Write Back Enforce”、“Always Write Back”等字樣。在RAID控制卡無電容或電容損壞的情況下,強(qiáng)制使用“Write Back”模式。
當(dāng)服務(wù)器出現(xiàn)異常下電時,如果電容不在位或在充電狀態(tài)下,RAID控制卡中DDR(即Cache)的寫數(shù)據(jù)將會丟失。不推薦使用該模式。
5 數(shù)據(jù)掉電保護(hù)
掉電保護(hù)的原理
數(shù)據(jù)寫入RAID控制卡高速緩存的速度大于數(shù)據(jù)寫入硬盤的速度,一次在服務(wù)器進(jìn)行大量寫操作時,都使用RAID控制卡高速緩存來提升系統(tǒng)性能。
開啟RAID控制卡高速緩存可提升整機(jī)寫性能,當(dāng)服務(wù)器寫壓力減小或RAID控制卡高速緩存將寫滿時,數(shù)據(jù)再由RAID控制卡高速緩存寫入硬盤。
開啟RAID控制卡高速緩存提升寫性能的同時,也增大了數(shù)據(jù)丟失的風(fēng)險,在整機(jī)意外掉電時,RAID控制卡高速緩存中的數(shù)據(jù)將會丟失。
為了提升整機(jī)的高讀寫性能和RAID控制卡高速緩存中數(shù)據(jù)的安全,可為RAID控制卡配置超級電容。超級電容保護(hù)模塊的原理是在發(fā)生系統(tǒng)意外掉電時,利用超級電容供電,將RAID控制卡高速緩存中的數(shù)據(jù)寫入超級電容模塊中的NAND Flash中永久保存。
超級電容電量校準(zhǔn)
由于數(shù)據(jù)保護(hù)需要超級電容的配合,為了記錄超級電容的放電曲線,以便RAID控制卡了解超級電容的狀態(tài),例如最大和最小電壓等,同時為了延長超級電容的壽命,RAID控制卡默認(rèn)啟動超級電容自動校準(zhǔn)模式。
RAID控制卡通過如下所述的三段式充放電操作對超級電容的電量進(jìn)行校準(zhǔn),使其保持在一個相對穩(wěn)定的值。
1.RAID控制卡將超級電容的電量充到最大值。
2.自動啟動校準(zhǔn)進(jìn)程,將超級電容完全放電。
3.重新開始充電,直至達(dá)到最大電量。
超級電容電量校準(zhǔn)過程中,RAID控制卡寫策略自動調(diào)整為“Write Through”模式以保證數(shù)據(jù)完整性,此時RAID控制卡性能會降低。電量校準(zhǔn)的時間取決于超級電容充放電速度。
6 硬盤條帶化
當(dāng)多個進(jìn)程同時訪問一個硬盤時,可能會出現(xiàn)硬盤沖突。大多數(shù)硬盤系統(tǒng)都對訪問次數(shù)(每秒的I/O操作)和數(shù)據(jù)傳輸率(每秒傳輸?shù)臄?shù)據(jù)量)有限制。當(dāng)達(dá)到這些限制時,后面需要訪問硬盤的進(jìn)程就需要等待。
條帶化是一種自動的將I/O的負(fù)載均衡到多個物理硬盤上的技術(shù)。條帶化技術(shù)將一塊連續(xù)的數(shù)據(jù)分成多個小部分并將其分別存儲到不同硬盤上去。這就能使多個進(jìn)程同時訪問數(shù)據(jù)的多個不同部分而不會造成硬盤沖突,而且在需要對這種數(shù)據(jù)進(jìn)行順序訪問的時候可以獲得最大程度上的I/O并行能力。
硬盤的條帶化,是將硬盤空間按照設(shè)定的大小分為多個條帶,數(shù)據(jù)寫入時也按照條帶的大小來劃分?jǐn)?shù)據(jù)模塊。
例如,在一個由四個成員盤組成的硬盤系統(tǒng)中(例如RAID 0),第一個數(shù)據(jù)塊寫入第一塊成員盤,第二個數(shù)據(jù)塊寫入第二個成員盤,以此類推,如圖1-11所示。由于是同時對多個硬盤進(jìn)行寫入,因此極大地提升了系統(tǒng)性能,但是,此特性并不能保證數(shù)據(jù)的冗余性。
硬盤分條包含下面的概念:
條帶寬度:一個硬盤組在進(jìn)行分條時所使用的硬盤的個數(shù),例如一個由四個成員盤組成的硬盤組,其條帶寬度為“4”。
硬盤組的條帶大?。篟AID控制卡同時在一個硬盤組中所有硬盤上的寫入的數(shù)據(jù)塊的大小。
硬盤的條帶大?。篟AID控制卡在每塊硬盤上寫入的數(shù)據(jù)塊的大小。
例如,針對一個硬盤組,在寫入數(shù)據(jù)時,一個1MB的數(shù)據(jù)條帶,在每個成員盤上分配的數(shù)據(jù)塊為64KB,那么此硬盤組的條帶大小為1MB,硬盤的條帶大小為64KB。
7 磁盤鏡像
磁盤鏡像,適用于RAID 1和RAID 10,是指執(zhí)行寫數(shù)據(jù)的任務(wù)時,會將同樣的數(shù)據(jù)同時寫入兩塊硬盤,以實現(xiàn)100%的數(shù)據(jù)冗余度。由于兩塊硬盤上的數(shù)據(jù)完全相同,當(dāng)一塊硬盤故障時,數(shù)據(jù)不會丟失。另外,同一時間,兩塊盤上的數(shù)據(jù)是完全相同的,當(dāng)一塊硬盤故障時,由于數(shù)據(jù)是同時讀寫,因此數(shù)據(jù)流不會中斷。
磁盤鏡像帶來的是100%的完全冗余,但是其代價是比較昂貴的,因為在鏡像過程中,每個硬盤都需要一個備份盤。
8 外部配置
外部配置,是區(qū)別于當(dāng)前RAID控制卡的配置來說的,在配置界面中一般體現(xiàn)為“Foreign Configuration”之類的字樣。
一般在下述情況下,會有外部配置出現(xiàn):
一個新安裝到服務(wù)器上的物理硬盤中存在RAID配置信息,RAID控制卡會將此類信息識別為外部配置。
服務(wù)器更換了RAID控制卡后,新RAID控制卡會將當(dāng)前存在的RAID信息識別為外部配置。
熱插拔RAID組的成員盤后,該成員盤會被標(biāo)記為攜帶外部配置。
對檢測出來的外部配置,可以根據(jù)服務(wù)器實際情況進(jìn)行處理。例如,當(dāng)新插入的硬盤攜帶的RAID信息不符合當(dāng)前使用場景時,可以刪除此配置。更換RAID控制卡后,如果仍然想使用之前的配置,就可以導(dǎo)入該配置,使其在新RAID控制卡上生效。
9 硬盤節(jié)能
RAID控制卡具備硬盤節(jié)能功能。此功能根據(jù)硬盤配置和I/O活動允許硬盤停轉(zhuǎn)。所有SAS和SATA機(jī)械硬盤均支持此功能。
當(dāng)硬盤節(jié)能功能開啟時,RAID控制卡下掛載的空閑狀態(tài)的硬盤和空閑熱備盤均處于節(jié)能狀態(tài)。當(dāng)有相關(guān)操作(例如創(chuàng)建RAID組,創(chuàng)建熱備盤,動態(tài)擴(kuò)盤,進(jìn)行熱備重構(gòu))時可喚醒正處于節(jié)能狀態(tài)的硬盤。
10 硬盤直通
硬盤直通,即“JBOD”功能,又稱指令透傳,是不經(jīng)過傳輸設(shè)備處理,僅保證傳輸質(zhì)量的一種數(shù)據(jù)傳輸方式。
打開硬盤直通功能后,RAID控制卡可對所連接的硬盤進(jìn)行指令透傳,在不配置RAID組的情況下,用戶指令可以直接透傳到硬盤,方便上層業(yè)務(wù)軟件或管理軟件訪問控制硬盤。
例如,服務(wù)器操作系統(tǒng)安裝過程中,可以直接找到掛載在RAID控制卡下的硬盤作為安裝盤;而不支持硬盤直通的RAID控制卡,在操作系統(tǒng)安裝過程中,只能找到該RAID控制卡下已經(jīng)配置好的虛擬磁盤作為安裝盤。
審核編輯:湯梓紅
-
硬盤
+關(guān)注
關(guān)注
3文章
1308瀏覽量
57282 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9123瀏覽量
85324 -
RAID
+關(guān)注
關(guān)注
0文章
277瀏覽量
35084 -
磁盤
+關(guān)注
關(guān)注
1文章
375瀏覽量
25201 -
控制卡
+關(guān)注
關(guān)注
2文章
60瀏覽量
13013
原文標(biāo)題:深入分析磁盤RAID關(guān)鍵技術(shù)
文章出處:【微信號:架構(gòu)師技術(shù)聯(lián)盟,微信公眾號:架構(gòu)師技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論