解析磁盘原碎片整理.docx
- 文档编号:9685280
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:16
- 大小:28.60KB
解析磁盘原碎片整理.docx
《解析磁盘原碎片整理.docx》由会员分享,可在线阅读,更多相关《解析磁盘原碎片整理.docx(16页珍藏版)》请在冰点文库上搜索。
解析磁盘原碎片整理
解析磁盘原碎片整理
磁盘碎片原理分析
一、什么是磁盘碎片?
其实磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个磁盘的不同地方,而不是连续地保存在磁盘连续的簇中形成的。
当应用程序所需的物理内存不足时,一般操作系统会在硬盘中产生临时交换文件,用该文件所占用的硬盘空间虚拟成内存。
虚拟内存管理程序会对硬盘频繁读写,产生大量的碎片,这是产生硬盘碎片的主要原因。
其他如IE浏览器浏览信息时生成的临时文件或临时文件目录的设置也会造成系统中形成大量的碎片。
文件碎片一般不会在系统中引起问题,但文件碎片过多会使系统在读文件的时候来回寻找,引起系统性能下降,严重的还要缩短硬盘寿命。
另外,过多的磁盘碎片还有可能导致存储文件的丢失
二、磁盘碎片是怎么产生的?
在磁盘分区中,文件会被分散保存到磁盘的不同地方,而不是连续地保存在磁盘连续的簇中。
又因为在文件操作过程中,Windows系统可能会调用虚拟内存来同步管理程序,这样就会导致各个程序对硬盘频繁读写,从而产生磁盘碎片。
三、磁盘读写操作的原理
知道了磁盘碎片的产生原因之后,我们还有必要了解一下程序运行时磁盘的读写动作。
一般运行一个程序时,磁盘驱动器的磁头所做的工作是先搜索该程序运行必需的文件,然后读取数据,最后做读后处理——将数据传送至磁盘高速缓存(Cache)和内存中。
搜索时间在硬盘性能指标中被称为平均寻道时间(Averageseektime),单位为毫秒(ms),目前主流硬盘的平均寻道时间小于9.5ms。
如果能将应用程序的相关文件放在磁盘的连续空间内,磁头搜索的时间将会减少很多。
读取时也是如此,磁盘读取位于磁头下方扇区的数据所需时间仅为将磁头移到另一地点再读取相同数据所需时间的五分之一。
读盘时,系统先检查数据是否在高速缓存中,如果有则直接读取;如果没有则访问磁盘,也就是读盘。
当需要多次读取同一份数据时,Cache的作用很大,但对于第一次读取某个文件,Cache就无能为力了。
于是搜索时间和读取时间在很大程度上影响着程序执行的效率。
为何要整理磁盘Windows系统并不能自动将每个文件按照最大程度减少磁头搜索时间的原则放到磁盘上最合适的位置。
于是Microsoft在Windows中加入了“DiskDefragment”(磁盘碎片整理程序),并提供了“TaskMonitor”(任务监视器)来跟踪程序启动过程中的磁盘活动,以利于“DiskDefragment”能够更有效地工作。
“TaskMonitor”是随Windows启动而自动运行的(当然要在“启动”中选中“TaskMonitor”)。
当加载某个应用程序时,它通过监视磁盘的访问动作来了解该程序启动时搜索和调用的文件,对所需文件进行定位,并将监视结果储存在“C:
WindowsApplog”隐藏目录中。
这个目录中的大多数文件以“.lgx”为扩展名,其中“lg”代表记录文件(LogFile),“x”表示盘符,如D盘程序就以“.lgd”为扩展名;记录文件的文件名为TaskMonitor所监视的应用程序的文件名,如E盘上的WinZip程序记为“Winzip32.lge”。
用户进行磁盘碎片整理时,该程序会根据Applog目录中的信息把应用程序的相关文件移动到磁盘上的连续空间内。
TaskMonitor仅在程序加载过程中对文件信息进行搜索,并且根据程序的加载频率调整优化的顺序,也就是说使用次数最多的软件可获得最多的关照。
Applog目录中的APPLOG.ind文件就记录了应用程序运行的次数。
用户需要将常用软件多次启动,接受TaskMonitor的监视和记录,再使用DiskDefragment进行整理,才能真正实现程序启动速度的提高。
但如果用户中途改变了常用软件,比如以前常用WinZip,现在改用ZipMagic,那么在相当长的时间内DiskDefragment还是先把与WinZip相关的文件移到连续的空间内,而不是ZipMagic,除非ZipMagic的加载次数超过WinZip。
要解决这个问题,用户可将“Winzip32.lgx”文件删除,记录文件不存在了,DiskDefragment也就不会去优化它了。
四、该不该定期整理硬盘?
实际上,定期整理硬盘应该是毫无疑问的。
如果说硬盘碎片整理真的会损害硬盘的话,那也将是在对硬盘进行近乎天文数字般次数的整理之后。
硬盘使用的时间长了,文件的存放位置就会变得支离破碎——文件内容将会散布在硬盘的不同位置上。
这些“碎片文件”的存在会降低硬盘的工作效率,还会增加数据丢失和数据损坏的可能性。
碎片整理程序把这些碎片收集在一起,并把它们作为一个连续的整体存放在硬盘上。
Windows自带有这样的程序:
磁盘碎片整理程序(DiskDefragmenter),但在工具软件NortonUtilities和Nuts&Bolts中有更好的此类程序。
然而,碎片整理对硬盘里的运转部件来说的确是一项不小的工作。
如果硬盘已经到了它生命的最后阶段,碎片整理的确有可能是一种自杀行为。
但在这种情况下,即使您不进行碎片整理,硬盘也会很快崩溃的。
实际上在大多数情况下,定期的硬盘碎片整理减少了硬盘的磨损。
不管怎么说,让硬盘的磁头从1处读取文件总比从8处读取要容易得多。
因此,一个每两周或四周整理一次的硬盘的寿命应当比一个永远不整理的硬盘长。
五、整理前的准备工作
我们在整理硬盘前一般都要对它清理垃圾信息,检查有无错误,最后才能谈到碎片的整理和优化。
因此,我们在整理硬盘前,应该首先做好这些工作:
1、应该把硬盘中的垃圾文件和垃圾信息清理干净。
系统工作一段时间后,垃圾文件就会非常之多,有程序安装时产生的临时文件、上网时留下的缓冲文件、删除软件时剩下的DLL文件或强行关机时产生的错误文件等,建议“菜鸟”朋友还是使用微软的“磁盘清理程序”代劳,“老鸟”当然可以使用一些功能更强的软件或手工清理。
2、检查并修复硬盘中的错误。
首选的仍然是微软的“磁盘扫描程序”,虽然它的速度实在不怎么样,但只要你有足够的耐心,经过这个程序对磁盘完整而详细的扫描后,相信系统中的绝大多数错误已经被修复了。
当然你也可以尝试一下其他工具,如扁鹊神医“NortonWinDoctor”,它的速度可比Windows中的“磁盘扫描工具”快多了。
从九大方面窥视磁盘碎片整理
蓝天·yesky 2004-11-03
关键字查询:
windows 磁盘 碎片 系统
编者按:
其实磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个磁盘的不同地方……
六、整理方法及注意
在Windows里,用户可以从“开始”菜单中选择“程序/附件/系统工具/磁盘碎片整理程序”,弹出选择驱动器窗口,选择要整理的分区,然后点击[确定]即可开始整理,但此方法碎片整理过程非常耗时,一般2GB左右的分区需要1个小时以上,所以建议读者:
1、整理磁盘碎片的时候,要关闭其他所有的应用程序,包括屏幕保护程序,最好将虚拟内存的大小设置为固定值。
不要对磁盘进行读写操作,一旦DiskDefragment发现磁盘的文件有改变,它将重新开始整理。
2、整理磁盘碎片的频率要控制合适,过于频繁的整理也会缩短磁盘的寿命。
一般经常读写的磁盘分区一周整理一次。
七、磁盘扫描程序的命令参数
命令参数在DOS时代可以说是一项基本的技能,很多程序都要靠命令参数来启动,而到了图形化界面时代,已很难再见到其踪迹,但它却实实在在地存在着,而且发挥着不小的作用。
如很多Windows游戏的设置程序就是用/Setup参数来实现的。
通常我们不会太留意某些程序的命令参数,但他们往往包含着某些隐秘的功能,如果运用适当对你很有帮助。
Windows中的磁盘扫描程序就包含着许多命令参数,你可以在MS_DOS方式下或在“运行”对话框中实现,如果需要经常用命令参数,还可以建立一个快捷方式。
/SILENT启动磁盘扫描程序不允许作任何选项设置和高级设置。
/A 检查所有的本地硬盘
/N 自动启动和退出磁盘扫描程序
/P 防止磁盘扫描程序修复所发现的错误
X:
X表示指定要检查的驱动器号(不需要/的命令参数)
举例:
1)检查驱动器E并自动启动和退出磁盘扫描程序
SCANDSKWE:
/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”。
单击“确定”,然后“关闭”,回到“文件类型”选项卡,然后单击“关闭”。
现在,打开“我的电脑”,右键单击想要整理磁盘碎片的驱动器,在弹出的快捷菜单中选择“快速整理磁盘碎片”即可。
--------------------------------------------------------------------------------
作者:
mfq 时间:
2004-12-2308:
26 标题:
解析磁盘原碎片整理
磁盘碎片整理技巧
磁盘碎片整理程序整理硬盘是提高程序执行速度的一种好方法。
但硬盘碎片整理过程非常费时,整理之后,上网、玩游戏,不到一两个星期,程序执行速度又会明显下降,硬盘碎片又大量增多了。
这时,你一定会再用磁盘碎片整理程序重新整理磁盘。
追求极速是好事,但如此频繁地做下去,费时麻烦不用说,久而久之,你的硬盘也会缩短使用寿命。
有没有一种好的方法,既不用频繁地整理硬盘碎片,又不至于过分地降低程序执行速度,答案是肯定的。
现在就介绍给大家。
1、虚拟内存管理程序
虚拟内存的机制是,当应用程序所需的物理内存不足时,默认情况下Win9X会在硬盘C:
WINDOWS系统目录中产生一个文件名为WIN386.SWP的临时交换文件,用该文件所占用的硬盘空间虚拟成内存(即使你什么也不做,只是打开电脑,该文件也一样存在)。
显然,虚拟内存管理程序会对硬盘频繁读写,产生大量的碎片,这是产生硬盘碎片的主要原因。
一般用户的硬盘都有多个分区,也习惯将Win9X系统和应用程序分别安装在C:
WINDOWS和C:
ProgramFiles目录下。
为避免临时交换文件在C区频繁读写产生的大量的碎片,我们可以将临时交换文件指定在其他分区(如D区)生成,具体操作为:
打开“控制面板系统”,在弹出的对话框中单击“性能虚拟内存”,选择“用户自己指定虚拟内存设置”选项,再从“硬盘”选项中选择D:
(注意:
D区可用空间不可小于100MB),最后单击“确定”按钮。
重新启动系统,你会发现WIN386.SWP临时交换文件已经生成在D区的根目录了,也就是说临时交换文件以后只会在D区产生大量的碎片。
从而加快系统的启动速度。
2.IE浏览器
默认情况下,IE浏览器将C:
WINDOWSTemporaryInternetFiles目录作为临时文件储存目录。
若经常上网冲浪,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文件内容,在其中开始处输入SETTEMP=D:
TEMP和SETTMP=D:
TEMP两行,结尾处输入deltree/yd:
emp和mdd:
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所作的注册表设置。
通过Chkntfsvolume:
命令可以查询文件系统类型、文件系统“字位”状态,以及是否已手工安排启动时运行Chkdsk进行卷检查等信息。
Autochk在确定启动时检查哪些卷所使用的注册表项为:
Hkey_local_machineSystemCurrentControlSetControlSessionManagerBootExecute:
REG_MULTI_SZ:
autocheckautochk*
这是Autochk的默认设置,也是使用Chkntfs/d安排启动时检查所有卷所得到的结果。
下面通过设置或重设注册表,来控制Autochk。
命令 BootExecute键植
ChkdskC:
/F autochk/p?
?
C:
ChkdskC:
mountpoint/F Autocheckautochk/p?
?
VOLUME{GUID}
ChkntfsD:
E:
/X Autocheckautochk/k/k:
E*
ChkntfsG:
/C Autocheckautochk/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命令并在其后跟随脚本名称。
例如:
cscriptmyscript.vbs
1、修改AutoChk的Timeout值
为Autochk.exe设定自动延迟时间为30秒。
适用于WindowsXP或Windows2003Server。
strComputer="."
SetobjWMIService=GetObject("winmgmts:
"_
&"{impersonationLevel=impersonate}!
\"&strComputer&"ootcimv2")
SetcolAutoChkSettings=objWMIService.ExecQuery_
("Select*fromWin32_AutochkSetting")
ForEachobjAutoChkSettingincolAutoChkSettings
objAutoChkSetting.UserInputDelay=30
objAutoChkSetting.Put_
Next
2、防止AutoChk在开机时自动运行
即使电脑下次开机时,就算C盘的"字位"已被设定,Autochk也不会对C磁盘执行检查。
适用于WindowsXP或Windows2003Server。
strComputer="."
SetobjWMIService=GetObject("winmgmts:
"_
&"{impersonationLevel=impersonate}!
\"&strComputer&"ootcimv2")
SetobjDisk=objWMIService.Get("Win32_LogicalDisk")
errReturn=objDisk.ExcludeFromAutoChk(Array("C:
"))
Wscript.EchoerrReturn
3、执行ChkDsk
对电脑的D盘执行ChkDks.exe。
适用于WindowsXP或Windows2003Server。
ConstFIX_ERRORS=True
strComputer="."
SetobjWMIService=GetObject("winmgmts:
"_
&"{impersonationLevel=impersonate}!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 解析 磁盘 碎片 整理