在社交网络项目中,我们想将用户的头像存储在一个文件夹中。我认为一两年后它将达到 140K(我以前见过这个问题,大约是这个数字)。我想将文件分散到文件夹中。如果一个文件夹包含 1000 个文件,则创建另一个文件夹并存储从 1001 到 2000 个文件。这是一种好方法还是我只是对这个问题非常谨慎?(文件系统:EXT3)
答案1
随着时间的推移,即使 ext3 增加了目录索引和其他功能,对于包含大量文件的目录来说,它也不是一个理想的选择。如果目录除了频繁的读取活动外还有大量的写入活动,或者目录中的文件通过 NFS/Samba 提供服务,情况尤其如此。
一般来说,以某种方式对子目录中的文件进行哈希处理会更好,例如
a/apple.png
b/banana.png
c/cow.png
或者
a/ap/apple.png
b/ba/banana.png
c/co/cow.png
您提出的建议(在一个目录中的一定数量的文件之后创建另一个目录)也很好。
答案2
看目录索引在Linux 2.6 中的功能。它提到了包含超过 1600 万个文件的目录。应该足够一段时间了。