我在网络文件系统中写入了很多文件;它以目录结构编写,目录结构中的每个叶目录都有几个(大约一千个)文件。包含相关文件的目录结构部分非常平坦。
如果我运行 ls 或 mkdir foo,相应的操作需要很长时间(大约 10 分钟)。
为什么会发生这种情况?如何以更省时的方式运行 ls 或 mkdir 等操作?
答案1
您使用的是网络文件系统,因此您的速度可能受到网络而不是磁盘的限制。
当您运行时ls
,基本操作是读入所有文件,对它们进行排序,然后打印出来。这意味着每个ls
人都需要读取数千个文件条目。缓存可以提供帮助,但它仍然是一个缓慢的过程。
同样,当您运行mkdir
需要检查的目录时,请确保您还没有获得该目录。
解决方案是减少每个目录的文件数量,使结构又窄又深而不是浅而宽。