磁盘碎片整理技巧

[复制链接]

该用户从未签到

17

主题

5

回帖

63

积分

[INTOHARD]班长

Rank: 2

积分
63
QQ
发表于 2009-6-23 11:48:00 | 显示全部楼层 |阅读模式
磁盘碎片整理程序整理硬盘是提高程序执行速度的一种好方法。但硬盘碎片整理过程非常费时,整理之后,上网、玩游戏,不到一两个星期,程序执行速度又会明显下降,硬盘碎片又大量增多了。这时,你一定会再用磁盘碎片整理程序重新整理磁盘。追求极速是好事,但如此频繁地做下去,费时麻烦不用说,久而久之,你的硬盘也会缩短使用寿命。
  有没有一种好的方法,既不用频繁地整理硬盘碎片,又不至于过分地降低程序执行速度,答案是肯定的。现在就介绍给大家。
  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
全面剖析磁盘扫描功能 

该用户从未签到

0

主题

125

回帖

247

积分

[INTOHARD]工兵

Rank: 1

积分
247
发表于 2011-2-17 16:17:57 | 显示全部楼层
学习学习学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表