4.1 Windows文件系统发展概述
FAT是File Allocation Table的简称,其含义就是文件分配表,也就是一种文件分配的方法和组织形式。FAT实际上也是伴随着Windows的发展而逐渐发展的。就Windows的发展历史来说,几乎每一个操作系统都对应着一种新的文件系统。
Windows 3.x和MS-DOS一直使用的是最为原始的文件分配表(FAT)系统,而到了Windows 95时代,则使用了扩展FAT文件系统,进入Windows 98的时候我们已经在使用FAT32文件系统了。伴随着硬件的发展和计算机性能需求的提高,在Windows NT出现的时候,它的文件系统则在继续支持16位文件系统的同时,又支持两种32位的文件系统,即Windows NT文件系统(NTFS)和高性能文件系统(HPFS)。而现在我们普遍使用的Windows XP则优先使用NTFS系统,但同时也支持FAT32系统。
在微软公司的文件系统发展历史上,算上即将在Windows Vista中使用的WinFS,那么迄今为止,DOS/Windows系列操作系统中共使用了6种不同的文件系统,它们分别是:FAT12、FAT16、FAT32、NTFS、NTFS 5.0和Win FS。其中FAT12、FAT16、FAT32均是FAT文件系统。下面我们一一来对它们的相关特点和规则做个介绍。
4.1.1 FAT12文件系统介绍
FAT12文件系统是微软最早的文件系统,是伴随着DOS而诞生的,它采用12位文件分配表,并因此而得名。而以后的FAT系统也都按照计算机的位数来命名,如FAT16表明当时的系统是16位操作系统,而FAT32则说明操作系统为32位操作系统。
FAT12文件系统可以管理的磁盘容量是8MB,这个容量在今天甚至都不能容纳下一个普通的软件,但是在当时没有硬盘的情况下,8MB的容量已经是非常大的了。甚至在DOS时代,比尔·盖茨曾经预言,计算机对于内存的需求,最大到640KB 就足够了。这也从一个侧面说明计算机技术的发展已经远远超出了人们的想象。
4.1.2 FAT16、FAT32文件系统介绍
而在DOS时代逐渐被Windows 95、98所取代后,微软公司为了保持其兼容性,也在不断地在原有基础上发展FAT文件系统,从而出现了FAT16、FAT32文件系统。这样就实现了FAT文件系统可以被MS-DOS、Windows 3.x、Windows95/98/2000、WindowsNT等系统互相识别,从而保证了数据的互通性,保证了高版本支持低版本的兼容性,也就使得低版本向高版本升级更为容易、更为方便。
而FAT文件系统在维持兼容性的同时也放弃了很多可以发展的特点,比如,不支持长文件名、无法支持系统高级容错特性、不具有内部安全特性等。尤其是安全性方面,由于网络的普及,人们对安全性提出了越来越高的要求,那么一种新的文件系统也就呼之欲出了,这就是在Windows NT时代的NTFS文件系统。
4.1.3 NTFS文件系统介绍
应该说NTFS是随着Windows NT操作系统而产生并发展的,在这其中,应该说Windows NT在服务器行业的成功决定了必须发展新的NTFS的需求。
NTFS 的优点是安全性和稳定性极其出色,在使用中不易产生文件碎片。同时由于 NTFS本身就是针对服务器而设计的,因此NTFS分区对用户权限有非常严格的限制,对用户组的磁盘权限非常清晰,每个用户都只能在所在用户组的权限内进行操作,任何试图越权的操作都将被系统禁止。当然,这里面系统管理员的级别是最高的,因为我们日常使用中都普遍使用系统管理员用户组,因此普通用户对文件权限并没有很深的认识。
为了让读者有更为明确的认识,我们可以做这样一个实验,我们使用GUEST用户进入操作系统,在访问 C盘的时候我们就会因权限不足而根本看不到系统文件,更谈不上修改文件了。
除此之外, NTFS分区的权限管理更为底层,直接深入到了最基本的文件级别,而不是其他系统的文件夹级别。同时它还提供了容错结构日志,可以将用户的操作全部记录下来,从而方便了管理员查找故障和问题所在,尽最大可能地保护了系统的安全。
但是,NTFS分区也有其缺点,那就是NTFS格式的兼容性不好,特别是FAT16/32文件系统根本无法识别 NTFS 格式,必须借助于第三方软件才能对 NTFS 分区进行操作,这也是Windows 98 /Windows Me系统与Windows NT系统存在巨大差异的一个重要原因。
提示
自从微软宣布不再研发Windows 9X内核的操作系统之后,NTFS分区格式才算是真正成为了主流的分区格式,由此后续的Windows 2000、Windows XP等操作系统因为基于NT技术而研发,所以提供完善的NTFS分区格式支持。
4.1.4 主分区、扩展分区、逻辑分区、磁盘卷标
讲到硬盘分区,就不得不介绍一下分区的基本知识。一般硬盘分区过程中都要涉及主分区、扩展分区和逻辑分区3个概念,而其作用也各不相同,下面一一介绍。
1.主分区
主分区的主要作用是安装操作系统,使计算机能够正确引导硬盘并成功启动计算机。主分区至少有一个,当有多个分区时,必须设定一个主分区为活动分区才能使操作系统正常启动,而所谓的“激活分区”实际上就是将某个主分区设置为活动分区。
2.扩展分区
因为主分区最多只能有4个,所以一个200GB的硬盘只能分成4个分区,这显然是不合理的。而扩展分区就是为了解决这个问题应运而生的,扩展分区的主要功能就是让你在其中建立逻辑分区,扩展分区是不能直接用来保存资料的,它仅仅为逻辑分区开辟了一个硬盘空间。
3.逻辑分区
从上面的介绍可以了解到,逻辑分区并不是独立的分区,它是建立在扩展分区中的分区,而在Windows下,逻辑分区与主分区都以D、E……盘的形式出现,这也是造成用户分不清主分区和逻辑分区的重要原因之一。一般来说,一个硬盘中只有C盘是被激活的主分区,其余的D盘、E盘等都是逻辑分区。
如果对这个概念仍是不清楚,那就直接记住一个简单原则:逻辑分区在扩展分区中,扩展分区是逻辑分区的容器。只有在建立了扩展分区的基础上才能建立逻辑分区,而扩展分区的损坏将直接导致逻辑分区丢失。
4.磁盘卷标
我们一般将磁盘卷标理解为磁盘的名字,这种看法有其正确的一面。在 Windows 操作系统安装成功之后,按照我们的分区需要就会出现相应的C、D、E、F盘,那么是不是C、D、E、F就是我们的磁盘卷标呢?答案当然是否定的,如图4-1所示。
图4-1 磁盘卷标
从图4-1我们可以看到,硬盘一共被分成C、D、E、F 4个分区。在图中我们可以看到C盘的名称是“操作系统”, D盘的名称是“备份”,而且每一个分区都对应着一个名字,其实这是笔者自己定义的名称,其主要目的就是为了方便我们查找资料,便于我们将数据分门别类存放。
提示
按照图4-1所示,很明显,C盘就是存放操作系统的,而D盘就是存放备份用的。那么由此可以看出,其实卷标的作用也就相当于文件夹的命名,而如果要进行重命名,只要在分区盘符上单击鼠标右键,选择“重命名”后输入名称就可以了。
4.1.5 FAT文件系统原理
FAT是DOS、Windows 9X系统的文件寻址格式,位于DBR之后。顾名思义,文件分配表是用来表示磁盘文件的空分配信息的。它并不真正存储文件内容,也不表示引导区、文件目录的信息。
前面我们已经说过,硬盘每簇的扇区数与硬盘的总容量大小有关,而且同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放,这也就是我们所说的文件的链式存储。保存这些段与段之间的连接信息就是我们所说的FAT,也正是由于FAT的存在,才能使操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。
硬盘中的存储空间状态只有两种:一种是存在数据,而另一种则是没有数据,为了实现文件的链式存储,硬盘上必须准确地记录哪些空间已经被文件占用,哪些可以使用,而且还必须为每个已经占用的簇指出后续的存储空间,而对于后面没有存储空间的文件,则要指明本簇无后续存储空间。
所有的信息都是由FAT表来保存的,表中有很多表项,每一项都记录着一个簇的信息。由于FAT对于文件管理的重要性,我们前面也已经讲过,FAT有一个备份,位于原FAT的后面。我们对硬盘进行了初始化后,FAT中所有项都标明为“未占用”,这也就是硬盘为空的状态。
在使用一段时间以后,如果磁盘有部分空间损坏,那么在格式化硬盘的时候,程序会检测出损坏的簇,并在FAT所对应的信息中标注出该空间为“坏”,进行标注后,以后硬盘在存储文件时就不会再使用这个簇了。
由此我们可以看到,FAT的项数与硬盘上的总簇数相当,因为FAT中需要存放硬盘的簇号,而存储每一项的字节数也与硬盘的总簇数相适应。了解了这些,现在我们可以说明一下为什么我们的硬盘格式化后的容量总是小于硬盘所标称的总容量了。这其中的差值用来保存 FAT、MBR等信息。因为FAT的大小与硬盘的总量成正比,所以硬盘容量越大,FAT所占的空间也就越大。
注意
FAT文件系统有一个共同的通病,那就是磁盘碎片非常严重。因为FAT的设计原理的问题,无论是最早的FAT12还是后续的FAT16、FAT32都无法从根本上来解决磁盘碎片的问题。
4.1.6 NTFS文件系统原理
NTFS文件系统是专门为服务器系统而设计的,同时也是微软取代FAT32的文件系统,我们前面已经说过NTFS文件系统的优点主要集中于安全性、容错性和更为强大的管理能力。
对于现在容量越来越大的硬盘,NTFS比FAT的效率要高很多,而且NTFS存储信息所需要空间要远远小于FAT。
在NTFS分区上,支持随机访问控制和拥有权,对共享文件夹无论采用FAT还是NTFS文件系统都可以指定权限,以免受到本地访问或远程访问的影响。对于在计算机上存储的文件夹、单个文件,或者是通过连接到共享文件夹访问的用户,都可以指定权限,使每个用户只能按照系统赋予的权限进行操作,充分保护了系统和数据的安全。
NTFS使用事务日志自动记录所有文件夹和文件更新,当出现系统损坏和电源故障等问题而引起操作失败后,系统能利用日志文件重做或恢复未成功的操作。主要的作用体现在如下两个方面。
1.通过NTFS许可保护网络资源
在Windows NT下,网络资源的本地安全性是通过NTFS许可权限来实现的。在一个格式化为NTFS的分区上,每个文件或者文件夹都可以单独地分配一个许可,这个许可使得这些资源具备更高级别的安全性,用户无论在本机还是通过远程网络访问设有NTFS许可的资源都必须具备访问这些资源的权限。
2.使用NTFS对单个文件和文件夹进行压缩
NTFS支持对单个文件或者文件夹进行压缩。这种压缩不同于FAT结构中对驱动器卷的压缩,其可控性和速度都要比FAT的磁盘压缩要好得多。
除了以上两个主要的特点之外,NTFS文件系统还具有其他的优点,如对于超过4GB以上的硬盘,使用NTFS分区,可以减少磁盘碎片的数量,大大提高硬盘的利用率;NTFS可以支持的文件大小可以达到64GB,远远大于FAT32下的4GB;支持长文件名等。
4.1.7 下一代Windows文件系统——WinFS
WinFS文件系统全称是Windows Future Storage(Windows未来的存储系统),这种文件格式将会在微软公司下一代操作系统Windows Vista中进行部署,而该文件系统格式也将淘汰现在的FAT32和NTFS格式。
微软对于WinFS的解释是这样的:WinFS是用以组织、搜索和共享多种多样的信息的存储平台。那么我们由此概念可以知道 WinFS 的最主要特性应该集中于搜索和整理数据文件。事实也正是如此,WinFS被设计为在无结构文件和数据库数据之间建立起更好的互操作性,从而提供快捷的文件浏览和搜索功能。WinFS可以从邮件服务器、数据库和其他应用程序中获得信息,以便于搜索,而搜索条件也不再只局限于文件名、文件大小、创建日期、文件标题和作者等,其范围会更广,而且几乎所有的信息都可以被检索,其中索引信息也不例外。
从技术角度而言,WinFS由5个部分组成,即核心WinFS、数据模型、架构、服务和API,如图4-2所示。
图4-2 WinFS结构
1.核心WinFS
核心WinFS由文件系统的核心服务组成。将核心WinFS视为WinFS文件系统的基础,它包括操作和文件系统服务。
其中包括安全性、易管理性、Win32文件访问支持、导入/导出、配额等。
2.数据模型
数据模型不包含在核心服务中,它提供了前面提到的一些技术革新,包括基本的项结构、关系及扩展项与关系的能力。
3.架构
如果没有内置的架构,WinFS不会比现有的文件系统更好,因为WinFS不会以更丰富的方式理解数据或者提供更具结构化的方式来处理数据。WinFS架构包括日常信息(包括文档、电子邮件、任务、媒体、音频视频等)的架构,还包括配置程序和其他与系统相关的数据的系统架构。
4.服务
同步和规则属于WinFS的服务范畴。这些技术位于WinFS的“顶端”,可以为你提供系统基础功能以外的扩展功能。同步功能使你能够通过网络同步WinFS系统,并可以建立同步适配器将WinFS同步到其他系统。例如,你可能希望将联系人信息从你的CRM系统同步到WinFS,以便可以将此数据与WinFS中的其他数据相关联,或者通过WinFS脱机使用此数据。同步适配器可以是双向的,因此在WinFS中对数据所做的所有更改都可以同步和其他系统合作。
5.API
WinFS包括一个功能丰富的API,它是Vista中整个WinFS编程模型的一部分。通过WinFS API,开发人员可以编写WinFS系统的不同结构块,包括数据操作、规则、同步和数据模型。
WinFS不仅是一种文件系统,而且是关系数据库的延伸,它不仅存储以往的文件类型数据,也可以存储非文件类型的数据,就像我们的数据库一样,除了能存储文件信息外,还可以存储一些Item,也就是数据库中的条目。这些条目可以用来存储个人信息、日程表、邮件等。
因此,未来的 WinFS 文件系统的每一个文件都可以有一系列的信息相对应,这也就方便了我们的查找和搜索。对于最为普遍的MP3文件来说,每一个MP3文件都有ID3这类的信息,而正是这些信息保存了音乐文件的演唱者、所属专辑、比特率等,这样详尽的信息对于我们的搜索有很大帮助。
WinFS仍然是建立在NTFS文件系统之上的,并且我们可以把WinFS看做是在NTFS的基础上增加了一个数据库层,也正是这个数据库层的增加使得 WinFS 具备了以往文件系统所不具备的特性。但是鉴于兼容性的问题,虽然WinFS具有很多的优势,但是在Windows Vista中仍然没有完全使用WinFS,而是采用了WinFS结合NTFS文件格式同时存在的方法。
提示
WinFS 文件系统的出现,将导致 FAT32的淘汰,而且在 Vista 中已经不能使用 FAT32格式。而随着现在数据量越来越大,FAT32单个文件4GB 的容量限制已经不能满足未来的应用了。因此,可以肯定地说,无论是否使用Windows Vista, FAT32都将淡出历史的舞台。