Linux在哪里保留免费inode的记录?

时间:2016-06-21 00:01:07

标签: linux filesystems inode

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

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

2 个答案:

答案 0 :(得分:1)

首先,让我们离开Linux中的inode概念; inode是ext3,ext4和UFS文件系统的一个特性,而不是操作系统。那么inode信息存储在哪里?以下链接应该回答这个问题。

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

关于"免费" inode,在创建新文件或目录之前不会创建inode;没有"免费"索引节点。

答案 1 :(得分:1)

精确存储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。