一尘不染

如何在ext4上存储十亿个文件?

linux

我只创建了大约800万个文件,然后/ dev / sdb1中没有免费的索引节点。

[spider@localhost images]$ df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb1            8483456 8483456       0  100% /home

有人说可以在格式化分区时指定索引节点数。

例如mkfs.ext4 -N 1000000000。

我尝试过但出现错误:

“ inode_size(256)*
inodes_count(1000000000)太大…指定更高的inode_ratio(-i)或更低的inode计数(-N)。”。

合适的inode_ratio值是多少?

我听说ext4的最小inode_ratio值为1024。

是否可以在一个分区上存储十亿个文件?如何?有人说这会很慢。


阅读 201

收藏
2020-06-07

共1个答案

一尘不染

创建ext4文件系统时,可以指定用法类型:

mkfs.ext4 -T usage-type /dev/something

可用的用法类型在/etc/mke2fs.conf中列出。用法类型之间的主要区别是索引节点比率。 索引节点比率 越低,可以在文件系统中创建文件的越多。

mke2fs.conf中在文件系统中分配最大数量的inode的使用类型是“ news”。在1
TB硬盘驱动器上使用这种使用类型,ext4可创建2.44亿个inode。

# tune2fs -l /dev/sdb1 | grep -i "inode count"
Inode count:              244219904
# sgdisk --print /dev/sdb
Disk /dev/sdb: 1953525168 sectors, 931.5 GiB

这意味着使用“ -Tnews”创建一个可能容纳10亿个索引节点的ext4文件系统需要超过4 TB的空间。

2020-06-07