当前位置:
文档之家› windows 操作系统之文件管理
windows 操作系统之文件管理
索引
在NTFS系统中,文件目录仅仅是文件名的一个索引。NTFS 使用了一种特殊的方式把文件名组织起来.以便于快速访问。 当创建一个日录时、NTFS必须对目录中的文件名属性进行 索引。 一个目录的MFT记录将目录中的文件名利子目录名进行排 序,并保存在索引根属性中。然而,对于一个大目录,文件 名实际存储在组织文件名的固定4KB大小的索引缓冲区中。 索引缓冲区是通过B+树数据结构实现的,B+树是平衡树的 一种,对于存储在磁盘上的数据来说.平衡树是一种理想的
FSD与文件系统操作
FSD与文件系统操作
• 显式文件I/O:应用程序通过Win32I/O函数如CreateFile、 ReadFile和WriteFile等来访问文件。 • 高速缓存延迟写:高速缓存管理器的延迟写线程定期对高 速缓存中已被修改过的页面进行写操作。 • 高速缓存提前读:高速缓存管理器的提前读线程负责提前 读数据,提前读线程通过分析已做的读操作来决定提前读 多少,它依赖于缺页中断来完成这一任务。 • 内存脏页写:内存脏页写线程定期清洗缓冲区。
数据压缩
数据压缩是NTFS文件系统的一个重要特征。虽然FAT文件 系统也支持数据压缩.但是NTFS压缩功能可以对单个文件、 整个目录或NTFS卷上的整个目录树进行压缩(NTFS压缩只 在用户数据上进行,而不能在文件系统元数据上进行)。数据 压缩可以减少磁盘使用空间.但是由于每次解压缩需要大量 的数据运算,所以使用压缩功能将会导致NTFS卷的性能下 降。例如要拷贝一个压缩文件.其过程是:解压缩、拷贝、 重新对拷贝的文件进行压缩.这些都大大增加了CPU的处理 时间。
NTFS
6.动态坏簇重映射 即具有热修复重定向功能,将受损簇的信息写入其他簇, 并标记坏簇地址,以防止以后再使用它。 7.POSIX(可移植操作系统接口)支持 8.文件压缩 9.日志记录 通过监视卷上文件或目录的改变,实现文件的可恢复性 10.磁盘限额 11.硬链接 硬链接允许从多个路径来指向同一文件和目录。
为了将LCN转换为一个物理磁盘地址,NTFS用簇因子乘 以LCN获得卷上的物理字节偏移量。NTFS用虚拟簇号引 用文件数据,VCN对于基于特定文件的簇从0~n进行编码, VCN在物理上不必是连续的,然而他们可以被映射问卷上 的任意LCN编码。
NTFS卷上的文件
记录号 0 1 2 $Mft $MftMirr $LogFile 文件名 MFT自身 MFT镜像 日志文件 含义
windows 文件管理
文件系统
在windows系统中,文件管理是通过目录来完成的,而目录 又是建立在分区或卷的基础上。操作系统中与文件和目录相 关的子系统称为文件系统。
windows 文件系统模型
windows 文件系统模型解析
• HAL:硬件抽象层,是将操作系统的其余部分表示为抽象 的硬件设备,特别是去除了真正硬件所富含的瑕疵和特质。 这些设备表现为操作系统的其它部分和设备可以使用的独 立于机器的服务的形式(函数调用和宏)。 • 设备驱动程序:位于I/O管理器的最底层,直接对I/O设备 进行操作。 • 中间驱动程序:与低层设备驱动程序一起提供增强功能。 例如,当发现I/O失败,设备驱动程序可能简单地返回出 错信息,而中间驱动程序却可能在收到出错信息后,向设 备驱动程序发出再试请求。 • 文件驱动程序(FSD):扩展低层驱动程序的功能,以实 现特定的文件系统,如NTFS。
可恢复性支持
NTFS通过日志记录来实现文件系统的可恢复性。所有改变 文件系统的子操作在磁盘上运行以前,首先被记录在日志文 件中。在系统崩溃后的恢复阶段,NTFS根据记录在日志 文件中的文件操作信息,对那些部分完成的事务进行重做或 是撤销,从而保证了磁盘上文件系统的一致性。这种技术称 为“预写日志记录” NTFS不会直接从日志文件中读取记录而是通过LFS来读写 记录的 LFS提供了许多操作来处理日志文件、包括打开、写 入、向前、向后、更新等。 以下是NTFS为实现卷的可恢复性而执行的操作步骤:
NTFS如何通过MFT访问卷? 首先,当NTFS访问某个卷时,它必须,“装载”该卷: NTFS 会查看引导文件,找到MFT的物理磁盘地址,然它就从文件 记录的数据属性中获得VCN到LCN的映射信息,并存储在内 存中。这个映射信息定位了MFT的运行(run或extent)在磁盘 上的位置。接着,NTFS再打开几个元数据文件的MFT记录 并打开这些文件。如有必要NTFS开始执行它的文件系统恢 复操作。最后,NTFS打开剩余的元数据文件后,用户就可 以开始访问该卷了。
FFF8~FFFFH XXXXH
FFFFFFF0~FFFF 保留簇 FFF6H FFFFFFF7H 坏簇,不在任 何文件链上 FFFFFFF8~FFFF 文件的最后一 FFFFH 个簇 XXXXXXXXH 文件的下一 个簇
簇号链
NTFS
• NTFS的特点: 1.可恢复性 NTFS基于原子事务的概念实现文件系统的可恢复性 2.安全性 NTFS可以指定谁能访问哪些文件夹和目录及对它进行什 么操作 3.数据冗余和容错 4.基于Unicode字符号来存储文件、目录和卷名称 5.通用索引机制 可以索引文件属性,从而大大提高了文件管理的效率
开了文件已命名的流。SCB代表单个文件属性,并包含关于 在文件中如何找到具体属性的信息,一个文件的所有SCB指 向一个被称为文件控制块的通用数据结构,文件控制块包含 一个指向基于磁盘的主控文件表的文件记录指针。NTFS通 过该指针获得文件的访问权限。
NTFS数据结构
NTFS的卷和簇
NTFS是以卷为基础,而卷是建立在磁盘分区上的。当以 NTFS格式来格式化分区时就创建了NTFS卷。分区包括基 本分区和扩展分区,扩展分区可由逻辑分区组成。分区的 主要目的是初始化磁盘,以便格式化和存储数据,磁盘可 以有一个或多个卷。NTFS独立地处理每个卷。 在NTFS卷上,簇的大小或者簇因子是当用户用格式化命令 或磁盘管理程序MMC插件格式化卷时建立的,默认簇的 因子随着卷的大小不同而改变,但他是物理扇区的整数倍, 总是2的幂次。 NTFS 通过逻辑簇号指定磁盘上的物理位置,LCN是所有的 簇从开始到结尾的简单编号。当磁盘驱动程序接口需要时,
分类组织形式,因此使查找一个项时所需的磁盘访问次数减 到最少,根索引属性包含B+树的第一级(根子目录)并指向包 含下一级(大多数是子目录,也可能是文件)的索引缓冲区 索引中的每一项还包括了位于MFT中的描述文件所在位置的 文件引用以及文件时间和文件大小等情息。NTFS根据文件 的MFT记录来复制时间标记和文件大小信息。这种技术需要 将更新信息写在两个地方,因此比较麻烦。但是,这仍是一 个提高目录浏览速度的好方法,冈为它可以在文件系统不打 开目录中仟何文件的情况下显示每个文件的时间标记和大小。 索引分配属件包含了索引缓冲区的VCN到LCN映射.而位图 属性跟踪在索引缓冲区中哪些VCN是在使用而哪些是空闲 的,每个文件项占有一个VCN,而实际上多个文件项被包装 在同一个簇中,每个4KB大小的索引缓冲区可以容纳20到30 个文件项。
日志文件服务是NTFS为保证磁盘读写操作的安全性所 提供的一组服务。日志文件服务写的日志文件在系统发生崩 溃时用来恢复NTFS格式卷 高速缓存管理器提供NTFS系统范围的高速缓冲服务和 其他的文件系统驱动程序,通过将高速缓冲文件映射到系统 地址空间来访问他们,然后访问虚拟内存。高速缓冲管理器 通过使用延迟书写器调用内存管理器,将高速缓存区的内容 刷新到磁盘。 NTFS通过跟踪一些指针从文件对象获得磁盘上文件的、 位置。如下图,一个文件对象代表对于打开文件系统服务的 单一调用,它指向调用程序试图去读或写的文件属性的流控 制块,在下图中进程已经打开了文件无名的数据属性,又打
3
4 5
$Volume
$AttrDef $\
卷文件
属性定义表 根目录
记录号 6 7 8
文件名 $Bitmap $Boot $BadClus
含义 位图文件 引导文件 坏簇文件
9
10 11
$Secure
$UpCase $Extended metadata diቤተ መጻሕፍቲ ባይዱecttory
安全文件
大写文件 扩展元数据目录
本地FSD
• 本地FSD负责向I/O管理器注册自己,当开始访问某个卷 时,I/O管理器将调用FSD来进行卷识别。当完成卷识别 后本地FSD还创建一个设备对象以表示所装载的文件系统。 I/O管理器也通过卷参数块为由存储器所创建的卷设备对 象和由FSD所创建的设备对象之间进行连接,该VPB连接 将I/O管理器的有关卷的I/O请求转交给FSD设备对象。 本地FSD常用高速缓存管理器来缓存文件系统的数据以提 高性能,他与内存管理器一起实现内存文件的映射。本地 FSD还支持文件系统卸载操作,以便提供对卷的直接访问。
NTFS
12.加密 NTFS提供了一个EFS工具对数据进行加密和解密 13.碎片整理 14.多数据流 文件的实际内容被当作字符流进行处理。在NTFS中可 以为一个文件定义多个数据流,文件的属性,包括文件名、 文件的拥有者、文件的时间标记。文件的内容等都可以作 为一个数据流来存储。
NTFS的文件驱动程序
windows 文件系统模型解析
• 过滤驱动程序:可以位于设备驱动程序和中间驱动程序之 间,也可以位于中间驱动程序与文件系统驱动程序之间, 还可以位于文件系统驱动程序与I/O管理器API之间。例如, 一个网络重定向过滤驱动程序可以截取有关对远程文件的 操作,并重定向到远程文件服务器上。
本地FSD
远程FSD
远程FSD
• 远程FSD由两部分组成:客户端FSD和服务器端FSD。前 者允许应用程序访问远程的文件和目录,客户端FSD首先 接收来自应用程序的I/O请求,接着转换为网络文件系统 协议命令,再通过网络发送到服务器端的FSD。服务器端 FSD监听网络命令,接收网络文件系统协议命令,并转交 给本地FSD去执行。在这里重定向器通过端口/小端口驱 动程序的组合实现。而重定向器与服务器的通信则通过通 用互联网文件系统协议进行。