zoukankan      html  css  js  c++  java
  • 磁盘碎片原理分析

    原文地址:http://www.cnblogs.com/hbwang/archive/2005/07/13/192251.html

    一、什么是磁盘碎片?

    其实磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个磁盘的不同地方,而不是连续地保存在磁盘连续的簇中形成的。当应用程序所需的物理内存不足时,一般操作系统会在硬盘中产生临时交换文件,用该文件所占用的硬盘空间虚拟成内存。虚拟内存管理程序会对硬盘频繁读写,产生大量的碎片,这是产生硬盘碎片的主要原因。其他如IE浏览器浏览信息时生成的临时文件或临时文件目录的设置也会造成系统中形成大量的碎片。文件碎片一般不会在系统中引起问题,但文件碎片过多会使系统在读文件的时候来回寻找,引起系统性能下降,严重的还要缩短硬盘寿命。另外,过多的磁盘碎片还有可能导致存储文件的丢失。

    二、磁盘碎片是怎么产生的?

    在磁盘分区中,文件会被分散保存到磁盘的不同地方,而不是连续地保存在磁盘连续的簇中。又因为在文件操作过程中,Windows系统可能会调用虚拟内存来同步管理程序,这样就会导致各个程序对硬盘频繁读写,从而产生磁盘碎片。

    三、磁盘读写操作的原理

    知道了磁盘碎片的产生原因之后,我们还有必要了解一下程序运行时磁盘的读写动作。一般运行一个程序时,磁盘驱动器的磁头所做的工作是先搜索该程序运行必需的文件,然后读取数据,最后做读后处理——将数据传送至磁盘高速缓存(Cache)和内存中。搜索时间在硬盘性能指标中被称为平均寻道时间(Average seek time),单位为毫秒(ms),目前主流硬盘的平均寻道时间小于9.5ms。如果能将应用程序的相关文件放在磁盘的连续空间内,磁头搜索的时间将会减少很多。读取时也是如此,磁盘读取位于磁头下方扇区的数据所需时间仅为将磁头移到另一地点再读取相同数据所需时间的五分之一。读盘时,系统先检查数据是否在高速缓存中,如果有则直接读取;如果没有则访问磁盘,也就是读盘。当需要多次读取同一份数据时,Cache的作用很大,但对于第一次读取某个文件,Cache就无能为力了。于是搜索时间和读取时间在很大程度上影响着程序执行的效率。为何要整理磁盘 Windows系统并不能自动将每个文件按照最大程度减少磁头搜索时间的原则放到磁盘上最合适的位置。于是Microsoft在Windows中加入了“Disk Defragment”(磁盘碎片整理程序),并提供了“TaskMonitor”(任务监视器)来跟踪程序启动过程中的磁盘活动,以利于“Disk Defragment”能够更有效地工作。“TaskMonitor”是随Windows启动而自动运行的(当然要在“启动”中选中“TaskMonitor”)。当加载某个应用程序时,它通过监视磁盘的访问动作来了解该程序启动时搜索和调用的文件,对所需文件进行定位,并将监视结果储存在“C:WindowsApplog”隐藏目录中。这个目录中的大多数文件以“.lgx”为扩展名,其中“lg”代表记录文件(Log File),“x”表示盘符,如D盘程序就以“.lgd”为扩展名;记录文件的文件名为TaskMonitor所监视的应用程序的文件名,如E盘上的WinZip程序记为“Winzip32.lge”。用户进行磁盘碎片整理时,该程序会根据Applog目录中的信息把应用程序的相关文件移动到磁盘上的连续空间内。TaskMonitor仅在程序加载过程中对文件信息进行搜索,并且根据程序的加载频率调整优化的顺序,也就是说使用次数最多的软件可获得最多的关照。Applog目录中的APPLOG.ind文件就记录了应用程序运行的次数。用户需要将常用软件多次启动,接受TaskMonitor的监视和记录,再使用Disk Defragment进行整理,才能真正实现程序启动速度的提高。但如果用户中途改变了常用软件,比如以前常用WinZip,现在改用ZipMagic,那么在相当长的时间内Disk Defragment还是先把与WinZip相关的文件移到连续的空间内,而不是ZipMagic,除非ZipMagic的加载次数超过WinZip。要解决这个问题,用户可将“Winzip32.lgx”文件删除,记录文件不存在了,Disk Defragment也就不会去优化它了。

    四、该不该定期整理硬盘?

    实际上,定期整理硬盘应该是毫无疑问的。如果说硬盘碎片整理真的会损害硬盘的话,那也将是在对硬盘进行近乎天文数字般次数的整理之后。硬盘使用的时间长了,文件的存放位置就会变得支离破碎——文件内容将会散布在硬盘的不同位置上。这些“碎片文件”的存在会降低硬盘的工作效率,还会增加数据丢失和数据损坏的可能性。碎片整理程序把这些碎片收集在一起,并把它们作为一个连续的整体存放在硬盘上。Windows自带有这样的程序:磁盘碎片整理程序(DiskDefragmenter),但在工具软件NortonUtilities和Nuts&Bolts中有更好的此类程序。

    然而,碎片整理对硬盘里的运转部件来说的确是一项不小的工作。如果硬盘已经到了它生命的最后阶段,碎片整理的确有可能是一种自杀行为。但在这种情况下,即使您不进行碎片整理,硬盘也会很快崩溃的。实际上在大多数情况下,定期的硬盘碎片整理减少了硬盘的磨损。不管怎么说,让硬盘的磁头从1处读取文件总比从8处读取要容易得多。因此,一个每两周或四周整理一次的硬盘的寿命应当比一个永远不整理的硬盘长。

    五、整理前的准备工作      

    我们在整理硬盘前一般都要对它清理垃圾信息,检查有无错误,最后才能谈到碎片的整理和优化。因此,我们在整理硬盘前,应该首先做好这些工作:1、应该把硬盘中的垃圾文件和垃圾信息清理干净。系统工作一段时间后,垃圾文件就会非常之多,有程序安装时产生的临时文件、上网时留下的缓冲文件、删除软件时剩下的DLL文件或强行关机时产生的错误文件等,建议“菜鸟”朋友还是使用微软的“磁盘清理程序”代劳,“老鸟”当然可以使用一些功能更强的软件或手工清理。2、检查并修复硬盘中的错误。首选的仍然是微软的“磁盘扫描程序”,虽然它的速度实在不怎么样,但只要你有足够的耐心,经过这个程序对磁盘完整而详细的扫描后,相信系统中的绝大多数错误已经被修复了。当然你也可以尝试一下其他工具,如扁鹊神医“Norton WinDoctor”,它的速度可比Windows中的“磁盘扫描工具”快多了。      

    六、整理方法及注意      

    在Windows里,用户可以从“开始”菜单中选择“程序/附件/系统工具/磁盘碎片整理程序”,弹出选择驱动器窗口,选择要整理的分区,然后点击[确定]即可开始整理,但此方法碎片整理过程非常耗时,一般2GB左右的分区需要1个小时以上,所以建议读者:1、整理磁盘碎片的时候,要关闭其他所有的应用程序,包括屏幕保护程序,最好将虚拟内存的大小设置为固定值。不要对磁盘进行读写操作,一旦Disk Defragment发现磁盘的文件有改变,它将重新开始整理。2、整理磁盘碎片的频率要控制合适,过于频繁的整理也会缩短磁盘的寿命。一般经常读写的磁盘分区一周整理一次。

    七、磁盘扫描程序的命令参数      

    命令参数在 DOS时代可以说是一项基本的技能,很多程序都要靠命令参数来启动,而到了图形化界面时代,已很难再见到其踪迹,但它却实实在在地存在着,而且发挥着不小的作用。如很多 Windows游戏的设置程序就是用 /Setup 参数来实现的。通常我们不会太留意某些程序的命令参数,但他们往往包含着某些隐秘的功能,如果运用适当对你很有帮助。Windows 中的磁盘扫描程序就包含着许多命令参数,你可以在MS_DOS方式下或在“运行”对话框中实现,如果需要经常用命令参数,还可以建立一个快捷方式。

    /SILENT    启动磁盘扫描程序不允许作任何选项设置和高级设置。  

    /A       检查所有的本地硬盘   

    /N       自动启动和退出磁盘扫描程序   

    /P       防止磁盘扫描程序修复所发现的错误   

    X:      表示指定要检查的驱动器号(不需要 / 的命令参数)   

    举例:   1)检查驱动器 E 并自动启动和退出磁盘扫描程序  SCANDSKW E: /N   

    2)检查所有的硬盘并防止磁盘扫描程序修复发现的任何错误  SCANDSKW /A /P

    八、运行过其他文件整理程序怎么办

    当运行了其他磁盘文件整理程序(如WinAlign)后,它可能扰乱了TaskMon记录的数据,若此时直接进行碎片整理,可能会得不偿失,达不到优化性能的目的。解决的办法是在进行碎片整理之前,多次运行Windows和自己最常用的程序,这样可以让TaskMon重新收集到正确的统计数据,指导进行磁盘优化。最后,当启动Windows98的磁盘碎片整理程序时,可能会诧异界面中的Intel标志。为什么处理器的生产厂商会参与编写这个优化磁盘的软件呢?这是因为硬盘寻道时间的缓慢会导致系统整体性能的下降,这样会有损CPU超级计算能力的形象,让人误以为是CPU性能的低下。Microsoft的一个测试表明,在奔腾233的机器上启动Windows仅仅比奔腾150快3%,也就是说,快速的CPU并不能克服磁盘延迟的缺点。于是,在共同利益的驱动下,Intel和Microsoft联合开发了Windows98的磁盘碎片整理程序,用来消除硬盘寻道缓慢的瓶颈。

    九、如何快速地整理磁盘碎片

    每次需要整理磁盘碎片时都需要选择“开始”*“程序”*“附件”*“系统工具”*“磁盘碎片整理程序”,然后再指定驱动器,很麻烦。能否有简单的方法完成这一系列操作?在Windows资源管理器中,选择“查看”*“文件夹选项”(或“查看”*“选项”),选择“文件类型”选项卡,并在“已注册的文件类型”列表中选择“驱动器”。单击“编辑”按钮,打开“编辑文件类型”对话框,选择“新建”,在“操作”栏中,键入“快速整理磁盘碎片”。在“用于执行操作的应用程序”栏中键入“C:Windowsdefrag.exe "%1" oprompt”。单击“确定”,然后“关闭”,回到“文件类型”选项卡,然后单击“关闭”。现在,打开“我的电脑”,右键单击想要整理磁盘碎片的驱动器,在弹出的快捷菜单中选择“快速整理磁盘碎片”即可。 全面剖析磁盘扫描功能 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: D /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:time: 在默认情况下,开机时扫描每个分区前会等待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、开机时按下某个键跳过 Autochk

      如果安排 Chkdsk 在启动时运行以检查某个卷,但实际启动时决定按下某个键跳过Autochk,则 Autochk 将 不会检查该卷,并删除相应的注册表项,在以后,Autochk也不会检查该卷。

      2、Autochk应用程序事件日志

      当 Autochk 在启动时运行检查某个卷时,它会输出记录到一个称为 Bootex.log 的文件中,该文件放在被 检查卷的根目录下。随后,Winlogon 服务将每个 Bootex.log文件的内容移到“应用程序事件日志”中。每个 被检查卷的事件日志消息按以下方式:

      记录:   事件 ID:1001   源:Winlogon

      说明:它包括文件系统类型、驱动器号或 GUID 及卷名称或序列号,可以帮助确定Chkdsk 检查的是哪个卷。此外还包括,Chkdsk 是因为用户的安排而运行的呢,还是因为已设置了脏字位而运行的等信息。

      3、以只读方式运行的 Chkdsk 未检测到 NTFS 卷上的损坏

      当只读模式对一个使用 NTFS 文件系统的磁盘卷运行 Chkdsk 时,Chkdsk 可能检测不到磁盘结构的损坏。原因是如果主文件表中的 $logfile 数据区被破坏,则可能会出现这一现象。解决方案是若要解决这一问题, 请在运行 Chkdsk 时使用 /f 选项,以便重新初始化 $logfile 数据区并修复损坏问题。

      在命令提示符下键入下面的命令,然后按 ENTER 键

      chkdsk volume_label :/v /f

      其中, volume_label是您要对其运行 Chkdsk 的磁盘卷标。

      4、在Microsoft Windows 2000 Server SP3上,在还原或复制大量的数据后 Chkdsk 找到不正确的安全 ID在您还原或复制大量的数据和与这些数据关联的 NTFS 文件系统安全信息时,Chkdsk.exe 可能会报告此分 区有错误。即使您把数据还原或复制到一个已知无错误的分区中时也会发生此问题。Chkdsk 可能会报告类似如 下内容的错误消息:

      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.

      注意,报告的错误数和安全 ID 可能因具体情况而异。索引项 ID 和文件编号也可能会有所变化。

      如果您接着对此分区运行 chkdsk /f 命令,并对应用的权限执行审核,则会发现某些文件和文件夹可能已 丢失了用户定义的权限。这些权限可能已被默认权限代替,而默认权限只向 Local System 和 Administrators 帐户授予访问权。

      无论您使用何种程序还原或复制数据都会发生此问题。报告发生此问题的情形有:

      在使用 Ntbackup.exe 工具还原数据(带安全信息)之后,以及在使用 Xcopy.exe 带/o和/x参数复制数据(带安全信息)之后。

      原因在设计上,NTFS 文件系统要求以块的形式编写安全描述符,而且在每一个安全描述符块的末尾至少要留下 20 字节。这是为安全描述符标头留下的空间。然而,在某些情况下,NTFS 代码的错误计算会导致安全描述符 几乎写到了块的末尾,以致留下不足 20 字节的可用空间。Chkdsk.exe 于是就会删除这些安全描述符并使用默 认安全描述符代替它们,以确保在块的最后留下最少 20 字节的可用空间。这将导致某些文件和文件夹丢失用 户自定义的安全性。

      通过下载SP4解决此问题。

      5、McAfee VirusScan 6.1 在执行磁盘扫描操作期间将计算机挂起

      当运行磁盘扫描程序扫描硬盘时,计算机可能会停止响应(挂起)。如果计算机上安装了 Network Associates McAfee VirusScan 6.1,则可能会出现此问题。

      要解决此问题,可以使用下面的两种方法之一:

      方法1

      修改 VirusScan 扫描设置:

      启动 VirusScan(依次单击开始、所有程序、McAfee,缓蟮セ?VirusScan)。

      在 VirusScan 窗口的左下角,单击“选择任务”。

      单击 Change my VirusScan settings(更改我的 VirusScan 设置)。

      单击 Configure VShield background scanning(配置 VShield 背景扫描)。

      单击以清除 Enable Internet Filter(启用 Internet 过滤)复选框。

      单击以清除 Enable Download and E-mail scanning(启用下载和电子邮件扫描)复选框。

      单击 Apply Settings(应用设置)。

      退出 VirusScan。

      方法2

      与 Network Associates 联系,以获取能够解决此问题的 McAfee VirusScan 版本。

      6、关于共享群集磁盘

      对于运行群集服务的服务器群集节点所共享的卷,不允许在启动时运行Autochk.exe 进行检查。当这些卷 被联机,或从一个节点移到另一节点时,群集服务会检查该卷是否处于“脏”状态。如果是,那么在联机前, 就要使用 Chkdsk 来检查该卷。但并去不检查 BootExecute 注册表值,所以也不会去考虑那些值。 体验进行磁盘碎片整理的新方法

    许多人只知道用磁盘碎片整理程序整理硬盘是提高程序执行速度的一种好方法。但硬盘碎片整理过程非常费时,整理之后,上网、玩游戏,不到一两个星期,程序执行速度又会明显下降,硬盘碎片又大量增多了。这时,你一定会再用磁盘碎片整理程序重新整理磁盘。追求极速是好事,但如此频繁地做下去,费时麻烦不用说,久而久之,你的硬盘也会缩短使用寿命。

      有没有一种好的方法,既不用频繁地整理硬盘碎片,又不至于过分地降低程序执行速度,答案是肯定的。现在就介绍给大家。

      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区上产生碎片。

      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区中的程序经长时间使用,执行速度也不会明显降低了。

    加速磁盘碎片整理的五大方法 为了使系统发挥更好的性能,我们经常需要整理磁盘碎片,但对于大容量的硬盘来说,这一工作通常需要花费很多时间,本文将向您介绍一些加速整理磁盘碎片的技巧。

      关闭应用程序

      由于某些程序在运行的过程中可能需要反复地读取硬盘中的数据,这会影响碎片整理程序的正常工作,在系统不稳定的情况下甚至还会导致死机现象的发生。因此,为了加快磁盘碎片的整理速度,最好把各个正在运行的程序关闭掉。

      调整参数或使用专用软件

      如果硬盘的容量或者分区的容量比较小,对其进行碎片整理工作需要的时间不会太长,但对于一些塞满数据的大硬盘和分区来说,则需要一个漫长的等待过程。所以,我们在整理这些大容量的硬盘或者分区时,可以采取下面2种措施: 首先可以将Windows 9x系统自身附带的整理程序中的优化参数关闭,这样可以加快碎片整理的速度,但这种方法的效果可能不会很明显。另外一种方法是,使用专用的碎片整理工具来对硬盘或者分区进行整理,例如笔者目前使用的Vop99软件,其整理磁盘碎片的速度就非常快。如果我们每天都使用Vop99整理磁盘碎片,磁盘将在几分钟内得到优化,系统能够一直保持最佳状态。笔者建议大家使用Windows的计划任务程序,设定至少每周自动运行一次Vop99。

      修改注册表自动关闭屏幕保护

      在进行磁盘碎片整理工作前,首先要关闭屏幕保护程序,否则磁盘碎片整理程序会反复地启动,但是如果每次都通过人工的方式来关闭应用程序,可能比较麻烦。在这里笔者告诉大家一个小窍门,即通过修改注册表来实现自动关闭屏幕保护。具体操作步骤如下: 首先,在命令行中使用regedit命令打开注册表,定位到"HKEY_CURRENT_USERSoftware MicrosoftWindowsCurrentVersionApplets",然后在此路径下寻找是否有"Defrag"键值,如果没有,就新建一个,系统默认情况下都有此键值。在"Defrag"键值下再新建一个名为"Settings"的主键,然后再在此新建的主键下建立一个名为"DisableScreenSaver"的主键,最后将它的默认字符串值改为"YES"即可。以后每次运行磁盘碎片整理程序时系统会自动屏蔽掉屏幕保护,运行完成后自动恢复。

      改变临时文件夹位置

      在使用IE浏览器上网冲浪时,为了能花很少的钱访问更多的信息,用户常常会采取离线浏览的方法来进行访问。而每次上网后,IE浏览器将会在C:WindowsTemporary Internet Files目录中留下许多临时文件。如果我们频繁地上网冲浪,IE浏览器可能会在该目录下生成大量临时文件,同样会对硬盘频繁读写,产生大量碎片,从而影响访问速度。为了避免这一情况,我们同样可以将临时目录指定到其他分区。方法为: 首先在D盘中建立一个临时文件的存放目录,选择"控制面板"*"Internet选项",在打开的对话框中单击"设置"按钮,然后单击"移动文件夹"按钮,选择D盘中相应目录即可。

      保留一定的磁盘空间

      我们在使用中会发现,如果硬盘的剩余空间太小,运行应用程序的速度将会很慢,磁盘碎片整理也很难进行。所以,对于比较小的磁盘分区,最好保持15%以上的可用空间; 对于比较大的磁盘分区,最好保持5%以上的可用空间; 对于引导分区,至少要有40MB以上的可用空间。另外,在使用电脑的过程中,我们应该及时释放浪费的磁盘空间,例如经常清空回收站、删除上网后的历史记录以及删除临时文件夹和文件等。

    磁盘碎片也疯狂 不就是磁盘碎片吗?怎么,它也能兴风作浪?的确,若只是将它理解为磁盘碎片,那它还真没有多大威力。但笔者这儿所讲的“碎片”并非一般概念上的磁盘碎片, 而是指一类特殊的OLE对象,即碎片对象,或称为碎片文件。

      初识碎片对象

      众所周知,Windows系统的剪贴板只能保留最后一次复制或剪切的内容,这就使剪切或粘贴多个对象到多个文档的操作变得异常繁琐。但是,如果你利用Windows的碎片对象,这些操作就变得轻松多了。你可以创建一些只包含相应文本或图片的桌面碎片对象,然后分别将它们拖放到相应的文档即可。

      在Windows的帮助文件中,碎片对象的定义是:将文档的某部分内容拖到桌面时创建的文件。看起来简单,其实它包含了微软的一项特殊的技术,即碎片对象技术(Shell Scrap Object,SHS)。该技术的核心是将文档的某部分内容或已嵌入文件中的“对象”包装成一个所谓的“碎片对象”,然后以文件的形式保存在磁盘上,其扩展名为.SHS。如果你将Word中某段文字拖到桌面上,则会形成名为“Document 碎片‘...’”的文件;如果将 Excel中的内容拖到桌面上,则会形成名为“Worksheet 碎片‘...’”的文件;如果是将嵌入Word或Excel中的对象拖到桌面上,则会形成名为“碎片”的文件(见图)。由于碎片文件是一类特殊的OLE对象,所以它保存了原有对象所具备的功能,这也是它之所以能疯狂的原因。 [img]http://bbs.pcshow.net/attachments/84105_6knUKMXCkZtF.jpg[/img] 制作最简单的碎片对象

      正如微软定义的那样,你可以在打开的Word文档中选择几行文本或一幅图片,用左键拖曳选中的文本或图片到桌面,相应的碎片对象也就创建好了。这样的碎片对象只是相应文档加上一个空壳,不存在危险性。

      碎片变病毒

      不要以为制造病毒很难,利用碎片对象,只需几步,就能制造出一个具有破坏性的病毒文件。下面以一个能自动删除文件的“碎片对象”为例,来讲述其制作步骤(以Windows 98为例)。

      1.新建一个只包含一个空格的文本文件,可任意取名。

      注意:文件不能为空,否则会出现内存不足,无法执行此操作的提示。

      2.打开Word,执行菜单栏中的“插入→对象”,在弹出的“插入对象”对话框中,选中“从文件创建”,然后点击“浏览”按钮,选择新建的文本文件。

      3.选中该插入对象的图标,执行菜单栏中的“编辑→包对象→编辑包”,在弹出的“对象包装程序”对话框中,选择菜单栏中的“编辑→命令行”,输入删除某个文件的命令,并点击“确定”。此时,内容栏中会显示出刚输入的命令内容。

      4.点击“文件”菜单中的“更新”,然后关闭此对话框。

      5.将刚刚建立的嵌入对象拖曳到桌面上,文件的默认名是“碎片”。

      至此,一个碎片病毒就产生了。双击该文件就会发现一些文件被删除了。

      防范碎片对象的方法

      碎片对象文件的图标和记事本文件的图标非常类似,不仔细看,没准儿会误认为是文本文件;其次由于Windows支持双重扩展名,且在Windows的默认状态下,“碎片对象”文件的扩展名是隐藏的。即使你将“隐藏已知文件类型的扩展名”前面的钩去掉,该扩展名也还是隐藏的。如果将一个碎片对象的名字取为“你中奖了.txt.shs”,则你实际看到的只能是“你中奖了.txt”。

      对于一些不熟悉的碎片文件,一定要多加注意,千万不能随意打开。为了避免一些不必要的麻烦,可以在“我的电脑→工具→文件夹选项”的“文件类型”选项卡中将这种文件类型删除,从而达到禁用它的目的。因为SHS文件本身不是可执行文件,它是由rundll32.exe解析执行的。

      另外,你也可以运行“注册表编辑器”,在分支“HKEY_CLASSES_ROOT.shs”下,将ShellScrap项删除。此后双击碎片文件,也不会执行了。 图解Win 2000系统磁盘碎片整理 电脑使用久了,磁盘上保存了大量的文件,这些文件并非保存在一个连续的磁盘空间上,而是把一个文件分散的放在许多地方,这些零散的文件被称作“磁盘碎片”,这些碎片会降低整个Windows的性能。于是Windows中都提供一个整理磁盘碎片的程序。 [img]http://bbs.pcshow.net/attachments/softzb040902_1_mETjVFaBhyrW.gif[/img]打开“开始”菜单,移动鼠标到“程序”、“附件”、“系统工具”,单击“磁盘碎片整理程序”。 [img]http://bbs.pcshow.net/attachments/softzb040902_2_DdyrprLNkOQm.gif[/img]Windows 2000下的“磁盘碎片整理程序”和Windows 98已经大不一样了。一般我们先让程序对磁盘的使用情况进行分析,选定C盘,单击“分析”。窗口下面的状态条上显示出当前的操作进度。很快就分析结束了,同时还会给出,是否需要整理的建议,现在程序建议整理碎片。 [img]http://bbs.pcshow.net/attachments/softzb040902_3_i2DKn2qNZsTa.gif[/img]在后面的“分析”栏中还可以看到文件的分布情况,红色的部分就是零散的文件,白色的地方是空白区域。我们还可以看一下分析报告,单击“察看报告”。 [img]http://bbs.pcshow.net/attachments/softzb040902_4_8qltt9yyZPsR.gif[/img]弹出报告,上面一栏显示C盘(卷)的基本信息和碎片的分布比例,下面最零散的文件列表。单击“碎片整理”,程序开始整理,这个过程需要的时间比较长,主要和文件的数量分区大小有关。 [img]http://bbs.pcshow.net/attachments/softzb040902_5_nUC5ortRVhOJ.gif[/img]整理的过程中可以看到文件的分布变化和整个进度。整理结束后,会出现提示,点“关闭”结束。 [img]http://bbs.pcshow.net/attachments/softzb040902_6_cWCFfqmmHHzs.gif[/img] 安全模式下快速进行碎片整理 电脑使用时间长了后,系统中产生的碎片也会随之增加,所以我们最好定期使用碎片整理程序来进行碎片整理,提高系统性能。

      一般情况下,在整理了磁盘碎片后,会发现碎片整理报告中有一项�“未经过碎片整理的文件”,那下面常常会列出一长串没有被整理的文件名。这些未被整理的碎片大都是正处于运行状态的系统文件,而操作系统是不允许移动这些文件的。

      如果想更彻底进行磁盘碎片整理,可以把系统启动到“安全模式”状态下整理。因为当系统启动到“安全模式”状态下时,只会加载必需的驱动程序和系统文件,而不会加载其它多余的程序。而且操作系统在“安全模式”下占用的内存空间较少,就会有更多的内存用来碎片整理,提高整理速度。 巧用win98的“磁盘碎片整理程序” 大家都知道,由于存储方式的原因,Windows 98在运行过程中必然会在磁盘上留下许多文件碎片,它们虽说一般不会影响系统的正常运行(某些情况下碎片过多也会造成文件丢失),但却会对系统的性能造成一定的影响——当磁盘上充斥着大量的文件碎片时,磁头在读取文件时就必须来回寻找,其运行速度必然受到影响,整个Windows 98的运行速度也就会随之降低。另外,文件碎片还会导致过于频繁的磁盘读写操作,使发热量增大,还有可能缩短硬盘寿命!

      为了保持文件的连续存放,提高系统的运行效率,这就要求我们在适当的时候对磁盘上的文件碎片进行整理。对此,我们一般都是通过Windows 98自带的“磁盘碎片整理程序”来实现的,本人在使用它的过程中摸索出了几点技巧,特介绍给大家:

      一、 防止屏幕保护程序对磁盘碎片整理的影响

      经常进行磁盘碎片整理的用户都知道,磁盘碎片整理需要有一个相对稳定的磁盘环境,也就是说在进行磁盘碎片整理的过程中最好不要从事其它任何磁盘读写操作,否则,磁盘碎片整理程序可能会因为磁盘存储情况发生变化而重新启动,这就会严重影响磁盘碎片整理的速度!

      有些朋友可能不知道,Windows 98有一项特殊功能,那就是只要系统的“开始”菜单处于打开状态,无论用户多长时间不操作计算机,屏幕保护功能都不会激活。利用这一功能,我们就可以轻易地解决上述屏幕保护与磁盘碎片整理之间的矛盾——我们只需先行启动磁盘碎片整理程序,单击Windows 98的“开始”按钮,打开“开始”菜单并且在不关闭它的情况下继续运行磁盘碎片整理程序,系统就会自动禁止屏幕保护程序发挥作用,磁盘碎片整理也就可以顺利进行了!

      哦!别着急,事情还没完!上面说所的技巧并不是100%的可靠,在某些安装了特殊软件(如Toggle MOUSE)的计算机中,即使“开始”菜单处于打开状态,屏幕保护还是会照常启动(本人就在朋友的家中碰到过一回这种情况,充当“老鸟”不成反而大大地跌了一跤)。对于这些计算机,我们可采用一个更加彻底的解决办法——修改注册表启动Windows 98的注册表编辑器,并在HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Applets/Defrag/Settings分支中创建一个名为DisableScreenSaver的字符串,最后将其值修改为“yes”即可。此后用户再次进行磁盘碎片整理时,系统就会自动禁止启动屏幕保护,然后我们就可以安安心心离开,让计算机自动进行整理了!

      二、防止其他内存驻留程序对磁盘碎片整理的影响

      尽管按照前面的方法我们可以解决屏幕保护程序对磁盘碎片整理的影响,但其他一些内存驻留程序(如内存驻留防病毒程序、垃圾邮件清除程序、计划任务调度程序等)仍然可能会在磁盘碎片整理期间自动激活,从而影响磁盘碎片整理的效率,我们在进行磁盘碎片整理之前同样应将它们关闭。

      对此,我们当然无需手工逐一关闭所有的内存驻留程序,而只需在启动Windows 98并刚刚显示出桌面时按下Ctrl键不放,系统就会跳过“启动”程序组中的所有程序(这些应用程序大多是内存驻留程序),让内存保持在一个相对比较“干净”的状态,然后再进行磁盘碎片整理即可。

      三、启动磁盘碎片整理程序的文件优化功能,提高应用程序的启动速度

      从理论上来说,系统读取连续扇区所需的时间仅为读取不连续扇区所需时间的十分之一,这就充分说明了我们进行磁盘碎片整理的必要性。不过需要明确的是,将某个文件由原来的不连续存放整理为连续存放可以加快磁盘操作的速度,将经常需要使用的应用程序存放在一起(主要是指在硬盘的物理位置上连续存放)同样可以加快系统的运行速度。不过Windows 95的磁盘碎片整理程序仅仅提供了整理文件碎片的功能,而没有将经常使用的应用程序连续存放在一起的功能。为此,Windows 98特意对磁盘碎片整理功能进行了扩充,可以对磁盘文件的位置进行重新排列,新增了将用户使用得比较多的软件移动到连续位置的功能。

      要使用系统的这一新增功能,我们需在启动磁盘碎片整理程序并弹出驱动器选择框之后单击“设置”按钮,然后在弹出的设置对话框中复选“重新安排程序文件以使程序启动得更快”选项。

      四、自定义碎片整理程序文件优化功能

      需要说明的是,上面介绍的文件位置优化功能并不是无限制的,它仅对大约50个文件有效(这里所说的文件全部是指应用程序,数据文件不在优化之列)。也就是说,系统只能对用户使用得最频繁的50个应用程序进行优化,将它们在磁盘上进行连续存放以加快启动速度。在以往,对哪些文件进行优化是由系统控制的,用户无法进行修改,这就令许多用户都深感不便!本人对此进行了一番认真分析,终于找到了Windows 98文件优化功能的关键之所在。

      原来Windows 98在运行过程中会对有关应用程序的运行次数进行监视、记录,并将它们的运行情况按文件一一记录下来。此后用户在进行磁盘碎片整理时,系统就会按照对调用应用程序的频繁程度的记录对其排列位置进行优化。

      具体来说,系统对各个应用程序的调用情况都保存在Windows 98安装文件夹的APPLOG子文件夹中,每个应用程序对应一个记录文件,其记录文件的文件名就是应用程序的程序名,记录文件的扩展名为“LG+‘应用程序所在盘符’”(应用程序若保存在C盘上,则记录文件的扩展名就是LGC、应用程序若保存在D盘上,则记录文件的扩展名就是LGD。如C盘上winword.exe文件的记录文件就是winword.lgc;E盘上winwps32.exe文件的记录文件就是winwps32.lge),广大用户只需对这些文件进行适当“处理”即可对它们在进行磁盘碎片整理时的优化情况进行调整。

      例如某用户最近一段时间没有怎么使用Word,记录的Word使用频率并不高,此后在进行磁盘碎片整理时系统就不会对Word进行优化,假如用户仍然希望对其进行优化,以加快Word的启动速度,只需打开Windows 98安装文件夹APPLOG子文件夹下的winword.lgc文件(这是一个文本文件),然后手工对其使用记录进行适当添加即可(一般只需在文件中将原来的使用记录反复拷贝几次);再如,假设某用户不希望系统对WPS的启动速度进行优化,则只需将APPLOG子文件夹下的winwps32.lge文件删除即可,使用非常方便。

      还有一点需要说明的是,上面所讲述的禁止优化某个程序的方法仅对当次碎片整理有效,用户若打算长期禁止系统对某个应用程序进行优化,则必须在每次进行磁盘碎片整理之前重新对记录文件进行删除,使用很不方便!对此,我们可以通过下面的方法加以解决:

      启动注册表编辑器,并依次展开HKEY_LOCAL_MACHINE/Sofware/Microsoft/Windows/CurrentVersion/TaskMon分支,然后将相应应用程序的文件名称添加到该分支下的ExcludeApps字符串值中即可(只需要应用程序的文件名,无需路径及扩展名,各个应用程序之间使用“”分割)。此后磁盘碎片整理程序再进行文件优化时就不会考虑这些指定的文件了,从而满足了用户的某些特殊需要。

      五、利用命令行参数控制磁盘碎片整理状态

      看到这个标题,有些用户可能会说,都什么年代了,还使用什么命令行参数!话可不能这么说,因为尤其对于磁盘碎片整理这样的系统维护程序来说,命令行参数还有非常强大的生命力——我们在使用Windows 98的“计划任务”管理程序自动进行磁盘碎片整理时,系统就会要求我们输入适当的命令行参数,以便对系统自动进行磁盘碎片整理时的状态进行全面控制。当然,命令行参数还有其它很多作用,这里就不作过多说明了,现将磁盘碎片整理程序的命令行参数简要介绍如下:

      命令格式:defrag [drive/all] [/F|/U|/Q] [/noprompt] [/concise|/detailed]

      命令行参数的含义:

      drive:需要进行磁盘碎片整理的驱动器。

      /all对所有硬盘分区进行碎片整理。

      /F在磁盘碎片整理时同时整理文件和空闲空间。

      /U在磁盘碎片整理时只整理文件。

      /Q在磁盘碎片整理时只整理空闲空间。

      /concise显示隐含的细节信息(默认)。

      /detailed显示可显示的细节信息。

      /noprompt采用无人看守方式进行碎片整理(在整理过程中不停止运行,也不显示有关配置消息)。

      好了,有了以上方法,就让我们充分优化我们的磁盘,让它在系统中体现其最优良的性能吧!

    磁盘碎片整理要注意安全 磁盘碎片整理可以提高文件的读写速度,可是盲目地进行整理,却有可能发生一些不必要的危险,这就要求我们注意以下事项:

      1.整理期间不要进行数据读写

      进行磁盘碎片整理是个很漫长的工作,不少朋友喜欢在整理的同时听歌、打游戏,这是很危险的,因为磁盘碎片整理时硬盘在高速旋转,这个时候进行数据的读写,很可能导致电脑死机,甚至硬盘损坏。

      2.不宜频繁整理

      磁盘碎片整理不同于别的电脑操作,硬盘会高速连续旋转,如果频繁进行磁盘碎片,可能导致硬盘寿命下降,建议一个月左右整理一次。

      3.做好准备工作。

      在整理磁盘碎片前应该先对驱动器进行“磁盘错误扫描”,这样可以防止系统将某些文件误认作逻辑错误而造成文件丢失。具体操作是(以Windows XP为例):在“我的电脑”中选择要整理的驱动器,单击鼠标右键,在弹出的菜单中选择“属性”,进入“工具”选项卡,点击“查错”栏中的“开始查错”按钮,然后按提示操作即可。

      4.双系统下不要交叉整理

      很多朋友都安装有Windows 98和Windows XP双操作系统,但是由于系统兼容性等原因,交叉进行磁盘碎片整理可能会造成文件易位、混乱甚至系统崩溃,所以建议朋友们在Windows 98中整理Windows 98分区,在Windows XP中整理Windows XP分区。

  • 相关阅读:
    安装Linux应用软件的五种基本方法
    gprof使用介绍
    Linux内核对象模型(subsystem,kset,kobject)
    kernel 目录 解析
    linux板级设备的初始化过程(转)
    Linux下I2C驱动程序的分析
    I2C总线设备驱动解析
    linux proc文件系统学习 (转)
    cscope的用法
    mvc3 Razor PartialView视图中Html.DropDownList用法
  • 原文地址:https://www.cnblogs.com/lzhu/p/4703127.html
Copyright © 2011-2022 走看看