Windows 也像 Linux 一样有 Inode 编号吗?
Windows 也像 Linux 一样有 Inode 编号吗? Windows内部如何管理文件?
Does Windows have Inode Numbers like Linux? How does Windows internally manage files?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用的术语与您在 Unix 世界中找到的术语有点不同,但是就拥有唯一标识文件的整数而言,NTFS 和某些 Windows API 公开了类似的“文件 ID”概念。
您可以通过 < 查询打开句柄的文件 ID代码>GetFileInformationByHandle。参见nFileIndexHigh、nFileIndexLow;这分别是文件 ID 的高位和低位部分,文件 ID 为 64 位。
NtCreateFile
还可以通过文件 ID 打开文件。请参阅FILE_OPEN_BY_FILE_ID
标志。您需要一个卷句柄才能通过文件 ID 打开。The terminology used is a bit different from what you'd find in the Unix world, however in terms of having an integer that uniquely identifies a file, NTFS and some Windows API expose the concept of "file IDs" which is similar.
You can query the file ID of an open handle via
GetFileInformationByHandle
. SeenFileIndexHigh
,nFileIndexLow
; this is the high and low parts respectively of the file ID which is 64 bits.NtCreateFile
can also open a file by its ID. See theFILE_OPEN_BY_FILE_ID
flag. You need a volume handle to open by file ID.Windows 有“FileId”
是的,确实如此。通常称为
FileId
(又名文件ID
、又名FileID
)。在 Win8 命令 shell 中尝试一下:参考:
<块引用>
文件ID
文件的 128 位文件标识符。文件标识符和卷序列号唯一标识单个计算机上的文件。
Windows has "FileId"
Yes, it does. Generally called
FileId
(AKAfile ID
, AKAFileID
). Try this in a Win8 command shell:Reference:
是的。 NTFS 使用 B 树索引系统。 MFT 中的每个文件都有一个 64 位文件索引号。该数字称为文件 ID,仅在其卷内唯一标识该文件。即,同一台 PC 上两个不同卷上的两个文件可能具有相同的文件 ID。有关更多详细信息,请参阅这篇 MSDN 文章。
https://msdn.microsoft。 com/en-us/library/windows/desktop/aa363788(v=vs.85).aspx
关于你的第二个问题,“Windows 内部如何管理文件”,请参阅此 technet 文章:
https:// technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx
Yes. NTFS uses a B-Tree indexing system. Every file in the MFT has a 64 bit File Index Number. This number, called the File ID, uniquely identifies the file ONLY WITHIN ITS VOLUME. I.e., two files on two separate volumes on the same PC may have the same File ID. See this MSDN article for more details.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363788(v=vs.85).aspx
regarding your second question, "how does windows internally manage files", see this technet article:
https://technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx
这里有两件事。术语 INode,以及使用 INode 术语或类似 INode 的术语代替的文件系统实现。
我所知道的所有 Windows 文件系统(FAT*、NTFS)在实际实现中都使用类似 Inode 的结构。
为了进一步简化答案
(将 INode 视为有关文件的元数据块。)
INode 作为术语:没有 Windows 文件系统没有它。
INode 作为概念:Windows 将有一些其他结构,属性和用法类似,但使用不同的名称
There are two things here. The term INode, and a file-system implementation that uses either INode terminology or something like INode in its place.
All Windows file-systems(FAT*,NTFS) I know of, use Inode-like structures in actual implementation.
To further simplify the answer
(Think of INode as a block of metadata about a file.)
INode as term : No windows file system dont have it.
INode as concept : Windows will have some other structures, similar in property and usage but used with different name
我认为这个问题更多的是关于文件系统而不是特定的操作系统。每个文件系统以不同的方式处理文件(每个操作系统都可以支持多个文件系统)。
http://pcnineoneone.com/howto/filesystems1/ 对 FAT 和 NTFS 有很好的描述,这是 Windows 中两种流行的文件系统。
This question is more about filesystems than a particular OS I believe. Each filesystem handles files differently (and each OS can support multiple filesystems).
http://pcnineoneone.com/howto/filesystems1/ has a pretty good writeup on FAT and NTFS, which are two popular filesystems with windows.
索引节点是一个 POSIX 概念。现代 Windows 版本使用 NTFS。 NTFS 的深入描述:NTFS 内部
Inodes are a POSIX concept. Modern Windows versions use NTFS. An in-depth description of NTFS: Inside NTFS
不。NTFS 中没有与 inode 等效的东西。 Inode 是基于 **IX 的文件系统。
但是,NTFS 为每个文件存储了唯一的 8 字节参考号。
如果您想了解更多详细信息,请评论。
No. There is no equivalent to inodes in NTFS. Inode is with **IX based file systems.
But yes, NTFS stores a unique 8-byte reference number for each file.
Comment if you want to know more details.