我正在开发基于Linux文件系统的缓存系统,以便在APC和Memcache不可用时将其用作最后的手段。系统将缓存500,000到1,000,000个唯一字符串标识符,每个标识符都有很大的值。我正在使用字符串ID的MD5哈希并基于前几个字符创建子文件夹,因此不会有太多文件在任何一个目录中结束。
我知道这个概念有效,因为我在类似的应用程序中使用它。
虽然最多有1MM字符串ID,但它们都只指向18,000个唯一值中的一个,因此,例如,可能有100,000个字符串ID都指向相同的值。现在这意味着有100,000个文件具有不同的文件名,包含相同的内容,这对底层文件系统缓存不利。
缓存18,000个唯一值是否有任何不利之处,然后对于每个唯一的字符串ID,创建唯一值文件的符号链接?这样,文件系统缓冲区可以缓存18,000个文件和符号链接的描述符。
我只关心拥有1,000,000个符号链接以及可能引入的任何潜在问题。
提前致谢!
答案 0 :(得分:3)
与存储纯文件相比,存储符号链接没有任何缺点。由于间接性,但 dentries和inode也被缓存,性能会略微降低。
但是,我强烈建议你需要硬链接,因为这样,内容将一直存在,直到最后一个链接被删除。
答案 1 :(得分:1)
我同意sehe,请注意,硬链接将使用仅18,000个inode 而不是 10 6 ;硬链接仅使用指向唯一的inode的附加目录条目。您将在磁盘和内存缓存中保存 10 6 * inode size 字节。