【发布时间】:2011-08-23 13:58:06
【问题描述】:
Windows 是否像 Linux 一样具有 Inode 编号? Windows 如何在内部管理文件?
【问题讨论】:
标签: windows linux filesystems
Windows 是否像 Linux 一样具有 Inode 编号? Windows 如何在内部管理文件?
【问题讨论】:
标签: windows linux filesystems
使用的术语与您在 Unix 世界中找到的术语有些不同,但是就具有唯一标识文件的整数而言,NTFS 和一些 Windows API 公开了类似的“文件 ID”概念.
您可以通过GetFileInformationByHandle查询打开句柄的文件ID。见nFileIndexHigh、nFileIndexLow;这是文件ID的高低部分,分别为64位。
NtCreateFile 也可以通过文件 ID 打开文件。请参阅FILE_OPEN_BY_FILE_ID 标志。您需要一个卷句柄才能按文件 ID 打开。
是的。一般称为fileID。在 Win8 命令 shell 中试试这个:
fsutil file queryfileid <filename>
是的。 NTFS 使用 B-Tree 索引系统。 MFT 中的每个文件都有一个 64 位的文件索引号。此编号称为文件 ID,仅在其卷内唯一标识文件。即,同一台 PC 上两个不同卷上的两个文件可能具有相同的文件 ID。有关详细信息,请参阅此 MSDN 文章。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363788(v=vs.85).aspx
关于您的第二个问题,“windows 内部如何管理文件”,请参阅这篇技术网文章:
https://technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx
这里有两件事。术语 INode,以及使用 INode 术语或类似 INode 的名称的文件系统实现。
我所知道的所有 Windows 文件系统(FAT*,NTFS),在实际实现中都使用类似 Inode 的结构。
进一步简化答案
(将 INode 视为有关文件的元数据块。)
INode 作为术语:没有 Windows 文件系统没有它。
INode 作为概念:Windows 会有一些其他结构,在属性和用法上相似,但使用不同的名称
【讨论】:
这个问题更多是关于文件系统,而不是我认为的特定操作系统。每个文件系统处理文件的方式不同(每个操作系统可以支持多个文件系统)。
http://pcnineoneone.com/howto/filesystems1/ 对 FAT 和 NTFS 这两个流行的 Windows 文件系统有很好的描述。
【讨论】:
没有。 NTFS 中没有等效的 inode。 Inode 使用基于 **IX 的文件系统。
但是是的,NTFS 为每个文件存储一个唯一的 8 字节参考号。
如果您想了解更多详细信息,请发表评论。
【讨论】:
索引节点是一个 POSIX 概念。现代 Windows 版本使用 NTFS。 NTFS深入说明:Inside NTFS
【讨论】: