当前位置:C++技术网 > 资讯 > 文件系统:5 格式化做了什么2-NTFS文件系统

文件系统:5 格式化做了什么2-NTFS文件系统

更新时间:2015-06-24 12:58:23浏览次数:1+次

    在《格式化做了什么1-FAT文件系统》中,详细介绍了FAT文件系统体系,以及格式化执行的内部操作原理。
    NTFS文件系统的体系结构和FAT的体系结构截然不同,NTFS是日志式的,有大量的内部记录文件,因此,即使什么文件都没有存放,也会占用一小部分空间。对格式化中涉及到的两个重要的记录文件就是MFT和$Bitmap。
    MFT类似于FAT文件系统的目录,只不过,MFT中会记录分区内所有的文件,一个不漏。而不是像FAT文件系统中通过链接串起来的。可想而知,搜索同样的大分区文件,NTFS比FAT文件系统快多了,就好比遍历数组找一个数和遍历链表是一样的。在内部也就是这样的区别。所以效率和时间,自然一目了然。
    而$Bitmap则和FAT文件系统中的FAT表类似,用来记录磁盘的使用情况的。不过区别也是很大的,就如同文件组织方式一样。在FAT中,习惯使用链表,而在NTFS中,习惯使用数组,这也是最大的区别。$Bitmap 显而易见,是位图的单词。位图就是用一位表示一块,用1表示使用,用0表示未使用。因此,这里可以看到诸如“ FF FF 0F 7F” 之类的,这些都是表示分配状态。这是十六进制数据,展开成二进制,1表示对应的那块被分配使用,0代表对应的那块未使用。F就表示连续的8块全部使用了(FF表示一个十六进制数,占8位,一个F表示四位,展开成二进制就是“1111”,1表示使用了)。
    在NTFS文件系统中,一切都是文件,就连MFT都是一个文件的形式存在。因此,它自己也被记录在MFT条目中。$Bitmap也是以文件的形式记录在MFT的条目中。因此,只需要找到MFT,就可以找到所有文件。
    MFT,Master File Table,主文件表,是NTFS最核心的文件。如果这个文件丢失了,所有数据就丢失了。因为MFT的一个条目,还是有点大的,因此,在NTFS中,小文件,则直接存在MFT条目中,这样读写就很快。而大文件,则无法存储在这里,因此就存放在单独的位置,在这里存储数据的部分存储了一个表,记录了这个文件所占的多个数据块的位置。
    快速格式化时,清除了MFT表中的数据,因此,小文件就清除了,大文件则断开了链接,也被删除了。同时,$Bitmap 文件也被清空初始化了。但是大文件依然是完整的。而格式化就和FAT中的格式化差不多,会将所有的数据也清除,执行了清零操作,数据就再也不见了,也恢复不出来了。同时也会进行坏块屏蔽工作等。