35
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.6Windows 2003 文件系统

  • Upload
    kasa

  • View
    99

  • Download
    0

Embed Size (px)

DESCRIPTION

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 等文件系统。 - PowerPoint PPT Presentation

Citation preview

Page 1: 6.6Windows 2003 文件系统

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 安全性支持

Page 2: 6.6Windows 2003 文件系统

6.7.1 文件系统概述 Windows 支持传统的 FAT12 、 FAT16 、

FAT32 文件系统 Windows 支持:只读光盘 CDFS 、通

用磁盘格式 UDF 、高性能 HPFS 等文件系统。

Windows NT 提供一个全新的文件系统NTFS(New Technology File System) 。

Page 3: 6.6Windows 2003 文件系统

NTFS 具有的特性• 可恢复性: •安全性:• 文件加密: •数据冗余和容错:• 大磁盘和大文件: •通用的索引机制:• 基于 Unicode 文件名: •数据流: • 动态添加卷磁盘空间:•稀疏文件: • 磁盘配额: •动态坏簇重映射:• 压缩技术: •分布式链接跟踪:•POSIX 支持:

Page 4: 6.6Windows 2003 文件系统

6.6.2 NTFS 在磁盘上的结构 1 MFT 的结构物理磁盘可组织成一个或多个卷 逻辑簇号 LCN虚拟簇号 VCN主控文件表 MFT

Page 5: 6.6Windows 2003 文件系统

MFT 中 NTFS 元数据文件的文件记录

