给定 Ubuntu 上 ext4 文件系统上目录条目的当前结构,文件系统可以包含的最大文件数是多少?
文件系统所能容纳的最大文件数的一般计算方法是什么?
答案1
Ext4 理论上最多可容纳 40 亿个文件,这受其用于标识每个文件的 inode 编号大小限制(ext4 使用 32 位 inode 编号)。不过,正如 John 所说,ext4 静态分配 inode 表,因此实际限制是在创建文件系统时设置的。
df 命令显示文件系统上可用 inode 的数量:
$ df -i
Filesystem iused ifree %iused Mounted on
/dev/disk0s3 55253386 66810480 45% /
/dev/disk1s3 55258045 66805821 45% /Volumes/Clone
Ext4 还支持每个目录中无限数量的子目录,但默认限制为 64,000。这是可配置的 - 请参阅Kernel Newbies 上的 ext4 文章。
有关详细信息,请参阅For more information, see新的 ext4 文件系统:当前状态和未来计划来自 2007 年 Linux 研讨会。
答案2
本质上没有一个;这取决于具体情况。当你创建一个 ext4 文件系统时,你决定索引节点表,它又控制着文件系统一次可以容纳的目录或文件的总数。
答案3
不是 Ubuntu,而是在 Redhat Linux 上,当对包含 300 万个文件的目录运行基本命令(例如 find)时,会因“参数过多错误”而失败。如果不包含任何参数,ls 会成功运行,但只要添加过滤参数,就会因相同的错误而失败。
假设这些基本命令的可靠性是一项强制性要求,我认为 300 万个文件太多了。