Windows2000磁盤(pán)掃描功能
Windows2000/XP 系統(tǒng)磁盤(pán)掃描已經(jīng)升級(jí)到卷的高度,不再是簡(jiǎn)單的 SCANDISK。卷被定義為包含文件系 統(tǒng)的分區(qū),它可以用驅(qū)動(dòng)器號(hào)/卷安裝點(diǎn)或全局唯一標(biāo)識(shí)符(GUID) 來(lái)尋址。我們可以在系統(tǒng)運(yùn)行時(shí)強(qiáng)制進(jìn)行卷 檢查,或安排在重新啟動(dòng)時(shí)進(jìn)行卷
檢查,如果使用腳本還可以更準(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)類(lèi)型、文件系統(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:命令可以查詢(xún)文件系統(tǒng)類(lèi)型、文件系統(tǒng) “字位”狀態(tài),以及是否已手工安排啟動(dòng)時(shí)運(yùn)行 Chkdsk 進(jìn)行卷檢查等信息。
Autochk 在確定啟動(dòng)時(shí)檢查哪些卷所使用的注冊(cè)表項(xiàng)為: Hkey_local_MachineSystemCurrentControlSetControlSession ManagerBootExecute: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: /CAutocheck 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秒鐘,用戶(hù)此時(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_machineSystemCurrentControlSetControlSessionManager下增加一個(gè)鍵:AutoChkTimeOut,類(lèi)型為 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 命令并在其后跟隨腳本名稱(chēng)。
例如:
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 & 'rootcimv2')Set colAutoChkSettings = objWMIService.ExecQuery _('Select * from Win32_AutochkSetting')For Each objAutoChkSetting in colAutoChkSettingsobjAutoChkSetting.UserInputDelay = 30objAutoChkSetting.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 & 'rootcimv2')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 = TruestrComputer = '.'Set objWMIService = GetObject('winmgmts:' _& '{impersonationLevel=impersonate}!' & strComputer & 'rootcimv2')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 & 'rootcimv2')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è)稱(chēng)為 Bootex.log 的文件中,該文件放在被 檢查卷的根目錄下。隨后,Winlogon 服務(wù)將每個(gè) Bootex.log文件的內(nèi)容移到“應(yīng)用程序事件日志”中。每個(gè) 被檢查卷的事件日志消息按以下方式:
記錄: 事件 ID:1001 源:Winlogon
說(shuō)明:它包括文件系統(tǒng)類(lèi)型、驅(qū)動(dòng)器號(hào)或 GUID 及卷名稱(chēng)或序列號(hào),可以幫助確定Chkdsk 檢查的是哪個(gè)卷。此外還包括,Chkdsk 是因?yàn)橛脩?hù)的安排而運(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)告類(lèi)似如 下內(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)某些文件和文件夾可能已 丟失了用戶(hù)定義的權(quán)限。這些權(quán)限可能已被默認(rèn)權(quán)限代替,而默認(rèn)權(quán)限只向 Local System 和 Administrators; 帳戶(hù)授予訪(fǎng)問(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)致某些文件和文件夾丟失用 戶(hù)自定義的安全性。
通過(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ì)去考慮那些值。
