NTFS 和 FAT 文件系统中的尺寸限制
每个文件系统都支持一个最大的卷尺寸,文件尺寸,已经每卷可容纳的文件最大数量。因为 FAT16 和 FAT32 分别支持 4GB 和 32GB 的卷,要创建大于 32GB 的卷,就必须使用 NTFS 格式。如果在多系统共存的计算机中使用 FAT16 或 FAT32 格式,就必须对其尺寸限制有所了解:
一、小于 16MB 的 FAT 卷会被格式化为 FAT12 格式
二、使用 MS-DOS,Win95,Win98,WinMe,以及其它很多操作系统的计算机,其 FAT16 卷如果超过 2GB 就不可访问了。这个 2GB 的限制是由于这些操作系统不支持超过 32KB 的簇。
三、理论上说,FAT32 卷可以达到约 8TB;而实际上,WinXP Professional 可以格式化的最大 FAT32 卷也就是 32GB 而已。所以,必须使用 NTFS 格式来格式化超过 32GB 的卷。但,WinXP Pro 可以读写用其它操作系统格式化的更大的 FAT32 卷。
四、如果要建立包含多个物理磁盘的卷,例如跨区卷和带区卷,那么卷的大小就取决于每块磁盘上所使用了的空间。在多物理磁盘上创建大于 32GB 的卷,仍然要使用 NTFS 格式。
有关 FAT16 和 FAT32 的更多信息,参见“FAT 文件系统”。
NTFS 卷上的最大尺寸
理论上,NTFS 的最大卷包含 264减 1 个簇。实际上,WinXP Pro 中,NTFS 卷的最大限制是 232减 1 个簇。举例来说,如果是 64KB 的簇,那 NTFS 卷的最大尺寸就是 256TB 减 64KB 这么大。如果使用默认的 4KB 簇,NTFS 卷的最大尺寸就是 16TB 减 4KB 这么大了。
由于主引导记录(MBR)中分区表的限制,硬盘仅仅支持最大 2TB 的分区。要超过这个限制,必须建立 NTFS 的动态卷。Windows XP Professional 使用了一种有别于分区表的特殊的数据库来管理动态卷,这就是动态卷可以超过在分区表中 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 转换的时候也可能影响簇的大小。因为,被转换的卷,簇的大小是 512 byte,主文件表(MFT)也很可能在转换过程中产生碎片。作为优化性能的考虑,应该备份该卷的所有数据,重新格式化该卷,并在格式化的过程中指定簇的尺寸,然后再恢复数据。
如果想进一步了解对簇的尺寸选择的相关知识,请参考本章前面讲过的“簇尺寸”内容。
短文件名
每当建立一个长文件名的文件时,NTFS 就会自动产生一个类似 8-3 短文件名的备份条目。8-3 短文件名即用 8 个字符表示文件名,3 个字符表示文件的扩展名,文件名和扩展名之间用一个句点隔开。
如果在一个文件夹中包含了非常多(例如 300,000 个或更多)的文件,而且所有文件都采用了长文件名规则命名并且初始的字符都相同,那么建立这些文件所需的时间就要增多。这是由于 NTFS 是根据长文件名的前 6 个字符来建立短文件名索引的。在多于 300,000 个文件的一个文件夹中,由 NTFS 用 8-3 规则建立文件名相似的长文件所对应的短文件名备份时会产生冲突。这种在建立新的短文件名时和已经存在的短文件名之间的冲突,会使 NTFS 在建立新文件的时候,所耗费的时间是没有这种冲突时的 6 到 8 倍。
要减少这种在建立新文件时所耗费的时间,可以在命令提示符下使用 fsutil behavior set 这个命令来禁用 8-3 规则以优化文件系统性能。详见本章最后部分:“在 NTFS上建立 MS-DOS-可读取的文件名”。
如果既要让 NTFS 使用 8-3 命名规则建立文件名备份,又要提高其系统性能,可以通过建立命名规划,使长文件名在文件名的开始而不是在结尾来体现文件名的不同。详见“WindowsXP Professional 中的文件名”一节。
文件夹结构
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:00 P.M.,而你在 1:30 P.M. 又读取了该文件,NTFS 不会更新该 LAT。而如果你又在 2:00 P.M. 的时候再次读取该文件,NTFS 会把该文件的 LAT 属性更新到 2:00 P.M.,因为此时该文件的 LAT 存储属性为 1:00 P.M. 而内存中的属性为 2:00 P.M.。
在文件的目录项中
在下列事件发生时,NTFS 更新目录项:
当 NTFS 更新文件的 LAT 的时候,检测到该文件的 LAT 比在目录项中存储的 LAT 差别在一个小时以上的时候。这种更新最为典型地发生在当某个应用程序关闭在文件夹中用于访问该文件的句柄的时候。如果该程序延长该文件句柄的打开时间,就会在更新目录项的时候出现迟滞。
当 NTFS 更新其它的文件属性比如“最近更改时间”(LMT),而 LAT 的更新未决的时候。在这种情况下,NTFS 会在不影响系统性能的前提下,随其它属性的更新而更新 LAT。
注
NTFS 不会在内存中对某文件调用的所有进程都结束的时候更新该文件的目录项。
如果有某个 NTFS 卷,包含了大量的文件夹和文件,那么当某个应用程序对每个文件依次进行简短的访问的时候,由建立 LAT 更新所占用的 I/O 带宽会在全部的 I/O 带宽中占据非常明显的比重。为了加快访问文件夹或文件的速度,可以使用 fsutil behavior set disablelastaccess 这个命令来禁止更新 LAT。在应用了该命令并重启计算机后,LAT 就不会再被更新了。此时建立一个新的文件,它的 LAT 就会永远保持在它最初建立的时间上。要了解 fsutil behavior set disablelastaccess 命令的更多信息,请查看 WinXP 的帮助。
|