1. 程式人生 > >【轉】硬碟損壞不能識別等相關知識(一)

【轉】硬碟損壞不能識別等相關知識(一)


硬碟修復真經 誤區、缺陷、引數與低格

·跳出硬碟認識的誤區
·修復需要弄明白的基本概念
·深入瞭解硬碟引數
·硬碟修復之低階格式化

跳出硬碟認識的誤區

  1995年,偶然在同事那裡見到一個陌生的物件,好奇地問那是什麼,朋友答:“這是電腦用的硬碟!”這就是高朋第一次認識硬碟的經過。

  幾年下來,單位的電腦越來越多,電腦問題也隨之多起來,高朋便有機會研究PC的維護。在維護過程中,由於硬碟出問題是較多的,尤其是出壞道的情況更是令人。於是,高朋查遍圖書館、新華書店的計算機類圖書,研究壞道修復的方法。令人失望的是,各種書刊上所說的方法大同小異(懷疑有傳抄之嫌),不僅用處不大,而且嚴重誤導讀者。

  多年來一直誤導著高朋的幾個常識性問題是:

  1.硬碟邏輯壞道可以修復,而物理壞道不可修復。實際情況是,壞道並不分為邏輯壞道和物理壞道,不知道誰發明這兩個概念,反正廠家提供的技術資料中都沒有這樣的概念,倒是分為按邏輯地址記錄的壞扇區和按實體地址記錄的壞扇區。

  2.硬碟出廠時沒有壞道,使用者發現壞道就意味著硬碟進入危險狀態。實際情況是,每個硬碟出廠前都記錄有一定數量的壞道,有些數量甚至達到數千上萬個壞扇區,相比之下,使用者發現一兩個壞道算多大危險?

  3.硬碟不認盤就沒救,0磁軌壞可以用分割槽方法來解決。實際情況是,有相當部分不認的硬碟也可以修好,而0磁軌壞時很難分割槽。

  如此誤導,如不是自己蒐集研究外文資料並長期實踐,說不準還長期拿來作信條呢。在國外有許多的專業的硬碟維修論壇,在那裡你可以發現有一些國家的硬碟維修技術達到了很高水準。我敢肯定,他們的一些技術會令眾多硬碟廠家頭痛不已。和世界上眾多專業硬碟修理高手交流,使高朋受益菲淺。這三年來,高朋辭去教師工作,專門從事硬碟修復工作,經手修復的硬碟已超過萬個。

  總結起來,高朋的技術來源有三方面:

  1.蒐集國外技術資料與國外專業人士交流;
  2.購買專業工具軟體(有同步技術更新支援);
  3.自己的實踐經驗。

  很遺憾,我沒有找到教我修復硬碟的老師,也不認為哪本教科書對我修硬碟有太大幫助。

