chkdsk

chkdsk

chk徠dsk的全稱是checkdisk,就是磁碟檢查的意思。這個東西是當你的系統崩潰或者非法關機的時候由系統來調用檢查磁碟的,也可以由手工通過命令行調用來檢查某一個磁碟分區。該工具基於被檢測的分區所用的文件系統,創建和顯示磁碟的狀態報告。Chkdsk 還會列出並糾正磁碟上的錯誤。如果不帶任何參數,chkdsk 將顯示當前驅動器中的磁碟狀態。

不建議在使用 /f 開關時中斷 chkdsk 進程。不保證中斷 chkdsk 進程后的磁碟完整性。

簡介


Chkdsk.exe 是 CHKDSK 程序的命令行界面,該程序用於驗證文件系統的邏輯完整性。如果 CHKDSK 在文件系統數據中發現存在邏輯不一致性,CHKDSK 將執行可修復該文件系統數據的操作(前提是這些數據未處於只讀模式)。

語法


chkdsk [volume:][[Path] FileName] [/f] [/v] [/r] [/x] [/c] [/l[:size]]

參數


volume:
指定驅動器號(冒號分隔)、裝入點或卷名。
[Path} FileName]
指定需要 chkdsk 檢查碎片整理的文件或文件集的位置和名稱。使用通配符(* 和 ?)可以指定多個文件。
cdkdsk運行界面
cdkdsk運行界面
/f 修復磁碟上的錯誤。必須鎖定磁碟。如果 chkdsk 無法鎖定驅動器,則會顯示一條消息,詢問您是否希望在下次重新啟動計算機時檢查該驅動器。
/v
當檢查磁碟時,顯示所有目錄中每個文件的名稱。
/r
找到壞扇區並恢復可讀取的信息。必須鎖定磁碟。
/x
僅在 NTFS 上使用。如果必要,首先強制卸載卷。該驅動器的所有打開句柄都無效。/x 還包含了/f 的功能。
磁碟被佔用提示
磁碟被佔用提示
/i
僅隨 NTFS 使用。對索引項進行強度較小的檢查,降低運行 chkdsk 的所用時間量。
/c
僅隨 NTFS 使用。跳過文件夾結構中的周期檢查,減少運行 chkdsk 所需的時間量。
/l[:size]
僅隨 NTFS 使用。將日誌文件的大小更改為由用戶輸入的大小。如果省略該參數,則 /l 會顯示當前日誌文件的大小。
/?
在命令提示符顯示幫助。
註釋

運行


chkdsk工具在系統的System32目錄中,它需要在Windows系統的命令提示符窗口中運行,並且要在固定磁碟上運行 chkdsk 命令,您必須是該 Administrators 組的成員。
重新啟動時檢查鎖定的驅動器
如果希望 chkdsk 修復磁碟錯誤,則此前不能打開該驅動器上的文件。如果有文件打開,會顯示下述錯誤消息:
Chkdsk工具檢查NTFS分區(chkdsk e:/f)
Chkdsk工具檢查NTFS分區(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)
如果選擇下次重新啟動計算機時檢查該驅動器,則重新啟動計算機后 chkdsk 會自動檢查該驅動器並修復錯誤。如果該驅動器分區為啟動分區,則 chkdsk 在檢查完該驅動器後會自動重新啟動計算機。
Windows XP中手動調用Chkdsk工具:
在運行中輸入Chkdsk X: (後接參數,可參見上述參數解釋),回車
圖形界面的磁碟檢查工具
圖形界面的磁碟檢查工具
比如輸入chkdsk e: /f /r 回車運行就表示修復e盤上的錯誤,並找到壞扇區恢復可讀取的信息
在Windows XP中文版環境下chkdsk工具是以中文語言運行的
上述運行方式是命令行方式,還能通過圖形界面程序運行,但顯示內容簡略。
打開我的電腦,右鍵單擊需要檢測的磁碟-屬性-工具選項卡-開始檢查
檢查選項:
自動修復文件系統的錯誤(A):修復磁碟上的錯誤。必須鎖定磁碟,如果磁碟被佔用,則會顯示是否在下次開機時檢查的選項。相當於命令行中 /f 命令掃描並試圖恢復壞扇區(N):找到壞扇區並恢復可讀取的信息。必須鎖定磁碟。相當於命令行中 /r 命令

