我有一个网络服务器,它可以保存缓存文件并保存7天。文件名是MD5哈希值,即正好32个十六进制字符长,被保存在一个树状结构,看起来像这样:处理大量临时小文件
00/
00/
00000ae9355e59a3d8a314a5470753d8
.
.
00/
01/
你的想法。
我的问题是删除旧文件需要很长时间。我有一个每天运行的cron任务
find cache/ -mtime +7 -type f -delete
需要超过半天时间才能完成。我担心可扩展性及其对服务器性能的影响。此外,缓存目录现在在我的系统中是一个黑洞,它偶尔陷入无辜的du
或find
。
LRU缓存的标准解决方案是某种堆。有没有办法将其扩展到文件系统级别? 有没有其他的方式来实现这一点,使其更容易管理?
这里有想法我认为:
- 创建7个顶部目录,每天一个星期每一天,空单目录。这会将缓存文件的搜索时间延长7倍,当文件被覆盖时会使其变得非常复杂,而且我不确定它会对删除时间起什么作用。
- 将文件保存为带名称和日期索引的MySQL表中的blob。这似乎很有希望,但实际上它总是比FS慢得多。也许我做得不对。
任何想法?
错误:)你击败了我。 +1这个答案。 – 2008-11-03 09:48:01