我需要创建非常大的文件,这些文件不是很大(如4kb,8kb)。这在我的计算机上是不可能的,因为它使所有inode达到100%并且我无法创建更多文件:
$ df -i /dev/sda5
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda5 54362112 36381206 17980906 67% /scratch
(我开始删除文件,这就是为什么它现在是67%)
我的文件系统上每个节点的字节数为256(ext4)
$ sudo tune2fs -l /dev/sda5 | grep Inode
Inode count: 54362112
Inodes per group: 8192
Inode blocks per group: 512
Inode size: 256
我想知道是否可以将此值设置得非常低,甚至低于128(在重新格式化期间)。如果是,我应该使用什么价值?谢谢
每个inode的默认字节数通常为16384,这是inode_ratio
中的默认/etc/mke2fs.conf
(它是在创建文件系统之前读取的)。如果你的inode用完了,你可以尝试例如:
mkfs.ext4 -i 8192 /dev/mapper/main-var2
影响这一点的另一个选择是-T
,通常是-T news
,它进一步将其减少到4096。
此外,如果不重新创建或对其进行十六进制编辑,则无法更改ext3或ext4文件系统中的inode数。 Reiser文件系统是动态的,因此您永远不会遇到问题。
您可以通过将可用空间的大小除以可用的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
我在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
希望这可以帮助....