6.7实例研究,Windows 2000
文件系统
6.7.1 Windows 2000文件系统概述
Windows 2000支持传统的 FAT文件系统
Windows 2000支持 FAT32文件系统
Windows NT则提供一个全新的文件系统
NTFS。
NTFS具有以下的特性:
l 可恢复性,NTFS提供了基于事务处理模式的文件系统恢复,并支持对重要文件系统信息的冗余存储,从而满足了用于可靠的数据存储和数据访问的要求 。
l 安全性,NTFS利用操作系统提供的对象模式和安全描述体来实现数据安全性 。 在 Windows2000中,安全描述体 (访问控制表或 ACL)
只需存储一次就可在多个文件中引用,从而进一步节省磁盘空间 。
l文件加密:在 Windows2000中,加密文件系统 EFS与 NTFS机密集成,允许在 NTFS卷上存储加密文件 。
l 数据冗余和容错,NTFS借助于分层驱动程序模式提供容错磁盘,
RAID技术允许借助于磁盘镜像技术,或通过奇偶校验和跨磁盘写入来实现数据冗余和容错 。
l大磁盘和大文件,NTFS采用 64位分配簇,从而大大扩充了磁盘卷容量和文件长度 。
l 多数据流:在 NTFS中,每一个与文件有关的信息单元,如文件名,
所有者,时间标记,数据内容,都可以作为文件对象的一个属性,
并由一个流 ( stream) —— 简单的字节队列组成 。
l基于 Unicode的文件名,NTFS采用 16位的 Unicode字符来存储文件名,目录和卷,适用于各个国家与地区,每个文件名可以长达 255
个字符,并可以包括 Unicode字符,空格和多个句点 。
l通用的索引机制,NTFS的体系结构被组织成允许在一个磁盘卷中索引文件属性,从而可以有效地定位匹配各种标准文件 。 在
Windows 2000中,这种索引机制被扩展到其他属性,如对象 ID。
对属性 (例如基于 OLE上的复合文件 )的本地支持,包括对这些属性的一般索引支持 。 属性作为 NTFS流在本地存储,允许快速查询 。
l动态添加卷磁盘空间:在 Windows2000中,增加了不需要重新引导就可以向 NTFS卷中添加磁盘空间的功能 。
l动态坏簇重映射:可加载的 NTFS容错驱动程序可以动态地恢复和保存坏扇区中的数据 。
l磁盘配额:在 Windows2000中,NTFS可以针对每个用户指定磁盘配额,从而提供限制使用磁盘存储器的能力 。
l稀疏文件:在 Windows2000中,用户能够创建文件,并且在扩展这些文件时不需要分配磁盘空间就能将这些文件扩展为更大 。
另外,磁盘的分配将推迟至指定写入操作之后 。
l压缩技术:在 Windows2000中,避免解压和再压缩在整个网络中传递的压缩文件数据,减少了服务器的 CPU开销 。
l分布式链接跟踪:在 Windows2000中,NTFS支持文件或目录的唯一 ID号的创建和指定,并保留文件或目录的 ID号 。 通过使用唯一的 ID号,从而实现分布式链接跟踪 。 这一功能将改进当前的文件引用存储方式 (例如,在 OLE链接或桌面快捷方式中 )。 重命名目标文件的过程将中断与该文件的链接 。 重命名一个目录将中断所有此目录中的文件链接及此目录下所有文件和目录的链接 。
l POSIX支持:如支持区分大小写的文件名,链接命令,POSIX时间标记等 。 在 Windows2000中,还允许实现符号链接的重解析点,仲裁文件系统卷的装配点和远程存储,分层存储管理 (HSM)”。
Windows 2000提供分布式文件服务
分布式文件系统 (DFS)是用于 Windows 2000服务器上的一个网络服务器组件,DFS能够使用户更加容易地找到和管理网上的数据 。 使用
DFS,可以更加容易地创建一个单目录树,该目录树包括多文件服务器和组,部门或企业中的文件共享 。
另外,DFS可以给予用户一个单一目录,这一目录能够覆盖大量文件服务器和文件共享,使用户能够很方便地通过,浏览,网络去找到所需要的数据和文件 。 浏览 DFS目录是很容易的,
因为不论文件服务器或文件共享的名称如何,
系统都能够将 DFS子目录指定为逻辑的,描述性的名称 。
6.7.2NTFS的实现层次
I/O管理器
NTFS驱动程序容错驱动程序磁盘驱动程序日志文件服务高速缓存管理器虚拟内存管理器纪录事务读写文件把数据从磁盘加载到内存写高速缓存访问映射的文件或转存高速缓存转存日志文件读写镜像或带区的卷读写磁盘
日志文件服务 (LFS)是为维护磁盘写入的日志而提供服务的 NTFS的一部分 。 此日志文件用于在系统失败时恢复 NTFS的己格式化的卷 。
高速缓存管理器是 Windows 2000的执行体组件,它为 NTFS以及包括网络文件系统驱动程序 (服务器和重定向程序 )的其他文件系统驱动程序提供系统范围的高速缓存服务。
Windows2000虚拟内存管理器
Windows2000的所有文件系统通过把高速缓存文件映射到虚拟内存,然后访问虚拟内存来访问它们。为此,高速缓存管理器提供了一个特定的文件系统接口
NTFS数据结构
对象管理器数据结构句柄表进程文件对象文件对象
NTFS数据库
(磁盘上的结构)
主控文件表
NTFS数据结构
(用来管理磁盘的内存结构)
数据属性用户定义属性文件控制块流控制块
6.7.3 NTFS在磁盘上的结构
NTFS卷中存放的所有数据都包含在一个
NTFS元数据文件中,包括定位和恢复文件的数据结构,引导程序数据和记录整个卷分配状态的位图 。
主控文件表 MFT
是 NTFS卷结构的中心 。 它使用文件记录数组来实现的 。 NTFS忽略簇的大小,每个文件记录的大小都被固定为 1KB。 从逻辑上讲,卷中的每个文件在 MFT上都有一行,其中还包括
MFT自己的一行 。 除了 MFT以外,每个 NTFS
卷还包括一组,元数据文件,,其中包含用于实现文件系统结构的信息 。 每一个这样的
NTFS元数据文件都有一个以美元符号 ($)开头的名称,虽然该符号是隐藏的 。 例如,MFT的文件名为 $MFT。 NTFS卷中的其余文件是正常的用户文件和目录,如图 6-17所示 。
当 NTFS首次访问某个卷时,它必须,装配,
该卷 —— 也就是说准备使用它 。 要装配该卷,
NTFS会查看引导文件,找到 MFT的物理磁盘地址 。 MFT自己的文件记录是表中的第一项;
第二个文件记录指向位于磁盘中间的称作
,MFT镜像,的文件 (文件名为 $MFTMirr),该文件包含有 MFT前面几行的副本 。 如果因某种原因 MFT文件不能读取时,这种 MFT的部分副本就用于定位元数据文件 。
MFT中 NTFS元数据文件的文件记录
MFT
MFT副本日志文件卷文件属性定义表根目录位图文件引导文件坏簇文件
……
用户文件和目录
……
系统运行时,NTFS会向另一个重要的元数据文件 —— 日志文件 (log fi1e)(文件名为 $LogFile)写入信息 。 NTFS使用日志文件记录所有影响 NTFS卷结构的操作,包括文件的创建或改变目录结构的任何命令,例如复制 。 日志文件被用来在系统失败后恢复 NTFS卷 。
NTFS把卷的分配状态记录在位图文件
(bitmap file)(文件名为 $Bitmap)中 。 用于该位图文件的数据属性包含一个位图,
它们中的每一位代表卷中的一簇,标识该簇是空闲的还是已被分配给了一个文件 。
NTFS还保留了一个记录磁盘卷中所有损坏位置的,坏簇文件,(bad-cluster)(文件 名 为 $BadClus) 和 一 个,卷文件,(volume fi1e)(文件名为 $volume),
卷文件包含卷名,被格式化的卷的 NTFS
版本和一个位,当设置此位时表明磁盘已经损坏,必须用 Chkdsk实用程序来恢复 。
最后,NTFS保持一个包含属性定义表
(attribute definition table)的文件 (名为
$AttrDef),它定义了卷中支持的属性类型,并指出它们是否可以被索引,在系统恢复操作中是否可以恢复 。
NTFS将文件作为许多属性 /值对的集合来存储,
其中的一个就是它包含的数据 (称为未命名的数据属性 )。 组成文件的其他属性包括文件名,时间标记,安全描述体以及可能附加的命名数据属性 。 每个文件的属性在文件中以单独的字节流存储 。 严格地讲,NTFS不读取也不写入文件 —— 它只是读取和写入属性流 。 NTFS提供了这些属性操作:创建,删除,读取 (字节范围 )
以及写入 (字节范围 )。 读取和写入服务一般是对文件的未命名属性的操作 。 然而,调用程序可以通过使用己命名的数据流句法来指定不同的数据属性 。
NTFS和 FAT文件系统的文件名长度在
255 个字符以内 。 文件名可以包括
Unicode字符,空格和多个句点 。 并可以映射到 DOS和 POSIX的名字空间 。
文件系统
6.7.1 Windows 2000文件系统概述
Windows 2000支持传统的 FAT文件系统
Windows 2000支持 FAT32文件系统
Windows NT则提供一个全新的文件系统
NTFS。
NTFS具有以下的特性:
l 可恢复性,NTFS提供了基于事务处理模式的文件系统恢复,并支持对重要文件系统信息的冗余存储,从而满足了用于可靠的数据存储和数据访问的要求 。
l 安全性,NTFS利用操作系统提供的对象模式和安全描述体来实现数据安全性 。 在 Windows2000中,安全描述体 (访问控制表或 ACL)
只需存储一次就可在多个文件中引用,从而进一步节省磁盘空间 。
l文件加密:在 Windows2000中,加密文件系统 EFS与 NTFS机密集成,允许在 NTFS卷上存储加密文件 。
l 数据冗余和容错,NTFS借助于分层驱动程序模式提供容错磁盘,
RAID技术允许借助于磁盘镜像技术,或通过奇偶校验和跨磁盘写入来实现数据冗余和容错 。
l大磁盘和大文件,NTFS采用 64位分配簇,从而大大扩充了磁盘卷容量和文件长度 。
l 多数据流:在 NTFS中,每一个与文件有关的信息单元,如文件名,
所有者,时间标记,数据内容,都可以作为文件对象的一个属性,
并由一个流 ( stream) —— 简单的字节队列组成 。
l基于 Unicode的文件名,NTFS采用 16位的 Unicode字符来存储文件名,目录和卷,适用于各个国家与地区,每个文件名可以长达 255
个字符,并可以包括 Unicode字符,空格和多个句点 。
l通用的索引机制,NTFS的体系结构被组织成允许在一个磁盘卷中索引文件属性,从而可以有效地定位匹配各种标准文件 。 在
Windows 2000中,这种索引机制被扩展到其他属性,如对象 ID。
对属性 (例如基于 OLE上的复合文件 )的本地支持,包括对这些属性的一般索引支持 。 属性作为 NTFS流在本地存储,允许快速查询 。
l动态添加卷磁盘空间:在 Windows2000中,增加了不需要重新引导就可以向 NTFS卷中添加磁盘空间的功能 。
l动态坏簇重映射:可加载的 NTFS容错驱动程序可以动态地恢复和保存坏扇区中的数据 。
l磁盘配额:在 Windows2000中,NTFS可以针对每个用户指定磁盘配额,从而提供限制使用磁盘存储器的能力 。
l稀疏文件:在 Windows2000中,用户能够创建文件,并且在扩展这些文件时不需要分配磁盘空间就能将这些文件扩展为更大 。
另外,磁盘的分配将推迟至指定写入操作之后 。
l压缩技术:在 Windows2000中,避免解压和再压缩在整个网络中传递的压缩文件数据,减少了服务器的 CPU开销 。
l分布式链接跟踪:在 Windows2000中,NTFS支持文件或目录的唯一 ID号的创建和指定,并保留文件或目录的 ID号 。 通过使用唯一的 ID号,从而实现分布式链接跟踪 。 这一功能将改进当前的文件引用存储方式 (例如,在 OLE链接或桌面快捷方式中 )。 重命名目标文件的过程将中断与该文件的链接 。 重命名一个目录将中断所有此目录中的文件链接及此目录下所有文件和目录的链接 。
l POSIX支持:如支持区分大小写的文件名,链接命令,POSIX时间标记等 。 在 Windows2000中,还允许实现符号链接的重解析点,仲裁文件系统卷的装配点和远程存储,分层存储管理 (HSM)”。
Windows 2000提供分布式文件服务
分布式文件系统 (DFS)是用于 Windows 2000服务器上的一个网络服务器组件,DFS能够使用户更加容易地找到和管理网上的数据 。 使用
DFS,可以更加容易地创建一个单目录树,该目录树包括多文件服务器和组,部门或企业中的文件共享 。
另外,DFS可以给予用户一个单一目录,这一目录能够覆盖大量文件服务器和文件共享,使用户能够很方便地通过,浏览,网络去找到所需要的数据和文件 。 浏览 DFS目录是很容易的,
因为不论文件服务器或文件共享的名称如何,
系统都能够将 DFS子目录指定为逻辑的,描述性的名称 。
6.7.2NTFS的实现层次
I/O管理器
NTFS驱动程序容错驱动程序磁盘驱动程序日志文件服务高速缓存管理器虚拟内存管理器纪录事务读写文件把数据从磁盘加载到内存写高速缓存访问映射的文件或转存高速缓存转存日志文件读写镜像或带区的卷读写磁盘
日志文件服务 (LFS)是为维护磁盘写入的日志而提供服务的 NTFS的一部分 。 此日志文件用于在系统失败时恢复 NTFS的己格式化的卷 。
高速缓存管理器是 Windows 2000的执行体组件,它为 NTFS以及包括网络文件系统驱动程序 (服务器和重定向程序 )的其他文件系统驱动程序提供系统范围的高速缓存服务。
Windows2000虚拟内存管理器
Windows2000的所有文件系统通过把高速缓存文件映射到虚拟内存,然后访问虚拟内存来访问它们。为此,高速缓存管理器提供了一个特定的文件系统接口
NTFS数据结构
对象管理器数据结构句柄表进程文件对象文件对象
NTFS数据库
(磁盘上的结构)
主控文件表
NTFS数据结构
(用来管理磁盘的内存结构)
数据属性用户定义属性文件控制块流控制块
6.7.3 NTFS在磁盘上的结构
NTFS卷中存放的所有数据都包含在一个
NTFS元数据文件中,包括定位和恢复文件的数据结构,引导程序数据和记录整个卷分配状态的位图 。
主控文件表 MFT
是 NTFS卷结构的中心 。 它使用文件记录数组来实现的 。 NTFS忽略簇的大小,每个文件记录的大小都被固定为 1KB。 从逻辑上讲,卷中的每个文件在 MFT上都有一行,其中还包括
MFT自己的一行 。 除了 MFT以外,每个 NTFS
卷还包括一组,元数据文件,,其中包含用于实现文件系统结构的信息 。 每一个这样的
NTFS元数据文件都有一个以美元符号 ($)开头的名称,虽然该符号是隐藏的 。 例如,MFT的文件名为 $MFT。 NTFS卷中的其余文件是正常的用户文件和目录,如图 6-17所示 。
当 NTFS首次访问某个卷时,它必须,装配,
该卷 —— 也就是说准备使用它 。 要装配该卷,
NTFS会查看引导文件,找到 MFT的物理磁盘地址 。 MFT自己的文件记录是表中的第一项;
第二个文件记录指向位于磁盘中间的称作
,MFT镜像,的文件 (文件名为 $MFTMirr),该文件包含有 MFT前面几行的副本 。 如果因某种原因 MFT文件不能读取时,这种 MFT的部分副本就用于定位元数据文件 。
MFT中 NTFS元数据文件的文件记录
MFT
MFT副本日志文件卷文件属性定义表根目录位图文件引导文件坏簇文件
……
用户文件和目录
……
系统运行时,NTFS会向另一个重要的元数据文件 —— 日志文件 (log fi1e)(文件名为 $LogFile)写入信息 。 NTFS使用日志文件记录所有影响 NTFS卷结构的操作,包括文件的创建或改变目录结构的任何命令,例如复制 。 日志文件被用来在系统失败后恢复 NTFS卷 。
NTFS把卷的分配状态记录在位图文件
(bitmap file)(文件名为 $Bitmap)中 。 用于该位图文件的数据属性包含一个位图,
它们中的每一位代表卷中的一簇,标识该簇是空闲的还是已被分配给了一个文件 。
NTFS还保留了一个记录磁盘卷中所有损坏位置的,坏簇文件,(bad-cluster)(文件 名 为 $BadClus) 和 一 个,卷文件,(volume fi1e)(文件名为 $volume),
卷文件包含卷名,被格式化的卷的 NTFS
版本和一个位,当设置此位时表明磁盘已经损坏,必须用 Chkdsk实用程序来恢复 。
最后,NTFS保持一个包含属性定义表
(attribute definition table)的文件 (名为
$AttrDef),它定义了卷中支持的属性类型,并指出它们是否可以被索引,在系统恢复操作中是否可以恢复 。
NTFS将文件作为许多属性 /值对的集合来存储,
其中的一个就是它包含的数据 (称为未命名的数据属性 )。 组成文件的其他属性包括文件名,时间标记,安全描述体以及可能附加的命名数据属性 。 每个文件的属性在文件中以单独的字节流存储 。 严格地讲,NTFS不读取也不写入文件 —— 它只是读取和写入属性流 。 NTFS提供了这些属性操作:创建,删除,读取 (字节范围 )
以及写入 (字节范围 )。 读取和写入服务一般是对文件的未命名属性的操作 。 然而,调用程序可以通过使用己命名的数据流句法来指定不同的数据属性 。
NTFS和 FAT文件系统的文件名长度在
255 个字符以内 。 文件名可以包括
Unicode字符,空格和多个句点 。 并可以映射到 DOS和 POSIX的名字空间 。