【问题标题】:Where does Linux keep the record of free inodes?Linux 在哪里保存空闲 inode 的记录?
【发布时间】:2016-10-22 08:44:55
【问题描述】:

我很好奇 Linux(以及任何使用 Inode 作为其文件系统的操作系统)如何以及在何处跟踪可以使用的空闲 inode?当一个新文件被 crate 时,操作系统会将它分配给哪个 inode?随着文件的不断创建和删除,事情变得更加复杂。一般来说,操作系统如何管理哪些 inode 空闲以及哪些 inode 被使用?

我猜 inode 的结构类似于空闲列表,类似于内存分配器。但是当查看关于 inode 结构的所有描述时,我没有找到“下一个可用 inode”的指针字段。我认为这是一个重要的问题,但奇怪的是,我无法找到一个有明确答案的文献。

【问题讨论】:

  • 此问题与编程无关,应移至 unix.stackexchange.com。

标签: linux filesystems inode


【解决方案1】:

首先,让我们从 Linux 中分离出 inode 的概念;与操作系统相反,inode 是 ext3、ext4 和 UFS 文件系统的一项功能。那么inode信息存储在哪里呢?下面的链接应该可以回答这个问题。

https://serverfault.com/questions/212766/where-is-the-inode-number-stored?newreg=ddf0ea8fd887447698c8f95

关于“空闲”inode,在创建新文件或目录之前不会创建inode;没有“免费”inode 这样的东西。

【讨论】:

    【解决方案2】:

    inode 的确切存储位置取决于文件系统,就像 inode 是否相关一样。

    大多数传统的 Unix/Linux 文件系统(例如 ufs、ext2、ext3、ext4、gfs2、ocfs2、...)都会创建一个存储在磁盘上的固定大小的 inode 表。此表缓存在 RAM 中。

    例外是 reiserfs、jfs、xfs、btrfs 和 zfs,它们能够动态分配新的 inode。

    对于后者,空闲 inode 没有多大意义,但对于前者,如果在文件系统创建时进行的大小调整不合适,肯定会用完 inode。除了完整的inode表,文件系统中通常还有一个空闲的inode列表。

    NTFS 有一些类似于 inode 的东西,最后,一些文件系统根本不使用 inode,比如 fat32 和 iso9660。

    【讨论】:

      猜你喜欢
      • 2016-10-22
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      相关资源
      最近更新 更多