文件是如何创建的?

文件是如何创建的?

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

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

答案1

在 Linux 中创建文件时:

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

乍一看,这可能是一个令人困惑的概念,但其实它很简单。 Inode 是指向实际数据的标志,但要使用其中任何一个,您需要硬链接来显示文件系统的结构。

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


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

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

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

事实证明,自 Vista 以来,NTFS 的工作方式与常见的 Linux 文件系统非常相似。它支持硬链接和软链接,这意味着它们在数据和路径之间有一个类似 inode 的对象。

简而言之:如今没有太大区别。在比 Vista 更旧的 Windows 版本上,我上面经过修改的答案仍然有效。

相关内容