硬碟修復人士需要弄明白的幾個基本概念

  在研究硬碟修復和使用專業軟體修復硬碟的過程中,必將涉及到一些基本的概念。在這裡,高朋根據自己的研究和實踐經驗,試圖總結並解釋一些與“硬碟缺陷”相關的概念,與眾位讀者交流。

  Bad sector (壞扇區)
  在硬碟中無法被正常訪問或不能被正確讀寫的扇區都稱為Bad sector。一個扇區能儲存512Bytes的資料,如果在某個扇區中有任何一個位元組不能被正確讀寫,則這個扇區為Bad sector。除了儲存512Bytes外,每個扇區還有數十個Bytes資訊,包括標識(ID)、校驗值和其它資訊。這些資訊任何一個位元組出錯都會導致該扇區變“Bad”。例如,在低階格式化的過程中每個扇區都分配有一個編號,寫在ID中。如果ID部分出錯就會導致這個扇區無法被訪問到,則這個扇區屬於Bad sector。有一些Bad sector能夠通過低階格式化重寫這些資訊來糾正。

  Bad cluster (壞簇)

  在使用者對硬碟分割槽並進行高階格式化後,每個區都會建立檔案分配表(File Allocation Table, FAT)。FAT中記錄有該區內所有cluster(簇)的使用情況和相互的連結關係。如果在高階格式化(或工具軟體的掃描)過程中發現某個cluster使用的扇區包括有壞扇區,則在FAT中記錄該cluster為Bad cluster,並在以後存放檔案時不再使用該cluster,以避免資料丟失。有時病毒或惡意軟體也可能在FAT中將無壞扇區的正常cluster標記為Bad cluster, 導致正常cluster不能被使用。 這裡需要強調的是,每個cluster包括若干個扇區,只要其中存在一個壞扇區,則整個cluster中的其餘扇區都一起不再被使用。

  Defect (缺陷)

  在硬碟內部中所有存在缺陷的部分都被稱為Defect。 如果某個磁頭狀態不好,則這個磁頭為Defect head。 如果盤面上某個Track(磁軌)不能被正常訪問,則這Track為Defect Track。 如果某個扇區不能被正常訪問或不能正確記錄資料,則該扇區也稱為Defect Sector。 可以認為Bad sector 等同於 Defect sector。 從總的來說,某個硬碟只要有一部分存在缺陷,就稱這個硬碟為Defect hard disk。

  P-list (永久缺陷表)

  現在的硬碟密度越來越高,單張碟片上儲存的資料量超過40Gbytes。 硬碟廠家在生產碟片過程極其精密,但也極難做到100%的完美,硬碟盤面上或多或少存在一些缺陷。廠家在硬碟出廠前把所有的硬碟都進行低階格式化,在低階格式化過程中將自動找出所有defect track和defect sector,記錄在P-list中。並且在對所有磁軌和扇區的編號過程中,將skip(跳過)這些缺陷部分,讓使用者永遠不能用到它們。這樣,使用者在分割槽、格式化、檢查剛購買的新硬碟時,很難發現有問題。一般的硬碟都在P-list中記錄有一定數量的defect, 少則數百,多則數以萬計。如果是SCSI硬碟的話可以找到多種通用軟體檢視到P-list,因為各種牌子的SCSI硬碟使用相容的SCSI指令集。而不同牌子不同型號的IDE硬碟,使用各自不同的指令集,想檢視其P-list要用針對性的專業軟體。

  G-list (增長缺陷表)

  使用者在使用硬碟過程中,有可能會發現一些新的defect sector。 按“三包”規定,只要出現一個defect sector,商家就應該為使用者換或修。現在大容量的硬碟出現一個defect sector概率實在很大,這樣的話硬碟商家就要為售後服務忙碌不已了。於是,硬碟廠商設計了一個自動修復機制,叫做Automatic Reallcation。有大多數型號的硬碟都有這樣的功能:在對硬碟的讀寫過程中,如果發現一個defect sector,則自動分配一個備用扇區替換該扇區,並將該扇區及其替換情況記錄在G-list中。這樣一來,少量的defect sector對使用者的使用沒有太大的影響。

  也有一些硬碟自動修復機制的激發條件要嚴格一些,需要用某些軟體來判斷defect sector,並通過某個埠(據說是50h)呼叫自動修復機制。比如常用的Lformat, ADM,DM中的Zero fill,Norton中的Wipeinfo和校正工具,西數工具包中的wddiag, IBM的DFT中的Erase等。這些工具之所以能在執行過後消除了一些“壞道”,很重要的原因就在這Automatic Reallcation(當然還有其它原因),而不能簡單地概括這些“壞道”是什麼“邏輯壞道”或“假壞道”。 如果哪位被誤導中毒太深的讀者不相信這個事實,等他找到能檢視G-list的專業工具後就知道,這些工具執行過後,G-list將會增加多少記錄!“邏輯壞道”或“假壞道”有必要記錄在G-list中並用其它扇區替換麼?

  當然,G-list的記錄不會無限制,所有的硬碟都會限定在一定數量範圍內。如火球系列限度是500,美鑽二代的限度是636,西數BB的限度是508,等等。超過限度,Automatic Reallcation就不能再起作用。這就是為何少量的“壞道”可以通過上述工具修復(有人就概括為:“邏輯壞道”可以修復),而壞道多了不能通過這些工具修復(又有人概括為:“物理壞道”不可以修復)。

  Bad track (壞道)

  這個概念源於十多年前小容量硬碟(100M以下),當時的硬碟在外殼上都貼有一張小表格,上面列出該硬碟中有缺陷的磁軌位置(新硬碟也有)。在對這個硬碟進行低階格式化時(如用ADM或DM 5.0等工具,或主機板中的低格工具),需要填入這些Bad track的位置, 以便在低格過程中跳過這些磁軌。現在的大容量硬碟在結構上與那些小容量硬碟相差極大,這個概念用在大容量硬碟上有點牽強。

  讀者們還可能發現國內很多刊物和網上文章中還有這麼幾個概念:物理壞道,邏輯壞道,真壞道,假壞道,硬壞道,軟壞道等。高朋在國外的硬碟技術資料中沒有找到對應的英文概念,也許是中國人自己概括的吧?既然有那麼多的人能接受這些概念,也許某些專家能作出一些的合理解釋。 高朋不習慣使用這些概念,不想對它們作牽強的解釋,讀者們看看是誰說的就去問誰吧。

