B+树在NTFS文件系统中的应用

原创 2015年07月06日 18:00:41

B+树在NTFS文件系统中的应用

flyfish 2015-7-6

卷(volume)
NTFS的结构首先从卷开始。卷对应于磁盘上的一个逻辑分区,当你将一个磁盘或者磁盘的一部分格式化成NTFS,卷将被创建起来。一个磁盘可以有一个卷或好几个卷.NTFS独立的处理每一个卷。
卷对应的就是C盘,D盘,E盘等。

簇(cluster)
在一个NTFS卷中,簇的大小,或者说簇因子(cluster factor),是在磁盘管理程序MMC加载件格式化该卷的时候建立起来的。默认的簇因子随着卷大小的不同而不同,但它是物理扇区的整数倍,而且总是2的幂。(1个扇区,2个扇区,4个扇区,8个扇区)以此类推。
簇因子被表示成一个簇中的字节数,比如512字节 1KB或者2KB。
硬盘的读写以扇区为基本单位。NTFS的读写以簇为基本单位。

NTFS在内部只引用到簇一级,NTFS使用簇作为它的分配单位,从而保持它与物理扇区大小之间的独立性。

逻辑簇号(Logical Cluster Number,LCN)
LCN是从一个卷的开始直到结束的所有簇的一个编号。NTFS依赖于逻辑号(LCN)来引用物理位置。

获取物理磁盘地址方法
LCN乘以簇因子,从而得到卷上的物理字节偏移量。

虚拟簇号(Virtual Cluster Number,VCN)
VCN对同属一个文件的所有簇进行编号,从0到m。NTFS依赖于虚拟簇号(VCN)来引用一个文件内部的数据。
VCN不必是物理上连续的。它们可以被映射到该卷上的任何LCN编号。

主文件表(Master File Table)
MFT是NTFS卷结构的核心所在。涉及到B+树。

结构如下

这里写图片描述

引用自《深入解析Windows操作系统》

版权声明:本文为博主原创文章,未经博主允许不得转载。

B+树(利用文件实现)

  • 2012年06月28日 22:54
  • 12.45MB
  • 下载

【数据结构之二叉树】(一)B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因

今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这和磁盘碎片、内存碎片产生原理是类似的,这些存储碎片...
  • cangchen
  • cangchen
  • 2015年04月01日 23:29
  • 3887

浅谈AVL树,红黑树,B树,B+树原理及应用

背景:这几天在看《高性能Mysql》,在看到创建高性能的索引,书上说mysql的存储引擎InnoDB采用的索引类型是B+Tree,那么,大家有没有产生这样一个疑问,对于数据索引,为什么要使用B+Tre...
  • whoamiyang
  • whoamiyang
  • 2016年07月18日 09:36
  • 5426

B树、B+树、LSM树以及其典型应用场景

前言动态查找树主要有:二叉查找树、平衡二叉树、红黑树、B树、B+树。前面三种是典型的二叉查找树,查找的时间复杂度是O(log2N)与树的深度有关系,那么降低树的深度也就可以提升查找效率。这时就提出了平...
  • u010853261
  • u010853261
  • 2017年10月12日 17:50
  • 473

B+树B-树的应用

B-树 1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用。 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树: ⑴树中每个结点至多有m ...
  • hijiankang
  • hijiankang
  • 2013年06月25日 00:30
  • 5232

浅析——B树,B+树,B*树以及分析MySQL的两种引擎

接触到了数据结构当中的B树,B+树,B*树,我觉得应该写一篇博客记录下,毕竟是第一次接触的,只有写了博客以后,感觉对这个的印象才会更加深刻。 前言: 为什么要有B树? 学习任何一个东西我们都要知...
  • qq_26768741
  • qq_26768741
  • 2016年11月17日 13:52
  • 4281

从 MongoDB 及 Mysql 谈B/B+树

前两天有位朋友邀请我回答个问题,为什么 MongoDB (索引)使用B-树而 Mysql 使用 B+树?我觉得这个问题非常好,从实际应用的角度来学习数据结构,没有比这更好的方法了。因为像 Mysql ...
  • wwh578867817
  • wwh578867817
  • 2016年01月14日 17:37
  • 5767

文件系统与目录树的关系

由Ext文件系统的知识点击打开链接可以知道,在Linux系统下,每个文件(不管是一般文件还是目录文件)都会占用一个inode,且可依据文件内容的大小来分配多个block给文件使用。目录文件的内容是记录...
  • qq_37653144
  • qq_37653144
  • 2017年08月09日 23:40
  • 371

根文件系统制作一制作根文件系统树

完成了u-boot移植后就是内核移植然后是根文件系统制作,这次分为三部分书写:根文件制作之init、jaffs2、ubifs...
  • fml1997
  • fml1997
  • 2017年03月23日 19:49
  • 434

树的实现 分级文件系统

数据结构与算法分析——c语言描述 第四章 树 分级文件系统 编程书有一个特点,就是看的时候觉得很简单,但是写代码就蒙了,各种出错,不停debug,想办法,重新写,再debug……是一个不停思...
  • qq789045
  • qq789045
  • 2016年04月02日 17:32
  • 494
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:B+树在NTFS文件系统中的应用
举报原因:
原因补充:

(最多只允许输入30个字)