報告磁碟錯誤


chkdsk 命令會檢查磁碟空間和文件分配表 (FAT)以及 NTFS 文件系統的使用情況。Chkdsk 在狀態報告中提供特定於每個文件系統的信息。狀態報告顯示文件系統中找到的錯誤。在活動分區上運行 chkdsk 時,如果未含 /f 命令行選項,則它可能會因為無法鎖定該驅動器而報告虛假信息。應該不定期使用 chkdsk 檢查每個磁碟上的錯誤。

修復磁碟錯誤


只有指定 /f 命令行選項,chkdsk 命令才修復磁碟錯誤。Chkdsk 必須可以鎖定驅動器以糾正錯誤。由於修復通常會更改磁碟的文件分配表,有時還會丟失數據,所以 chkdsk 會首先發送如下所示的確認消息:
10 lost allocation units found in 3 chains.
Convert lost chains to files?
如果按 Y,Windows 會在根目錄中將所有丟失鏈保存在一個名為 Filennnn.chk 的文件中。chkdsk 結束后,可以查看這些文件是否包含了所需的數據。如果按 N,Windows 會修復磁碟,但對於丟失的分配單元,它不保存其內容。
如果不使用 /f 命令行選項,則在有文件需要修復時,chkdsk 會發送消息,但它不修復任何錯誤。
如果在大磁碟(例如,70 GB)或有大量文件(數百萬)的磁碟上使用 chkdsk /f,這可能要花很長時間(比如說,數天)才能完成。因為 chkdsk 直到工作完成它才會交出控制權,所以計算機在這段時間內將不可用。
檢查 FAT 磁碟
Windows 以下列格式顯示 FAT 磁碟的 chkdsk 狀態報告:
檢查 NTFS 磁碟
Windows 以下列格式顯示 NTFS 磁碟的 chkdsk 狀態報告:
存在打開文件的情況下使用 chkdsk
如果該驅動器上有打開的文件,則指定 /f 命令行選項后,chkdsk 會發送錯誤消息。如果未指定 /f 命令行選項並且存在打開的文件,則 chkdsk 會報告磁碟上丟失的分配單元。如果打開的文件沒有記錄在文件分配表時,可能會發生這種情況。如果 chkdsk 報告大量分配單元丟失,可以考慮修復該磁碟。
查找物理磁碟錯誤
使用 /r 命令行選項可查找文件系統中的物理磁碟錯誤。有關使用 recover 修復物理性損壞文件的信息,請參閱“”。
報告磁碟壞扇區
在磁碟第一次準備運行時,chkdsk 報告的壞扇區標記為損壞。它們不會造成危險。

退出碼


下表列出了 chkdsk 完成任務后報告的退出碼。
退出碼 說明
0 沒有發現錯誤。
1 錯誤已找到並修復。
2 已執行清理磁碟(例如碎片收集),或者因為沒有指定 /f 而未執行清理磁碟。
3 由於未指定 /f 選項,無法檢查磁碟,錯誤不能修復或錯誤未修復。
故障恢復控制台提供了帶有不同參數的 chkdsk 命令。
範例
如果要檢查驅動器 D 中的磁碟,並且希望 Windows 修復錯誤,請鍵入:
chkdsk d:/f
如果遇到錯誤,chkdsk 會暫停並顯示消息。Chkdsk 完成任務時會顯示列有磁碟狀態的報告。除非 chkdsk 已完成任務,否則無法打開指定驅動器上的任何文件。
在 FAT 磁碟上,要檢查當前目錄中所有文件的不相鄰塊,請鍵入:
chkdsk *.*
Chkdsk 顯示狀態報告,然後列出符合具有不相鄰塊條件的文件。
XOX

使用指南