深入瞭解硬碟引數

  正常情況下,硬碟在接通電源之後,都要進行“初始化”過程(也可以稱為“自檢”)。這時,會發出一陣子自檢聲音,這些聲音長短和規律視不同牌子硬碟而各不一樣,但同型號的正常硬碟的自檢聲音是一樣的。 有經驗的人都知道,這些自檢聲音是由於硬碟內部的磁頭尋道及歸位動作而發出的。為什麼硬碟剛通電就需要執行這麼多動作呢?簡單地說,是硬碟在讀取的記錄在碟片中的初始化引數。
  一般熟悉硬碟的人都知道,硬碟有一系列基本引數,包括:牌子、型號、容量、柱面數、磁頭數、每磁軌扇區數、系列號、快取大小、轉速、S.M.A.R.T值等。其中一部分引數就寫在硬碟的標籤上,有些則要通過軟體才能測出來。但是,高朋告訴你,這些引數僅僅是初始化引數的一小部分,碟片中記錄的初始化引數有數十甚至數百個!硬碟的CPU在通電後自動尋找BIOS中的啟動程式,然後根據啟動程式的要求,依次在碟片中指定的位置讀取相應的引數。如果某一項重要引數找不到或出錯,啟動程式無法完成啟動過程,硬碟就進入保護模式。在保護模式下,使用者可能看不到硬碟的型號與容量等引數,或者無法進入任何讀寫操作。近來有些系列的硬碟就是這個原因而出現類似的通病,如:FUJITSU MPG系列自檢聲正常卻不認盤,MAXTOR美鑽系列認不出正確型號及自檢後停轉,WD BB EB系列能正常認盤卻拒絕讀寫操作等。

  不同牌子不同型號的硬碟有不同的初始化引數集,以較熟悉的Fujitsu硬碟為例,高朋簡要地講解其中一部分引數,以便讀者理解內部初始化引數的原理。

  通過專用的程式控制硬碟的CPU,根據BIOS程式的需要,依次讀出初始化引數集,按模組分別存放為69個不同的檔案,檔名也與BIOS程式中呼叫到的引數名稱一致。其中部分引數模組的簡要說明如下:

  DM硬碟內部的基本管理程式

  - PL永久缺陷表
  - TS缺陷磁軌表
  - HS實際物理磁頭數及排列順序
  - SM最高階加密狀態及密碼
  - SU使用者級加密狀態及密碼
  - CI 硬體資訊,包括所用的CPU型號,BIOS版本,磁頭種類,磁碟碟片種類等
  - FI生產廠家資訊
  - WE寫錯誤記錄表
  - RE讀錯誤記錄表
  - SI容量設定,指定允許使用者使用的最大容量(MAX LBA),轉換為外部邏輯磁頭數(一般為16)和邏輯每磁軌扇區數(一般為63)
  - ZP區域分配資訊,將每面碟片劃分為十五個區域,各個區域上分配的不同的扇區數量,從而計算出最大的物理容量。

  這些引數一般存放在普通使用者訪問不到的位置,有些是在物理零磁軌以前,可以認為是在負磁軌的位置。可能每個引數佔用一個模組,也可能幾個引數佔用同一模組。模組大小不一樣,有些模組才一個位元組,有些則達到64K位元組。這些引數並不是連續存放的,而是各有各的固定位置。

  讀出內部初始化引數表後,就可以分析出每個模組是否處於正常狀態。當然,也可以修正這些引數,重新寫回碟片中指定的位置。這樣,就可以把一些因為引數錯亂而無法正常使用的硬碟“修復”回正常狀態。

  如果讀者有興趣進一步研究,不妨將硬碟電路板上的ROM晶片取下,用寫碼機讀出其中的BIOS程式,可以在程式段中找到以上所列出的引數名稱。

