前言:
前几天碰巧和几个朋友讨论到了如何最大限度的优化磁盘性能的问题,虽然现在这方面功能强大的工具不少,但是总觉得除了要知道如何运用这些工具外,还是要对一些有关磁盘分区的基本知识有所了解,所以就抽空写了这篇文章来和大家分享。
由于影响NTFS文件系统的性能有很多的因素:比如硬盘簇区的大小,MFT和页面文件的碎片化程度,其所处于硬盘分区的位置,NTFS卷区的压缩,NTFS的卷区来源(比如是否是从FAT卷区转换来的)等。所以说到要对NTFS文件系统的性能进行优化,我们就必须优化所有这些影响NTFS文件系统性能的全局变量。当然还有一些其他的方法比如整理硬盘碎片也可以在一定的限度上改善磁盘的工作性能。
合理定义磁盘簇区的大小
簇区是一个磁盘存储的基本单位。当我们在建立文件时,即使该文件只有一个字节大小,如果是在FAT文件系统上那么系统还是会分配一个簇区来保存该文件。而在NTFS文件系统下,如果文件足够小,那么文件可能就会被保存在MFT主文件表中而不需要分配额外的簇区来保存。如果当文件的大小逐渐增大而超出了第一个簇区的容量,那么系统会自动分配一个额外的簇区来使用。从这里我们可以看到,如果簇区的空间越大,那么浪费的空间也可能越多。但是,磁盘的总体性能会比较好。
下面的表里的数据就是在Windows NT/2000/XP下格式化NTFS分区所用到的默认值
磁盘大小(逻辑卷区)
簇区大小
扇区
512 MB 或者更小
512 bytes
1
513 MB - 1,024 MB (1 GB)
1,024 bytes (1 KB)
2
1,025 MB - 2,048 MB (2 GB)
2,048 bytes (2 KB)
4
2,049 MB 和更大
4,096 bytes (4 KB)
8
当我们在格式化磁盘分区时,我们可以在格式化对话框里制定簇区的大小,如:512字节,1, 1 KB, 2 KB, 4 KB, 8 KB, 16 KB, 32 KB, 64 KB或者在使用FORMAT命令时在参数里指定簇区大小。
那么我们需要如何决定簇区的大小呢?最简单的一种方法就是用磁盘的大小(以千字节为单位)来除以文件的总数量。另一种方法则是在格式磁盘分区时根据将要保存的文件类型来做决定,比如如果我们知道自己将会在该分区收录很多比较大的文件,比如avi等,那么建立大一些的簇区可以提高磁盘的工作性能。如果硬盘分区上保存的是比较多的小文件比如网页文件,文本文件等等,那么建立比较小一点的簇区则不会让我们浪费太多的磁盘空间。
注意:如果在磁盘分区上, 有大于4KB的簇区时,那么文件系统将不会支持数据压缩。
MFT主文件表的保留和碎片化
由于MFT保存的是每个分区经常用到的系统文件和索引,所以MFT的性能会对整个分区造成相当大的影响。在默认状况下,NTFS文件系统会保留一部分磁盘的空间作为MFT专用的缓冲区域,其大小通常是磁盘分区大小的 12.5%. 但是,如果硬盘的文件太多,那么MFT的空间将可能超出保留的磁盘空间而出现碎片化。另外,当用户删除文件时,NTFS通常不会使用被删除文件的空间来保存新文件。它只是简单把MFT里的文件记录标记成被删除,同时还是会用新的空间来保存新文件。虽然这样我们可以得到被删除文件的恢复可能性,同时也加重了MFT的碎片化。
当MFT的碎片化越厉害,那么硬盘读取文件数据将花费越多的时间,结果导致系统的性能总体降低。
从Windows NT 4.0 SP4开始,我们就可以通过对注册表的修改来定义MFT区的大小:
Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
NtfsMftZoneReservation 的类型是DWORD,它的值可以是从1到4。不同的值将容许你在格式化磁盘时定义MFT分区和磁盘分区的大小比例(12.5%, 25%, 37.5%, 50%)
文件及文件夹的碎片化
当硬盘空间被不断的占用而用户又不断的拷贝和删除文件时,不止MFT主文件表会出现碎片,而且文件和文件夹也会出现碎片化。这同样会导致系统运行性能的降低,所以推荐使用碎片整理工具定期对硬盘的碎片进行整理。从Windows 2000开始,硬盘碎片整理工具已经成为了系统的一部分。虽然其性能并不是特别强大,但是仍然可以很大限度的提高系统的整体性能。
当然,即使我们没有这样的工具也仍然可以使用下面的一些方法来整理硬盘分区的碎片。比如:把所有文件和文件夹拷贝到另一个分区,以让原来的分区尽可能的清空,然后再把所有的文件和文件拷贝回原来的分区。虽然这样做比不上使用专业的磁盘碎片整理工具,但是,它还是可以相当有效的提高磁盘的运行性能。
注意: 如果你有针对这些文件和文件夹做一些安全和权限的设置,那么在不同的分区之间移动文件可能导致你丧失这些性能。另外,如果想要完全避免文件夹碎片化,建议在安装应用程序和拷贝大量的文件之前先对硬盘做一次完全的碎片整理
页面文件的碎片化
在大多数的情况下,我们不可能对页面文件(PAGEFILE.SYS)的碎片进行整理,包括一些普通的碎片整理工具,这是因为页面文件在不断的被操作系统使用来作为虚拟内存的存储。但是,我们还是可以通过运用下面的方法来进行手动整理。
方法一,如果我们有两个硬盘分区,那么可以把页面文件设置到另一个分区后重启电脑,然后对对原来的分区进行碎片整理,等碎片整理好了,再把页面文件的位置恢复到原来的分区上再重启电脑。
方法二,如果我们只有一个分区,那么可以先把页面文件的大小降低到最小,然后重启电脑,然后对硬盘进行碎片整理,碎片整理好后再恢复页面文件的原来大小,然后重启电脑。
NTFS分区上的文件压缩
压缩可以为我们的硬盘节省大量的空间,但是由于CPU速度,分区大小以及压缩数据类型的不同而导致系统总体性能的可能增加或者降低。比如,如果我们有一个比较快速的CPU和一个相对低速的硬盘,那么推荐对数据进行压缩。因为经过压缩后的文件会占用比较小的硬盘空间,因此我们对压缩文件的解压读取会比从慢速的硬盘读取没有压缩的大量文件花费比较少的时间。
而且如果硬盘越大(>8Gb),那么文件压缩对系统性能的影响也越大。当然,我们还必须避免对一些不可能被压缩的文件进行压缩,比如:JPG图片文件,ZIP压缩文件,等等。比较理想的可压缩文件为文本文件,bitmap图片等等。
把分区从FAT格式转换成NTFS格式
如果我们不是在新建的NTFS分区上安装Windows系统,而是从FAT格式转化成NTFS格式的,那么通常在分区格式的转换过程中会导致MFT出现碎片,所以系统在转化后的分区上运行速度可能会慢很多。而且普通的碎片整理工具一般也不会对MFT进行整理。如果你需要整理MFT碎片,可以考虑备份所有的系统文件,然后重新格式化硬盘成NTFS并建立相应的簇区然后在做数据恢复。
推荐文章:
HOW TO: Use the Disk Defragmenter Tool in Windows 2000 (Q318759)
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q318759
The Default Cluster Size for the NTFS and FAT File Systems (Q314878) :
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q314878
How NTFS Reserves Space for its Master File Table (MFT) (Q174619)
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174619
推荐碎片整理工具:
Executive的Diskeeper。
该工具是我到目前而止所见过的最有效的磁盘碎片整理工具。其最新的9.0版不但比以前所有的版本更加有效地整理MFT,页面文件及文件和文件夹的碎片,其速度也更快。而且最新的administrator版本还实现了对大数量的服务器的碎片管理的集中处理,用户还可以通过到其网站下载一个免费配件安装后支持AD群策略。