NTFS和FAT文件系统中的尺寸限制
每个文件系统都支持一个最大的卷尺寸,文件尺寸,已经每卷可容纳的文件最大数量。因为FAT16和FAT32分别支持4GB和32GB的卷,要创建大于32GB的卷,就必须使用NTFS格式。如果在多系统共存的计算机中使用FAT16或FAT32格式,就必须对其尺寸限制有所了解:
一、小于16MB的FAT卷会被格式化为FAT12格式
二、使用MS-DOS,Win95,Win98,WinMe,以及其它很多操作系统的计算机,其FAT16卷如果超过2GB就不可访问了。这个2GB的限制是由于这些操作系统不支持超过32KB的簇。
三、理论上说,FAT32卷可以达到约8TB;而实际上,WinXPProfessional可以格式化的最大FAT32卷也就是32GB而已。所以,必须使用NTFS格式来格式化超过32GB的卷。但,WinXPPro可以读写用其它操作系统格式化的更大的FAT32卷。
四、如果要建立包含多个物理磁盘的卷,例如跨区卷和带区卷,那么卷的大小就取决于每块磁盘上所使用了的空间。在多物理磁盘上创建大于32GB的卷,仍然要使用NTFS格式。
有关FAT16和FAT32的更多信息,参见“FAT文件系统”。
NTFS卷上的最大尺寸
理论上,NTFS的最大卷包含264减1个簇。实际上,WinXPPro中,NTFS卷的最大限制是232减1个簇。举例来说,如果是64KB的簇,那NTFS卷的最大尺寸就是256TB减64KB这么大。如果使用默认的4KB簇,NTFS卷的最大尺寸就是16TB减4KB这么大了。
由于主引导记录(MBR)中分区表的限制,硬盘仅仅支持最大2TB的分区。要超过这个限制,必须建立NTFS的动态卷。WindowsXPProfessional使用了一种有别于分区表的特殊的数据库来管理动态卷,这就是动态卷可以超过在分区表中2TB限制的原因。动态NTFS卷可以达到NTFS支持的卷尺寸的最大限制。使用GUID分区表的安腾计算机也可以支持超过2TB的NTFS卷。
注
如果在一个NTFS文件夹中包含了大量的(300,000或更多)的文件,请禁止生成短文件名,特别是当长文件名的前6个字符相近的时候。详见后续译文“NTFS性能优化”。
NTFS性能优化
NTFS的性能受很多因素影响,比如簇的大小,磁盘碎片的多少,以及象反病毒软件等应用程序的使用情况等等。此外,NTFS的一些特性,如压缩和索引服务同样可能影响其性能。可以通过下面的一些方法来优化NTFS的性能。
簇的大小
在格式化一个NTFS卷之前,你首先要对自己要保存在该卷上的文件的类型做一个评估,以便决定是否使用默认的簇大小。即,重要的是先回答:
这些(要保存)的文件是否大小基本一致?
是否大部分文件的尺寸要小于默认簇的大小?
这些文件的尺寸是不变的还是常变的?
如果大部分文件都小于默认簇的大小(比如4KB)并且都保持文件尺寸不变,使用默认簇大小将减小磁盘空间的浪费。因为,此时簇的尺寸变小将增加碎片产生的可能,尤其当这些(4KB左右)的文件占用了超过一个簇的空间的时候。所以这时候可以在格式化卷的时候对簇的大小做相应的设定。如果要存储的文件会比较大,或者尺寸可能会增大,就该用16或32KB的簇来替代4KB的簇。
注意:压缩功能只在4KB或更小的簇为基本存储单位的卷上才可以实现。
在Windows2000或更早版本的windows产品中从FAT到NTFS转换的时候也可能影响簇的大小。因为,被转换的卷,簇的大小是512byte,主文件表(MFT)也很可能在转换过程中产生碎片。作为优化性能的考虑,应该备份该卷的所有数据,重新格式化该卷,并在格式化的过程中指定簇的尺寸,然后再恢复数据。
如果想进一步了解对簇的尺寸选择的相关知识,请参考本章前面讲过的“簇尺寸”内容。
短文件名
每当建立一个长文件名的文件时,NTFS就会自动产生一个类似8-3短文件名的备份条目。8-3短文件名即用8个字符表示文件名,3个字符表示文件的扩展名,文件名和扩展名之间用一个句点隔开。
如果在一个文件夹中包含了非常多(例如300,000个或更多)的文件,而且所有文件都采用了长文件名规则命名并且初始的字符都相同,那么建立这些文件所需的时间就要增多。这是由于NTFS是根据长文件名的前6个字符来建立短文件名索引的。在多于300,000个文件的一个文件夹中,由NTFS用8-3规则建立文件名相似的长文件所对应的短文件名备份时会产生冲突。这种在建立新的短文件名时和已经存在的短文件名之间的冲突,会使NTFS在建立新文件的时候,所耗费的时间是没有这种冲突时的6到8倍。
要减少这种在建立新文件时所耗费的时间,可以在命令提示符下使用fsutilbehaviorset这个命令来禁用8-3规则以优化文件系统性能。详见本章最后部分:“在NTFS上建立MS-DOS-可读取的文件名”。
如果既要让NTFS使用8-3命名规则建立文件名备份,又要提高其系统性能,可以通过建立命名规划,使长文件名在文件名的开始而不是在结尾来体现文件名的不同。详见“WindowsXPProfessional中的文件名”一节。
文件夹结构
NTFS支持在每个卷上有大量文件和文件夹的多个卷的存在,由使用者来组织文件夹结构以达到最优化的工作表现。在决定一个文件夹的结构时,下面几点是要考虑到的:
如果要频繁和快速地建立、删除、打开和关闭其中的文件,就要尽量避免把大量文件放入一个文件夹内。最好的解决方案就是把它们分门别类地放到几个子文件夹中去,这样才能条理清晰地分配自己的工作量。
要是文件之间没有彼此的关联,无法放到几个逻辑上有关联的文件夹中去,那就应该禁用8-3文件名的生成。而如果的确需要8-3文件名(译者注:例如在dos下兼容的需要),提前制订自己的命名计划,使长文件名的前6个字符不尽相同。
关键点
文件夹越大,运行chkdsk.exe命令所需的时间越长。详见“磁盘与文件系统常见问题集”。
磁盘碎片
存在大量碎片的卷,其性能要比经常做碎片整理的卷差。可以通过磁盘碎片整理控制台或者命令提示符下的defrag命令在每周空闲的时候进行磁盘碎片的整理。详见本章前面的小节“对NTFS卷进行磁盘整理”。
反病毒程序
反病毒程序在系统之上扫描病毒,就像撑起了一个保护伞,这也影响到文件系统的性能。这种影响对不同的杀毒软件来说也不一样。在评价杀毒软件的时候,要看哪一个软件在进行基线测试的时候对系统环境影响最小。众多反病毒软件都提供了随用户意愿来自定义软件运行参数的调节选项以降低对操作系统性能的影响。
压缩功能
压缩功能同样增加了系统的额外开销。即使在同一计算机内拷贝文件的时候,压缩文件系统也要经历一个解压缩、拷贝、重压缩为新文件这样一个过程。详见本章前面的小节“文件压缩”。
索引服务
对Win2000/XP用户来说,如果经常在NTFS卷上查找文件,可以通过开启索引服务来大大减少查找的时间。就是对资料的内容(而不仅仅是标题,译者注)进行查找的时候,索引服务同样起作用。
开启索引服务后,NTFS会使用系统的一部分资源来建立和维护索引,跟踪文件更改并对这种更改进行记录。而这些操作仅仅带来很小的性能牺牲。实际上,对于经常进行搜索的卷来说,启用索引服务所带来的查找速度的提升幅度,要远远高于由此带来的文件系统性能下降的幅度。
详见本章前面小节“索引服务”。
最近访问时间
NTFS卷上的每个文件和文件夹都有一个属性,就是“最近访问时间”(LAT),这个属性表明了该文件或文件夹的最后访问时间。比如当某用户打开文件夹列表,在文件夹中添加文件,读取一个文件,或者对某文件进行更改的时候,都会改变这个属性。LAT是存储在内存中并最终在磁盘的两个地方完成写入:
一、MFT记录中文件属性的部分
二、该文件的目录项中。目录项存储在包含该文件的文件夹中,包含多个物理连接的文件(译者理解:文件在空间上的物理存储是不一定连续的,可能有多个物理片段,每个片段称为一个“连接”)也就有多个目录项。
磁盘上已经存在的LAT并不总是最新的,这是由于NTFS每隔一个小时才将在内存中打开的文件的该属性保存一次。在用户或应用程序对文件进行只读操作的时候,NTFS也会延后“最后访问时间”属性的写入,比如在列文件夹目录或者读取(但不是更改)文件夹中的一个文件的时候。如果对于“读”操作,LAT属性也要保持最新的话,所有的“读”操作就变成了“写”操作,这对NTFS的性能是影响很大的。
注
基于文件属性的LAT,即使它的所有在当前存储于磁盘上的值完全不正确,也无关紧要。NTFS会随时将磁盘上的可疑属性值用内存中存储的精确值来替换。
NTFS最终会在下列位置,将内存中的LAT存储到磁盘上。
在文件的属性中
如果当前内存中的LAT和上次保存在硬盘上的LAT有一个小时的时差,或者内存中对该文件的所有进程都结束的时候,NTFS就会对该文件的LAT属性进行更新。例如,如果当前一个文件的LAT是1:00P.M.,而你在1:30P.M.又读取了该文件,NTFS不会更新该LAT。而如果你又在2:00P.M.的时候再次读取该文件,NTFS会把该文件的LAT属性更新到2:00P.M.,因为此时该文件的LAT存储属性为1:00P.M.而内存中的属性为2:00P.M.。
在文件的目录项中
在下列事件发生时,NTFS更新目录项:
当NTFS更新文件的LAT的时候,检测到该文件的LAT比在目录项中存储的LAT差别在一个小时以上的时候。这种更新最为典型地发生在当某个应用程序关闭在文件夹中用于访问该文件的句柄的时候。如果该程序延长该文件句柄的打开时间,就会在更新目录项的时候出现迟滞。
当NTFS更新其它的文件属性比如“最近更改时间”(LMT),而LAT的更新未决的时候。在这种情况下,NTFS会在不影响系统性能的前提下,随其它属性的更新而更新LAT。
注
NTFS不会在内存中对某文件调用的所有进程都结束的时候更新该文件的目录项。
如果有某个NTFS卷,包含了大量的文件夹和文件,那么当某个应用程序对每个文件依次进行简短的访问的时候,由建立LAT更新所占用的I/O带宽会在全部的I/O带宽中占据非常明显的比重。为了加快访问文件夹或文件的速度,可以使用fsutilbehaviorsetdisablelastaccess这个命令来禁止更新LAT。在应用了该命令并重启计算机后,LAT就不会再被更新了。此时建立一个新的文件,它的LAT就会永远保持在它最初建立的时间上。要了解fsutilbehaviorsetdisablelastaccess命令的更多信息,请查看WinXP的帮助
评论 (0)