希捷硬盤的前好后壞故障是數(shù)據(jù)恢復(fù)行業(yè)的一個難題,這種故障出現(xiàn)的幾率很高,修復(fù)耗時并且成功率較低。
相比起希捷硬盤的其他故障,前好后壞故障非常容易判斷和辨識,癥狀是磁盤掃描的時候,從0號扇區(qū)開始到某一具體扇區(qū)為止都是可以正常讀取數(shù)據(jù)的,但是這一扇區(qū)后面的全部扇區(qū)都無法正常讀取數(shù)據(jù)。并且掃描這些無法讀取的用戶扇區(qū)時會返回ERR/UNC錯誤(也就是設(shè)備狀態(tài)燈的ERR燈會亮起,錯誤狀態(tài)燈的UNC燈會亮起),有以上兩點,我們就可以確定是前好后壞故障。
現(xiàn)在市面上的希捷維修工具基本上都能夠解決部分前好后壞問題,但是大家使用多了就會發(fā)現(xiàn),總是還會碰到這些工具無法修復(fù)好的前好后壞,這是為什么呢?這是因為前好后壞實際上是分為四種類型的,不同的類型前好后壞解決的方法也是不一樣的,所以本文檔將深度剖析希捷硬盤前好后壞的原理,知其然知其所以然才能最快地理解定位問題并使用最佳的解決辦法。
實際上,希捷硬盤前好后壞的根本原因在于編譯器發(fā)生了錯亂。下面我們來探討下編譯器發(fā)生錯亂的成因:
我們知道編譯器其實是一個地址翻譯器。電腦讀取硬盤數(shù)據(jù)時,告訴硬盤需要哪個LBA地址(邏輯地址)的內(nèi)容,然后硬盤返回相應(yīng)地址的數(shù)據(jù)給電腦。但是,硬盤底層固件的地址描述形式需要定位到C(磁道),H(磁頭)和S(磁道內(nèi)扇區(qū)偏移)。并且在翻譯過程中,可以將某些壞的扇區(qū)被屏蔽起來。使得邏輯地址看起來是連續(xù)的線性地址,而對應(yīng)的物理地址則發(fā)生映射性的跳躍。如下圖:
簡單來說,也就是在沒有任何屏蔽扇區(qū)的情況下,PBA=LBA;在有屏蔽扇區(qū)的情況下,PBA=LBA+屏蔽扇區(qū)的長度。
PBA=LBA這種情況是一種理想狀態(tài),因為硬盤從生產(chǎn)開始就會不斷產(chǎn)生壞扇區(qū)。硬盤的全部扇區(qū)可以劃分為固件區(qū)、工作區(qū)和保留扇區(qū)。固件區(qū)和保留扇區(qū)一般用戶無法直接進行操作。其實硬盤的實際扇區(qū)數(shù)比我們看到的硬盤標(biāo)簽上標(biāo)定的要大,其中一部份用于存儲硬盤的固件;一部分是用戶存儲數(shù)據(jù)的區(qū)域,即工作區(qū),也就是硬盤標(biāo)定容量的扇區(qū);剩下的就是保留區(qū)。實際上硬盤上并不會物理劃出一個保留區(qū)域,只是在工廠生產(chǎn)時標(biāo)定了全部的有效扇區(qū),而硬盤的容量是小于其實際扇區(qū)總數(shù)的,在固件里定義了硬盤的容量,超過硬盤容量的那些扇區(qū)我們就稱為保留扇區(qū)。
討論完了硬盤全部扇區(qū)的組成結(jié)構(gòu),現(xiàn)在我們來探討下單個扇區(qū)的結(jié)構(gòu)。一個完整的硬盤扇區(qū)結(jié)構(gòu)有兩個主要部分:存儲數(shù)據(jù)地點的標(biāo)識符和存儲數(shù)據(jù)的數(shù)據(jù)段。如圖所示:
扇區(qū)的第一個主要部分是標(biāo)識符。標(biāo)識符,就是扇區(qū)頭標(biāo),包括組成扇區(qū)三維地址的三個數(shù)字:扇區(qū)所在的磁頭(或盤面)、磁道(或柱面號)以及扇區(qū)在磁道上的位置(即扇區(qū)號)。頭標(biāo)中還包括一個字段,其中有顯示扇區(qū)是否能可靠存儲數(shù)據(jù),或者是否已發(fā)現(xiàn)某個故障因而不宜使用的標(biāo)記。有些硬盤控制器在扇區(qū)頭標(biāo)中還記錄有指示字,可在原扇區(qū)出錯時指引磁盤轉(zhuǎn)到替換扇區(qū)或磁道。最后,扇區(qū)頭標(biāo)以循環(huán)冗余校驗(CRC)值作為結(jié)束,以供控制器檢驗扇區(qū)頭標(biāo)的讀出情況,確保準(zhǔn)備無誤。
扇區(qū)的第二個主要部分是存儲數(shù)據(jù)的數(shù)據(jù)段,可分為數(shù)據(jù)和保護數(shù)據(jù)的糾錯碼(ECC)。在初始準(zhǔn)備期間,計算機會用512個虛擬信息字節(jié)(實際數(shù)據(jù)的存放地)和與這些虛擬信息字節(jié)相對應(yīng)的ECC數(shù)字填入這個部分。
ECC(Error Checking and Correcting)中文簡稱錯誤檢查和糾正,是一種能夠?qū)崿F(xiàn)錯誤檢查和糾正的技術(shù)。ECC糾錯碼有它自己的一套計算公式和算法。在希捷硬盤中。ECC是Data和LBA的共同函數(shù),具體計算公式是:ECC=f (Data, LBA)
Data和LBA都是輸入?yún)?shù)。這也就意味著LBA的變化會導(dǎo)致ECC值的變化。而前好后壞會亮起UNC錯誤燈的原因正是因為LBA發(fā)生了變化,導(dǎo)致讀寫子系統(tǒng)使用變化后的LBA計算出的ECC與扇區(qū)原本保存的ECC不符合,于是讀寫子系統(tǒng)認(rèn)為此扇區(qū)數(shù)據(jù)已不可信,報告UNC錯誤。但是值得注意的是,并不是所有硬盤的ECC計算公式都是這樣設(shè)計的,比如西部數(shù)據(jù)的公式是ECC=f (Data),也就是沒有LBA作為參數(shù),這也就是為什么西部數(shù)據(jù)硬盤不存在前好后壞問題而希捷硬盤中會存在的原因。用一句話總結(jié)就是ECC參數(shù)中包含LBA地址的硬盤,都可能存在前好后壞問題,比如希捷硬盤,日立硬盤的ARM系列;ECC中不包含LBA參數(shù)的硬盤,不會有前好后壞問題,比如西部數(shù)據(jù)硬盤,東芝硬盤等。
談到LBA發(fā)生變化,那么就不得不談到缺陷表。我們知道硬盤數(shù)據(jù)存儲的密度很大,在生產(chǎn)過程中不可避免的會產(chǎn)生缺陷扇區(qū),并且在使用過程中,那些不穩(wěn)定的扇區(qū)也會逐漸老化而產(chǎn)生數(shù)據(jù)讀寫錯誤,成為缺陷扇區(qū)。這些缺陷和不穩(wěn)定扇區(qū)都會嚴(yán)重威脅硬盤的數(shù)據(jù)安全,為了保障數(shù)據(jù)安全,硬盤廠商為硬盤設(shè)計了兩個缺陷列表——P表(P-list)和G表(G-list)來處理這些有缺陷的扇區(qū)。P表和G表被用于記錄硬盤缺陷扇區(qū)的情況。
P表又稱為永久缺陷列表,用于記錄硬盤生產(chǎn)過程中產(chǎn)生的缺陷。缺陷扇區(qū)被加入P表后,硬盤不會再讀寫該扇區(qū),而是將原讀寫該扇區(qū)的操作順延到讀寫壞扇區(qū)的下一個扇區(qū),該扇區(qū)以后的所有扇區(qū)的LBA值都發(fā)生了改變,原來保留扇區(qū)的一個扇區(qū)成為了硬盤的LBAmax。如圖所示:
G表又稱為增長缺陷列表,用于記錄硬盤使用過程中由于磁介質(zhì)性能變?nèi)醵鸬娜毕?。缺陷扇區(qū)被加入G表后,當(dāng)硬盤需要讀該扇區(qū)時,會被重定位到保留扇區(qū)中的一個扇區(qū),硬盤工作區(qū)的其它扇區(qū)不會受影響,如圖所示:
也就是說如果缺陷表的變動能夠?qū)е翷BA發(fā)生位移,那么ECC就會發(fā)生變化,進 而造成UNC錯誤。這也就是為什么希捷硬盤的缺陷表出現(xiàn)故障時,會導(dǎo)致編譯 器發(fā)生錯亂,從而造成數(shù)據(jù)區(qū)前面扇區(qū)掃描讀取正常,后面扇區(qū)無法掃描讀取 的情況。
但是我們應(yīng)該注意,并不是所有缺陷表都能導(dǎo)致LBA錯位的。必須是“挖掉”表才能有這個效果,“替換”表是不會導(dǎo)致LBA錯位的。挖掉表是這個效果:
替換表是這個效果:
結(jié)合上面兩張圖和之前講P表,G表內(nèi)容時的配圖我們可以發(fā)現(xiàn),所謂的“挖掉”表其實就是意味著從被“挖掉”的壞扇區(qū)開始的下一個扇區(qū)起,后面所有扇區(qū)的LBA都會發(fā)生變化。而“替換”表則意味著會從保留扇區(qū)中調(diào)用一個空閑扇區(qū)出來去替換掉這個壞扇區(qū),壞扇區(qū)后面的扇區(qū)LBA是不會發(fā)生任何改變的。
綜合缺陷表是編譯器的主要組成部分,綜合缺陷表中包含以下缺陷表:
V1:用戶區(qū)slip list? (相當(dāng)于V10和V40的合集)
V4:alt list? (俗稱A表,屬于替換表,包含已決部分和未決部分)
V10 : P表? (主缺陷表,為03模塊,一般為出廠生成,恢復(fù)數(shù)據(jù)必須的模塊,在系統(tǒng)文件和模塊中有指向)
V40:非常駐G表
V80:常駐G表
V100:P表 (V10的另一種顯示方式,編譯器中生效的P表)
在希捷硬盤中,V40和P表都屬于“挖掉”表,也就是說,缺陷表中能夠引起前好后壞故障的只有兩個,分別是V40(非常駐G表)和V10(P表)。我們還需要了解的是這兩個缺陷表中增刪條目都會引起前好后壞故障,所以這也就是我們文章開頭說的,前好后壞故障可以分為四種類型的原因。這四種類型分別是:
1. V40條目缺失(非常駐表中少了缺陷條目)
2. V40條目冗余(非常駐表中多了缺陷條目)
3. V10條目缺失(P表中少了缺陷條目)
4. V10條目冗余(P表中多了缺陷條目)
總結(jié):
希捷硬盤的前好后壞是因為V40和V10缺陷表條目丟失或增加導(dǎo)致的,至于為什么會丟失或增加,有時候是由于固件內(nèi)部的錯誤導(dǎo)致的,有時候是由于維修人員用了錯處的參數(shù)重建編譯器,導(dǎo)致的二次損壞。常見原因可以歸納為以下三點:
1.由于固件內(nèi)部的錯誤導(dǎo)致的
2.維修人員用了錯處的參數(shù)重建編譯器,導(dǎo)致的二次損壞
3.錯誤的執(zhí)行了G轉(zhuǎn)P指令,導(dǎo)致P表加入了G表的條目
轉(zhuǎn)載請注明:成都千喜數(shù)據(jù)恢復(fù)中心 » 希捷前好后壞原理分析






