大型目录结构,联网应用程序的性能

时间:2020-03-05 18:58:04  来源:igfitidea点击:

我试图找出如果要在共享的nfs文件系统上访问深目录的情况下,大型目录结构的性能将如何。该结构将太大,具有4个嵌套目录级别,每个级别包含1024个目录。 (根目录为1024,子目录为1024,依此类推)。

该文件系统将位于用户要访问其个人信息的网络存储库中。数据将被复制到多台服务器上并实现负载平衡,但是每台计算机始终都具有良好的负载。

如果第4级包含用户正在寻找的信息,那么性能会有多差?是否所有人都在访问不同的子目录?是否可以通过缓存inode信息来解决此问题,否则不可以吗?

我已经搜索了一段时间,但是我主要是在查找有关大文件而不是大型目录结构的信息。

解决方案

回答

答案将高度依赖于操作系统,我们能否提供更多信息?我发现Linux下的文件打开时间在目录大小不超过几万的范围内是合理的,但是我没有尝试使用与目录结构一样大的目录结构进行任何测试(我们确实知道1024的四次幂是1,099,511,627,776对)那大约是地球人口的180倍,对吧?)

回答

似乎我们只想编写一个测试应用程序以生成1024个文件夹,向下迭代8个级别,每个文件夹包含一定数量(100 1000?)大小为1KB的文件,然后随机查找和访问这些文件。

跟踪多次通过的访问时间,并查看是否满足要求。

回答

我曾经在工作中这样做过。记不清确切的数字,但我认为它的深度为8层,每层10个子目录(用户ID 87654321映射到目录8/7/6/5/4/3/2/1 /。事实证明,并不是一个好主意,开始遇到文件系统inode数量限制,iirc(10 ^ 10 = 10000000000目录,不好)的问题。切换到每个级别更多的子目录,更少级别;问题消失了,情况听起来更易于管理,但仍然请检查文件系统是否支持我们期望的文件和目录数量。