元数据不占用任何大小吗?

The*_*ser 53 memory ntfs metadata filesystems fat32

我把4096 个字符放在一个文本文件中并保存它。由于每个字符是 1 个字节,因此文本文件的大小必须是 4K 字节。如下所示,没关系:

在此处输入图片说明

我将闪存连接到计算机。闪存上的可用空间是1,717,518,336字节

在此处输入图片说明

我在闪存中创建了该文件的副本。再看看空闲空间。它有1,717,514,240字节可用空间:

在此处输入图片说明

让我们看看有什么区别:

1,717,518,336 - 1,717,514,240 =4096字节


我的问题 :

问题 1:

如上图所示,文件在闪存上占用的唯一空间是其内容 [字符] 的空间。那么元数据文件在哪里?

我的意思是,当我将文件移动到另一台计算机时,它如何理解文件名、文件所有者、创建和修改日期以及......?

它不占任何大小吗?!

问题 2:

我可以看到闪存中的元数据文件吗?

在此处输入图片说明

感谢您的时间和考虑。

bja*_*sen 51

是的,元数据占用空间。在 NTFS 上,它占用 1024 字节,具体来说。但是,该信息并未存储在文件中,而是存储在主文件表 MFT 中。特别是在 MFT 记录 #4 中$AttrDef

有关详细信息,请参阅此 Technet 文章:表 3.5 包含定义的所有 MFT 记录。

使用 NTFS 格式化卷时,会创建主文件表 (MFT) 文件和其他元数据。元数据是 NTFS 用来实现文件系统结构的文件。NTFS 为元数据文件保留 MFT 的前 16 条记录。

NTFS 为每个文件创建一个文件记录,并为在 NTFS 卷上创建的每个目录创建一个目录记录。MFT 包括 MFT 本身的单独文件记录。这些文件和目录记录存储在 MFT 上。文件的属性被写入 MFT 中分配的空间。除了文件属性之外,每个文件记录还包含有关文件记录在 MFT 中的位置的信息。

请注意,其他文件系统可以并且确实以不同的方式处理元数据。

编辑:评论部分已经指出,这个答案没有抓住重点,因为 OP 要求在 FAT32 文件系统上提供元数据,而不是 NTFS。如果我知道如何,我会删除“正确答案”属性。因此,我提供了其他信息来回答有关 FAT32 的问题。

FAT32 在文件或文件夹的父文件夹中的条目中保存简单元数据,例如每个文件和文件夹的可见性或修改时间,从 FS 的根文件夹向下创建树。正如关于 NTFS 所指出的,这不是一个文件,而是保存文件夹数据结构中。该条目最初是 32 字节大,包含以下属性:

Name (8.3) xxxxxxxx.yyy. (88 bits)

Attribute byte (8 bits of information, described later in this section).

One reserved byte.

Create time (24 bits).

Create date (16 bits).

Last access date (16 bits).

Two reserved bytes.

Last modified time (16 bits).

Last modified date (16 bits).

Starting cluster number in the file allocation table (16 bits).

File size (32 bits).
Run Code Online (Sandbox Code Playgroud)

该列表取自这篇 Microsoft Technet 文章,与 FAT16 相关。由于 FAT32 的簇大小可以是 32 位并且文件名可以长于 8.3,因此该表并不完全准确。为了适应长文件名和更大的磁盘FAT32修改某些行为,可以在维基百科阅读了这里,但基本思路成立。

  • @TheGoodUser-Sp 元数据,至少在 NTFS 上,*不* 存储在传统意义上的“文件”中,这就是我得到的你正在寻找的印象。在 \windows 文件夹中的某个地方 * 没有 * 隐藏着我们只是没有告诉你的东西;文件元数据是文件系统本身不可或缺的一部分。 (9认同)
  • 您可以使用 Sysinternal 套件的 NTFSinfo 来查看元数据并找到任何扩展。您可以在此处下载:http://technet.microsoft.com/en-us/sysinternals/default 周围有多种元数据编辑器,但我无法推荐任何一种,因为我没有使用过它们。 (2认同)
  • 在这种情况下,闪存驱动器被格式化为 FAT-32。所以元数据存储在文件分配表 (FAT) http://en.wikipedia.org/wiki/File_Allocation_Table (2认同)
  • 重要的是要注意 NTFS 和 FAT 的分配表是预先分配的。它因格式而异,但通常有几个扇区被空的预分配块占用,这些块用于存储元数据以减少碎片。 (2认同)
  • 是什么让您认为元数据是固定大小的?访问控制列表的复杂性肯定会有很大差异;我看不到它如何始终适合 1024 字节(以及所有其他元数据,如访问和修改时间) (2认同)

Red*_*ick 27

它不占任何大小吗?!

是的,但它是大型预分配块中的一个小条目。该块计入磁盘的“已使用”部分。在该块内添加条目不需要扩展该块。

根据文件系统的不同,在添加了大量文件名后,最终会以某种方式填充和扩展块。

我可以看到闪存中的元数据文件吗?

不容易

正如鲁斯兰和布洛格比尔德所说。您可以安装一个十六进制查看器,例如HxD,它允许您查看(和编辑 - 非常小心)原始文件系统数据。但是您必须自己解释哪些字节属于哪些文件系统结构。为此,您需要一些关于闪存盘上使用的特定文件系统的良好文档。FAT32 可能比 NTFS 的许多变体中的任何一个都更容易理解。例如,请参阅了解 FAT32 文件系统

  • @Cthulhu:旧的不需要死灵之书。标签 (5认同)
  • @TheGood 如果没有谷歌,我可能会首先启动 Linux 并使用 `dd` 将原始闪存文件系统复制到另一个磁盘上的文件,然后使用十六进制查看器结合良好的参考工作来检查它特定的文件系统(如果不是专有的和未公开的)。我可能会使用 `touch` 更改元数据,重复 `dd` 并使用二进制差异。 (3认同)
  • 还好我没有被剥夺使用谷歌的机会。 (2认同)
  • 无需更改操作系统即可直接在硬盘驱动器上使用十六进制查看器。只需使用一个像样的十六进制查看器。(似乎连 `hiew` 都可以做到,但我不确定,因为我很久以前在 Windows 上)。 (2认同)

小智 7

元数据不作为文件存储(也不由通常的文件管理工具报告),它存储在磁盘上的文件系统数据中。

根据文件系统的性质/版本,每个条目将占用一定数量的磁盘空间来表示元数据信息。

此外,除了主文件表中分配的空间外,一些文件系统还会记录有关文件更改的日志(占用额外空间),一些文件系统甚至可以使用包含特殊用途元数据的额外字段进行扩展。

因此,技术上元数据会占用磁盘空间,但大多数文件管理实用程序都没有考虑到它,这些实用程序调用系统的 API 来查询文件系统的文件空间,而不是元数据空间。

而这种抽象只是冰山一角,因为文件系统本身工作在底层物理磁盘空间的抽象上,由低级磁盘例程提供,所以实际上只有磁盘的内部逻辑才能知道有多少实际内存位置可用于更高级别以及有多少被标记为不可靠、保留或用于校验和。


归档时间:

查看次数:

7859 次

最近记录:

11 年,2 月 前