每个inode有多少个字节?

时间:2010-09-01 13:57:44

标签: filesystems inode ext4

我需要创建非常多的文件,这些文件不是很大(如4kb,8kb)。 这在我的计算机上是不可能的,因为它使所有inode达到100%并且我无法创建更多文件:

$ df -i /dev/sda5
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda5            54362112 36381206 17980906   67% /scratch

(我开始删除文件,这就是现在67%的原因)

我的文件系统(ext4)上每个节点的字节数为256

$ sudo tune2fs -l /dev/sda5 | grep Inode
Inode count:              54362112
Inodes per group:         8192
Inode blocks per group:   512
Inode size:               256

我想知道是否可以将此值设置得非常低,甚至低于128(在重新格式化期间)。如果是,我应该使用什么价值? THX

3 个答案:

答案 0 :(得分:27)

每个inode的默认字节数通常为16384,这是inode_ratio中的默认值/etc/mke2fs.conf(在文件系统创建之前读取它)。如果你的inode用完了,你可以尝试例如:

mkfs.ext4 -i 8192 /dev/mapper/main-var2

影响此问题的另一个选项是-T,通常是-T news,进一步将其降低到4096.

此外,如果不重新创建或对其进行十六进制编辑,则无法更改ext3或ext4文件系统中的inode数。 Reiser文件系统是动态的,因此您永远不会遇到问题。

答案 1 :(得分:11)

您可以通过将可用空间的大小除以可用的inode数来找出近似的inode比率。例如:

$ sudo tune2fs -l /dev/sda1 | awk -F: ' \
    /^Block count:/ { blocks = $2 } \
    /^Inode count:/ { inodes = $2 } \
    /^Block size:/ { block_size = $2 } \
    END { blocks_per_inode = blocks/inodes; \
          print "blocks per inode:\t", blocks_per_inode, \
                "\nbytes per inode:\t", blocks_per_inode * block_size }'

blocks per inode:    3.99759 
bytes per inode:     16374.1

答案 2 :(得分:-7)

我在mke2fs手册页上找到了我的问题的解决方案:

-I inode-size

以字节为单位指定每个inode的大小。 mke2fs默认创建256字节的inode。在2.6.10之后的内核和一些早期的供应商内核中,可以使用它 大于128字节的inode,用于存储扩展属性以提高性能。 inode-size值必须是2的幂大于或等于128 。越大了               inode-size inode表将占用的空间越多,这会减少文件系统中的可用空间,并且还会对性能产生负面影响。扩展               存储在大型inode中的属性对于较旧的内核是不可见的,并且这些文件系统根本不能与2.4内核一起安装。无法改变               文件系统创建后的这个​​值。

您可以设置的最大值由块大小给出。

sudo tune2fs -l /dev/sda5 | grep "Block size"
Block size:               4096

希望这可以帮助......