转自http://blog.csdn.net/yc0188/article/details/812578
走近文件系统系列二:探索Dirty Bit的奥秘
在微软知识库文章KB322275上看到如下的一段话:
The "dirty" bit is a bit in the boot sector (for FAT or FAT32 volumes), or in the MFT (for NTFS volumes), that is checked when Windows starts.
这说明,在FAT文件系统里,Dirty Bit在分区的引导扇区(Boot Sector)中指定;而在NTFS文件系统里,则是在MFT中指定(实际上是$Volume元数据文件)。
作为一名IT Pro,自然不仅仅满足于知道以上的结论。本着“绝知此事要躬行”的精神,本文介绍如何通过工具,找出在$Volume元数据文件中的哪个地方定义了这个Dirty Bit。
名词解释
什么是Dirty Bit?它实际上是文件系统的一个错误状态位,Windows启动时会根据这个状态位来判断文件系统是否出了故障,以确定是否要运行Chkdsk /F来进行磁盘修复。
行为差别
很多用户发现,同样是非法关机,重启时有些系统会自动进行磁盘检测(通常是FAT文件系统),而有些系统则照常启动(通常是NTFS文件系统)。
为什么?
原来不同的文件系统,对于Dirty Bit的设置方法有所区别,这种区别可以套用法律术语来类比:
(1) FAT相当于大陆法体系,实行的是“有罪推定”。在写入数据前,首先假设文件系统是“有罪”的──设置Dirty Bit为1。只有确认数据操作完成以后,才将Dirty Bit设置为0,如果非法关机时,Dirty Bit可能还保留为1,则下次开机会自动进行磁盘扫描。
(2) NTFS相当于英美法体系,实现的是“无罪推定”。只有出现严重的数据不一致,同时无法根据日志功能进行修复,这时候才会将Dirty Bit设置为1。
实验过程
1.工具箱
(1) Winhex:本文将用该工具查看、修改$Volume元数据文件。
下载地址:http://w