360 likes | 588 Views
6.6Windows 2003 文件系统. 6.6.1 文件系统概述 6.6.2 NTFS 在磁盘上的结构结构 6.6.3 文件系统模型和 FSD 体系结构 6.6.4 NTFS 在磁盘上的结构 6.6.5 NTFS 可恢复性支持 6.6.6 NTFS 安全性支持. 6.7.1 文件系统概述. Windows 支持传统的 FAT12 、 FAT16 、 FAT32 文件系统 Windows 支持:只读光盘 CDFS 、通用磁盘格式 UDF 、高性能 HPFS 等文件系统。
E N D
6.6Windows 2003文件系统 6.6.1 文件系统概述 6.6.2 NTFS在磁盘上的结构结构 6.6.3 文件系统模型和FSD体系结构 6.6.4 NTFS在磁盘上的结构 6.6.5 NTFS可恢复性支持 6.6.6 NTFS安全性支持
6.7.1 文件系统概述 • Windows 支持传统的FAT12、FAT16 、 FAT32文件系统 • Windows 支持:只读光盘CDFS、通用磁盘格式UDF、高性能HPFS等文件系统。 • Windows NT提供一个全新的文件系统NTFS(New Technology File System) 。
NTFS具有的特性 •可恢复性: •安全性: •文件加密: •数据冗余和容错: •大磁盘和大文件: •通用的索引机制: •基于Unicode文件名: •数据流: •动态添加卷磁盘空间:•稀疏文件: •磁盘配额: •动态坏簇重映射: •压缩技术: •分布式链接跟踪: •POSIX支持:
6.6.2 NTFS在磁盘上的结构 1 MFT的结构 • 物理磁盘可组织成一个或多个卷 • 逻辑簇号LCN • 虚拟簇号VCN • 主控文件表MFT
MFT($Mft) /*记录卷中所有文件的所有属性 MFT副本($MftMirr) /*MFT表前9行的副本 日志文件($Logfile) /*记录影响卷结构操作,系统恢复用 卷文件($Volume) /*卷名,卷的NTFS版本等信息 属性定义表($AttrDef) /*定义卷的属性类型,如可恢复性 根目录($/) /*存放根目录内容 位图文件($Bitmap) /*盘空间位图,每位一簇 引导文件($Boot) /*Win2000/XP引导程序 坏簇文件($BadClus) /*记录磁盘坏道 安全文件($Secure) /*存储卷的安全性描述数据库 大写文件($UpCase) /*包含大小写字符转换表 扩展元数据目录($Ext. metadata Directory) … 用户文件和目录 … 主控文件表MFT(3) MFT中NTFS元数据文件的文件记录
2 MFT的记录结构 • MFT的文件记录由记录头和紧跟其后的一系列(属性,属性值)对组成。 • 记录头包含一个用于有效性检查的魔数,文件生成时的顺序号,文件的引用计数,记录中实际使用的字节数。记录头之后依次是第一个属性和它的属性值,第二个属性和属性值等。 • (属性,属性值)对是指属性的名字和属性的具体内容。 • NTFS不是简单地将文件视为一系列字节的集合,而是将它看成由许多(属性,属性值)集合来进行存储和处理的。
2文件属性 • NTFS将文件作为属性/属性值的集合来处理, • 文件数据是未命名属性的值, • 其他文件属性包括文件名、文件拥有者、文件时间标记等。 • 每个属性由单个流组成(简单的字符队列)。NTFS并不对文件进行操作,而只是对属性流的读写。 • NTFS提供对属性流的操作包括:创建、删除、读取以及写入。 • 读写操作是针对文件的未命名属性的,对已命名的属性则可通过已命名的数据流句法来进行操作。
标准信息 文件名 文件数据 常驻属性 • 小文件的所有属性值存在MFT的文件记录中。当属性值能直接存放在MFT中时,该属性就称为常驻属性。 • 文件有些属性总是常驻的,这样NTFS才可确定其他非常驻属性。例如,标准信息属性和文件名属性就总是常驻属性。 • 标准信息属性包括基本文件属性(如只读、存档);时间标记(如文件创建和修改时间);文件链接数等。 • 小文件的MFT记录
非常驻属性(1) • 大文件或大目录的所有属性,不可能都常驻在MFT中。如果一个属性太大而不能存放在只有1KB的MFT文件记录中,NTFS将从MFT之外分配区域。这些区域称为一个扩展(extent),它们可用来存储属性值,如文件数据。 • 值存储在扩展中而不是在MFT文件记录中的属性称为非常驻属性。
标准信息 文件名 数据 HPFS扩展属性 数据 数据 非常驻属性(2) 存储在两个扩展中的非常驻属性
标准信息 文件名 数据 0 1 2 3 VCN 4 5 6 7 数 据 数 据 1278 1279 1280 1281 LCN 1300 1301 1302 1303 非常驻数据属性VCN-LCN编号
标准信息 文件名 开始VCN 开始LCN 簇数 0 1278 4 4 1300 4 VCN 4 5 6 7 数 据 1300 1301 1302 1303 LCN 0 1 2 3 数 据 1278 1279 1280 1281 非常驻数据属性VCN-LCN映射
文件索引 标准信息目录名 安全 描述 文件1 文件2 文件3 空 符 4 文件目录(1) • NTFS系统中,文件目录仅仅是文件名的一个索引。NTFS使用了一种特殊的方式把文件名组织起来,以便于快速访问。 • 当创建一个目录时,NTFS必须对目录中的文件名属性进行索引。 • 小目录的MFT记录
索引根 标准信息文件名索引分配 位图 文件3 文件7 … 文件1 文件2 文件4 文件5 文件6 索引缓冲区 文件目录(2) 大目录的MFT记录
I/O API 过滤驱动程序 I/O 管理器 文件系统驱动程序 NT 执行体 过滤驱动程序 中间驱动程序 过滤驱动程序 设备驱动程序 HAL 物理设备 6.6.3文件系统模型和FSD体系结构 Windows文件系统模型(1)
文件系统模型(2) • 设备驱动程序:位于I/O管理器的最低层,直接对设备进行I/O操作。 • 中间驱动程序:与低层设备驱动程序一起提供增强功能,如发现I/O失败时,中间驱动程序却可能在收到出错信息后,向设备驱动程序下达重执请求。 • 文件系统驱动程序FSD:扩展低层驱动程序的功能,实现特定的文件系统(如NTFS)。 • 过滤驱动程序:可位于设备驱动程序与中间驱动程序之间,可位于中间驱动程序与文件系统驱动程序之间,可位于文件系统驱动程序与I/O管理器API之间。
应用程序接口 用户态 I/O管理器 核心态 文件系统驱动程序 存储设备驱动 物理设备 物理磁盘 文件系统驱动程序1本地FSD(1)
本地FSD(2) • 本地FSD还创建一个设备对象表示所装载的文件系统。 • 本地FSD用高速缓存管理器来缓存文件系统数据,它与主存管理器一起实现主存文件映射。 • 本地FSD还支持文件系统卸载操作。
客户端 服务器端 应用程序 用户态 用户态 远程FSD (服务器) I/O管理器 物理磁盘 本地FSD 远程FSD (重定向器) 存储设备驱动 核心态 核心态 2. 远程FSD(1)
远程FSD(2) • 远程FSD有两部分组成:客户端FSD和服务器端FSD。 • 前者允许应用程序访问远程文件和目录,客户端FSD接收来自应用程序的I/O请求,转换为网络文件系统协议命令,再通过网络发送给服务器端FSD。 • 服务器端FSD监听网络命令,接收网络文件系统协议命令,并转交给本地FSD去执行。
NtRead File( ) NtWriteFile( ) 缺页中断 NtCreateSection( ) IRP 缺页事件 管理器 文件系统 驱动程序 虚拟主存管理器 IoPageRead File( ) IoAsynchronous PageWrite( ) 脏页写 非 缓存页面I/O MmCreateSection() MmFlushSection() CcCopyRead( ) CcCopyWrite( ) 存储设备 驱动程序 延迟写 缓存管理器 提前读 FastIoRead( ) FastIoWrite( ) 3 FSD与文件系统操作(1)FSD的作用(1)
FSD与文件系统操作(2)FSD的作用(2) • 高速缓存延迟写 • 高速缓存提前读。 • 主存脏页写 • 主存缺页处理。
6.6.3NTFS的实现层次(1) • NTFS及其他文件系统如FAT、HPFS、POSIX等都结合在I/O管理器中,采用文件系统驱动程序实现。 • 文件系统的实现采用OO模型,文件、目录作为对象来管理,文件对象由I/O管理器管理。 • 用户和系统打开文件表现为每个进程一个进程对象表及其所指向的具体文件对象。
I/O管理器 纪录事务 日志文件服务 NTFS驱动程序 读写镜像或带区的卷 读写文件 写高速缓存 转存日 志文件 容错驱动程序 把数据 从磁盘 加载到 主存 高速缓存管理器 读写 磁盘 磁盘驱动程序 访问映射的文件或转存高速缓存 虚拟主存管理器 NTFS的实现层次(2)NTFS及其相关组件(1)
NTFS的实现层次(3)NTFS及其相关组件(2) • 日志文件服务(LFS)是为维护磁盘写入的日志而提供服务的NTFS的部分。系统失败时恢复NTFS的己格式化卷。 • 高速缓存管理器是执行体组件,为NTFS以及其他文件系统驱动程序提供高速缓存服务。 • 虚拟主存管理器让所有文件系统通过把高速缓存文件映射到虚拟主存,然后访问虚拟主存来访问它们。 • 高速缓存管理器提供了一个特定的文件系统接口。
对象管理器数据结构 NTFS数据结构 (用来管理磁盘的主存结构) NTFS数据库 (磁盘上的结构) 进程 句柄表 流控 制块 文件 控制块 主控 文件表 数据属性 文件对象 文件对象 用户定义属性 NTFS数据结构
6.6.4 NTFS可恢复性支持 • NTFS通过日志记录(logging)实现文件可恢复性。改变文件系统的操作在磁盘上运行前,先被记录在日志文件中。 • 当系统崩溃后,NTFS根据记录在日志中的文件操作信息,对那些部分完成的事务进行重做或撤销,保证磁盘上文件的一致性,这种技术称“预写日志记录(write-ahead logging)”。
文件可恢复性的实现要点(1) • 日志文件服务LFS 是一组NTFS驱动程序内的核心态程序,NTFS通过LFS例程来访问日志文件。 • LFS分两个区域:重启动区和无限记录区,前者保存的信息用于失败后的恢复,后者用于记录日志。 • NTFS不直接存取日志文件,通过LFS进行,LFS提供:打开、写入、向前、向后、更新等操作。 • 日志记录类型允许用户在日志文件中写入任何类型的记录,更新记录和检查点记录是支持的两种主要类型的记录,在系统恢复过程中起主要作用。
文件可恢复性的实现要点(2) • 可恢复性通过LFS来实现,恢复只针对文件系统的数据,不能保证用户数据的完全恢复。 • NTFS维护两张表: 事务表; 脏页表。 • 实现卷的恢复,要对日志文件进行三次扫描:分析扫描、重做扫描和撤销扫描。
文件可恢复性操作步骤 1)NTFS首先调用LFS在日志文件中记录所有改变卷结构的事务; 2)NTFS执行在高速缓存中的更改卷结构的操作; 3)高速缓存管理器调用LFS把日志文件刷新到磁盘; 4)高速缓存管理器把该卷的变化(事务本身)最后被刷新到磁盘。
6.6.5NTFS安全性支持(1) • NTFS卷上的每个文件和目录在创建时创建人就被指定为拥有者,拥有者控制文件和目录的权限设置,并能赋予其他用户访问权限。
NTFS安全性支持(2) 文件和目录的安全性权限设置规则: • 只有用户在被赋予其访问权限或属于拥有这种权限的组,才能对文件和目录进行访问。 • 权限是累积的,如果组A用户对一个文件拥有“写”权限,组B用户对该文件只有“读“权限,而用户C同属两个组,则C将获得“写”权限。 •“拒绝访问”权限优先高于其他所有权限。如果组A用户对一个文件拥有“写”权限,组B用户对该文件有“拒绝访问”权限,那么同属两个组的C也不个能读文件。 •文件权限始终优先于目录权限
NTFS安全性支持(3) •当用户在相应权限的目录中创建新的文件或子目录时,创建的文件或子目录继承该目录的权限。 •创建文件或目录的拥有者,总可以随时更改对文件或子目录的权限设置来控制其他用户对该文件或目录的访问。
NTFS安全性支持(4) • NTFS的安全性支持---加密文件系统EFS(Encrpyted File System)。 • EFS加密技术是基于公共密钥的,它用一个随机产生的文件密钥FEK(File Encryption Key),通过加强型的数据加密标准算法对文件进行加密。
NTFS安全性支持(5) • EFS使用基于RSA(Rivest Shamir Adleman )的公共密钥加密算法对FEK进行加密,并把它和文件存储存一起,形成文件的一个特殊的EFS属性字段---数据加密字段DDF。 • 解密时,用户用自己的私钥解密存储在文件DDF中的FEK,再用解密后得到的FEK对文件数据进行解密,最后,得到文件的原文。