硬碟修復之低階格式化

  熟悉硬碟的人都知道,在必要的時候需要對硬碟做“低階格式化”(下面簡稱“低格”)。進行低格所使用的工具也有多種:有用廠家專用裝置做的低格,有用廠家提供的軟體工具做的低格,有用DM工具做的低格,有用主機板BIOS中的工具做的低格,有用Debug工具做的低格,還有用專業軟體做低格……
  不同的工具所做的低格對硬碟的作用各不一樣。有些人覺得低格可以修復一部分硬碟,有些人則覺得低格十分危險,會嚴重損害硬碟。高朋用過多種低格工具,認為低格是修復硬碟的一個有效手段。下面總結一些關於低格的看法,與廣大網友交流。

  大家關心的一個問題:“低格過程到底對硬碟進行了什麼操作?”實踐表明低格過程有可能進行下列幾項工作,不同的硬碟的低格過程相差很大,不同的軟體的低格過程也相差很大。

  A. 對扇區清零和重寫校驗值

  低格過程中將每個扇區的所有位元組全部置零,並將每個扇區的校驗值也寫回初始值,這樣可以將部分缺陷糾正過來。譬如,由於扇區資料與該扇區的校驗值不對應,通常就被報告為校驗錯誤(ECC Error)。如果並非由於磁介質損傷,清零後就很有可能將扇區資料與該扇區的校驗值重新對應起來,而達到“修復”該扇區的功效。這是每種低格工具和每種硬碟的低格過程最基本的操作內容,同時這也是為什麼通過低格能“修復大量壞道”的基本原因。另外,DM中的Zero Fill(清零)操作與IBM DFT工具中的Erase操作,也有同樣的功效。

  B. 對扇區的標識資訊重寫

  在多年以前使用的老式硬碟(如採用ST506介面的硬碟),需要在低格過程中重寫每個扇區的標識(ID)資訊和某些保留磁軌的其他一些資訊,當時低格工具都必須有這樣的功能。但現在的硬碟結構已經大不一樣,如果再使用多年前的工具來做低格會導致許多令人痛苦的意外。難怪經常有人在痛苦地高呼:“危險!切勿低格硬碟!我的硬碟已經毀於低格!”

  C. 對扇區進行讀寫檢查,並嘗試替換缺陷扇區

  有些低格工具會對每個扇區進行讀寫檢查,如果發現在讀過程或寫過程出錯,就認為該扇區為缺陷扇區。然後,呼叫通用的自動替換扇區(Automatic reallocation sector)指令,嘗試對該扇區進行替換,也可以達到“修復”的功效。

  D. 對所有物理扇區進行重新編號

  編號的依據是P-list中的記錄及區段分配引數(該引數決定各個磁軌劃分的扇區數),經過編號後,每個扇區都分配到一個特定的標識資訊(ID)。編號時,會自動跳過P-list中所記錄的缺陷扇區,使使用者無法訪問到那些缺陷扇區(使用者不必在乎永遠用不到的地方的好壞)。如果這個過程半途而廢,有可能導致部分甚至所有扇區被報告為標識不對(Sector ID not found, IDNF)。要特別注意的是,這個編號過程是根據真正的物理引數來進行的,如果某些低格工具按邏輯引數(以 16heads 63sector為最典型)來進行低格,是不可能進行這樣的操作。