chkdsk工具使用教程
chkdsk工具使用教程
chkdsk工具在哪?Chkdsk工具是系統(tǒng)檢查磁盤當(dāng)前狀態(tài)的一個(gè)命令,啟動(dòng)它可以顯示磁盤狀態(tài)、內(nèi)存狀態(tài)和指定路徑下指定文件的不連續(xù)數(shù)目。選擇“開始→運(yùn)行”輸入“Chkdsk”回車,即可啟動(dòng)Chkdsk,它會(huì)自動(dòng)校驗(yàn)文件并將丟失的鏈接轉(zhuǎn)換成文件。那么,如何正確使用chkdsk工具?下面跟著學(xué)習(xí)啦小編一起來看看吧。
chkdsk工具使用教程
1、chkdsk工具其實(shí)就是硬盤自檢程序。右擊C盤-“屬性”-“工具”-“查錯(cuò)”下。點(diǎn)開始檢查,勾選自動(dòng)修復(fù)文件系統(tǒng)錯(cuò)誤,系統(tǒng)會(huì)提示你重啟計(jì)算機(jī)機(jī),當(dāng)你重啟計(jì)算機(jī)到一半時(shí),會(huì)自動(dòng)執(zhí)行。執(zhí)行完后。此錯(cuò)誤提示便會(huì)消除!
2、直接在任務(wù)欄點(diǎn)擊【開始-運(yùn)行】,然后在運(yùn)行的輸入框上輸入【chkdsk】,在敲回車鍵確定即可運(yùn)行了。然后它會(huì)自動(dòng)效驗(yàn)文件并且還會(huì)將丟失的連接轉(zhuǎn)換 成文件的形式。當(dāng)然你如果對(duì)分區(qū)單個(gè)磁盤進(jìn)行修復(fù)的話,比如你修復(fù)D盤,就在輸入框上輸入【cmd】命令,然后在彈出的命令提示符窗口上輸入 【chkdsk D: /f】敲回車就會(huì)啟動(dòng)chkdsk磁盤檢查工具掃描D分區(qū)了。
關(guān)于chkdsk
chkdsk的全稱是checkdisk,就是磁盤檢查的意思。這個(gè)東西是當(dāng)你的系統(tǒng)當(dāng)?shù)艋蛘叻欠P(guān)機(jī)的時(shí)候由系統(tǒng)來調(diào)用檢查磁盤的,也可以由手工通過命令行調(diào)用來檢查某一個(gè)磁盤分區(qū)。該工具基于被檢測的分區(qū)所用的文件系統(tǒng),創(chuàng)建和顯示磁盤的狀態(tài)報(bào)告。Chkdsk 還會(huì)列出并糾正磁盤上的錯(cuò)誤。如果不帶任何參數(shù),chkdsk 將顯示當(dāng)前驅(qū)動(dòng)器中的磁盤狀態(tài)。
不建議在使用 /f 開關(guān)時(shí)中斷 chkdsk 進(jìn)程。不保證中斷 chkdsk 進(jìn)程后的磁盤完整性。
簡介
Chkdsk.exe 是 CHKDSK 程序的命令行界面,該程序用于驗(yàn)證文件系統(tǒng)的邏輯完整性。如果 CHKDSK 在文件系統(tǒng)數(shù)據(jù)中發(fā)現(xiàn)存在邏輯不一致性,CHKDSK 將執(zhí)行可修復(fù)該文件系統(tǒng)數(shù)據(jù)的操作(前提是這些數(shù)據(jù)未處于只讀模式)。
語法
chkdsk [volume:][[Path] FileName] [/f] [/v] [/r] [/x] [/c] [/l[:size]]
參數(shù)
volume:
指定驅(qū)動(dòng)器號(hào)(冒號(hào)分隔)、裝入點(diǎn)或卷名。
[Path} FileName]
指定需要 chkdsk 檢查碎片整理的文件或文件集的位置和名稱。使用通配符(* 和 ?)可以指定多個(gè)文件。
/f
cdkdsk運(yùn)行界面
cdkdsk運(yùn)行界面
修復(fù)磁盤上的錯(cuò)誤。必須鎖定磁盤。如果 chkdsk 無法鎖定驅(qū)動(dòng)器,則會(huì)顯示一條消息,詢問您是否希望在下次重新啟動(dòng)計(jì)算機(jī)時(shí)檢查該驅(qū)動(dòng)器。
/v
當(dāng)檢查磁盤時(shí),顯示所有目錄中每個(gè)文件的名稱。
/r
找到壞扇區(qū)并恢復(fù)可讀取的信息。必須鎖定磁盤。
/x
僅在 NTFS 上使用。如果必要,首先強(qiáng)制卸載卷。該驅(qū)動(dòng)器的所有打開句柄都無效。/x 還包含了/f 的功能。
/i
磁盤被占用提示
磁盤被占用提示
僅隨 NTFS 使用。對(duì)索引項(xiàng)進(jìn)行強(qiáng)度較小的檢查,降低運(yùn)行 chkdsk 的所用時(shí)間量。
/c
僅隨 NTFS 使用。跳過文件夾結(jié)構(gòu)中的周期檢查,減少運(yùn)行 chkdsk 所需的時(shí)間量。
/l[:size]
僅隨 NTFS 使用。將日志文件的大小更改為由用戶輸入的大小。如果省略該參數(shù),則 /l 會(huì)顯示當(dāng)前日志文件的大小。
/?
在命令提示符顯示幫助。
注釋
運(yùn)行
chkdsk工具在系統(tǒng)的System32目錄中,它需要在Windows系統(tǒng)的命令提示符窗口中運(yùn)行,并且要在固定磁盤上運(yùn)行 chkdsk 命令,您必須是該 Administrators 組的成員。
重新啟動(dòng)時(shí)檢查鎖定的驅(qū)動(dòng)器
如果希望 chkdsk 修復(fù)磁盤錯(cuò)誤,則此前不能打開該驅(qū)動(dòng)器上的文件。如果有文件打開,會(huì)顯示下述錯(cuò)誤消息:
Chkdsk工具檢查NTFS分區(qū)(chkdsk e:/f)
Chkdsk工具檢查NTFS分區(qū)(chkdsk e:/f)
Chkdsk cannot run because the volume is in use by another processWould you like to schedule this volume to be checked the next time the system restarts?(Y/N)
如果選擇下次重新啟動(dòng)計(jì)算機(jī)時(shí)檢查該驅(qū)動(dòng)器,則重新啟動(dòng)計(jì)算機(jī)后 chkdsk 會(huì)自動(dòng)檢查該驅(qū)動(dòng)器并修復(fù)錯(cuò)誤。如果該驅(qū)動(dòng)器分區(qū)為啟動(dòng)分區(qū),則 chkdsk 在檢查完該驅(qū)動(dòng)器后會(huì)自動(dòng)重新啟動(dòng)計(jì)算機(jī)。
在Windows XP中手動(dòng)調(diào)用Chkdsk工具:
在運(yùn)行中輸入Chkdsk X: (后接參數(shù),可參見上述參數(shù)解釋),回車
比如輸入chkdsk e: /f /r 回車運(yùn)行就表示修復(fù)e盤上的錯(cuò)誤,并找到壞扇區(qū)恢復(fù)可讀取的信息
圖形界面的磁盤檢查工具
圖形界面的磁盤檢查工具
在Windows XP中文版環(huán)境下chkdsk工具是以中文語言運(yùn)行的
上述運(yùn)行方式是命令行方式,還能通過圖形界面程序運(yùn)行,但顯示內(nèi)容簡略。
打開我的電腦,右鍵單擊需要檢測的磁盤-屬性-工具選項(xiàng)卡-開始檢查
檢查選項(xiàng):
自動(dòng)修復(fù)文件系統(tǒng)的錯(cuò)誤(A):修復(fù)磁盤上的錯(cuò)誤。必須鎖定磁盤,如果磁盤被占用,則會(huì)顯示是否在下次開機(jī)時(shí)檢查的選項(xiàng)。相當(dāng)于命令行中 /f 命令掃描并試圖恢復(fù)壞扇區(qū)(N):找到壞扇區(qū)并恢復(fù)可讀取的信息。必須鎖定磁盤。相當(dāng)于命令行中 /r 命令
報(bào)告磁盤錯(cuò)誤編輯
chkdsk 命令會(huì)檢查磁盤空間和文件分配表 (FAT)以及 NTFS 文件系統(tǒng)的使用情況。Chkdsk 在狀態(tài)報(bào)告中提供特定于每個(gè)文件系統(tǒng)的信息。狀態(tài)報(bào)告顯示文件系統(tǒng)中找到的錯(cuò)誤。在活動(dòng)分區(qū)上運(yùn)行 chkdsk 時(shí),如果未含 /f 命令行選項(xiàng),則它可能會(huì)因?yàn)闊o法鎖定該驅(qū)動(dòng)器而報(bào)告虛假信息。應(yīng)該不定期使用 chkdsk 檢查每個(gè)磁盤上的錯(cuò)誤。
修復(fù)磁盤錯(cuò)誤
只有指定 /f 命令行選項(xiàng),chkdsk 命令才修復(fù)磁盤錯(cuò)誤。Chkdsk 必須可以鎖定驅(qū)動(dòng)器以糾正錯(cuò)誤。由于修復(fù)通常會(huì)更改磁盤的文件分配表,有時(shí)還會(huì)丟失數(shù)據(jù),所以 chkdsk 會(huì)首先發(fā)送如下所示的確認(rèn)消息:
10 lost allocation units found in 3 chains.
Convert lost chains to files?
如果按 Y,Windows 會(huì)在根目錄中將所有丟失鏈保存在一個(gè)名為 Filennnn.chk 的文件中。chkdsk 結(jié)束后,可以查看這些文件是否包含了所需的數(shù)據(jù)。如果按 N,Windows 會(huì)修復(fù)磁盤,但對(duì)于丟失的分配單元,它不保存其內(nèi)容。
如果不使用 /f 命令行選項(xiàng),則在有文件需要修復(fù)時(shí),chkdsk 會(huì)發(fā)送消息,但它不修復(fù)任何錯(cuò)誤。
如果在大磁盤(例如,70 GB)或有大量文件(數(shù)百萬)的磁盤上使用 chkdsk /f,這可能要花很長時(shí)間(比如說,數(shù)天)才能完成。因?yàn)?chkdsk 直到工作完成它才會(huì)交出控制權(quán),所以計(jì)算機(jī)在這段時(shí)間內(nèi)將不可用。
檢查 FAT 磁盤
Windows 以下列格式顯示 FAT 磁盤的 chkdsk 狀態(tài)報(bào)告:
檢查 NTFS 磁盤
Windows 以下列格式顯示 NTFS 磁盤的 chkdsk 狀態(tài)報(bào)告:
存在打開文件的情況下使用 chkdsk
如果該驅(qū)動(dòng)器上有打開的文件,則指定 /f 命令行選項(xiàng)后,chkdsk 會(huì)發(fā)送錯(cuò)誤消息。如果未指定 /f 命令行選項(xiàng)并且存在打開的文件,則 chkdsk 會(huì)報(bào)告磁盤上丟失的分配單元。如果打開的文件沒有記錄在文件分配表時(shí),可能會(huì)發(fā)生這種情況。如果 chkdsk 報(bào)告大量分配單元丟失,可以考慮修復(fù)該磁盤。
查找物理磁盤錯(cuò)誤
使用 /r 命令行選項(xiàng)可查找文件系統(tǒng)中的物理磁盤錯(cuò)誤。有關(guān)使用 recover 修復(fù)物理性損壞文件的信息,請(qǐng)參閱“”。
報(bào)告磁盤壞扇區(qū)
在磁盤第一次準(zhǔn)備運(yùn)行時(shí),chkdsk 報(bào)告的壞扇區(qū)標(biāo)記為損壞。它們不會(huì)造成危險(xiǎn)。
退出碼編輯
下表列出了 chkdsk 完成任務(wù)后報(bào)告的退出碼。
退出碼 說明
0 沒有發(fā)現(xiàn)錯(cuò)誤。
1 錯(cuò)誤已找到并修復(fù)。
2 已執(zhí)行清理磁盤(例如碎片收集),或者因?yàn)闆]有指定 /f 而未執(zhí)行清理磁盤。
3 由于未指定 /f 選項(xiàng),無法檢查磁盤,錯(cuò)誤不能修復(fù)或錯(cuò)誤未修復(fù)。
故障恢復(fù)控制臺(tái)提供了帶有不同參數(shù)的 chkdsk 命令。
范例
如果要檢查驅(qū)動(dòng)器 D 中的磁盤,并且希望 Windows 修復(fù)錯(cuò)誤,請(qǐng)鍵入:
chkdsk d:/f
如果遇到錯(cuò)誤,chkdsk 會(huì)暫停并顯示消息。Chkdsk 完成任務(wù)時(shí)會(huì)顯示列有磁盤狀態(tài)的報(bào)告。除非 chkdsk 已完成任務(wù),否則無法打開指定驅(qū)動(dòng)器上的任何文件。
在 FAT 磁盤上,要檢查當(dāng)前目錄中所有文件的不相鄰塊,請(qǐng)鍵入:
chkdsk *.*
Chkdsk 顯示狀態(tài)報(bào)告,然后列出符合具有不相鄰塊條件的文件。
XOX
使用指南
使用CHKDSK命令的注意事項(xiàng)
(1)系統(tǒng)存在打開的文件時(shí)
當(dāng)有文件打開時(shí)請(qǐng)不要使用CHKDSK。因?yàn)镃HKDSK是假定磁盤文件處于關(guān)閉狀態(tài)而設(shè)計(jì)的。當(dāng)有文件打開時(shí),相應(yīng)的MS-DOS將會(huì)修改文件分配表和目錄結(jié)構(gòu)。這種改變并不一定立即進(jìn)行,文件分配表和目錄結(jié)構(gòu)的改變發(fā)生在不同時(shí)刻。因此如果磁盤上文件打開時(shí)運(yùn)行CHKDSK,就會(huì)把目錄結(jié)構(gòu)和文件分配表的不一致解釋為出錯(cuò),從而導(dǎo)致數(shù)據(jù)丟失或文件系統(tǒng)的破壞。因此,在運(yùn)行其它程序,如Microsoft Windows時(shí),千萬不要運(yùn)行CHKDSK。
(2)CHKDSK不能用于分配的驅(qū)動(dòng)器和網(wǎng)絡(luò)。
CHKDSK不能用于由SUBST命令形成的驅(qū)動(dòng)器工作,也不能用于網(wǎng)絡(luò)驅(qū)動(dòng)器上的磁盤檢查。
(3)物理磁盤錯(cuò)誤
CHKDSK命令只能找到文件系統(tǒng)中的邏輯錯(cuò)誤,而不能查找物理磁盤錯(cuò)誤。要查找物理磁盤錯(cuò)誤,請(qǐng)使用SCANDISK程序。
(4)壞磁盤扇區(qū)
CHKDSK報(bào)告中將壞扇區(qū)標(biāo)記上“bad”,SCANDISK和其它物理磁盤錯(cuò)誤修正程序也將壞扇區(qū)標(biāo)記為“bad”,因此壞扇區(qū)不會(huì)造成危害。
(5)交叉鏈接的文件
如果有兩個(gè)文件或目錄共用同一磁盤空間的記錄,CHKDSK會(huì)報(bào)告有交叉鏈接文件。如果CHKDSK發(fā)現(xiàn)有交叉鏈接文件存在,會(huì)顯示類似如下信息:
is cross linked on allocation unit
CHKDSK不會(huì)修補(bǔ)交叉鏈接文件,即使指定了/F項(xiàng)。要修復(fù)交叉鏈接文件,需要運(yùn)行SCANDISK程序,或者進(jìn)行手工修復(fù),然后復(fù)制到指定的文件中并刪除原文件。
新增開關(guān) /C 和 /I 的說明
本文介紹了兩個(gè)新的開關(guān):/C 開關(guān)和 /I 開關(guān),它們包含在 Windows XP 中的 CHKDSK 程序中。這些開關(guān)可用于更好地管理由于運(yùn)行 CHKDSK 或 AUTOCHK 而造成的停機(jī)時(shí)間。
/C 和 /I 開關(guān)僅對(duì)使用 NTFS 文件系統(tǒng)格式化的驅(qū)動(dòng)器有效。這兩個(gè)新的開關(guān)都指示 CHKDSK 例程跳過某些 CHKDSK 原本要執(zhí)行以驗(yàn)證 NTFS 數(shù)據(jù)結(jié)構(gòu)完整性的操作。
如果聯(lián)機(jī)運(yùn)行 CHKDSK,則實(shí)際執(zhí)行驗(yàn)證的代碼位于實(shí)用程序 DLL(例如 Untfs.dll 和 Ufat.dll)中。CHKDSK 調(diào)用的驗(yàn)證例程與通過 Windows 資源管理器或磁盤管理圖形用戶界面驗(yàn)證卷時(shí)所運(yùn)行的例程相同。
但是,如果將 CHKDSK 計(jì)劃為在計(jì)算機(jī)重新啟動(dòng)時(shí)運(yùn)行,則包含驗(yàn)證代碼的二進(jìn)制模塊為 Autochk.exe,它是一個(gè) Windows 固有程序。由于 Autochk.exe 在計(jì)算機(jī)啟動(dòng)序列中靠前的位置運(yùn)行,Autochk.exe 不具有虛擬內(nèi)存或其他 Win32 服務(wù)的優(yōu)點(diǎn)。
Autochk.exe 與 Chkdsk.exe 實(shí)用程序 DLL 生成相同種類的文本輸出。Autochk.exe 在啟動(dòng)過程中顯示這些文本輸出,并在應(yīng)用程序事件日志中記錄事件。所記錄的事件信息中包含事件日志的數(shù)據(jù)緩沖區(qū)所能容納的最大數(shù)量的文本輸出。
由于 Autochk.exe 和 Chkdsk.exe 實(shí)用程序 DLL 中的驗(yàn)證代碼都基于相同的源代碼,因此本文的其余部分將使用術(shù)語“CHKDSK”來統(tǒng)稱 Autochk.exe 和 Chkdsk.exe。與此類似,由于本文僅討論那些與 NTFS 卷有關(guān)的 CHKDSK 更改,因此,任何“CHKDSK 如何如何”的語句的意思都是“CHKDSK 在 NTFS 卷上運(yùn)行時(shí)如何如何”。
請(qǐng)注意,如果您使用 /C 和 /I 開關(guān),則即使運(yùn)行了 CHKDSK,卷仍可能是損壞的。因此,建議您僅在必須將停機(jī)時(shí)間降至最短的情況下才使用這些開關(guān)。這些開關(guān)適用于以下場合:必須在特別大的卷上運(yùn)行 CHKDSK,并且需要靈活地管理所造成的停機(jī)時(shí)間。
要了解何時(shí)適于使用 /C 和 /I 開關(guān),您需要對(duì)某些內(nèi)部的 NTFS 數(shù)據(jù)結(jié)構(gòu)、可能發(fā)生的損壞的種類、CHKDSK 在驗(yàn)證卷時(shí)采取的操作以及回避 CHKDSK 的常規(guī)驗(yàn)證步驟可能有哪些后果等有一些基本的了解。
/C 和 /I 開關(guān)的價(jià)值在卷上檢測到磁盤損壞時(shí),有三個(gè)基本的應(yīng)對(duì)選擇。
第一個(gè)選擇是什么都不做。在需要全天 24 小時(shí)聯(lián)機(jī)的使命關(guān)鍵服務(wù)器上,這通常是必要的選擇。缺點(diǎn)是相對(duì)較輕的損壞會(huì)逐漸發(fā)展為重大的損壞。因此,僅當(dāng)使服務(wù)器保持聯(lián)機(jī)比確保損壞卷上所存儲(chǔ)數(shù)據(jù)的完整性更為重要時(shí),才應(yīng)考慮此選擇。在運(yùn)行 CHKDSK 之前,損壞卷上的所有數(shù)據(jù)都應(yīng)當(dāng)被看作是“危險(xiǎn)”的。
第二個(gè)選擇是運(yùn)行完整的 CHKDSK 操作,以修復(fù)所有文件系統(tǒng)數(shù)據(jù)并通過自動(dòng)進(jìn)程還原所有可以恢復(fù)的用戶數(shù)據(jù)。但是,運(yùn)行完整的 CHKDSK 操作可能會(huì)在不適當(dāng)?shù)臅r(shí)機(jī)使得使命關(guān)鍵服務(wù)器停機(jī)數(shù)小時(shí)。 第三個(gè)選擇是通過使用 /C 和 /I 開關(guān)中的一個(gè)或兩個(gè),修復(fù)可能會(huì)發(fā)展為更嚴(yán)重問題的損壞類型(這比完整 CHKDSK 所需的時(shí)間少得多),運(yùn)行簡化的 CHKDSK 操作。
但是,請(qǐng)注意,運(yùn)行簡化的 CHKDSK 并不能修復(fù)可能存在的所有損壞。您仍需要在將來某個(gè)時(shí)間運(yùn)行完整的 CHKDSK,以確保所有可恢復(fù)的數(shù)據(jù)都已實(shí)際得到恢復(fù)。
另請(qǐng)注意,NTFS 在發(fā)生磁盤損壞后并不能保證用戶數(shù)據(jù)的完整性,即使您立即運(yùn)行了完整的 CHKDSK 操作。CHKDSK 可能無法恢復(fù)某些文件,而 CHKDSK 所恢復(fù)的某些文件可能內(nèi)部仍是損壞的。因此,通過執(zhí)行定期備份或使用某些其他的可靠的數(shù)據(jù)恢復(fù)方法來保護(hù)使命關(guān)鍵的數(shù)據(jù),仍然是極其重要的。
了解 CHKDSK 所采取的操作
CHKDSK 的活動(dòng)分為三個(gè)主要階段(在這三個(gè)階段中,CHKDSK 將檢查卷上的所有元數(shù)據(jù)),另外還有一個(gè)可選的第四階段。
元數(shù)據(jù)是“有關(guān)數(shù)據(jù)的數(shù)據(jù)”。元數(shù)據(jù)是文件系統(tǒng)的“系統(tǒng)開銷”,它跟蹤有關(guān)所有在卷上存儲(chǔ)的文件的信息。元數(shù)據(jù)包括有關(guān)以下方面的信息:給定文件的數(shù)據(jù)由哪些分配單元組成、哪些分配單元是可用的以及哪些分配單元包含壞扇區(qū)等。另一方面,文件包含的數(shù)據(jù)稱為“用戶數(shù)據(jù)”。NTFS 通過使用事務(wù)日志來保護(hù)它的元數(shù)據(jù)。用戶數(shù)據(jù)沒有以這種方式進(jìn)行保護(hù)。
階段 1:檢查文件在第一個(gè)階段,CHKDSK 會(huì)顯示一條消息,通知您 CHKDSK 正在驗(yàn)證文件,同時(shí)還顯示已完成的驗(yàn)證任務(wù)的百分比(范圍為從 0% 到 100%)。在此階段中,CHKDSK 將檢查卷的主文件表 (MFT) 中的各個(gè)文件記錄段。
MFT 中的特定文件記錄段唯一地標(biāo)識(shí) NTFS 卷上的各個(gè)文件和目錄。CHKDSK 在此階段顯示的“已完成百分比”是 CHKDSK 已驗(yàn)證的 MFT 的百分比。在此階段中,CHKDSK 將檢查各個(gè)文件記錄段的內(nèi)部一致性,并生成兩個(gè)位圖,一個(gè)表示正在使用的文件記錄段,另一個(gè)表示卷上正在使用的簇。
在此階段結(jié)束時(shí),CHKDSK 將會(huì)識(shí)別 MFT 內(nèi)部和整個(gè)卷上的已用空間和可用空間。NTFS 在其自身的位圖中跟蹤這些信息,該位圖存儲(chǔ)在磁盤上。CHKDSK 將它的結(jié)果與 NTFS 保持的位圖進(jìn)行比較。如果存在差異,將在 CHKDSK 輸出中記錄這些差異。例如,如果發(fā)現(xiàn)正在使用的文件記錄段損壞,則在 CHKDSK 位圖中,與該文件記錄段相關(guān)聯(lián)的磁盤簇將被標(biāo)記為“可用”,但在 NTFS 位圖中,它將被標(biāo)記為“使用中”。
階段 2:檢查索引在第二個(gè)階段,CHKDSK 會(huì)顯示一條消息,通知您 CHKDSK 正在驗(yàn)證索引,同時(shí)還顯示已完成的驗(yàn)證任務(wù)的百分比(范圍為從 0% 到 100%)。在此階段中,CHKDSK 將檢查卷上的各個(gè)索引。
索引實(shí)際上就是 NTFS 目錄。在此階段中,CHKDSK 顯示的“已完成百分比”是已檢查的卷目錄總數(shù)的百分比。在此階段中,CHKDSK 將檢查卷上的各個(gè)目錄,檢查內(nèi)部一致性,并驗(yàn)證 MFT 中的文件記錄段所代表的每個(gè)文件和目錄都至少由一個(gè)目錄引用。CHKDSK 確認(rèn)目錄中引用的每個(gè)文件或子目錄都實(shí)際作為有效的文件記錄段存在于 MFT 中,并且還檢查是否存在循環(huán)目錄引用。最后,CHKDSK 將確認(rèn)在文件的目錄項(xiàng)中,這些文件的時(shí)間戳和文件大小信息都是最新的。
在此階段結(jié)束時(shí),CHKDSK 將確保沒有“孤立”的文件,并且所有目錄項(xiàng)都用于合法的文件。孤立文件是指存在該文件的合法文件記錄段,但該文件卻沒有列在任何目錄中。如果相應(yīng)的目錄仍存在,則孤立文件通常可以恢復(fù)到正確的目錄中。如果正確的目錄已不存在,CHKDSK 將在根目錄中創(chuàng)建一個(gè)目錄,并將文件放入該目錄中。如果 CHKDSK 發(fā)現(xiàn)不再使用的文件記錄段的目錄項(xiàng),或者雖然仍在使用但并不與目錄中列出的文件相對(duì)應(yīng)的文件記錄段的目錄項(xiàng),CHKDSK 將直接刪除該文件記錄段的目錄項(xiàng)。
階段 3:檢查安全描述符在第三個(gè)階段,CHKDSK 會(huì)顯示一條消息,通知您 CHKDSK 正在驗(yàn)證安全描述符,同時(shí)還顯示已完成的驗(yàn)證任務(wù)的百分比(范圍為從 0% 到 100%)。在此階段中,CHKDSK 將檢查與卷上的文件或目錄相關(guān)聯(lián)的每個(gè)安全描述符。
安全描述符包含有關(guān)下列方面的信息:文件或目錄的所有權(quán)、文件或目錄的 NTFS 權(quán)限以及文件或目錄的審核。在此階段中,CHKDSK 顯示的“已完成百分比”是卷上已檢查的文件和目錄的百分比。CHKDSK 將驗(yàn)證各個(gè)安全描述符的結(jié)構(gòu)是否正常,并驗(yàn)證該結(jié)構(gòu)的內(nèi)部一致性。CHKDSK 并不驗(yàn)證列出的用戶或組實(shí)際上是否存在,也不驗(yàn)證所賦予的權(quán)限是否適當(dāng)。階段 4:檢查扇區(qū)如果 /R 開關(guān)生效,CHKDSK 將運(yùn)行第四個(gè)階段,以便在卷的可用空間中查找壞扇區(qū)。CHKDSK 將嘗試讀取卷上的每個(gè)扇區(qū),以確認(rèn)該扇區(qū)是否可用。即使不使用 /R 開關(guān),CHKDSK 也總是讀取與元數(shù)據(jù)相關(guān)聯(lián)的扇區(qū)。如果指定了 /R 開關(guān),將在 CHKDSK 的較早階段讀取與用戶數(shù)據(jù)關(guān)聯(lián)的扇區(qū)。
當(dāng) CHKDSK 找到不可讀的扇區(qū)時(shí),NTFS 會(huì)將包含該扇區(qū)的簇加入它的壞簇列表中。如果壞扇區(qū)正在使用,CHKDSK 將分配一個(gè)新的簇,以完成該壞簇的工作。如果您使用的是容錯(cuò)磁盤,NTFS 將恢復(fù)壞簇的數(shù)據(jù),并將這些數(shù)據(jù)寫入新分配的簇中。否則,新的簇中將填充某種模式的 0xFF 字節(jié)。
如果 NTFS 在正常運(yùn)行過程中遇到不可讀的扇區(qū),NTFS 將以與運(yùn)行 CHKDSK 時(shí)相同的方式重新映射這些扇區(qū)。因此,通常無須使用 /R 開關(guān)。但是,如果懷疑磁盤可能有壞扇區(qū),則使用 /R 開關(guān)就是一個(gè)掃描整個(gè)卷的簡便辦法。
了解 CHKDSK 的時(shí)間要求
前面對(duì) CHKDSK 的各個(gè)運(yùn)行階段的說明只是粗略概述了 CHKDSK 為驗(yàn)證 NTFS 卷的完整性而執(zhí)行的最重要任務(wù)。CHKDSK 還在各個(gè)階段中執(zhí)行許多額外的特定檢查,并在各個(gè)階段之間執(zhí)行幾種快速檢查。但是,即使是這樣的粗略概述也能夠提供一些基礎(chǔ)知識(shí),以便我們開始討論影響 CHKDSK 運(yùn)行所需時(shí)間的可變因素,以及討論 Windows XP 中可以使用的新增 /C 和 /I 開關(guān)的影響。
可變因素 1:“索引”階段在運(yùn)行 CHKDSK 的第一和第三階段(檢查文件和檢查安全描述符),“已完成百分比”指示器的進(jìn)度相對(duì)比較平滑。雖然未使用的文件記錄段需要的處理時(shí)間的確較少,而大型安全描述符的確需要較多的處理時(shí)間,但是總體說來“已完成百分比”相當(dāng)準(zhǔn)確地反映了該階段所需的實(shí)際時(shí)間。
不過,這一百分比/時(shí)間關(guān)系卻未必適用于第二階段,也就是 CHKDSK 檢查索引(NTFS 目錄)的那個(gè)階段。處理目錄所需的時(shí)間與該目錄中包含的文件和子目錄的數(shù)量密切相關(guān),但是在該階段中,“已完成百分比”僅與 CHKDSK 必須檢查的目錄數(shù)量有關(guān)。并沒有針對(duì)某些特定操作(例如,處理包含數(shù)量巨大的文件和子目錄的目錄)所需的時(shí)間進(jìn)行調(diào)整。除非卷上的目錄都包含大致相同數(shù)量的文件,否則該階段中顯示的“已完成百分比”將不會(huì)可靠地反映第二階段所需的實(shí)際時(shí)間。
更壞的情況是您可能陷入意外的 CHKDSK 過程,這時(shí) CHKDSK 的第二階段通常是需時(shí)最長的階段。
可變因素 2:卷的情況許多與卷的狀態(tài)有關(guān)的因素都會(huì)影響 CHKDSK 運(yùn)行所需的時(shí)間。用于預(yù)測在給定卷上運(yùn)行 CHKDSK 所需時(shí)間的公式必須考慮文件和目錄的數(shù)目、卷的總體碎片化程度(特別是 MTF 的碎片化程度)、文件名的格式(長名稱、8.3 格式名稱或混合型名稱)以及 CHKDSK 必須修復(fù)的實(shí)際損壞量等可變因素。
可變因素 3:硬件問題硬件問題也會(huì)影響 CHKDSK 運(yùn)行所需的時(shí)間??勺円蛩匕捎脙?nèi)存的數(shù)量、CPU 速度、磁盤速度等。
可變因素 4:CHKDSK 設(shè)置如果不使用 /R 開關(guān),則給定硬件平臺(tái)上與時(shí)間最密切的因素是該卷上的文件和目錄的數(shù)量,而不是卷的絕對(duì)大小。
例如,如果不使用 /R 開關(guān),則對(duì)于僅包含一個(gè)或兩個(gè)大型數(shù)據(jù)庫文件的 50 GB 卷,CHKDSK 的運(yùn)行可能只需要幾秒鐘。如果使用 /R 開關(guān),CHKDSK 將必須讀取并驗(yàn)證卷上的每個(gè)扇區(qū),對(duì)于大型卷而言,這會(huì)顯著增加運(yùn)行所需的時(shí)間。另一方面,如果一個(gè)相對(duì)較小的卷包含幾十萬甚至幾百萬個(gè)小文件,則運(yùn)行 CHKDSK 可能需要數(shù)小時(shí),無論您是否指定 /R 開關(guān)。
預(yù)測 CHKDSK 的時(shí)間要求
如上所述,運(yùn)行 CHKDSK 所需的時(shí)間從幾秒到幾天不等,這要由您的具體情況決定。預(yù)測對(duì)給定卷運(yùn)行 CHKDSK 所需時(shí)間的最好辦法是:在系統(tǒng)利用率較低的時(shí)段,以只讀模式實(shí)際進(jìn)行一次測試運(yùn)行。
但是,出于以下原因,必須謹(jǐn)慎使用此方法:
在只讀模式下,如果在較早階段中遇到錯(cuò)誤,CHKDSK 會(huì)在完成所有三個(gè)階段之前退出,并很可能誤報(bào)錯(cuò)誤。例如,如果 NTFS 恰好在 CHKDSK 檢查磁盤時(shí)修改了磁盤上的區(qū)域,則 CHKDSK 可能會(huì)報(bào)告磁盤損壞。要正確地進(jìn)行驗(yàn)證,卷必須處于靜止?fàn)顟B(tài),而保證卷處于靜止?fàn)顟B(tài)的唯一方法就是鎖定卷。CHKDSK 僅當(dāng)您指定了 /F 開關(guān)(或 /R 開關(guān),它會(huì)隱含指定 /F)時(shí)才會(huì)鎖定卷。在只讀模式下,要使 CHKDSK 完成所有運(yùn)行階段,可能需要多次運(yùn)行 CHKDSK。
CHKDSK 對(duì) CPU 和磁盤的占用率都很高。運(yùn)行 CHKDSK 所需的時(shí)間要受到系統(tǒng)負(fù)載的大小的影響,還要受到 CHKDSK 是聯(lián)機(jī)運(yùn)行還是在 Windows XP 啟動(dòng)序列內(nèi)運(yùn)行的影響。哪個(gè)因素成為瓶頸要視硬件配置而定,但是如果在只讀模式下運(yùn)行 CHKDSK 時(shí) CPU 利用率或磁盤 I/O 量很高,則 CHKDSK 的運(yùn)行時(shí)間將變長。此外,Autochk.exe 的運(yùn)行環(huán)境與 Chkdsk.exe 不同。通過 Autochk.exe 運(yùn)行 CHKDSK 使 CHKDSK 能夠獨(dú)占 CPU 和 I/O 資源,但同時(shí)還會(huì)使 CHKDSK 無法使用虛擬內(nèi)存。雖然 Autochk.exe 一般比 Chkdsk.exe 運(yùn)行速度更快,但如果計(jì)算機(jī)的可用 RAM 相對(duì)較少,Autochk.exe 可能實(shí)際上需要更長時(shí)間。
修復(fù)損壞會(huì)增加所需的時(shí)間。在只讀模式下,僅當(dāng) CHKDSK 沒有發(fā)現(xiàn)任何重大損壞時(shí),才能完整運(yùn)行。如果磁盤僅有少量損壞,那么修復(fù)這些問題不會(huì)顯著增加僅僅運(yùn)行 CHKDSK 所需的時(shí)間。但如果 CHKDSK 發(fā)現(xiàn)了重大損壞,例如發(fā)生了嚴(yán)重的硬件故障,則運(yùn)行 CHKDSK 所需的時(shí)間將隨 CHKDSK 必須修復(fù)的損壞文件的數(shù)量而成比例地增加。在極端情況下,這可能會(huì)成倍地增加 CHKDSK 運(yùn)行所需的時(shí)間。