【摘要】當(dāng)只有一塊磁盤損壞時,RAID5磁盤陣列能通過其它正常運(yùn)行的磁盤進(jìn)行異或運(yùn)算換算出故障磁盤的數(shù)據(jù)信息,從而保證磁盤陣列存貯信息的完整。通過研究RAID5結(jié)構(gòu)和數(shù)據(jù)重組的規(guī)律,發(fā)現(xiàn)兩個以上磁盤同時出現(xiàn)故障或RAID卡失效,也可以恢復(fù)故障磁盤陣列的數(shù)據(jù)。本文嘗試了將RAID5故障磁盤陣列中的磁盤分別制作為磁盤鏡像文件,對有故障的磁盤鏡像文件進(jìn)行數(shù)據(jù)恢復(fù)后,按照數(shù)據(jù)重組原理將這些磁盤鏡像文件重組為RAID5鏡像盤,成功恢復(fù)了圖書館文獻(xiàn)管理服務(wù)器RAID5故障磁盤陣列中的數(shù)據(jù)。
【關(guān)鍵詞】RAID5數(shù)據(jù)重組磁盤鏡像數(shù)據(jù)恢復(fù)
RAID5是一種存儲性能、數(shù)據(jù)安全和存儲成本兼顧的存儲解決方案,被廣泛應(yīng)用于較重要數(shù)據(jù)存貯。RAID5校驗(yàn)位算法原理為:假設(shè)RAID5由以塊磁盤組成,那么校驗(yàn)位P=D1 XOR D2 XOR D3…XOR Dn(D1,D2,D3…Dn為數(shù)據(jù)塊,P為校驗(yàn)塊,XOR為異或運(yùn)算),如果i號磁盤失效,也就是Di數(shù)據(jù)塊的數(shù)據(jù)丟失,則通過D1,D2,D3…P,Dn它們之間的異或運(yùn)算重新計(jì)算出來,即Di=D1 XOR D2 XOR D3…XOR P XOR Dn一1[1]。該原理論證了一個驅(qū)動器失效狀態(tài)下,RAID5磁盤陣列的數(shù)據(jù)是可以恢復(fù)的。為了挽救數(shù)據(jù),對RAID5的結(jié)構(gòu)和數(shù)據(jù)重組原理進(jìn)行了深入研究,發(fā)現(xiàn)以扇區(qū)為單位來描述磁盤數(shù)據(jù)時,同一扇區(qū)的錯誤小于或等于1,該扇區(qū)的完整信息可以通過數(shù)據(jù)重組和異或運(yùn)算得以恢復(fù)。據(jù)此原理,采用磁盤鏡像技術(shù)將RAID5故障陣列的磁盤分別制作為磁盤鏡像文件,利用磁盤恢復(fù)軟件對有故障的磁盤鏡像文件進(jìn)行扇區(qū)故障修復(fù),最后根據(jù)數(shù)據(jù)重組原理將磁盤鏡像文件重組為RAID5鏡像盤,可以恢復(fù)兩個以上驅(qū)動器同時出現(xiàn)故障或RAID卡失效的原陣列數(shù)據(jù)。
一、RAID5結(jié)構(gòu)和數(shù)據(jù)重組
1.1RAID5結(jié)構(gòu)
RAID5陣列中的數(shù)據(jù)是分布到每塊硬盤上,RAID5中每個條帶組中總有一個條帶是校驗(yàn)塊[2]。設(shè)RAID5由硬盤0、硬盤1、硬盤2和硬盤3組成,圖中的“A、B、C、……”是數(shù)據(jù)塊;“P0、P1、P2、P3……”是校驗(yàn)塊。根據(jù)RAID5校驗(yàn)位算法原理,校驗(yàn)位P0=A XOR B XOR C,如果硬盤2失效,也就是C數(shù)據(jù)塊的數(shù)據(jù)丟失,則通過A,B,P0它們之間的異或運(yùn)算重新計(jì)算出來,即C=A XOR B XOR P0。同理通過異或運(yùn)算算出P1、H、K等等硬盤2的所有存貯信息。因此RAID5磁盤陣列在一塊驅(qū)動器失效的情況下,仍能保證數(shù)據(jù)完整和工作正常。
如果有兩塊或兩塊以上硬盤同時離線,將會出現(xiàn)RAID控制器物理故障、RAID信息出錯、RAID5成員盤物理故障、人為誤操作、RAID控制器的穩(wěn)定性變化等故障,陣列便會失效,造成磁盤陣列結(jié)構(gòu)的毀壞,盤序的混亂,處理不當(dāng)將會丟失數(shù)據(jù)。這時如果要恢復(fù)RAID5故障磁盤陣列中數(shù)據(jù)就需要對陣列中的磁盤數(shù)據(jù)進(jìn)行重組。
1.2數(shù)據(jù)重組
對RAID5的數(shù)據(jù)進(jìn)行重組,需將硬盤從磁盤陣列插槽中分別取出來,作為單盤進(jìn)行分析,如圖中硬盤0、硬盤1、硬盤2和硬盤3所示的四塊物理盤,把四塊物理盤中的數(shù)據(jù)塊按照“A、B、C、D、E……”的順序進(jìn)行數(shù)據(jù)重組,從而得到RAID5邏輯盤中完整的數(shù)據(jù)。RAID5需要四個因素才能進(jìn)行數(shù)據(jù)重組,第一個是RAID中每個條帶的大小,也就是“A”或“B”這些數(shù)據(jù)塊所占用的扇區(qū)數(shù);第二個因素是RAID中硬盤的排列順序,也就是盤序;第三個因素是校驗(yàn)塊的循環(huán)方向;第四個因素是數(shù)據(jù)塊的走向[3]。左循環(huán)中,校驗(yàn)塊的排列形狀是從右上角開始的對角線;右循環(huán)中,校驗(yàn)塊的排列形狀是從左上角開始的對角線。可以先完成校驗(yàn)塊的排列,再完成數(shù)據(jù)塊的排列。異步的數(shù)據(jù)塊寫入方式為從左至右,從上至下排列。同步的數(shù)據(jù)塊寫入方式為先判斷校驗(yàn)塊的位置,然后寫滿校驗(yàn)塊右邊的磁盤,從低號盤至高號盤寫入,最后寫滿校驗(yàn)塊左邊的磁盤,仍然從低號盤至高號盤寫入[4]。具體來說可以分為左異步、左同步、右異步、右同步四種情況。
二、磁盤鏡像與RAID5鏡像盤
2.1磁盤鏡像介紹
磁盤鏡像是指將磁盤復(fù)制到不同的裝置或數(shù)據(jù)格式,主要用于數(shù)據(jù)備份和恢復(fù)。磁盤鏡像可以將磁盤驅(qū)動器的內(nèi)容與資料,猶如照鏡子時影像反射一般,一模一樣的復(fù)制一份。當(dāng)RAID5磁盤陣列已經(jīng)出現(xiàn)故障后,可先在正常工作的機(jī)器上,通過磁盤鏡像軟件(如GetDataBack),利用SCSI卡,分別讀取RAID5故障陣列每一個磁盤的數(shù)據(jù),制作成磁盤鏡像文件,按編號命名為DRIVE0.IMG、DRIVE1.IMG、DRIVE2.IMG、DRIVE3.IMG、……,然后再進(jìn)行數(shù)據(jù)恢復(fù)工作,這樣可以做到保護(hù)原磁盤和避免同時使用多個SCSI卡。只要數(shù)據(jù)沒有被覆蓋或者硬盤沒有出現(xiàn)嚴(yán)重的物理損壞,利用GetDataBack軟件還可以對有故障的磁盤鏡像文件進(jìn)行數(shù)據(jù)恢復(fù),這樣可最大限度的恢復(fù)硬盤在故障發(fā)生前的存貯信息。
2.2重組RAID5鏡像盤
以RAID5結(jié)構(gòu)圖中四塊物理盤組成的RAID5為例,以扇區(qū)為單位來描述磁盤數(shù)據(jù),假設(shè)條帶的大小為32個扇區(qū),并且已知數(shù)據(jù)重組四個因素。按照數(shù)據(jù)重組原理,先到硬盤0中取0-31扇區(qū)的信息,再到硬盤1中取0-31扇區(qū)的信息,再到硬盤2中取0-31扇區(qū)的信息,硬盤3中0-31扇區(qū)的信息是校驗(yàn)塊,跳過不取,這樣就可以按順序拼接成完整的0-31扇區(qū)信息。接下來回到硬盤0中取32-63扇區(qū)的信息,假如硬盤1中的32-63扇區(qū)有錯誤,跳過不取,接著依次讀取硬盤2的32-63扇區(qū)的校驗(yàn)塊信息和硬盤3中32-63扇區(qū)的信息,通過異或運(yùn)算可換算出硬盤1中的32-63扇區(qū)的信息,從而得到完整的32-63扇區(qū)信息。由以上分析可知:當(dāng)同一扇區(qū)的錯誤小于或等于1時,該扇區(qū)的信息可以通過數(shù)據(jù)重組和異或運(yùn)算得以恢復(fù)。就這樣依次按順序取下去,把所有取出來的數(shù)據(jù)按扇區(qū)劃分進(jìn)行數(shù)據(jù)重組,順序銜接成一個RAID5鏡像盤,這就成為完整的原RAID5邏輯盤的結(jié)構(gòu)了,通過操作系統(tǒng)可以直接訪問這個重組出來的RAID5鏡像盤,也就說可以讀寫原RAID5邏輯盤中的數(shù)據(jù),數(shù)據(jù)得以恢復(fù)。同理如果將上述的物理磁盤換成它們的磁盤鏡像也可以重組為RAID5鏡像盤。
假如硬盤1中的64-95扇區(qū)有錯誤和硬盤3中的64-95扇區(qū)有錯誤,按RAID5結(jié)構(gòu)和數(shù)據(jù)重組原理分析,則不能直接恢復(fù)完整的64-95扇區(qū)的信息,也就是說如果有兩塊以上的硬盤在同一個扇區(qū)內(nèi)發(fā)生故障,則不能直接恢復(fù)該扇區(qū)的數(shù)據(jù)。這時可以通過GetDataBack軟件創(chuàng)建每一個驅(qū)動器的磁盤鏡像文件,恢復(fù)有壞扇區(qū)驅(qū)動器的存貯信息,只有嚴(yán)重物理故障的硬盤才不能恢復(fù)磁盤鏡像文件的數(shù)據(jù)信息,而RAID5中同時兩塊硬盤出現(xiàn)嚴(yán)重物理故障的概率幾乎為零,這樣就滿足了同一扇區(qū)的錯誤小于或等于1的扇區(qū)信息恢復(fù)基本要求。因此兩塊以上硬盤在同一個扇區(qū)內(nèi)發(fā)生故障時,數(shù)據(jù)也能得到恢復(fù)。
三、數(shù)據(jù)恢復(fù)實(shí)例
3.1RAID5故障
圖書館的dell PowerEdge 4600服務(wù)器,配備3塊Ultra 320 SCSI 73GB的磁盤,組成RAID5磁盤陣列。該磁盤陣列出現(xiàn)故障,文獻(xiàn)管理集成系統(tǒng)不能訪問,服務(wù)器的操作系統(tǒng)不能進(jìn)入,磁盤故障的報(bào)警聲持續(xù)不斷,第0號和第1號磁盤燈由以前的綠色變?yōu)楝F(xiàn)在的紅色。重新啟動進(jìn)入RAID設(shè)置及檢測發(fā)現(xiàn):第1號插槽磁盤掉線(FAIL)且有Media Errors 11和Other Errors 4,第0號插槽磁盤有Media Errors 3。也就是說三塊磁盤中有兩塊磁盤有故障,RAID5磁盤陣列已經(jīng)不能正常工作,磁盤中的數(shù)據(jù)無法直接讀取。該磁盤陣列主要存貯文獻(xiàn)管理集成系統(tǒng)數(shù)據(jù),這些數(shù)據(jù)是全館工作人員多年的工作數(shù)據(jù)積累,萬一丟失,后果不堪設(shè)想。
3.2數(shù)據(jù)恢復(fù)
在物理驅(qū)動器上有可能有壞扇區(qū),建立磁盤的鏡像文件是首選方法,將磁盤陣列中的磁盤逐個取出,在數(shù)字圖書館服務(wù)器上利用GetDataBack軟件,按磁盤鏡像文件的制作方法,制作RAID5故障磁盤陣列每一個硬盤的IMG鏡像文件,分別取名為DRIVE0.IMG、DRIVE1.IMG、DRIVE2.IMG,對有故障的第0號插槽磁盤和第1號插槽磁盤的鏡像文件做數(shù)據(jù)恢復(fù)操作。
用RAID Reconstructor軟件可對這3個硬盤的IMG鏡像文件進(jìn)行RAID結(jié)構(gòu)分析,確定硬盤的排列順序、塊大小、校驗(yàn)塊的循環(huán)方向和數(shù)據(jù)塊的走向,按重組RAID5鏡像盤的方法,生成一個RAID5鏡像盤文件,取名為RAID. IMG,將該文件拷貝到另一個磁盤驅(qū)動器上,通過操作系統(tǒng)可以對RAID.IMG進(jìn)行讀寫操作,這樣數(shù)據(jù)恢復(fù)就成功了。
四、結(jié)語
雖然利用磁盤鏡像技術(shù)和數(shù)據(jù)重組技術(shù)可以恢復(fù)兩個以上驅(qū)動器同時出現(xiàn)故障或RAID卡失效的原陣列數(shù),但還是存在故障恢復(fù)時間過長、操作過程復(fù)雜等缺陷。筆者認(rèn)為數(shù)據(jù)安全最佳的途徑是備份。
參考文獻(xiàn)
[1]馬林.數(shù)據(jù)重現(xiàn)一文件系統(tǒng)原理精解與數(shù)據(jù)恢復(fù)最佳實(shí)踐[M].北京:清華大學(xué)出版社,2009.
[2]劉偉.數(shù)據(jù)恢復(fù)技術(shù)深度揭秘[M].北京:電子工業(yè)出版杜,2010. 05
[3]汪中夏,張京生,劉偉編著. RAID數(shù)據(jù)恢復(fù)技術(shù)揭秘[M].北京:清華大學(xué)出版社,2010.12
[4]魯恩銘,段益群. RAID5結(jié)構(gòu)剖析及其數(shù)據(jù)恢復(fù)策略研究[J].電腦開發(fā)與應(yīng)用.,2012,25(1)
[5]趙振洲,喬明秋. RAID5數(shù)據(jù)重組及過程研究[J].深圳信息職業(yè)技術(shù)學(xué)院學(xué)報(bào).,2010,08(2)