使用CHKDSK命令的注意事項
(1)系統存在打開的文件時
當有文件打開時請不要使用CHKDSK。因為CHKDSK是假定磁碟文件處於關閉狀態而設計的。當有文件打開時,相應的MS-DOS將會修改文件分配表和目錄結構。這種改變並不一定立即進行,文件分配表和目錄結構的改變發生在不同時刻。因此如果磁碟上文件打開時運行CHKDSK,就會把目錄結構和文件分配表的不一致解釋為出錯,從而導致數據丟失或文件系統的破壞。因此,在運行其它程序,如Microsoft Windows時,千萬不要運行CHKDSK。
(2)CHKDSK不能用於分配的驅動器和網路。
CHKDSK不能用於由SUBST命令形成的驅動器工作,也不能用於網路驅動器上的磁碟檢查。
(3)物理磁碟錯誤
CHKDSK命令只能找到文件系統中的邏輯錯誤,而不能查找物理磁碟錯誤。要查找物理磁碟錯誤,請使用SCANDISK程序。
(4)壞磁碟扇區
CHKDSK報告中將壞扇區標記上“bad”,SCANDISK和其它物理磁碟錯誤修正程序也將壞扇區標記為“bad”,因此壞扇區不會造成危害。
(5)交叉鏈接的文件
如果有兩個文件或目錄共用同一磁碟空間的記錄,CHKDSK會報告有交叉鏈接文件。如果CHKDSK發現有交叉鏈接文件存在,會顯示類似如下信息:
is徠 cross linked on allocation unit
CHKDSK不會修補交叉鏈接文件,即使指定了/F項。要修復交叉鏈接文件,需要運行SCANDISK程序,或者進行手工修復,然後複製到指定的文件中並刪除原文件。
新增開關 /C 和 /I 的說明
本文介紹了兩個新的開關: /C 開關和 /I 開關,它們包含在 Windows XP 中的 CHKDSK 程序中。這些開關可用於更好地管理由於運行 CHKDSK 或 AUTOCHK 而造成的停機時間。
/C 和 /I 開關僅對使用 NTFS 文件系統格式化的驅動器有效。這兩個新的開關都指示 CHKDSK 常式跳過某些 CHKDSK 原本要執行以驗證 NTFS 數據結構完整性的操作。
如果聯機運行 CHKDSK,則實際執行驗證的代碼位於實用程序 DLL(例如 Untfs.dll 和 Ufat.dll)中。CHKDSK 調用的驗證常式與通過 Windows 資源管理器或磁碟管理圖形用戶界面驗證卷時所運行的常式相同。
但是,如果將 CHKDSK 計劃為在計算機重新啟動時運行,則包含驗證代碼的二進位模塊為 Autochk.exe,它是一個 Windows 固有程序。由於 Autochk.exe 在計算機啟動序列中靠前的位置運行,Autochk.exe 不具有虛擬內存或其他 Win32 服務的優點。
Autochk.exe 與 Chkdsk.exe 實用程序 DLL 生成相同種類的文本輸出。Autochk.exe 在啟動過程中顯示這些文本輸出,並在應用程序事件日誌中記錄事件。所記錄的事件信息中包含事件日誌的數據緩衝區所能容納的最大數量的文本輸出。
由於 Autochk.exe 和 Chkdsk.exe 實用程序 DLL 中的驗證代碼都基於相同的源代碼,因此本文的其餘部分將使用術語“CHKDSK”來統稱 Autochk.exe 和 Chkdsk.exe。與此類似,由於本文僅討論那些與 NTFS 卷有關的 CHKDSK 更改,因此,任何“CHKDSK 如何如何”的語句的意思都是“CHKDSK 在 NTFS 卷上運行時如何如何”。
請注意,如果您使用 /C 和 /I 開關,則即使運行了 CHKDSK,卷仍可能是損壞的。因此,建議您僅在必須將停機時間降至最短的情況下才使用這些開關。這些開關適用於以下場合:必須在特別大的卷上運行 CHKDSK,並且需要靈活地管理所造成的停機時間。
要了解何時適於使用 /C 和 /I 開關,您需要對某些內部的 NTFS 數據結構、可能發生的損壞的種類、CHKDSK 在驗證卷時採取的操作以及迴避 CHKDSK 的常規驗證步驟可能有哪些後果等有一些基本的了解。
/C 和 /I 開關的價值在卷上檢測到磁碟損壞時,有三個基本的應對選擇。
第一個選擇是什麼都不做。在需要全天 24 小時聯機的使命關鍵伺服器上,這通常是必要的選擇。缺點是相對較輕的損壞會逐漸發展為重大的損壞。因此,僅當使伺服器保持聯機比確保損壞卷上所存儲數據的完整性更為重要時,才應考慮此選擇。在運行 CHKDSK 之前,損壞卷上的所有數據都應當被看作是“危險”的。
第二個選擇是運行完整的 CHKDSK 操作,以修復所有文件系統數據並通過自動進程還原所有可以恢復的用戶數據。但是,運行完整的 CHKDSK 操作可能會在不適當的時機使得使命關鍵伺服器停機數小時。第三個選擇是通過使用 /C 和 /I 開關中的一個或兩個,修復可能會發展為更嚴重問題的損壞類型(這比完整 CHKDSK 所需的時間少得多),運行簡化的 CHKDSK 操作。
但是,請注意,運行簡化的 CHKDSK 並不能修復可能存在的所有損壞。您仍需要在將來某個時間運行完整的 CHKDSK,以確保所有可恢復的數據都已實際得到恢復。
另請注意,NTFS 在發生磁碟損壞后並不能保證用戶數據的完整性,即使您立即運行了完整的 CHKDSK 操作。CHKDSK 可能無法恢復某些文件,而 CHKDSK 所恢復的某些文件可能內部仍是損壞的。因此,通過執行定期備份或使用某些其他的可靠的數據恢復方法來保護使命關鍵的數據,仍然是極其重要的。
了解 CHKDSK 所採取的操作
CHKDSK 的活動分為三個主要階段(在這三個階段中,CHKDSK 將檢查卷上的所有元數據),另外還有一個可選的第四階段。
元數據是“有關數據的數據”。元數據是文件系統的“系統開銷”,它跟蹤有關所有在卷上存儲的文件的信息。元數據包括有關以下方面的信息:給定文件的數據由哪些分配單元組成、哪些分配單元是可用的以及哪些分配單元包含壞扇區等。另一方面,文件包含的數據稱為“用戶數據”。NTFS 通過使用事務日誌來保護它的元數據。用戶數據沒有以這種方式進行保護。
階段 1:檢查文件在第一個階段,CHKDSK 會顯示一條消息,通知您 CHKDSK 正在驗證文件,同時還顯示已完成的驗證任務的百分比(範圍為從 0% 到 100%)。在此階段中,CHKDSK 將檢查卷的主文件表 (MFT) 中的各個文件記錄段。
MFT 中的特定文件記錄段唯一地標識 NTFS 卷上的各個文件和目錄。CHKDSK 在此階段顯示的“已完成百分比”是 CHKDSK 已驗證的 MFT 的百分比。在此階段中,CHKDSK 將檢查各個文件記錄段的內部一致性,並生成兩個點陣圖,一個表示正在使用的文件記錄段,另一個表示卷上正在使用的簇。
在此階段結束時,CHKDSK 將會識別 MFT 內部和整個卷上的已用空間和可用空間。NTFS 在其自身的點陣圖中跟蹤這些信息,該點陣圖存儲在磁碟上。CHKDSK 將它的結果與 NTFS 保持的點陣圖進行比較。如果存在差異,將在 CHKDSK 輸出中記錄這些差異。例如,如果發現正在使用的文件記錄段損壞,則在 CHKDSK 點陣圖中,與該文件記錄段相關聯的磁碟簇將被標記為“可用”,但在 NTFS 點陣圖中,它將被標記為“使用中”。
階段 2:檢查索引在第二個階段,CHKDSK 會顯示一條消息,通知您 CHKDSK 正在驗證索引,同時還顯示已完成的驗證任務的百分比(範圍為從 0% 到 100%)。在此階段中,CHKDSK 將檢查卷上的各個索引。
索引實際上就是 NTFS 目錄。在此階段中,CHKDSK 顯示的“已完成百分比”是已檢查的卷目錄總數的百分比。在此階段中,CHKDSK 將檢查卷上的各個目錄,檢查內部一致性,並驗證 MFT 中的文件記錄段所代表的每個文件和目錄都至少由一個目錄引用。CHKDSK 確認目錄中引用的每個文件或子目錄都實際作為有效的文件記錄段存在於 MFT 中,並且還檢查是否存在循環目錄引用。最後,CHKDSK 將確認在文件的目錄項中,這些文件的時間戳和文件大小信息都是最新的。
在此階段結束時,CHKDSK 將確保沒有“孤立”的文件,並且所有目錄項都用於合法的文件。孤立文件是指存在該文件的合法文件記錄段,但該文件卻沒有列在任何目錄中。如果相應的目錄仍存在,則孤立文件通常可以恢復到正確的目錄中。如果正確的目錄已不存在,CHKDSK 將在根目錄中創建一個目錄,並將文件放入該目錄中。如果 CHKDSK 發現不再使用的文件記錄段的目錄項,或者雖然仍在使用但並不與目錄中列出的文件相對應的文件記錄段的目錄項,CHKDSK 將直接刪除該文件記錄段的目錄項。
階段 3:檢查安全描述符在第三個階段,CHKDSK 會顯示一條消息,通知您 CHKDSK 正在驗證安全描述符,同時還顯示已完成的驗證任務的百分比(範圍為從 0% 到 100%)。在此階段中,CHKDSK 將檢查與卷上的文件或目錄相關聯的每個安全描述符。
安全描述符包含有關下列方面的信息:文件或目錄的所有權、文件或目錄的 NTFS 許可權以及文件或目錄的審核。在此階段中,CHKDSK 顯示的“已完成百分比”是卷上已檢查的文件和目錄的百分比。CHKDSK 將驗證各個安全描述符的結構是否正常,並驗證該結構的內部一致性。CHKDSK 並不驗證列出的用戶或組實際上是否存在,也不驗證所賦予的許可權是否適當。階段 4:檢查扇區如果 /R 開關生效,CHKDSK 將運行第四個階段,以便在卷的可用空間中查找壞扇區。CHKDSK 將嘗試讀取卷上的每個扇區,以確認該扇區是否可用。即使不使用 /R 開關,CHKDSK 也總是讀取與元數據相關聯的扇區。如果指定了 /R 開關,將在 CHKDSK 的較早階段讀取與用戶數據關聯的扇區。
當 CHKDSK 找到不可讀的扇區時,NTFS 會將包含該扇區的簇加入它的壞簇列表中。如果壞扇區正在使用,CHKDSK 將分配一個新的簇,以完成該壞簇的工作。如果您使用的是容錯磁碟,NTFS 將恢復壞簇的數據,並將這些數據寫入新分配的簇中。否則,新的簇中將填充某種模式的 0xFF 位元組。
如果 NTFS 在正常運行過程中遇到不可讀的扇區,NTFS 將以與運行 CHKDSK 時相同的方式重新映射這些扇區。因此,通常無須使用 /R 開關。但是,如果懷疑磁碟可能有壞扇區,則使用 /R 開關就是一個掃描整個卷的簡便辦法。
了解 CHKDSK 的時間要求
前面對 CHKDSK 的各個運行階段的說明只是粗略概述了 CHKDSK 為驗證 NTFS 卷的完整性而執行的最重要任務。CHKDSK 還在各個階段中執行許多額外的特定檢查,並在各個階段之間執行幾種快速檢查。但是,即使是這樣的粗略概述也能夠提供一些基礎知識,以便我們開始討論影響 CHKDSK 運行所需時間的可變因素,以及討論 Windows XP 中可以使用的新增 /C 和 /I 開關的影響。
可變因素 1:“索引”階段在運行 CHKDSK 的第一和第三階段(檢查文件和檢查安全描述符),“已完成百分比”指示器的進度相對比較平滑。雖然未使用的文件記錄段需要的處理時間的確較少,而大型安全描述符的確需要較多的處理時間,但是總體說來“已完成百分比”相當準確地反映了該階段所需的實際時間。
不過,這一百分比/時間關係卻未必適用於第二階段,也就是 CHKDSK 檢查索引(NTFS 目錄)的那個階段。處理目錄所需的時間與該目錄中包含的文件和子目錄的數量密切相關,但是在該階段中,“已完成百分比”僅與 CHKDSK 必須檢查的目錄數量有關。並沒有針對某些特定操作(例如,處理包含數量巨大的文件和子目錄的目錄)所需的時間進行調整。除非卷上的目錄都包含大致相同數量的文件,否則該階段中顯示的“已完成百分比”將不會可靠地反映第二階段所需的實際時間。
更壞的情況是您可能陷入意外的 CHKDSK 過程,這時 CHKDSK 的第二階段通常是需時最長的階段。
可變因素 2:卷的情況許多與卷的狀態有關的因素都會影響 CHKDSK 運行所需的時間。用於預測在給定卷上運行 CHKDSK 所需時間的公式必須考慮文件和目錄的數目、卷的總體碎片化程度(特別是 MTF 的碎片化程度)、文件名的格式(長名稱、8.3 格式名稱或混合型名稱)以及 CHKDSK 必須修復的實際損壞量等可變因素。
可變因素 3:硬體問題硬體問題也會影響 CHKDSK 運行所需的時間。可變因素包括可用內存的數量、CPU 速度、磁碟速度等。
可變因素 4:CHKDSK 設置如果不使用 /R 開關,則給定硬體平台上與時間最密切的因素是該卷上的文件和目錄的數量,而不是卷的絕對大小。
例如,如果不使用 /R 開關,則對於僅包含一個或兩個大型資料庫文件的 50 GB 卷,CHKDSK 的運行可能只需要幾秒鐘。如果使用 /R 開關,CHKDSK 將必須讀取並驗證卷上的每個扇區,對於大型卷而言,這會顯著增加運行所需的時間。另一方面,如果一個相對較小的卷包含幾十萬甚至幾百萬個小文件,則運行 CHKDSK 可能需要數小時,無論您是否指定 /R 開關。
預測 CHKDSK 的時間要求
如上所述,運行 CHKDSK 所需的時間從幾秒到幾天不等,這要由您的具體情況決定。預測對給定卷運行 CHKDSK 所需時間的最好辦法是:在系統利用率較低的時段,以只讀模式實際進行一次測試運行。
但是,出於以下原因,必須謹慎使用此方法:
• 在只讀模式下,如果在較早階段中遇到錯誤,CHKDSK 會在完成所有三個階段之前退出,並很可能誤報錯誤。例如,如果 NTFS 恰好在 CHKDSK 檢查磁碟時修改了磁碟上的區域,則 CHKDSK 可能會報告磁碟損壞。要正確地進行驗證,卷必須處於靜止狀態,而保證卷處於靜止狀態的唯一方法就是鎖定卷。CHKDSK 僅當您指定了 /F 開關(或 /R 開關,它會隱含指定 /F)時才會鎖定卷。在只讀模式下,要使 CHKDSK 完成所有運行階段,可能需要多次運行 CHKDSK。
• CHKDSK 對 CPU 和磁碟的佔用率都很高。運行 CHKDSK 所需的時間要受到系統負載的大小的影響,還要受到 CHKDSK 是聯機運行還是在 Windows XP 啟動序列內運行的影響。哪個因素成為瓶頸要視硬體配置而定,但是如果在只讀模式下運行 CHKDSK 時 CPU 利用率或磁碟 I/O 量很高,則 CHKDSK 的運行時間將變長。此外,Autochk.exe 的運行環境與 Chkdsk.exe 不同。通過 Autochk.exe 運行 CHKDSK 使 CHKDSK 能夠獨佔 CPU 和 I/O 資源,但同時還會使 CHKDSK 無法使用虛擬內存。雖然 Autochk.exe 一般比 Chkdsk.exe 運行速度更快,但如果計算機的可用 RAM 相對較少,Autochk.exe 可能實際上需要更長時間。
• 修復損壞會增加所需的時間。在只讀模式下,僅當 CHKDSK 沒有發現任何重大損壞時,才能完整運行。如果磁碟僅有少量損壞,那麼修復這些問題不會顯著增加僅僅運行 CHKDSK 所需的時間。但如果 CHKDSK 發現了重大損壞,例如發生了嚴重的硬體故障,則運行 CHKDSK 所需的時間將隨 CHKDSK 必須修復的損壞文件的數量而成比例地增加。在極端情況下,這可能會成倍地增加 CHKDSK 運行所需的時間。