主控文件表 MFT(3)MFT($Mft) /* 记录卷中所有文件的所有属性

MFT 副本 ($MftMirr) /*MFT 表前 9 行的副本

日志文件 ($Logfile) /* 记录影响卷结构操作,系统恢复用卷文件 ($Volume) /* 卷名,卷的 NTFS 版本等信息

属性定义表 ($AttrDef) /* 定义卷的属性类型,如可恢复性根目录 ($/) /* 存放根目录内容

位图文件 ($Bitmap) /* 盘空间位图,每位一簇引导文件 ($Boot) /*Win2000/XP 引导程序

坏簇文件 ($BadClus) /* 记录磁盘坏道安全文件 ($Secure) /* 存储卷的安全性描述数据库

用户文件和目录…

大写文件 ($UpCase) /* 包含大小写字符转换表扩展元数据目录 ($Ext. metadata Directory)

Page 6: 6.6Windows 2003 文件系统

2 MFT 的记录结构 MFT 的文件记录由记录头和紧跟其后的一系列

(属性,属性值)对组成。 记录头包含一个用于有效性检查的魔数,文件

生成时的顺序号,文件的引用计数,记录中实际使用的字节数。记录头之后依次是第一个属性和它的属性值,第二个属性和属性值等。

(属性,属性值)对是指属性的名字和属性的具体内容。

NTFS 不是简单地将文件视为一系列字节的集合,而是将它看成由许多(属性,属性值)集合来进行存储和处理的。

Page 7: 6.6Windows 2003 文件系统

2 文件属性 NTFS 将文件作为属性 / 属性值的集合来处理, 文件数据是未命名属性的值, 其他文件属性包括文件名、文件拥有者、文件

时间标记等。 每个属性由单个流组成 ( 简单的字符队列 ) 。 N

TFS并不对文件进行操作,而只是对属性流的读写。

NTFS 提供对属性流的操作包括:创建、删除、读取以及写入。

读写操作是针对文件的未命名属性的,对已命名的属性则可通过已命名的数据流句法来进行操作。

Page 8: 6.6Windows 2003 文件系统

常驻属性 小文件的所有属性值存在 MFT 的文件记录中。当

属性值能直接存放在 MFT 中时,该属性就称为常驻属性。

文件有些属性总是常驻的,这样 NTFS才可确定其他非常驻属性。例如,标准信息属性和文件名属性就总是常驻属性。

标准信息属性包括基本文件属性 ( 如只读、存档 );时间标记 ( 如文件创建和修改时间 );文件链接数等。

小文件的 MFT 记录 标准信息 文件名 文件数据

Page 9: 6.6Windows 2003 文件系统

非常驻属性 (1) 大文件或大目录的所有属性,不可能都常驻在 MFT 中。如果一个属性太大而不能存放在只有 1KB 的 MFT 文件记录中,NTFS 将从MFT 之外分配区域。这些区域称为一个扩展( extent ),它们可用来存储属性值,如文件数据。

值存储在扩展中而不是在 MFT 文件记录中的属性称为非常驻属性。

Page 10: 6.6Windows 2003 文件系统

非常驻属性 (2)

存储在两个扩展中的非常驻属性

数据标准信息 文件名 HPFS 扩展属性

数据 数据

Page 11: 6.6Windows 2003 文件系统

非常驻数据属性 VCN-LCN编号

LCN

标准信息 文件名 数据

数 据

0 1 2 3

1278 1279 1280 1281

数 据

4 5 6 7

1300 1301 1302 1303

VCN

Page 12: 6.6Windows 2003 文件系统

非常驻数据属性 VCN-LCN 映射

标准信息 文件名 开始 VCN 开始 LCN 簇数

数 据 0 1 2 3

1278 1279 1280 1281

数 据

4 5 6 7

1300 1301 1302 1303

VCN

LCN

0 1278 4 4 1300 4

Page 13: 6.6Windows 2003 文件系统

4 文件目录 (1) NTFS 系统中,文件目录仅仅是文件名的一个索

引。 NTFS 使用了一种特殊的方式把文件名组织起来,以便于快速访问。

当创建一个目录时, NTFS必须对目录中的文件名属性进行索引。

小目录的 MFT 记录 文件索引

标准信息目录名 安全

描述 文件 1 文件 2 文件 3 空

Page 14: 6.6Windows 2003 文件系统

文件目录 (2) 大目录的 MFT 记录

索引根标准信息文件名 索引分配 位图

文件 1 文件2

文件 4 文件 5 文件6

索引缓冲区

文件 3 文件 7 …

Page 15: 6.6Windows 2003 文件系统

6.6.3 文件系统模型和 FSD 体系结构

Windows 文件系统模型 (1) I/O API

过滤驱动程序

文件系统驱动程序

中间驱动程序

过滤驱动程序

过滤驱动程序

设备驱动程序

HAL

物理设备

I/O管理器

NT执行体

Page 16: 6.6Windows 2003 文件系统

文件系统模型 (2)设备驱动程序:位于 I/O管理器的最低层,直接对设备进行 I/O 操作。

中间驱动程序:与低层设备驱动程序一起提供增强功能,如发现 I/O失败时,中间驱动程序却可能在收到出错信息后,向设备驱动程序下达重执请求。

文件系统驱动程序 FSD :扩展低层驱动程序的功能,实现特定的文件系统 ( 如 NTFS) 。

过滤驱动程序:可位于设备驱动程序与中间驱动程序之间,可位于中间驱动程序与文件系统驱动程序之间,可位于文件系统驱动程序与 I/O管理器 API 之间。

Page 17: 6.6Windows 2003 文件系统

文件系统驱动程序1 本地 FSD(1)

应用程序接口

I/O管理器

文件系统驱动程序

存储设备驱动

物理磁盘

用户态

核心态

物理设备

Page 18: 6.6Windows 2003 文件系统

本地 FSD(2) 本地 FSD还创建一个设备对象

表示所装载的文件系统。 本地 FSD 用高速缓存管理器来缓存文件系统数据,它与主存管理器一起实现主存文件映射。

本地 FSD还支持文件系统卸载操作。

Page 19: 6.6Windows 2003 文件系统

2. 远程 FSD(1)

应用程序

I/O管理器

远程 FSD( 重定向器 )

客户端

本地 FSD

远程 FSD(服务器 )

存储设备驱动

物理磁盘

核心态

用户态

核心态

用户态

服务器端

Page 20: 6.6Windows 2003 文件系统

远程 FSD(2)远程 FSD 有两部分组成:客户端 FSD

和服务器端 FSD 。 前者允许应用程序访问远程文件和目录,客户端 FSD 接收来自应用程序的 I/O请求,转换为网络文件系统协议命令,再通过网络发送给服务器端 FSD 。

服务器端 FSD监听网络命令,接收网络文件系统协议命令,并转交给本地 FSD去执行。

Page 21: 6.6Windows 2003 文件系统

3 FSD与文件系统操作 (1) FSD 的作用 (1)

缺页事件管理器

脏页写

虚拟主存管理器

延迟写

提前读

缓存管理器

文件系统驱动程序

存储设备驱动程序

缺页中断 NtCreateSection( ) NtRead File( )NtWriteFile( )IRP

IoPageRead File( )IoAsynchronousPageWrite( )

CcCopyRead( )CcCopyWrite( )

FastIoRead( )FastIoWrite( )

非缓存页面I/OMmCreate

Section()MmFlushSection()

Page 22: 6.6Windows 2003 文件系统

FSD与文件系统操作 (2)FSD 的作用 (2)

高速缓存延迟写 高速缓存提前读。 主存脏页写 主存缺页处理。

Page 23: 6.6Windows 2003 文件系统

6.6.3NTFS 的实现层次 (1) NTFS及其他文件系统如 FAT 、 HPF

S 、 POSIX 等都结合在 I/O管理器中,采用文件系统驱动程序实现。

文件系统的实现采用 OO 模型,文件、目录作为对象来管理,文件对象由 I/O管理器管理。

用户和系统打开文件表现为每个进程一个进程对象表及其所指向的具体文件对象。

Page 24: 6.6Windows 2003 文件系统

NTFS 的实现层次 (2)NTFS及其相关组件 (1)

I/O管理器

NTFS驱动程序

容错驱动程序

磁盘驱动程序

日志文件服务

高速缓存管理器

虚拟主存管理器

纪录事务

读写文件

把数据从磁盘加载到

主存

写高速缓存

访问映射的文件或转存高速缓存

转存日志文件

读写镜像或带区的卷

读写磁盘

Page 25: 6.6Windows 2003 文件系统

NTFS 的实现层次 (3)NTFS及其相关组件 (2)

日志文件服务 (LFS) 是为维护磁盘写入的日

志而提供服务的 NTFS 的部分。系统失败时恢复 NTFS 的己格式化卷。

高速缓存管理器是执行体组件,为 NTFS以及其他文件系统驱动程序提供高速缓存服务。

虚拟主存管理器让所有文件系统通过把高速缓存文件映射到虚拟主存,然后访问虚拟主存来访问它们。

高速缓存管理器提供了一个特定的文件系统接口。

Page 26: 6.6Windows 2003 文件系统

NTFS 数据结构

对象管理器数据结构

句柄表进程

文件对象

文件对象

NTFS 数据库

(磁盘上的结构)

主控文件表

NTFS 数据结构(用来管理磁盘的

主存结构)

数据属性

用户定义属性

文件控制块

流控制块

Page 27: 6.6Windows 2003 文件系统

6.6.4 NTFS 可恢复性支持 NTFS 通过日志记录 (logging) 实现文

件可恢复性。改变文件系统的操作在磁盘上运行前,先被记录在日志文件中。

当系统崩溃后, NTFS 根据记录在日志中的文件操作信息,对那些部分完成的事务进行重做或撤销,保证磁盘上文件的一致性,这种技术称“预写日志记录 (write-ahead logging)”。

Page 28: 6.6Windows 2003 文件系统

文件可恢复性的实现要点(1) 日志文件服务 LFS 是一组 NTFS驱动程序内的核心

态程序, NTFS 通过 LFS例程来访问日志文件。 LFS 分两个区域:重启动区和无限记录区,前者保

存的信息用于失败后的恢复,后者用于记录日志。 NTFS 不直接存取日志文件,通过 LFS进行, LFS

提供:打开、写入、向前、向后、更新等操作。 日志记录类型允许用户在日志文件中写入任何类型

的记录,更新记录和检查点记录是支持的两种主要类型的记录,在系统恢复过程中起主要作用。

Page 29: 6.6Windows 2003 文件系统

文件可恢复性的实现要点(2) 可恢复性通过 LFS 来实现,恢复只针

对文件系统的数据,不能保证用户数据的完全恢复。

NTFS维护两张表: 事务表; 脏页表。 实现卷的恢复,要对日志文件进行三

次扫描:分析扫描、重做扫描和撤销扫描。

Page 30: 6.6Windows 2003 文件系统

文件可恢复性操作步骤

1)NTFS首先调用 LFS 在日志文件中记录所有改变卷结构的事务;

2)NTFS执行在高速缓存中的更改卷结构的操作;

3) 高速缓存管理器调用 LFS把日志文件刷新到磁盘;

4) 高速缓存管理器把该卷的变化 (事务本身 )最后被刷新到磁盘。

Page 31: 6.6Windows 2003 文件系统

6.6.5NTFS 安全性支持 (1) NTFS 卷上的每个文件和目录在创建时创建人就被指定为拥有者,拥有者控制文件和目录的权限设置,并能赋予其他用户访问权限。

Page 32: 6.6Windows 2003 文件系统

NTFS 安全性支持 (2) 文件和目录的安全性权限设置规则: 只有用户在被赋予其访问权限或属于拥有这种权限的组,才能对文件和目录进行访问。

权限是累积的,如果组 A 用户对一个文件拥有“写”权限,组 B 用户对该文件只有“读“权限,而用户 C同属两个组,则 C 将获得“写”权限。

• “拒绝访问”权限优先高于其他所有权限。如果组 A 用户对一个文件拥有“写”权限,组 B 用户对该文件有“拒绝访问”权限,那么同属两个组的 C也不个能读文件。

• 文件权限始终优先于目录权限

Page 33: 6.6Windows 2003 文件系统

NTFS 安全性支持 (3) •当用户在相应权限的目录中创建

新的文件或子目录时,创建的文件或子目录继承该目录的权限。

•创建文件或目录的拥有者,总可以随时更改对文件或子目录的权限设置来控制其他用户对该文件或目录的访问。

Page 34: 6.6Windows 2003 文件系统

NTFS 安全性支持 (4)NTFS 的安全性支持 ---加密文件系

统 EFS(Encrpyted File System) 。EFS 加密技术是基于公共密钥的,

它用一个随机产生的文件密钥 FEK(File Encryption Key) ,通过加强型的数据加密标准算法对文件进行加密。

Page 35: 6.6Windows 2003 文件系统

NTFS 安全性支持 (5)EFS 使用基于 RSA(Rivest Shamir Adlema

n ) 的公共密钥加密算法对 FEK进行加密,并把它和文件存储存一起,形成文件的一个特殊的 EFS 属性字段 ---数据加密字段 DDF 。

解密时,用户用自己的私钥解密存储在文件 DDF 中的 FEK,再用解密后得到的 FEK对文件数据进行解密,最后,得到文件的原文。