在 RH5 Linux 上一个目录可以有多少个子目录?

在 RH5 Linux 上一个目录可以有多少个子目录?

我的一个程序正在处理数字,并根据结果创建一个存储所有数据的目录。昨晚它失败了。Mkdir 不再起作用。

检查后我发现我的数据目录下面有近 36,000 个子目录。

删除其中一些有助于对抗这一事业。

由此我想问您:父目录下可能存在的子目录数量是否具有一个神奇的数字?它是否与存储的数据量有关?(我不这么认为,但仍然希望得到确认)

在上述情况下,我可以减少目录数量吗,也许使用 gzip 压缩一些...这样能解决问题吗?

一般什么情况下mkdir会失败?

谢谢

答案1

取决于您使用的文件系统。Reiserfs(我最喜欢的)每个目录最多可以处理 2^31 个文件(即 20 亿个),文件系统总数最多可以处理 2^32 个文件(40 亿个)。它可以在一个目录中处理最多 64000 个子目录

Ext2(因此 ext3 也是如此)对每个目录的子目录数量有限制,为 32000 个。理论上每个目录的最大文件数量是无限的(实际上约为 130 万亿),但当文件数量超过 10-15 千个时,性能就会变得很差。文件系统上的最大文件总数受您拥有的 inode 数量限制。对于 1 GB 的文件系统和 4k 的块/inode 比率(默认值),您大约有 260000 个 inode,这也是您可以拥有的最大文件数量。

目录中有多少个文件太多?(从网络下载数据)

答案2

这取决于你使用的文件系统。对于 ext3,每个目录有 31998 个子目录在 ext3 上,如果您有大量非常小的文件,也有可能在用尽可用空间之前用尽 inode(每个 inode 的块比率可以设置为 fs 创建时间)。

更现代的文件系统通常具有更高的限制,或者仅受可用磁盘空间的限制。

话虽如此,目录或文件数量过多通常表明您做错了什么。考虑以某种二进制科学格式(如 netcdf、hdf5 或数据库)存储数据。

答案3

您有一个 ext4 文件系统。ext4 的最大子目录数为 64,000。

编辑:从技术上讲,使用 ext4 的“dir_nlink”功能可以达到更高的速度。

相关内容