温故:
比如:要创建一个 8MB 的文件系统,同时指定 nbpi值为4 096Byte,也就是说,每一个i节点可以控制一个4096 字节的数据块,那么这个文件系统就有2 048个i节点。
8MB×1 024×1 024÷4 096 (Byte)=2 048(i-nodes)
每一个文件或目录需要一个i 节点,这就意味着在这个文件系统中,如果每一个文件的大小不超过 4KB,则在这个 8MB 的文件系统中最多能创建 2048个文件。那么假设每个文件的大小依旧不超过4kb,如果要增加文件系统中允许创建文件的最大值该如何呢?自然是减小nbpi的值。
所以综上所述:在创建文件系统时,并不是直接去指定i节点的数量,而是间接的通过设置nbpi的值来调整文件系统中i节点的数量,进而调整文件系统中文件或目录的数量。
原文链接:AIX日志型文件系统之i-node节点的价值
知新:
日志型文件系统把它的空间划分成许多大块,这些大块称为分配组(Allocation Group,简称 AG)。每一个分配组都包含着 i 节点和数据块,这样就能够使i 节点和数据块分散在整个文件系统中,使得i节点的存放位置和它指向的数据块位置在物理上尽可能靠近一些,以提高访问磁盘的性能。
对于经常被顺序读写的文件,在一个分配组中给它分配连续的数据块,而在一个目录中,对于经常被一起访问的文件,把它们的数据块和目录的i节点分配同一个分配组中。几个例子:就像我的电脑,我会把常用的文件都统一放置在一个大目录下面,然后在这个大目录下面将每次需要配合使用的文件按顺序的排列下去,避免到处去找。
用 dumpfs 命令可以查看文件系统碎片的大小和分配组的大小。
从上图中的显示结果中可以看出/liuli文件系统的中碎片大小是4096 字节,分配组的大小是以碎片为单位来表示的,即 2048 个碎片,因此/liuli文件系统的分配组大小是 4096字节×2048=8MB。
拓展:
日志型文件系统的i节点数量最多不能超过 16MB(2的24次方=1677216)。当创建一个文件系统时,就确定了这个文件系统的最大空间。因为i节点的数量最大值是固定的,最多为1677216个,因此一旦确定了要创建的i节点的值(nbpi)的大小,两者相乘自然就是文件系统的大小。例如,选择 nbpi 的值为 1024字节,则文件系统大小的限制为 8GB(1024字节× 1677216=16GB)。文件系统的大小一般地限制为 nbpi×1677216。
但是,文件系统的大小不是没有限制的。比如说一个JFS 的 nbpi值最大可以达到 131 072 字节,用最大的i节点数可以算出文件系统的理论大小是131 072字节×16MB(2的24次方)=2 097 152 MB,即 2TB(2 TeraBytes),从数学上来看没有问题,然而实际上是不支持这么大的,IBM支持最大的文件系统大小是 1024GB。