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

标签 linux inode ext4

<分区>

我只创建了大约 800 万个文件,然后/dev/sdb1 中没有空闲 inode。

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

有人说格式化分区的时候可以指定inode数

例如mkfs.ext4 -N 1000000000。

我试过了,但出现错误:

"inode_size (256) * inodes_count (1000000000) too big...specify higher inode_ratio (-i) or lower inode count (-N). ".

什么是合适的 inode_ratio 值?

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

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

最佳答案

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

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

可用的使用类型列在/etc/mke2fs.conf 中。这 使用类型之间的主要区别在于 inode 比率。较低的 inode 比率,您可以在文件中创建的文件越多 系统。

mke2fs.conf 中分配最多数量的使用类型 文件系统中的 inode 是“新闻”。使用此使用类型 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

这意味着创建一个 ext4 需要超过 4 TB 带有“-Tnews”的文件系统可能容纳 10 亿 inode 。

关于linux - 如何在 ext4 上存储十亿个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21397110/

相关文章:

python - Django最佳实践中执行os和子进程

linux - libjpeg 编码默认支持的 YUV 格式是什么?

android - 连接到 LocalServerSocket 时出现 EMFILE(打开的文件过多)错误?

python - 如何用python获取linux文件系统下的所有inode?

linux - trace_ext4_request_inode(dir, mode) 的意义?

linux 内核路径遍历。查找慢的解释

linux - 如何让我的 Docker 容器通过第二个接口(interface)与另一个节点通信?

c++ - 通过服务器将对象传递给客户端

data-structures - Inode号的数据结构是什么样的?

ubuntu - 在 Azure 上从我取消配置的 Ubuntu 镜像创建 VM 时,它使用 fusionblk 资源磁盘而不是 ext4 创建 VM