陣列重建技術(shù)總結(jié)_第1頁
陣列重建技術(shù)總結(jié)_第2頁
陣列重建技術(shù)總結(jié)_第3頁
陣列重建技術(shù)總結(jié)_第4頁
陣列重建技術(shù)總結(jié)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

陣列重建技術(shù)總結(jié)概述RAID陣列的高可靠性依賴于磁盤的冗余性,當(dāng)RAID陣列中一塊硬盤失效后,RAID陣列數(shù)據(jù)丟失的風(fēng)險會變大。此時陣列需要進行重建操作,以保證數(shù)據(jù)的完整性。陣列的重建方式包括傳統(tǒng)重建、拷貝重建和局部重建,三種重建方式的自動靈活調(diào)配使用可使重建對業(yè)務(wù)的影響降到最低,并可大大縮短對失效磁盤重建的時間,降低RAID失效的風(fēng)險,提高RAID陣列對數(shù)據(jù)的保護能力。1.1重建的概念重建是將RAIDLUN的狀態(tài)從降級恢復(fù)成正常的過程,當(dāng)一個RAIDLUN中的硬盤數(shù)據(jù)因為某種原因出錯或者丟失,就必須用剩余的數(shù)據(jù)根據(jù)特定類型算法計算出錯或丟失數(shù)據(jù),從而達(dá)到恢復(fù)數(shù)據(jù)及運行狀態(tài)的目的。1.2重建流程重建過程中,系統(tǒng)會對每個RAIDLUN都會啟動一個重建線程,同一時刻每個RAIDGroup上只有一個LUN重建線程在執(zhí)行,其它線程處于休眠狀態(tài),當(dāng)一個RAIDGroup上的LUN重建完成后會喚醒休眠中的線程繼續(xù)重建過程,直到其上的所有LUN都重建完成。重建的處理過程如下:1)管理框架收到來自命令行的重建命令或者發(fā)生引發(fā)重建的事件后,向LUNCore發(fā)起針對LUN的重建請求。2)LUNCore針對每個條帶發(fā)起重建,將重建命令下發(fā)給LUNIO。3)LUNIO根據(jù)重建策略,讀取正常磁盤的條帶中每個條塊的數(shù)據(jù),通過異或運算,計算出新盤所在條塊的值;或者直接從故障盤讀取能讀到的正常值。4)LUNIO將計算/讀取出來的數(shù)據(jù)通過IO命令下發(fā)給DISK,DISK將數(shù)據(jù)寫入磁盤。5)當(dāng)完成所有條帶的重建后,LUNCore更新超級塊的信息。如果沒有重建完,返回2繼續(xù)重建。6)每十分鐘更新一次重建完成點信息到LUNDDF。7)重建完成后,需要更新LUN的狀態(tài)。傳統(tǒng)重建2.1傳統(tǒng)重建的概念傳統(tǒng)重建是通過讀其他數(shù)據(jù)盤計算校驗值來寫重建盤,重建完成后陣列重新具備冗余性。重建是以條帶為單位進行的,比如A盤和B盤是數(shù)據(jù)盤,D盤是重建盤。陣列的條塊是64k,重建時每次從A盤和B盤讀取64k的數(shù)據(jù),進行異或運算后寫D盤。數(shù)據(jù)盤A1101000101011010數(shù)據(jù)盤B0111011100110010重建盤D10100110011010002.2傳統(tǒng)重建的觸發(fā)條件冗余陣列中的一個數(shù)據(jù)盤拔盤后,踢盤時間內(nèi)沒有回來,會踢掉源盤,如果存在合適的熱備啟動傳統(tǒng)重建??截愔亟ㄖ?,源盤本來就有讀寫錯誤記錄或者遇到讀錯誤,該錯誤所在條帶按傳統(tǒng)重建方式處理??截愔亟ǖ脑幢P達(dá)到512個讀錯誤,踢源盤轉(zhuǎn)化為傳統(tǒng)重建??截愔亟ǖ脑幢P達(dá)到512個寫錯誤,踢源盤轉(zhuǎn)化為傳統(tǒng)重建??截愔亟ǖ脑幢Pmissing后,踢盤時間內(nèi)未回來,踢掉源盤轉(zhuǎn)化為傳統(tǒng)重建。注:踢盤時間默認(rèn)為10分鐘,可用命令進行更改,例如更改為5分鐘的命令如下:echo5>/sys/module/raid/parameters/lun_disk_missing_time更改后,只存于當(dāng)前內(nèi)存中,重啟后無效。2.3傳統(tǒng)重建的讀寫錯誤處理傳統(tǒng)重建讀寫錯誤處理要區(qū)分CP點之前和之后,CP點之前就是已經(jīng)重建過的條帶,條帶具有冗余性;CP點之后就是沒有重建過的條帶。業(yè)務(wù)在CP點之前,可能會讀重建盤,業(yè)務(wù)在CP點之后,肯定不會讀重建盤。下面分情況對數(shù)據(jù)盤(重建盤)的業(yè)務(wù)讀寫和重建讀寫分別進行討論。2.3.1對數(shù)據(jù)盤的讀寫若數(shù)據(jù)盤的業(yè)務(wù)讀遇到讀錯誤,區(qū)分CP點之前和之后。CP點之前,比如A盤遇到讀錯誤,再下發(fā)一次讀,如果沒讀成功,會去讀B盤和D盤進行異或后寫A盤,整個修復(fù)過程成功,命令返回成功,不記錄任何錯誤;如果過程中讀B盤失敗,則命令返回失敗,A盤B盤記錄讀錯誤;如果過程中寫A盤失敗或者再回讀A盤失敗,命令返回成功,A盤記錄寫錯誤。CP點之后,遇到讀錯誤會記錄,業(yè)務(wù)會報錯,記錄到512個不再記錄;LUN變failed,遇到讀錯誤記錄或者寫錯誤記錄,業(yè)務(wù)會報錯。若數(shù)據(jù)盤的重建讀遇到讀錯誤,重建跳過繼續(xù)重建,數(shù)據(jù)盤和重建盤都記錄讀錯誤;重建讀遇到讀錯誤記錄或者寫錯誤記錄,重建跳過繼續(xù)重建,重建盤記錄讀錯誤。數(shù)據(jù)盤讀錯誤達(dá)到512個,LUN變faield。若數(shù)據(jù)盤遇到業(yè)務(wù)寫錯誤,記錄寫錯誤,LUN狀態(tài)變failed,可resume恢復(fù)。2.3.2對重建盤的讀寫若重建盤的業(yè)務(wù)讀遇到讀錯誤,區(qū)分CP點之前和之后。CP點之前,比如A盤遇到讀錯誤,會去讀B盤和D盤進行異或后寫A盤,整個修復(fù)過程成功,命令返回成功,不記錄任何錯誤;如果過程中讀B盤失敗,則命令返回失敗,A盤B盤記錄讀錯誤;如果過程中寫A盤失敗或者再回讀A盤失敗,命令返回成功,A盤記錄寫錯誤。CP點之后,讀命令不會下發(fā)到重建盤。重建盤不論是遇到重建寫錯誤或是業(yè)務(wù)寫錯誤都會踢盤。2.4傳統(tǒng)重建的磁盤上下電處理不同情況的上下電處理如下表所示:RAIDLUN狀態(tài)業(yè)務(wù)流量是否需要局部重建數(shù)據(jù)盤b類錯誤下電重建暫停,保持原來的降級狀態(tài),磁盤上電后,接著原來的進度重建。不會報錯,向上層返回busy,磁盤上電后流量可正常下發(fā)。不需要數(shù)據(jù)盤非b類錯誤下電重建暫停,變failed狀態(tài),磁盤上電后,接著原來的進度重建。會報錯,磁盤上電后流量可正常下發(fā)不需要重建盤b類錯誤下電重建暫停,保持降級狀態(tài),磁盤上電后,局部重建完成后可接著原來的進度重建。流量正常如果下電期間有寫業(yè)務(wù)需要進行局部重建重建盤非b類錯誤下電重建暫停,保持降級狀態(tài),磁盤上電后,局部重建完成后可接著原來的進度重建。流量正常如果下電期間有寫業(yè)務(wù)需要進行局部重建拷貝重建3.1拷貝重建的概念原normal狀態(tài)的RAIDLUN,由于讀寫錯誤導(dǎo)致RAIDLUN變?yōu)閐egraded狀態(tài),無missing盤且存在熱備盤時會加盤進行重建,即拷貝重建。重建過程中,直接從源盤(故障數(shù)據(jù)盤)拷貝數(shù)據(jù)到重建盤。當(dāng)源盤數(shù)據(jù)無法讀取時,該條帶按傳統(tǒng)重建方式重建。在重建完成后踢掉源盤,RAIDLUN變?yōu)閚ormal狀態(tài)。一般情況下拷貝重建比傳統(tǒng)重建快一點,但如果源盤讀很慢的時候,拷貝重建方式可能比傳統(tǒng)重建還慢;從下圖可以看出,拷貝重建會比傳統(tǒng)重建少很多次的讀和異或計算;在RAIDLUN盤數(shù)越多的情況下,拷貝重建效率越明顯。3.2拷貝重建的觸發(fā)條件1)NormalRAIDLUN(已同步、同步中和未同步)中成員磁盤遇到寫錯誤會加盤拷貝重建。2)傳統(tǒng)重建中的RAIDLUN,在數(shù)據(jù)盤遇到寫錯誤后會failed,resume起來傳統(tǒng)重建完成后加盤拷貝重建。3)拷貝重建中的RAIDLUN數(shù)據(jù)盤在冗余條帶遇到寫錯誤,待拷貝重建完成后加盤繼續(xù)拷貝重建;在非冗余條帶遇到寫錯誤,resume起來拷貝重建完成后加盤拷貝重建。4)局部重建、寫異?;謴?fù)中的RAIDLUN,在數(shù)據(jù)盤遇到寫錯誤會failed,resume起來清除局部重建記錄和寫異常記錄后加盤拷貝重建。5)超級塊錯誤或smart檢測故障時會觸發(fā)拷貝重建,故障盤記錄寫錯誤,重建完成后踢出故障磁盤并標(biāo)記failed。在進行壞塊替換時,替換失敗會觸發(fā)拷貝重建。開啟壞塊替換,DDF區(qū)寫錯誤會觸發(fā)拷貝重建。開啟壞塊替換,在替換記錄達(dá)到8190后會觸發(fā)拷貝重建。3.3拷貝重建中磁盤的讀寫錯誤處理拷貝重建過程遵循雙寫雙不寫原則,即在有業(yè)務(wù)或局部重建寫流量時,源盤與重建盤均在位,會對兩塊盤都進行寫入。若有一塊盤missing,會停止對兩塊磁盤的寫入,防止數(shù)據(jù)不一致。 3.3.1重建讀寫錯誤處理重建讀時源盤遇到讀錯誤,讀錯誤會增加,該條帶用傳統(tǒng)重建方式寫重建盤;當(dāng)讀錯誤增加至512個時,踢掉源盤,從0開始傳統(tǒng)重建。當(dāng)用傳統(tǒng)重建方式寫重建盤時,讀數(shù)據(jù)盤失敗,數(shù)據(jù)盤和重建盤均記錄讀錯誤。重建寫時重建盤遇到寫錯誤,會踢掉重建盤,尋找合適的空白盤加入重新開始拷貝重建。3.3.2業(yè)務(wù)讀寫錯誤處理業(yè)務(wù)讀時只會讀數(shù)據(jù)盤和源盤,不會讀重建盤。若是在冗余條帶,遇到讀錯誤時會進行寫修復(fù)。若是在非冗余條帶,遇到讀錯誤不影響RAIDLUN狀態(tài),讀錯誤記錄增加。業(yè)務(wù)寫時遵循雙寫雙不寫原則,業(yè)務(wù)寫錯誤有以下情況:當(dāng)源盤發(fā)生寫錯誤,寫錯誤記錄增加,RAIDLUN狀態(tài)不變,磁盤列表不變。當(dāng)重建盤發(fā)生寫錯誤,RAIDLUN會踢掉重建盤,加入空白盤重新拷貝重建。當(dāng)數(shù)據(jù)盤在冗余條帶發(fā)生寫錯誤,RAIDLUN狀態(tài)不變,繼續(xù)拷貝重建,在拷貝重建完成后再加盤拷貝重建;如在非冗余條帶發(fā)生寫錯誤,RAIDLUN會failed。拷貝重建前RAIDLUN如未同步,在拷貝重建過程中查詢NV-RAM是不會有寫異常記錄的;如拷貝重建前RAIDLUN有同步過,在拷貝重建過程中,落在已同步過的條帶上的寫流量會產(chǎn)生寫異常記錄;即寫異常記錄跟拷貝重建的CP點無關(guān),只跟同步和傳統(tǒng)重建的CP點有關(guān)。注:以上提到的讀寫錯誤數(shù)如無說明均指少于512個錯誤,拷貝重建過程中關(guān)于512讀寫錯誤情況如下:源盤有512個讀錯誤或?qū)戝e誤會踢盤從0開始傳統(tǒng)重建重建盤有512個讀錯誤會踢盤重新加盤拷貝重建數(shù)據(jù)盤有512個讀錯誤或?qū)戝e誤RAIDLUN變failed3.4拷貝重建中的拔盤處理1)數(shù)據(jù)盤數(shù)達(dá)到數(shù)據(jù)冗余性的拷貝重建RAIDLUN拔一塊盤的處理情況:a)源盤:超過踢盤時間后,踢盤變?yōu)閭鹘y(tǒng)重建,原拷貝重建盤變?yōu)閭鹘y(tǒng)重建盤,重建CP保持繼續(xù)。重建盤:超過踢盤時間后,先踢盤加新盤拷貝重建。其它數(shù)據(jù)盤:RAIDLUNfailed,十分鐘內(nèi)自動resume為degraded,先踢盤繼續(xù)拷貝重建,拷貝重建完成后加新盤進行傳統(tǒng)重建。2)數(shù)據(jù)盤達(dá)到數(shù)據(jù)完整性的拷貝重建RAIDLUN拔一塊盤的處理情況:源盤:RAIDLUNfailed,不能自動resume。重建盤:超過踢盤時間后,先踢missing盤加新盤拷貝重建。其它數(shù)據(jù)盤:RAIDLUNfailed,不能自動resume。局部重建4.1局部重建的概念局部重建指的是一塊磁盤離線(包括手動拔插、SAS拔插、B類錯誤上下電、鏈路不穩(wěn)等各種情況導(dǎo)致的離線),且該RAIDLUN上存在業(yè)務(wù)寫流量,此時系統(tǒng)會記錄寫入數(shù)據(jù)涉及的條帶,并標(biāo)記該RAIDLUN中離線磁盤為Missing狀態(tài),等磁盤重新上線后且能回到RAIDLUN中,則重建這段時間內(nèi)寫入的條帶,達(dá)到重新利用該硬盤的目的。避免采用全盤重建,縮短重建時間。局部重建完成后或者硬盤無法回到RAIDLUN中,將清除記錄的條帶信息。局部重建只針對具有冗余性的RAIDLUN。包括normal狀態(tài)的陣列各個數(shù)據(jù)盤、重構(gòu)重建的重鍵盤、拷貝重建的重鍵盤和被重建盤都會發(fā)生局部重建。4.2局部重建的觸發(fā)條件1)Normal狀態(tài)下RAIDLUN的磁盤離線(包括手動拔插磁盤、SAS拔插、B類錯誤上下電、鏈路不穩(wěn)情況導(dǎo)致的磁盤離線),而此時RAIDLUN有上層業(yè)務(wù)寫入(包括業(yè)務(wù)數(shù)據(jù)寫入,邏輯資源LV創(chuàng)建)。磁盤在磁盤丟失踢盤時間之內(nèi)上線,此時RAIDLUN會對磁盤進行局部重建。2)RAIDLUN處于傳統(tǒng)重建過程中重建盤發(fā)生磁盤離線,而此時RAIDLUN有上層業(yè)務(wù)寫入,并且磁盤丟失踢盤時間之內(nèi)上線,會對重建盤進行局部重建。3)RAIDLUN處于拷貝重建過程中重建盤或被重建盤發(fā)生磁盤離線,而此時RAIDLUN有上層業(yè)務(wù)寫入,并且磁盤丟失踢盤時間之內(nèi)上線,會對重建盤和被重建盤進行局部重建。4.3局部重建的讀寫錯誤處理4.3.1重建盤讀錯誤局部重建過程中,重建盤不會有讀命令。采用讀其他數(shù)據(jù)盤數(shù)據(jù)進行異或運算得出。4.3.2重建盤寫錯誤1)normal態(tài)下RAIDLUN發(fā)生局部重建遇到重建盤寫錯誤,先完成局部重建,后觸發(fā)拷貝重建。達(dá)到512個寫錯誤,直接踢盤進行傳統(tǒng)重建。2)傳統(tǒng)重建下發(fā)生局部重建,遇到重建盤寫錯誤,直接踢掉重建盤,重新加盤進行傳統(tǒng)重建。3)拷貝重建下發(fā)生的局部重建,遇到重建盤寫錯誤。踢掉重建盤,加盤先進行局部重建,重建完成之后拷貝重建。數(shù)據(jù)盤讀錯誤1)normal狀態(tài)下RAIDLUN發(fā)生局部重建,數(shù)據(jù)盤達(dá)到512個讀錯誤,LUN變failed,會自動resume清除局部重建記錄,加盤傳統(tǒng)重建,但是此時會發(fā)現(xiàn)原局部重建盤也有512個讀錯誤,無法傳統(tǒng)重建,RAIDLUN變failed,resume會失敗。2)拷貝重建狀態(tài)發(fā)生局部重建,數(shù)據(jù)盤達(dá)到512個讀錯誤,RAIDLUN變failed,resume會失敗。(數(shù)據(jù)盤,重建盤,源盤都會有512個讀錯誤)3)傳統(tǒng)重建狀態(tài)發(fā)生局部重建,數(shù)據(jù)盤512個讀錯誤,RAIDLUN變failed,遇到resume失敗。(未達(dá)到512個之前的讀錯誤,記錄DDF)。數(shù)據(jù)盤寫錯誤1)normal態(tài)下RAIDLUN發(fā)生的局部重建,數(shù)據(jù)盤遇到寫錯誤,RAIDLUN變failed,遇到resume后,刪除局部重建記錄,局部重建盤恢復(fù)為normal,加盤對數(shù)據(jù)盤進行拷貝重建。(數(shù)據(jù)盤的寫錯誤可能發(fā)生在冗余條帶,也可能發(fā)生在還未完成重建的不冗余條帶,我司軟件不判斷是否為冗余條帶寫錯誤,直接failed)2)拷貝重建下發(fā)生局部重建,數(shù)據(jù)盤遇到寫錯誤,記錄錯誤,局部重建完之后,繼續(xù)原來拷貝重建,完成后再加盤對數(shù)據(jù)盤進行拷貝重建;如果遇到512個寫錯誤,RAIDLUN會failed。遇到resume后,刪除局部重建記錄,踢掉有512個錯誤的數(shù)據(jù)盤和重建盤,加盤進行傳統(tǒng)重建,完成后再加盤進行拷貝重建。3)傳統(tǒng)重建下發(fā)生的局部重建,遇到數(shù)據(jù)盤寫錯誤,RAIDLUN變failed,遇到resume刪除局部重建記錄,繼續(xù)從原進度開始傳統(tǒng)重建。重建完成后再加盤對出現(xiàn)寫錯誤的數(shù)據(jù)盤拷貝重建。(此局部重建過程有數(shù)據(jù)盤寫錯誤RAIDLUN就會變failed,即局部重建過程不會出現(xiàn)數(shù)據(jù)盤512個寫錯誤。)4)拷貝重建下發(fā)生局部重建,重建過程中源盤發(fā)生寫錯誤,錯誤記錄,局部重建完成之后,繼續(xù)拷貝重建。寫錯誤達(dá)到512個,踢盤,繼續(xù)局部重建,重建完成之后,對重建盤從0開始傳統(tǒng)重建。4.4局部重建的磁盤離線處理4.4.1重建盤離線1)normal態(tài)下RAIDLUN發(fā)生磁盤離線導(dǎo)致的局部重建,重建過程中遇到局部重建盤離線,若有業(yè)務(wù)寫入,則繼續(xù)寫入其他數(shù)據(jù)盤,記錄寫入條帶。看是否在磁盤丟失踢盤時間之內(nèi)磁盤是否上線,上線則進行局部重建,離線則重新加盤傳統(tǒng)重建(系統(tǒng)有熱備盤的時候)。2)傳統(tǒng)重建下發(fā)生的局部重建,局部重建過程中遇到重建盤離線,若有業(yè)務(wù)寫入,則繼續(xù)寫入其他數(shù)據(jù)盤,記錄寫入條帶。看是否在磁盤丟失踢盤時間之內(nèi)磁盤是否上線,上線則進行局部重建,離線則刪除局部重建記錄,重新加盤傳統(tǒng)重建。3)拷貝重建下發(fā)生的局部重建,遇到重建盤離線,有業(yè)務(wù)寫入時,寫入數(shù)據(jù)盤,不寫入源盤(拷貝重建雙寫雙不寫原則)。磁盤丟失踢

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論