gpt4 book ai didi

file - NTFS $MFT 文件可以有子记录吗?

转载 作者:行者123 更新时间:2023-12-03 14:12:05 27 4
gpt4 key购买 nike

我正在编写一些代码来解析 NTFS 卷中磁盘上的 MFT。这很简单,但是一个特殊的极端案例引起了我的注意,我在互联网上的任何地方都找不到明确的答案。

对于 NTFS 中的普通文件,如果文件的属性多于单个记录(例如,如果文件有许多硬链接(hard link),则有许多 $FILE_NAME 属性,或者许多$DATA 属性,如果它有许多备用数据流)。

引用号 0 处的 $MFT 文件保存 MFT 本身的数据运行。通常它是一个没有 child 的单一记录。 $MFT 文件是否有可能有子记录?如果可能的话,你怎么知道在哪里可以找到它们?这些子记录是否必须以非常低的引用编号存储,以便您可以可靠地获取它们,而不必已经解析 $MFT 以知道它们在磁盘上的位置?

最佳答案

有一种特殊类型的属性称为 $ATTRIBUTE_LIST .一个文件或目录最多可以有 65536 个属性,它们不可能适合单个 MFT 条目。它基本上包含除了他自己之外的所有文件属性的列表。列表中的每个条目都包含属性类型和查找属性的位置的 MFT 引用。这就是文件记录头中的基本文件引用字段的用途。

如果列表对于 MFT 条目来说太大,则属性可能会变得非常驻,并且将通过解释属性的数据运行来找到列表。

因为 $ATTRIBUTE_LIST 的类型是 32,它通常放在 $STANDARD_INFORMATION 之后。属性并将包含更多类型的属性(如 $FILE_NAME$DATA )。

当文件变得非常碎片化时,$DATA属性运行列表不适合单个 MFT 条目。这也是 $ATTRIBUTE_LIST 的情况。将用于存储 $DATA多个条目中的属性。
$MFT entry 很少有这个问题,因为分配算法是为了防止这种情况而设计的。但是如果一个 $MFT对于一个卷变得非常分散,它可以有多个条目来存储它是$DATA .

关于file - NTFS $MFT 文件可以有子记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30424102/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com