从九大方面窥视磁盘碎片整理

一、什么是磁盘碎片?其实磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个磁盘的不同地方,而不是连续地保存在磁盘连续的簇中形成的 。当应用程序所需的物理内存不足时,一般操作系统会在硬盘中产生临时交换文件,用该文件所占用的硬盘空间虚拟成内存 。虚拟内存管理程序会对硬盘频繁读写,产生大量的碎片,这是产生硬盘碎片的主要原因 。其他如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也就不会去优化它了 。

推荐阅读