当前位置: 华文问答 > 数码

在 Windows 系统是否有取代 NTFS 的文件系统?

2022-07-29数码

盘片同心圆上面分割出一个一个的小区块,这些小区块整合成一个圆形,让磁盘的机器手臂上的磁头去存取这些扇区中的二进制数据。这个小区块就是磁盘的物理储存单位,称之为扇区 (sector),那同一个同心圆的扇区组合成的圆就是所谓的磁道(track)。数据存储在整个磁盘中, 当文件存储在硬盘驱动器上时,它会被分解成适合簇的碎片。 扇区是可寻址存储器的最小单元。 簇(Cluster)是一系列连续扇区组成的存储区域。

默认情况下,在Windows NT 4.0 和更高版本的Windows 下的NTFS 的最大簇大小为 4 KB 。 这是因为在簇大小较大的驱动器上不可能进行NTFS 文件压缩。 在format命令默认不会使用大于4 KB 的簇,除非用户专门重写默认设置。簇的大小在主引导记录中定义,如本例中下图的磁盘映像数据黄色的位置是0x08即十进制8。 这些簇和相关簇群都被赋予了地址,这是文件系统稍后可以访问它们的方式。 元数据信息块中的$MFT指的是主文件表。

什么是Master File Table主文件表?

NTFS 作为文件系统管理着驻留在该计算机上的每个文件、文件夹和可执行程序都有相应的主文件表记录。 这些记录具有时间和日期戳以及文件的所有组成簇的寻址信息。 例如,如果您打开 Microsoft Word 文档并对其进行一些更改,该信息将反映在该文件的主文件表记录中。

如果您删除该文件,该主文件表信息也会更新。 此外,如果有关文件位置的所有其他信息碰巧丢失,也可以使用簇链寻址信息从内存中提取文件的所有簇。 通常只有深入了解数据存储的数据存储的专业人士可以手动检索文件的内容,并使用十六进制编辑器例如 WinHex和主文件表记录重新拼凑出文件数据的原貌。 大部份数据恢复工具可以执行这类任务,例如簇的提取和重组、索引文件类型、执行定向搜索以及分析潜在元数据,达到恢复数据的目的。

NTFS 分区的体系结构从主引导记录开始,它从卷的第一个扇区(扇区 0)开始。主引导记录(MBR)包含操作系统用于初始化计算机开机自检 (POST) 的代码。 它还包含将操作系统加载到 RAM 中的指令。 主文件表(MFT)是一种 NTFS 数据结构,其中包含卷内创建、加载、更新和删除的所有文件的记录。 MFT 记录 0 到 27 由文件系统保留供内部使用。一些保留的记录包括主文件表本身的记录、卷末尾的表副本,例如:

  • $LogFile用于文件系统日志记录功能的日志文件、
  • $BadCls用于跟踪损坏簇的记录.
  • $Bitmap 跟踪磁盘内存中簇位图目录位置的所有寻址。
  • 备注:GPT和MBR两者的区别: 1、 MBR分区表最多只能识别2TB左右的空间,大于2TB的容量将无法识别从而导致硬盘空间浪费;GPT分区表则能够识别2TB以上的硬盘空间 。 2、MBR分区表最多只能支持4个主分区或三个主分区+1个扩展分区(逻辑分区不限制);GPT分区表在Windows系统下可以支持128个主分区,这里仅提及MBR。

    分区的文件系统数据部分是存储所有用户生成的对象的地方,当您浏览了初始文件系统保留记录,您将获得所有用户创建的数据。 除了提供 POST 和引导代码之外,主引导记录还保存主文件表的位置。 下文有提及。

    主文件表(MFT)记录的长度为 1024 字节。 每条记录都分解为称为属性的子组件块。 每个属性块都有一个特征性的字节码作为头部标识。 每个块的大小将根据文件元数据生成的信息量而变化。如下图是一个完整的MFT数据拷贝。

    文件头部

    第一个块是文件头,它以签名 46494C45 开头,它从十六进制翻译为人类可识别的「FILE」,在下图的明文 ASCII 列中看到。

    标准信息属性块

    第二个块是标准信息属性,用0x10 0x00 表示。从0x10 0x00的0x00的块开头0x00分别偏移 4个字节 和 5 个字节处,分别有对应十六进制值的0x60和0x00,表示该块的尺寸有多大。

    在此示例中,解释为小端序来解读这些字节位,字节偏移 4 和 5 的位置分别为 0x00 和 0x60。即0x0060这会转换为十进制值 96。因此,标准信息块相对于块的字节 0 的长度为 96 字节。

    文件名属性块

    第三块是文件名属性。 这由十六进制"0x30 0x00"表示。与标准信息属性一样,在字节偏移 4 和 5 处,这些位置的十六进制值揭示了该块的长度。

    在此示例中,十六进制长度为表示为「0x00A8」,即十进制长度为 168 字节,表示File Name Attribute整个块占用了磁盘空间中168个字节。

    数据属性块

    MFT记录的最后一个块是数据属性块。 这用十六进制 0x80 0x00 表示。

    在此示例中,在分别偏移 4 和 5 字节的位置,有一个十六进制值0x0048,该值十进制为转换为 72,即该「数据属性」块占用72个字节。

    如果您注意到,在此示例中,在同一个数据属性块中存在两个十六进制值「 0x80 0x00」, 因为该记录的数据属性有两个条目。第2个条目位于下图所示。

    同样在第二个条目的数据属性标识「 0x80 0x00」分别偏移4个字节和5个字节,位于这两个字节为的值是「0x0058」,表示该第2个数据条目的长度是十进制 88,即88字节。

    在某些情况下,由于文件系统解释文件元数据的方式,它必须显示为两个条目。

    MFT在MBR中的寻址

    这是 NTFS 卷的主引导记录的副本。 另外 WinHex 提取的 NTFS 信息。 正如您所看到的,主引导记录从十进制偏移量 00 开始,即卷的第一个扇区。 它继续到扇区末尾,偏移十进制 512。主引导记录以其签名页脚 55AA 结束

    该卷的扇区大小记得以小端序的方式读取哦,位于偏移量 11 和 12 处的字节位置定义的。 这将是十六进制的 0x0200。 即十进制的512。

    卷的簇大小在偏移量13的字节位置定义,即十六进制、十进制中的0x08。

    前面提到,主文件表记录号为0的起始簇定义在字节偏移量48的位置。这个起始簇的十六进制值为0x40000。

    0x40000转换成十进制这个值为262144。

    如果这个值乘以簇大小4096,则第一个记录的十进制偏移量为 1073741824。

    卷的序列号或磁盘签名从主引导记录(偏移量为0)开始偏移量 72的位置。 这是首次格式化卷时生成的磁盘的唯一标识符。

    仅当磁盘重新格式化时,该值才会更改。 这些信息在法医学上可能有用。如果对从同一台计算机拍摄的两个图像进行比较分析,并且该卷的序列号不同,那么很可能有人重新格式化了该驱动器。

    下一篇有空再说。。。。。