为什么工作目录中只有几个文件,但 ls 和 mkdir 却需要很长时间?

为什么工作目录中只有几个文件,但 ls 和 mkdir 却需要很长时间?

我在网络文件系统中写入了很多文件;它以目录结构编写,目录结构中的每个叶目录都有几个(大约一千个)文件。包含相关文件的目录结构部分非常平坦。

如果我运行 ls 或 mkdir foo,相应的操作需要很长时间(大约 10 分钟)。

为什么会发生这种情况?如何以更省时的方式运行 ls 或 mkdir 等操作?

答案1

您使用的是网络文件系统,因此您的速度可能受到网络而不是磁盘的限制。

当您运行时ls,基本操作是读入所有文件,对它们进行排序,然后打印出来。这意味着每个ls人都需要读取数千个文件条目。缓存可以提供帮助,但它仍然是一个缓慢的过程。

同样,当您运行mkdir需要检查的目录时,请确保您还没有获得该目录。

解决方案是减少每个目录的文件数量,使结构又窄又深而不是浅而宽

相关内容