【问题标题】:Does Windows have Inode Numbers like Linux?Windows 是否像 Linux 一样具有 Inode 编号?
【发布时间】:2011-08-23 13:58:06
【问题描述】:

Windows 是否像 Linux 一样具有 Inode 编号? Windows 如何在内部管理文件?

【问题讨论】:

标签: windows linux filesystems


【解决方案1】:

使用的术语与您在 Unix 世界中找到的术语有些不同,但是就具有唯一标识文件的整数而言,NTFS 和一些 Windows API 公开了类似的“文件 ID”概念.

您可以通过GetFileInformationByHandle查询打开句柄的文件ID。见nFileIndexHighnFileIndexLow;这是文件ID的高低部分,分别为64位。

NtCreateFile 也可以通过文件 ID 打开文件。请参阅FILE_OPEN_BY_FILE_ID 标志。您需要一个卷句柄才能按文件 ID 打开。

【解决方案2】:

是的。一般称为fileID。在 Win8 命令 shell 中试试这个:

fsutil file queryfileid  <filename>
【解决方案3】:

是的。 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

【解决方案4】:

这里有两件事。术语 INode,以及使用 INode 术语或类似 INode 的名称的文件系统实现。

我所知道的所有 Windows 文件系统(FAT*,NTFS),在实际实现中都使用类似 Inode 的结构。

进一步简化答案

(将 INode 视为有关文件的元数据块。)

INode 作为术语:没有 Windows 文件系统没有它。

INode 作为概念:Windows 会有一些其他结构,在属性和用法上相似,但使用不同的名称

【讨论】:

  • 等等。 FAT 如何具有类似 inode 的结构?它甚至没有硬链接;文件名和数据链之间没有额外的层。
【解决方案5】:

这个问题更多是关于文件系统,而不是我认为的特定操作系统。每个文件系统处理文件的方式不同(每个操作系统可以支持多个文件系统)。

http://pcnineoneone.com/howto/filesystems1/ 对 FAT 和 NTFS 这两个流行的 Windows 文件系统有很好的描述。

【讨论】:

  • 你能把链接的相关部分粘贴到这里吗?
【解决方案6】:

没有。 NTFS 中没有等效的 inode。 Inode 使用基于 **IX 的文件系统。

但是是的,NTFS 为每个文件存储一个唯一的 8 字节参考号。

如果您想了解更多详细信息,请发表评论。

【讨论】:

    【解决方案7】:

    索引节点是一个 POSIX 概念。现代 Windows 版本使用 NTFS。 NTFS深入说明:Inside NTFS

    【讨论】:

    • 呵呵。不。 INode 不是 Posix 概念。这么说就意味着,POSIX 与 INode 一起出现,其他人也随之而来。 INode 的概念来自 Unix 家族中最早的非平面文件系统的实现。 (在 1988 年之前就足够了)POSIX 可能在以后用自己的术语定义了它。
    • @Ajeet:说它是 Posix 概念,我只是说它是由 Posix 标准定义的。当然,inode 早于 Posix,就像几乎所有其他 Posix 概念也早于它一样。
    • 在 POSIX 标准中是在哪里定义的?我在非规范部分找到了它——但我还没有在其他地方找到它。
    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2017-03-21
    • 2011-05-04
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    相关资源
    最近更新 更多