我需要创建非常多的文件,这些文件不是很大(如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
答案 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
希望这可以帮助......