在 Windows 中,当创建文件/文件夹时,它会与 FRN(一个唯一的编号,类似于 MFT 的索引)关联。所有文件元数据都存储在 MFT 中,其保留大小为磁盘大小的 12.5%。
元数据如何以及在哪里存储在 Unix 文件系统(如 ext2、ext3 等)上? inode 是 Unix 上每个文件/文件夹的唯一值,但此信息存储在哪里?换句话说:
一个inode占用的大小是多少?
Unix 上文件/文件夹的元数据存储在哪里? Unix 上有类似 MFT 的东西吗?
答案1
Windows(或更准确地说 NTFS)所称的 MFT 就是典型的 Unix 文件系统所称的索引节点表,Windows 称之为 FRN 是 inode 号。它包含文件的元数据(权限、时间戳等),但不包含文件名(目录条目的一部分)。它还包含文件的前几个块的地址,或者包含文件块的地址的块。
跑步tune2fs -l /dev/sdz99
(替换sdz99
为您感兴趣的块设备的正确路径)以获取有关 ext2/ext3/ext4 文件系统的一些信息,包括“Inode count”(inode 数量)和“Inode size”(以字节为单位) 。对于这些文件系统,inode 的数量是在创建文件系统时选择的,它不会随着文件数量动态增长。您可以运行df -i
来查看已安装的文件系统上正在使用多少个 inode。
有些文件系统具有不同的数据结构。尽管 inode 的概念在 Unix 上是通用的,但由于文件系统 API 将唯一的 inode 号与每个文件关联起来,因此实现可能有所不同。例如,Btrfs 不为 inode 保留空间,它们是根据需要分配的。