文件是如何创建的?

Ano*_*ous 2 filesystem kernel files

我想知道 Windows 和 Linux 文件创建之间的主要区别是什么。

假设我正在终端会话中并输入:touch file。Linux 的幕后发生了什么?操作系统中的进程是什么?

Oli*_*Oli 5

在 Linux 中创建文件时:

  1. 生成一个inode。这是一个指向磁盘上数据块的描述符,该数据块还存储所有权、权限等信息。
  2. 创建到该 inode 的硬链接。这本质上是“文件名”以及它在文件系统其余部分中的位置。

一开始,这可能是一个令人困惑的概念,但其实很简单。索引节点作为实际数据的路标,但为了使用其中任何一个,您需要硬链接来显示文件系统的结构。

例如,这允许您拥有指向一个索引节点的多个硬链接,只要它们位于同一分区上即可。


在 Windows 中(随着 Microsoft 发展其文件系统,这可能会变得不真实),inode 和硬链接不是分开的,它们是同一个。这意味着当您创建文件时,它只会创建这个块。

明显的副作用是多个硬链接不存在,但不止于此 - 你通常无法删除一个被锁定打开的文件(这只是在 Linux 中删除硬链接)(这将由 inode 数据处理)在 Linux 中)。

但除了(相当大的)差异之外,它们非常相似。

事实证明,从 Vista 开始,NTFS 的工作方式与常见的 Linux 文件系统非常相似。它支持硬链接和软链接,表明它们在数据和路径之间有一个类似索引节点的对象。

简而言之:现在没有太大区别。在比 Vista 更旧的 Windows 版本上,我上面删除的答案仍然有效。