NTFS文件系统的索引、对象管理与存储预留机制解析
1. NTFS文件系统中的索引机制
1.1 文件名索引
在NTFS文件系统里,文件目录本质上是文件名的索引,以B树结构组织文件名及其对应的文件记录编号。创建目录时,NTFS会对目录内文件的文件名属性进行索引。例如,卷根目录的MFT记录就体现了这种索引结构。
对于大型目录,文件名存储在4KB的固定大小索引缓冲区中,这些缓冲区是索引分配属性的非驻留值,实现了B树数据结构,能减少查找特定文件所需的磁盘访问次数。索引根属性包含B树的第一级(根子目录),并指向包含下一级(更多子目录或文件)的索引缓冲区。
每个索引项除了文件名,还包含文件在MFT中的记录编号、时间戳和文件大小信息。NTFS会从文件的MFT记录中复制时间戳和文件大小信息,虽需在两处更新信息,但能显著优化目录浏览速度。
索引分配属性将索引缓冲区运行的VCN映射到磁盘上索引缓冲区所在的LCN,位图属性则跟踪索引缓冲区中哪些VCN正在使用,哪些是空闲的。通常,每个4KB的索引缓冲区可包含约20 - 30个文件名条目。
B树数据结构是一种平衡树,适合组织存储在磁盘上的排序数据,能减少查找条目所需的磁盘访问次数。在MFT中,目录的索引根属性中的文件名可作为进入B树第二级的索引,每个文件名可能关联一个指向索引缓冲区的指针,该缓冲区包含字典序小于自身的文件名。
存储文件名于B树带来诸多好处:目录查找速度快,因为文件名按排序顺序存储;高级软件枚举目录文件时,NTFS返回已排序的文件名;B树倾向于横向扩展而非纵向扩展,NTFS的快速查找时间不会随目录增长而降低。
超级会员免费看
订阅专栏 解锁全文
77

被折叠的 条评论
为什么被折叠?



