磁盘碎片整理技巧
磁盘碎片整理程序整理硬盘是提高程序执行速度的一种好方法。但硬盘碎片整理过程非常费时,整理之后,上网、玩游戏,不到一两个星期,程序执行速度又会明显下降,硬盘碎片又大量增多了。这时,你一定会再用磁盘碎片整理程序重新整理磁盘。追求极速是好事,但如此频繁地做下去,费时麻烦不用说,久而久之,你的硬盘也会缩短使用寿命。有没有一种好的方法,既不用频繁地整理硬盘碎片,又不至于过分地降低程序执行速度,答案是肯定的。现在就介绍给大家。
1、虚拟内存管理程序
虚拟内存的机制是,当应用程序所需的物理内存不足时,默认情况下Win9X会在硬盘C:WINDOWS系统目录中产生一个文件名为WIN386.SWP的临时交换文件,用该文件所占用的硬盘空间虚拟成内存(即使你什么也不做,只是打开电脑,该文件也一样存在)。显然,虚拟内存管理程序会对硬盘频繁读写,产生大量的碎片,这是产生硬盘碎片的主要原因。
一般用户的硬盘都有多个分区,也习惯将Win9X系统和应用程序分别安装在C:WINDOWS和C: Program Files目录下。为避免临时交换文件在C区频繁读写产生的大量的碎片,我们可以将临时交换文件指定在其他分区(如D区)生成,具体操作为:打开“控制面板系统”,在弹出的对话框中单击“性能虚拟内存”,选择“用户自己指定虚拟内存设置”选项,再从“硬盘”选项中选择D:(注意:D区可用空间不可小于100MB),最后单击“确定”按钮。重新启动系统,你会发现WIN386.SWP临时交换文件已经生成在D区的根目录了,也就是说临时交换文件以后只会在D区产生大量的碎片。从而加快系统的启动速度。
2.IE浏览器
默认情况下,IE浏览器将C:WINDOWSTemporary Internet Files目录作为临时文件储存目录。若经常上网冲浪,IE浏览器会在该目录下生成大量的临时文件,同样会对硬盘频繁读写,产生大量的碎片。 为避免这些临时文件在C区频繁读写产生的大量的碎片,我们可以将该目录指定到其他分区(如D区)。具体操作为:先在D区建立一个目录(如IE目录),再选择“控制面板Internet选项”,在弹出的对话框中单击“设置移动文件夹”,最后选择D:IE目录即可。经过这样设置,IE浏览器生成的大量临时文件只会在D区上产生碎片。这样,你只须每个月用磁盘碎片整理程序整理完D区的碎片,而C区中的程序经长时间使用,执行速度也不会明显降低了。
3、用Ghost整理磁盘碎片
记得我第一次用Windows中自带的碎片整理软件整理一个4GB的分区时,硬盘足足工作了7个多小时,从此以后我就再也没用它来整理碎片了。其实,用Ghost也可以整理硬盘,大家知道,用Ghost做磁盘映像时,Ghost会把硬盘分区中的每一个数据都完整地读出,然后把它写入一个GHO文件中,对于分区的空白部分,软件会自动跳过。然后当我们恢复GHO映像文件时,软件会把文件中的所有内容连续地写入分区中,于是所有的数据便都自动写在分区的头部,我们便得到了完整的未使用空间,原先的碎片文件也就自然消失。
用Ghost整理碎片的具体方法是:先用Scandisk扫描并修复分区上的所有错误码,再用Ghost给要整理的分区做一个GHO映像文件,文件的大小视分区的使用情况而定,然后再将GHO文件还原到原分区即可,这些操作最好在纯DOS模式下运行,在还原映像时一定要选对分区,否则会造成数据的丢失。根据我的使用经验,通过这个方法整理4GB的硬盘,所用时间大概在30分钟,比Vopt2000的所花的时间要长一点,但是效果要好得多,不过使用Ghost软件有一定的危险性,建议大家小心使用。
4.Windows临时文件目录的设置
许多的工具软件和应用软件在默认情况下的安装和运行时都会在C:WINDOWSTEMP目录下生成大量的临时文件,这些临时文件的频繁读写也会产生碎片。
解决的办法是:通过设置修改系统的环境变量,将系统临时文件目录指定为D区的TEMP目录。具体操作为:先在D区根目录建立目录TEMP,再编辑AUTOEXEC.BAT文件内容,在其中开始处输入SET TEMP=D:TEMP和SET TMP=D:TEMP两行,结尾处输入deltree /y d: emp 和md d: emp 两行(目的是删除有的程序执行后残留的临时文件)。之后,重新启动你的电脑,系统的临时文件目录指定到了D:TEMP,绝大多数程序安装和运行时生成的临时文件只在D区产生碎片。
总结:你可以把Win9X、常用的工具软件和应用软件等安装在C区,再把虚拟内存管理的临时交换文件、IE浏览器的临时文件目录和系统的临时文件目录分别指定到D区(尽量不要安装其他的程序到D区)。这样,你只须每个月用磁盘碎片整理程序整理完D区的碎片,而C区中的程序经长时间使用,执行速度也不会明显降低了。
Windows2000/XP系统磁盘扫描已经升级到卷的高度,不再是简单的SCANDISK。卷被定义为包含文件系统的分区,它可以用驱动器号/卷安装点或全局唯一标识符(GUID) 来寻址。我们可以在系统运行时强制进行卷 检查,或安排在重新启动时进行卷检查,如果使用脚本还可以更准确地控制何时在卷上进行文件系统检查。要掌握磁盘扫描特点,需要灵活使用下面相互关联的3个工具:Chkdsk.exe、 Chkntfs.exe以及Autochk.exe。让我们先来简单认识一下他们。
chkdsk.exe
检查硬盘驱动器的完整性,检查磁盘和修复文件系统就靠它了。chkdsk.exe 同时可以恢复文件系统错误, 并可以试图恢复坏扇区,如果无法修复就标记坏扇区,以避免文件被误写入导致丢失。
Chkntfs.exe
显示文件系统类型、文件系统“脏字位”状态,以及手工安排启动时运行 Chkdsk进行卷检查,或取消所 有安排的检查项目等。
Autochk.exe
查找每个卷上的“脏字位”,以及 Chkdsk /F 和 Chkntfs /X 或 /C 所作的注册表设置,决定是检查卷, 还是跳过检查。它可以区分是手工安排的卷检查,还是由于文件系统发现卷处于“脏”状态而自动进行卷检查 ,并会把相应的消息写入应用程序事件日志。该命令不能在 WIN32 模式下运行。
一、在系统运行时强制进行卷检查
安装 Windows2000/XP 后,“系统工具”文件夹中不显示磁盘扫描命令。不是没有了,具体这样做:
双击我的电脑,然后右键单击要检查的硬盘驱动器。
单击属性,然后单击工具。
在查错下,单击开始检查。
这样就可以在 Windows 中检查硬盘驱动器的完整性了。
或者到命令提示符下执行CHKDSK /X 命令。
/X 是一个新的命令参数,它运行 Chkdsk /F,并强制执行卷卸除,关闭非系统卷上打开的文件句柄,以 便立即对卷进行检查。这样,要运行 Chkdsk 并修复卷,就不必重新启动。
二、安排在下一次重新启动时进行卷检查
Autochk 通过有2个因素控制是否进行卷检查或跳过检查。一个是当文件系统检测到问题时,系统自己设置 的“脏字位”,设置脏字位的的目的就是为了在下次启动时对卷进行检查。 另一个是人工安排,既用 Chkdsk /F 和 Chkntfs /X 或 /C 所作的注册表设置。通过 Chkntfs volume:命令可以查询文件系统类型、文件系统 “字位”状态,以及是否已手工安排启动时运行 Chkdsk 进行卷检查等信息。
Autochk 在确定启动时检查哪些卷所使用的注册表项为:
Hkey_local_machineSystemCurrentControlSetControlSession ManagerBootExecute:REG_MULTI_SZ: autocheck autochk *
这是 Autochk 的默认设置,也是使用 Chkntfs /d 安排启动时检查所有卷所得到的结果。
下面通过设置或重设注册表,来控制 Autochk。
命令 BootExecute键植
Chkdsk C: /F autochk /p ??C:
Chkdsk C:mountpoint /F Autocheck autochk /p ??VOLUME{GUID}
Chkntfs D: E: /X Autocheck autochk /k /k:E *
Chkntfs G: /C Autocheck autochk /m ??G:
注解:
/P ??Volume: 安排 Chkdsk 无条件地运行来检查卷。
/p ??VOLUME{GUID} 安排 Chkdsk 无条件地运行来检查卷安装点。
/k:Volume * 不对卷执行 Chkdsk 检查。
/m ??Volume: 让 Autochk 仅查找卷上的脏字位,如果已设置脏字位,则运行 Chkdsk。
另外,Chkntfs /T 在默认情况下,开机时扫描每个分区前会等待10秒钟,用户此时可以按任意键 跳过扫描继续启动。该参数就是用来设置等待时间的,即将Autochk 超时值改为指定时间(秒数),如果没有指定时间,则显示当前设置。系统在注册表项 key_local_machineSystemCurrentControlSetControlSessionManager下增加一个键:AutoChkTimeOut,类型为 REG_DWORD,数值为当前设置的超时值。
三、用脚本从程序中安排卷的修复日程
由于可以通过设置或重设注册表,来控制 Autochk,因此可使用脚本,从程序中安排卷的修复日程。
在记事本程序中,使用.VBS文件扩展名存储相应文件(例如:MyScript.vbs)。同时,建议您在一个公共文 件夹(例如:C:Scripts)中保存这些脚本。打开命令行窗口。如果需要,使用cd命令切换到用以存储脚本的 文件夹中。在命令行窗口中,输入csript 命令并在其后跟随脚本名称。
例如:
cscript myscript.vbs
1、修改 AutoChk 的 Timeout 值
为 Autochk.exe 设定自动延迟时间为 30 秒。适用于 Windows XP 或 Windows 2003 Server。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & " ootcimv2")
Set colAutoChkSettings = objWMIService.ExecQuery _
("Select * from Win32_AutochkSetting")
For Each objAutoChkSetting in colAutoChkSettings
objAutoChkSetting.UserInputDelay = 30
objAutoChkSetting.Put_
Next
2、防止 AutoChk 在开机时自动运行
即使电脑下次开机时,就算 C盘的 "字位" 已被设定, Autochk 也不会对C磁盘执行检查。适用于 Windows XP 或 Windows 2003 Server。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & " ootcimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ExcludeFromAutoChk(Array("C:"))
Wscript.Echo errReturn
3、执行 ChkDsk
对电脑的D盘执行ChkDks.exe。适用于 Windows XP 或 Windows 2003 Server。
Const FIX_ERRORS = True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & " ootcimv2")
Set objDisk = objService.Get("Win32_LogicalDisk.DeviceID=';D:';")
errReturn = objDisk.ChkDsk(FIX_ERRORS)
Wscript.Echo errReturn
4、安排在电脑下一次重新启动时,对 C 盘执行 Autochk.exe。适用于 Windows XP 或
Windows 2003 Server 。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & " ootcimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ScheduleAutoChk(Array("C:"))
Wscript.Echo errReturn
全面剖析磁盘扫描功能 学习学习学习学习
页:
[1]