主文件表MFT由一个个的MFT项组成,每个MFT项实际上就是一个文件记录,其中用各种属性记录着该文件或目录的各种信息。每个MFT项的大小在引导扇区中进行说明,不过Microsoft的所有版本都使用1024字节的大小。前部为一个包含几十个字节的具有固定的大小和结构的MFT头,剩余的字节为属性列表,用于存放各种属性。
我们可以把MFT项想象成一辆货车,这辆货车只有位于车头的驾驶室是固定划分好座位的[有固定结构),而后面的货厢则没有做固定的划分,你可以根据需要摆放含有特定物品的小箱子(属性),每种小箱子根据它的用途有自己特定的结构。MFT项的基本特性如下:
MFT项的第一个区域是签名,所有的MFT项都有相同的签名(ASCII码的“FILE”)。如果在项中发现错误,可能将其改写成“BAAD”的字样。
MFT项还有一个标志域用以说明该项是一个文件项还是目录项, 以及它的分配状态。
每个MFT项占用两个扇区,每个扇区的结尾两个字节都有一个修正值,这个修正值与MFT项中的更新序列号相同。如果系统发现这两个值不同,则会认为该MFT项存在错误。
如果一个文件的属性较多,使用一个MFT项无法容纳下全部的属性,可以使用多个MFT项。在这种情况下,第一个项被称为基本文件记录或基本MFT项,在后面的每个项中都有一个固定的区域记录着基本MFT项的地址编号。
对于Windows 2000和Windows XP下建立的NTFS文件系统,其MTF项略有差别,这种差别只是存在于主文件表MFT头部——Windows 2000下建立的NTFS,其MFT头为偏移OxOO~Ox2F字节部分,属性列表起始于偏移Ox30字节处。Windows XP下建立的NTFS,其MFT头稍微大一些,占用偏移OxOO~Ox37字节处,属性列表起始于偏移Ox38字节处。