檢查,如果使用腳本還可以更準(zhǔn)確地控制何時(shí)在卷上進(jìn)行文件系統(tǒng)檢查。要掌握磁盤(pán)掃描特點(diǎn),需要靈活使用下面相互關(guān)聯(lián)的3個(gè)工具:Chkdsk.exe、 Chkntfs.exe 以及Autochk.exe。讓我們先來(lái)簡(jiǎn)單認(rèn)識(shí)一下他們。
chkdsk.exe
檢查硬盤(pán)驅(qū)動(dòng)器的完整性,檢查磁盤(pán)和修復(fù)文件系統(tǒng)就靠它了。chkdsk.exe 同時(shí)可以恢復(fù)文件系統(tǒng)錯(cuò)誤, 并可以試圖恢復(fù)壞扇區(qū),如果無(wú)法修復(fù)就標(biāo)記壞扇區(qū),以避免文件被誤寫(xiě)入導(dǎo)致丟失。
Chkntfs.exe
顯示文件系統(tǒng)類型、文件系統(tǒng)“臟字位”狀態(tài),以及手工安排啟動(dòng)時(shí)運(yùn)行 Chkdsk進(jìn)行卷檢查,或取消所 有安排的檢查項(xiàng)目等。
Autochk.exe
查找每個(gè)卷上的“臟字位”,以及 Chkdsk /F 和 Chkntfs /X 或 /C 所作的注冊(cè)表設(shè)置,決定是檢查卷, 還是跳過(guò)檢查。它可以區(qū)分是手工安排的卷檢查,還是由于文件系統(tǒng)發(fā)現(xiàn)卷處于“臟”狀態(tài)而自動(dòng)進(jìn)行卷檢查 ,并會(huì)把相應(yīng)的消息寫(xiě)入應(yīng)用程序事件日志。該命令不能在 WIN32 模式下運(yùn)行。 一、在系統(tǒng)運(yùn)行時(shí)強(qiáng)制進(jìn)行卷檢查
安裝 Windows2000/XP 后,“系統(tǒng)工具”文件夾中不顯示磁盤(pán)掃描命令。不是沒(méi)有了,具體這樣做:
雙擊我的電腦,然后右鍵單擊要檢查的硬盤(pán)驅(qū)動(dòng)器。
單擊屬性,然后單擊工具。
在查錯(cuò)下,單擊開(kāi)始檢查。
這樣就可以在 Windows 中檢查硬盤(pán)驅(qū)動(dòng)器的完整性了。
或者到命令提示符下執(zhí)行CHKDSK /X 命令。
/X 是一個(gè)新的命令參數(shù),它運(yùn)行 Chkdsk /F,并強(qiáng)制執(zhí)行卷卸除,關(guān)閉非系統(tǒng)卷上打開(kāi)的文件句柄,以 便立即對(duì)卷進(jìn)行檢查。這樣,要運(yùn)行 Chkdsk 并修復(fù)卷,就不必重新啟動(dòng)。
二、安排在下一次重新啟動(dòng)時(shí)進(jìn)行卷檢查
Autochk 通過(guò)有2個(gè)因素控制是否進(jìn)行卷檢查或跳過(guò)檢查。一個(gè)是當(dāng)文件系統(tǒng)檢測(cè)到問(wèn)題時(shí),系統(tǒng)自己設(shè)置 的“臟字位”,設(shè)置臟字位的的目的就是為了在下次啟動(dòng)時(shí)對(duì)卷進(jìn)行檢查。 另一個(gè)是人工安排,既用 Chkdsk /F 和 Chkntfs /X 或 /C 所作的注冊(cè)表設(shè)置。通過(guò) Chkntfs volume:命令可以查詢文件系統(tǒng)類型、文件系統(tǒng) “字位”狀態(tài),以及是否已手工安排啟動(dòng)時(shí)運(yùn)行 Chkdsk 進(jìn)行卷檢查等信息。
Autochk 在確定啟動(dòng)時(shí)檢查哪些卷所使用的注冊(cè)表項(xiàng)為:
Hkey_local_machine\System\CurrentControlSet\Control\Session Manager\BootExecute:REG_MULTI_SZ: autocheck autochk *
這是 Autochk 的默認(rèn)設(shè)置,也是使用 Chkntfs /d 安排啟動(dòng)時(shí)檢查所有卷所得到的結(jié)果。
下面通過(guò)設(shè)置或重設(shè)注冊(cè)表,來(lái)控制 Autochk。
命令 BootExecute鍵植
Chkdsk C: /F autochk /p \??\C:
Chkdsk C:\mountpoint /F Autocheck autochk /p \??\VOLUME{GUID}
Chkntfs D: E: /X Autocheck autochk /k:D /k:E *
Chkntfs G: /C Autocheck autochk /m \??\G:
注解:
/P \??\Volume: 安排 Chkdsk 無(wú)條件地運(yùn)行來(lái)檢查卷。
/p \??\VOLUME{GUID} 安排 Chkdsk 無(wú)條件地運(yùn)行來(lái)檢查卷安裝點(diǎn)。
/k:Volume * 不對(duì)卷執(zhí)行 Chkdsk 檢查。
/m \??\Volume: 讓 Autochk 僅查找卷上的臟字位,如果已設(shè)置臟字位,則運(yùn)行 Chkdsk。
另外,Chkntfs /T:time: 在默認(rèn)情況下,開(kāi)機(jī)時(shí)掃描每個(gè)分區(qū)前會(huì)等待10秒鐘,用戶此時(shí)可以按任意鍵 跳過(guò)掃描繼續(xù)啟動(dòng)。該參數(shù)就是用來(lái)設(shè)置等待時(shí)間的,即將Autochk 超時(shí)值改為指定時(shí)間(秒數(shù)),如果沒(méi)有指定時(shí)間,則顯示當(dāng)前設(shè)置。系統(tǒng)在注冊(cè)表項(xiàng) key_local_machine\System\CurrentControlSet\Control\SessionManager\下增加一個(gè)鍵:AutoChkTimeOut,類型為 REG_DWORD,數(shù)值為當(dāng)前設(shè)置的超時(shí)值。 三、用腳本從程序中安排卷的修復(fù)日程
由于可以通過(guò)設(shè)置或重設(shè)注冊(cè)表,來(lái)控制 Autochk,因此可使用腳本,從程序中安排卷的修復(fù)日程。
在記事本程序中,使用.VBS文件擴(kuò)展名存儲(chǔ)相應(yīng)文件(例如:MyScript.vbs)。同時(shí),建議您在一個(gè)公共文 件夾(例如:C:\Scripts)中保存這些腳本。打開(kāi)命令行窗口。如果需要,使用cd命令切換到用以存儲(chǔ)腳本的 文件夾中。在命令行窗口中,輸入csript 命令并在其后跟隨腳本名稱。
例如:
cscript myscript.vbs
1、修改 AutoChk 的 Timeout 值
為 Autochk.exe 設(shè)定自動(dòng)延遲時(shí)間為 30 秒。適用于 Windows XP 或 Windows 2003 Server。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colAutoChkSettings = objWMIService.ExecQuery _
("Select * from Win32_AutochkSetting")
For Each objAutoChkSetting in colAutoChkSettings
objAutoChkSetting.UserInputDelay = 30
objAutoChkSetting.Put_
Next
2、防止 AutoChk 在開(kāi)機(jī)時(shí)自動(dòng)運(yùn)行
即使電腦下次開(kāi)機(jī)時(shí),就算 C盤(pán)的 "字位" 已被設(shè)定, Autochk 也不會(huì)對(duì)C磁盤(pán)執(zhí)行檢查。適用于 Windows XP 或 Windows 2003 Server。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ExcludeFromAutoChk(Array("C:"))
Wscript.Echo errReturn
3、執(zhí)行 ChkDsk
對(duì)電腦的D盤(pán)執(zhí)行ChkDks.exe。適用于 Windows XP 或 Windows 2003 Server。
Const FIX_ERRORS = True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDisk = objService.Get("Win32_LogicalDisk.DeviceID='D:'")
errReturn = objDisk.ChkDsk(FIX_ERRORS)
Wscript.Echo errReturn
4、安排在電腦下一次重新啟動(dòng)時(shí),對(duì) C 盤(pán)執(zhí)行 Autochk.exe。適用于 Windows XP 或
Windows 2003 Server 。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ScheduleAutoChk(Array("C:"))
Wscript.Echo errReturn 四、幾點(diǎn)重要說(shuō)明
1、開(kāi)機(jī)時(shí)按下某個(gè)鍵跳過(guò) Autochk
如果安排 Chkdsk 在啟動(dòng)時(shí)運(yùn)行以檢查某個(gè)卷,但實(shí)際啟動(dòng)時(shí)決定按下某個(gè)鍵跳過(guò)Autochk,則 Autochk 將 不會(huì)檢查該卷,并刪除相應(yīng)的注冊(cè)表項(xiàng),在以后,Autochk也不會(huì)檢查該卷。
2、Autochk應(yīng)用程序事件日志
當(dāng) Autochk 在啟動(dòng)時(shí)運(yùn)行檢查某個(gè)卷時(shí),它會(huì)輸出記錄到一個(gè)稱為 Bootex.log 的文件中,該文件放在被 檢查卷的根目錄下。隨后,Winlogon 服務(wù)將每個(gè) Bootex.log文件的內(nèi)容移到“應(yīng)用程序事件日志”中。每個(gè) 被檢查卷的事件日志消息按以下方式:
記錄:
事件 ID:1001
源:Winlogon
說(shuō)明:它包括文件系統(tǒng)類型、驅(qū)動(dòng)器號(hào)或 GUID 及卷名稱或序列號(hào),可以幫助確定Chkdsk 檢查的是哪個(gè)卷。此外還包括,Chkdsk 是因?yàn)橛脩舻陌才哦\(yùn)行的呢,還是因?yàn)橐言O(shè)置了臟字位而運(yùn)行的等信息。
3、以只讀方式運(yùn)行的 Chkdsk 未檢測(cè)到 NTFS 卷上的損壞
當(dāng)只讀模式對(duì)一個(gè)使用 NTFS 文件系統(tǒng)的磁盤(pán)卷運(yùn)行 Chkdsk 時(shí),Chkdsk 可能檢測(cè)不到磁盤(pán)結(jié)構(gòu)的損壞。原因是如果主文件表中的 $logfile 數(shù)據(jù)區(qū)被破壞,則可能會(huì)出現(xiàn)這一現(xiàn)象。解決方案是若要解決這一問(wèn)題, 請(qǐng)?jiān)谶\(yùn)行 Chkdsk 時(shí)使用 /f 選項(xiàng),以便重新初始化 $logfile 數(shù)據(jù)區(qū)并修復(fù)損壞問(wèn)題。
在命令提示符下鍵入下面的命令,然后按 ENTER 鍵
chkdsk volume_label :/v /f
其中, volume_label是您要對(duì)其運(yùn)行 Chkdsk 的磁盤(pán)卷標(biāo)。
4、在Microsoft Windows 2000 Server SP3上,在還原或復(fù)制大量的數(shù)據(jù)后 Chkdsk 找到不正確的安全 ID在您還原或復(fù)制大量的數(shù)據(jù)和與這些數(shù)據(jù)關(guān)聯(lián)的 NTFS 文件系統(tǒng)安全信息時(shí),Chkdsk.exe 可能會(huì)報(bào)告此分 區(qū)有錯(cuò)誤。即使您把數(shù)據(jù)還原或復(fù)制到一個(gè)已知無(wú)錯(cuò)誤的分區(qū)中時(shí)也會(huì)發(fā)生此問(wèn)題。Chkdsk 可能會(huì)報(bào)告類似如 下內(nèi)容的錯(cuò)誤消息:
CHKDSK is verifying security descriptors (stage 3 of 3)...
Repairing the security file record segment.
Deleting an index entry with Id 8447 from index $SII of file 9.
Deleting an index entry with Id 31126 from index $SII of file 9.
Deleting an index entry with Id 50636 from index $SII of file 9.
Deleting an index entry with Id 31126 from index $SDH of file 9.
Deleting an index entry with Id 50636 from index $SDH of file 9.
Deleting an index entry with Id 8447 from index $SDH of file 9.
Replacing invalid security id with default security id for file 1461234.
Security descriptor verification completed.
Windows found problems with the file system.
注意,報(bào)告的錯(cuò)誤數(shù)和安全 ID 可能因具體情況而異。索引項(xiàng) ID 和文件編號(hào)也可能會(huì)有所變化。
如果您接著對(duì)此分區(qū)運(yùn)行 chkdsk /f 命令,并對(duì)應(yīng)用的權(quán)限執(zhí)行審核,則會(huì)發(fā)現(xiàn)某些文件和文件夾可能已 丟失了用戶定義的權(quán)限。這些權(quán)限可能已被默認(rèn)權(quán)限代替,而默認(rèn)權(quán)限只向 Local System 和 Administrators 帳戶授予訪問(wèn)權(quán)。
無(wú)論您使用何種程序還原或復(fù)制數(shù)據(jù)都會(huì)發(fā)生此問(wèn)題。報(bào)告發(fā)生此問(wèn)題的情形有:
在使用 Ntbackup.exe 工具還原數(shù)據(jù)(帶安全信息)之后,以及在使用 Xcopy.exe 帶/o和/x參數(shù)復(fù)制數(shù)據(jù)(帶安全信息)之后。
原因在設(shè)計(jì)上,NTFS 文件系統(tǒng)要求以塊的形式編寫(xiě)安全描述符,而且在每一個(gè)安全描述符塊的末尾至少要留下 20 字節(jié)。這是為安全描述符標(biāo)頭留下的空間。然而,在某些情況下,NTFS 代碼的錯(cuò)誤計(jì)算會(huì)導(dǎo)致安全描述符 幾乎寫(xiě)到了塊的末尾,以致留下不足 20 字節(jié)的可用空間。Chkdsk.exe 于是就會(huì)刪除這些安全描述符并使用默 認(rèn)安全描述符代替它們,以確保在塊的最后留下最少 20 字節(jié)的可用空間。這將導(dǎo)致某些文件和文件夾丟失用 戶自定義的安全性。
通過(guò)下載SP4解決此問(wèn)題。
5、McAfee VirusScan 6.1 在執(zhí)行磁盤(pán)掃描操作期間將計(jì)算機(jī)掛起
當(dāng)運(yùn)行磁盤(pán)掃描程序掃描硬盤(pán)時(shí),計(jì)算機(jī)可能會(huì)停止響應(yīng)(掛起)。如果計(jì)算機(jī)上安裝了 Network Associates McAfee VirusScan 6.1,則可能會(huì)出現(xiàn)此問(wèn)題。
要解決此問(wèn)題,可以使用下面的兩種方法之一:
方法1
修改 VirusScan 掃描設(shè)置:
啟動(dòng) VirusScan(依次單擊開(kāi)始、所有程序、McAfee,然后單擊 VirusScan)。
在 VirusScan 窗口的左下角,單擊“選擇任務(wù)”。
單擊 Change my VirusScan settings(更改我的 VirusScan 設(shè)置)。
單擊 Configure VShield background scanning(配置 VShield 背景掃描)。
單擊以清除 Enable Internet Filter(啟用 Internet 過(guò)濾)復(fù)選框。
單擊以清除 Enable Download and E-mail scanning(啟用下載和電子郵件掃描)復(fù)選框。
單擊 Apply Settings(應(yīng)用設(shè)置)。
退出 VirusScan。
方法2
與 Network Associates 聯(lián)系,以獲取能夠解決此問(wèn)題的 McAfee VirusScan 版本。
6、關(guān)于共享群集磁盤(pán)
對(duì)于運(yùn)行群集服務(wù)的服務(wù)器群集節(jié)點(diǎn)所共享的卷,不允許在啟動(dòng)時(shí)運(yùn)行Autochk.exe 進(jìn)行檢查。當(dāng)這些卷 被聯(lián)機(jī),或從一個(gè)節(jié)點(diǎn)移到另一節(jié)點(diǎn)時(shí),群集服務(wù)會(huì)檢查該卷是否處于“臟”狀態(tài)。如果是,那么在聯(lián)機(jī)前, 就要使用 Chkdsk 來(lái)檢查該卷。但并去不檢查 BootExecute 注冊(cè)表值,所以也不會(huì)去考慮那些值。
聯(lián)系客服