對計(jì)算機(jī)用戶來說,硬盤故障簡直就是一場災(zāi)難。由于硬盤在外部存儲設(shè)備中無可比擬的速度以及存取的便利性,在今天,硬盤已成為最重要的數(shù)據(jù)載體和系統(tǒng)程序載體。硬盤如果出現(xiàn)故障,則意味著用戶的數(shù)據(jù)安全受到了嚴(yán)重威脅,這是大多數(shù)用戶所無法容忍而又必須面對的殘酷現(xiàn)實(shí)。本文準(zhǔn)備就PC硬盤故障的一般處理方法作一個(gè)簡單的探討,希望能對出現(xiàn)硬盤故障的用戶有所裨益。
一、相關(guān)知識
在討論具體的處理方法之前,我們有必要先來了解一下硬盤及其相關(guān)系統(tǒng)的原理。
1.硬盤驅(qū)動器
這就是我們常說的硬盤。它是一種磁介質(zhì)的外部存儲設(shè)備,數(shù)據(jù)存儲在密封于潔凈的硬盤驅(qū)動器內(nèi)腔的若干個(gè)磁盤片上。這些盤片一般是在以鋁為主要成分的片基表面涂上磁性介質(zhì)所形成,在磁盤片的每一面上,以轉(zhuǎn)動軸為軸心、以一定的磁密度為間隔的若干個(gè)同心圓就被劃分成磁道(track),每個(gè)磁道又被劃分為若干個(gè)扇區(qū)(sector),數(shù)據(jù)就按扇區(qū)存放在硬盤上。在每一面上都相應(yīng)地有一個(gè)讀寫磁頭(head),所以不同磁頭的所有相同位置的磁道就構(gòu)成了所謂的柱面(cylinder)。傳統(tǒng)的硬盤讀寫都是以柱面、磁頭、扇區(qū)為尋址方式的(CHS尋址)。硬盤在上電后保持高速旋轉(zhuǎn)(可達(dá)7200Y/min),位于磁頭臂上的磁頭懸浮在磁盤表面,可以通過步進(jìn)電機(jī)在不同柱面之間移動,對不同的柱面進(jìn)行讀寫。所以在上電期間如果硬盤受到劇烈振蕩,磁盤表面就容易被劃傷,磁頭也容易損壞。硬盤驅(qū)動器根據(jù)接口的不同可以分為兩大類:IDE硬盤(包括IDE、EIDE直至近來的UDMA33都屬于這種類型)和SCSI硬盤,必須和相應(yīng)的控制器一起使用。 硬盤的第一個(gè)扇區(qū)(0道0頭1扇區(qū))被保留為主引導(dǎo)扇區(qū)。在主引導(dǎo)區(qū)內(nèi)主要有兩項(xiàng)內(nèi)容:主引導(dǎo)記錄和硬盤分區(qū)表。主引導(dǎo)記錄是一段程序代碼,其作用主要是對硬盤上安裝的操作系統(tǒng)進(jìn)行引導(dǎo);硬盤分區(qū)表則存儲了硬盤的分區(qū)信息(見表1)。計(jì)算機(jī)啟動時(shí)將讀取該扇區(qū)的數(shù)據(jù),并對其合法性進(jìn)行判斷(扇區(qū)最后兩個(gè)字節(jié)是否為0x55AA或0xAA55),如合法則跳轉(zhuǎn)執(zhí)行該扇區(qū)的第一條指令。所以硬盤的主引導(dǎo)區(qū)常常成為病毒攻擊的對象,從而被篡改甚至被破壞。
注:可引導(dǎo)標(biāo)志:0x80為可引導(dǎo)分區(qū)類型標(biāo)志;0表示未知;1為FAT12;4為FAT16;5為擴(kuò)展分區(qū)等等。
2.硬盤控制器
硬盤控制器是硬盤及其他具有相同接口規(guī)范的外部設(shè)備(如CDROM驅(qū)動器)的管理者,由它來完成驅(qū)動器與內(nèi)存之間的命令及數(shù)據(jù)傳輸。目前應(yīng)用較廣的硬盤控制器按其接口的不同分為IDE、SCSI兩類,常常整合在主板上,通過數(shù)據(jù)線與硬盤驅(qū)動器相連。毫無疑問,硬盤控制器發(fā)生故障或連接不正確將會導(dǎo)致硬盤無法正常工作。
3.CMOS中的硬盤信息
在計(jì)算機(jī)的CMOS中也存儲了硬盤的信息,主要有硬盤類型、容量、柱面數(shù)、磁頭數(shù)、每道扇區(qū)數(shù)、尋址方式等內(nèi)容,對硬盤參數(shù)加以說明,以便計(jì)算機(jī)正確訪問硬盤。當(dāng)CMOS因故掉電或發(fā)生錯(cuò)誤時(shí)(啟動時(shí)一般會提示“CMOS checksum error”或類似信息),硬盤設(shè)置可能會丟失或錯(cuò)誤,硬盤訪問也就無法正確進(jìn)行。這種情況我們就必須重新設(shè)置硬盤參數(shù),如果事先已記下硬盤參數(shù)或者有某些防病毒軟件事先備份的CMOS信息,只需手工恢復(fù)即可;否則也可使用BIOS設(shè)置(setup)中的“自動檢測硬盤類型”(HD type auto detection)的功能,一般也能得到正確的結(jié)果。
二、典型故障及診斷處理
硬盤故障大體上可以分為軟故障和硬故障兩種情況,下面我們就以無法從硬盤啟動幾種典型的故障對處理的一般過程加以說明。
1.故障類型的初步判斷
無法從硬盤啟動的情況主要有如下幾種原因:硬盤操作系統(tǒng)被損壞、硬盤主引導(dǎo)區(qū)被破壞、CMOS硬盤參數(shù)不正確、硬盤控制器與硬盤驅(qū)動器未能正常連接、硬盤驅(qū)動器或硬盤控制器硬件故障、主板故障。
首先,我們可以根據(jù)計(jì)算機(jī)啟動信息對故障類型作一初步判斷。
案例1:開機(jī)不能完成正常自檢(POST),那么可以判斷為主板故障或電源故障,對此本文不作討論。
案例2:開機(jī)自檢過程中,屏幕提示“Hard disk drive failure”或類似信息,則可以判斷為硬盤驅(qū)動器或硬盤控制器(提示“Hard drive controller failure”)硬件故障。
案例3:開機(jī)自檢過程中,屏幕提示“Hard disk not present”或類似信息,則可能是CMOS硬盤參數(shù)設(shè)置錯(cuò)誤或硬盤控制器與硬盤驅(qū)動器連接不正確。
案例4:開機(jī)自檢過程中,屏幕提示“Missing operating system”、“Non OS”、“Non system disk or disk error,replace disk and press a key to reboot”等類似信息,則可能是硬盤主引導(dǎo)區(qū)分區(qū)表被破壞、操作系統(tǒng)未正確安裝或者CMOS硬盤參數(shù)設(shè)置錯(cuò)誤。
2.軟故障的一般處理方法
在初步判定故障類型之后,對于軟故障,我們可以采取如下步驟處理:
第一步,在存在CMOS發(fā)生錯(cuò)誤的可能的情況下(如案例3和案例4),確保CMOS中硬盤參數(shù)正確。在對硬盤類型不確切情況下,可以讓BIOS自動檢測,也可參考同種機(jī)型的設(shè)置。
第二步,若仍不能從硬盤啟動,可以用軟盤啟動(注意BIOS設(shè)置中的引導(dǎo)順序設(shè)定)后,試著能否訪問硬盤。如果能夠訪問硬盤(比如說能列出C盤目錄),說明很可能只是操作系統(tǒng)被破壞,其他數(shù)據(jù)應(yīng)無太大的問題,否則硬盤的主引導(dǎo)區(qū)或可引導(dǎo)分區(qū)的引導(dǎo)區(qū)被破壞。我們可以使用DEBUG或Norton Disk Editor(菜單Object/Partition table,如圖1所示即為正常的分區(qū)表)等工具軟件查看硬盤的主引導(dǎo)區(qū)是否正常:
A:>DEBUG
-a ;匯編指令
XXXX:0100 mov ax,201 ;讀取一個(gè)扇區(qū)
XXXX:0103 mov bx,600 ;讀至當(dāng)前段0600處
XXXX:0106 mov cx,1 ;柱面號=1
XXXX:0109 mov dx,80 ;磁頭號=0,驅(qū)動器號=80
XXXX:010C int 13 ;磁盤讀寫中斷
XXXX:010E int 3 ;斷點(diǎn)中斷
XXXX:010F
-g ;執(zhí)行上述指令
-d 600 ;顯示主引導(dǎo)區(qū)內(nèi)容
如無法訪問主引導(dǎo)區(qū),則顯然是硬故障。否則查看引導(dǎo)程序和分區(qū)表是否正常(可以反匯編查看指令或與正常的主引導(dǎo)扇區(qū)對比),如果發(fā)現(xiàn)引導(dǎo)程序異常則可使用殺毒軟件清查病毒或恢復(fù)主引導(dǎo)區(qū),也可用DEBUG手工恢復(fù)主引導(dǎo)區(qū):
(續(xù)前,假設(shè)已從正常的機(jī)器上獲得主引導(dǎo)區(qū)存為文件mboot.dat)
-n mboot.dat ;讀文件mboot.dat
-l 800 ;讀至當(dāng)前段0800處
-m 7be l 40 9be;將原分區(qū)表復(fù)制到正常的主引導(dǎo)區(qū)
-a 100 ;修改第一條指令
XXXX:0100 mov ax,301 ;將0800處數(shù)據(jù)寫回主引導(dǎo)扇
XXXX:0103 mov bx,800 ;
XXXX:0106
-r ip ;修改當(dāng)前指令指針
IP:010E 0100 ;當(dāng)前指令指針指向0100
-g ;執(zhí)行
第三步,在恢復(fù)主引導(dǎo)區(qū)之后,如果仍然不能正常啟動操作系統(tǒng),但已能夠訪問C盤,那么我們可以備份重要信息、重裝操作系統(tǒng)即可。如果C盤仍然無法訪問,則可以斷定C盤的引導(dǎo)區(qū)(包含磁盤參數(shù)表等重要信息)或文件系統(tǒng)(FAT、FDT)已經(jīng)損壞。這種情況手工修復(fù)較為復(fù)雜,而且容易產(chǎn)生誤操作,利用Norton Disk Doctor或微軟的ScanDisk這樣的磁盤修復(fù)軟件是比較合適的。這里我們以DOS版Norton Utility的NDD為例(注意:低版本的NDD在對磁盤進(jìn)行診斷時(shí)可能不能正確診斷Windows95以上的文件系統(tǒng))予以說明: 在NDD的菜單中選擇Options/General確認(rèn)NDD將進(jìn)行包括主引導(dǎo)區(qū)和CMOS在內(nèi)的全面檢查(如圖3所示),然后在主菜單中選擇Diagnose Disk對硬盤進(jìn)行診斷,NDD在發(fā)現(xiàn)錯(cuò)誤時(shí)將會自動報(bào)告(如圖4所示),并提示錯(cuò)誤描述(Description)和推薦意見(Recommendation),可以根據(jù)情況選擇修復(fù)與否。修復(fù)時(shí)注意保存UNDO磁盤,以便恢復(fù)操作之用。在修復(fù)過程中,尤其是在表面測試(Surface Test)過程中如果提示讀寫錯(cuò)誤,則說明硬盤存在物理損壞,數(shù)據(jù)可能會丟失。 在診斷、修復(fù)結(jié)束后重新啟動計(jì)算機(jī),若能對C盤進(jìn)行訪問則大功告成,可以通過備份數(shù)據(jù)、重裝操作系統(tǒng)簡單地恢復(fù)硬盤功能。否則只能進(jìn)行恢復(fù)操作(UNDO),嘗試手工或通過其他方法恢復(fù)。
3.硬故障的一般處理方法
對于硬故障中的“硬盤丟失”的情況,首先要檢查硬盤驅(qū)動器與硬盤控制器的連接是否正常;硬盤驅(qū)動器電源線連接是否正常;如果存在多個(gè)設(shè)備則需檢查硬盤之間或硬盤與CDROM等等設(shè)備之間是否存在沖突;并且檢查CMOS中硬盤信息是否正確無誤。確認(rèn)一切正常后若硬盤“出現(xiàn)”,我們就可以按照上述軟故障的處理步驟進(jìn)行診斷處理。如果仍然找不到硬盤,那我們可以采用替換法來進(jìn)行故障定位,也就是將硬盤驅(qū)動器換至另外的運(yùn)行正常的計(jì)算機(jī)上來測試其運(yùn)行能否正常,若能正常運(yùn)作則說明故障與其無關(guān),數(shù)據(jù)安然無恙,否則說明硬盤硬件損壞,用戶自身是無法修復(fù)的。
對于硬盤磁道出現(xiàn)物理損傷的情況(表現(xiàn)為讀寫硬盤時(shí)提示“Sector not found”或“General error in reading drive C”等類似錯(cuò)誤信息),首先我們可以利用Norton Disk Doctor或Scandisk等工具軟件對硬盤進(jìn)行表面掃描測試(如圖6所示)。當(dāng)只有少數(shù)磁道出現(xiàn)壞扇區(qū)時(shí),我們在用NDD對硬盤進(jìn)行修復(fù)后仍可以照常使用;當(dāng)出現(xiàn)大面積的壞區(qū)時(shí),或者幾乎每道都有壞區(qū)時(shí),就有必要考慮舍棄一部分壞扇集中的區(qū)域:
案例5:一筆記本電腦在運(yùn)行中摔落地面,無法正常啟動。軟盤啟動后訪問C盤經(jīng)常出現(xiàn)錯(cuò)誤信息“Sector not found”,在搶救了一些數(shù)據(jù)之后,無法對其進(jìn)行格式化操作。用NDD對其進(jìn)行診斷,發(fā)現(xiàn)頻繁出現(xiàn)壞扇,而且其FAT和FDT中也有相當(dāng)壞扇存在,尤其在每道的后2/3區(qū)域。只得決定放棄2/3的硬盤空間,在CMOS中更改硬盤設(shè)定,其他參數(shù)不變,每柱面的扇區(qū)數(shù)更改為21,然后重新分區(qū)并使用NDD對其進(jìn)行表面測試并修復(fù),完畢后格式化C盤,仍能保留1/3空間,安裝操作系統(tǒng)后一切正常。
4.其他
對于其他硬盤故障的處理,如文件系統(tǒng)的損壞、文件丟失等等,對一般用戶來說,最好使用工具軟件進(jìn)行處置,以避免手工誤操作的發(fā)生。筆者認(rèn)為,Norton Utilities for Windows 3.0不失為一個(gè)優(yōu)秀的磁盤工具軟件。其主要構(gòu)件Disk Doctor對磁盤錯(cuò)誤的診斷及修復(fù)能力在同類產(chǎn)品中稱得上首屈一指。