一个文件系统最多可以包含多少个文件?

44 linux filesystems ext4 directory

鉴于 Ubuntu 上 ext4 文件系统上目录条目的当前结构,文件系统可以包含的最大文件数是多少?

计算文件系统可以包含的最大文件数的一般方法是什么?

小智 48

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
Run Code Online (Sandbox Code Playgroud)

Ext4 还支持每个目录的子目录数量不受限制,但默认限制为 64,000。这是可配置的——请参阅Kernel Newbies 上ext4 文章

有关更多信息,请参阅2007 Linux 研讨会上的新 ext4 文件系统:当前状态和未来计划


Joh*_*lla 11

本身没有一个;这取决于。当您创建 ext4 文件系统时,您决定inode 表的大小,它反过来控制文件系统一次可以容纳的目录或文件的总数。

  • 您可以运行`tune2fs -l /path/to/device`并查找Inode计数值以找到给定文件系统的限制 (11认同)
  • 在 ext4 中,inode 表是在创建文件系统时静态分配的。增加它的唯一方法是重新创建文件系统。-N 或 -i 选项用于设置创建的 inode 数。 (4认同)

小智 6

不是 Ubuntu,而是 Redhat Linux 上的基本命令,例如 find 在针对包含 300 万个文件的目录运行时会失败,并出现“参数过多错误”。如果不包含任何参数,ls 会成功运行,但一旦添加过滤器参数,就会失败并出现相同的错误。

假设此类基本命令的可靠性是强制性要求,我建议 300 万个文件太多了。

  • 但这不是文件系统限制。 (6认同)
  • 好点子!FS可能会支持它,但是工具将越来越难以处理它。 (2认同)