如何确定物理上可能的最大 inode 数量?或者这是软件限制?
我在 GPFS 文件系统上工作。根据/usr/lpp/mmfs/bin/mmlsfileset gpfs0 -i
我有一个MaxInodes = 134217728
。这是一个 27 位无符号整数的值,这令人难以信服。这似乎是软件设置的限制。是吗?
答案1
除非是特定文件系统设计的副作用,否则 Inode 与磁盘特性没有物理关系。
索引节点是文件系统元数据概念,用于将元数据附加到磁盘结构或元结构(如目录,目录是列出反映其内容的 inode 的 inode)。因此,对 inode 的任何限制都基于为给定文件系统类型格式化磁盘时创建的结构。
来自上面的链接:
在安装操作系统(或新文件系统)并初始构建文件系统时,必须留出用于 inode 的空间。在任何文件系统中,inode 的最大数量(以及文件的最大数量)都是在创建文件系统时设置的。
所以,是的,限制是基于操作系统或文件系统驱动程序中的软件。Linux 文件系统通常允许操作系统在格式化磁盘时确定 inode 数量。
默认设置是为文件系统中每 2K 字节创建一个 inode,但用户可以在创建文件系统时调整该数量。例如,在设置只包含少量大文件的文件系统时,创建较少的 inode 是明智之举。同样,对于主要用于存储小文件的文件系统,建议为 inode 分配更多空间,为文件内容分配较少空间。
因此大多数 Linux 默认会分配
ceil(formattedSizeInBytes/(2 * 1024)) => initialInodes
。
这表明(除其他事项外)inode 的数量将始终是 2 的精确幂(因为除数和被除数本质上都是 2 的幂)。
现在,综上所述,许多较旧的文件系统被设计为每个扇区或块存储一个文件,因此在这些情况下,inode 的数量取决于磁盘提供的扇区数量(加上文件系统创建者认为适合链接和目录等的数量)。
通用文件系统是一种较旧的文件系统,但它是为大型机和超级计算机的并行访问而设计的,使用了多磁盘条带化等技术,因此它已经在很大程度上将其操作与各个物理磁盘的物理特性分离。