Linux 文件系统百万符号链接(symbolic link)与百万文件

标签 linux caching symlink

我正在开发基于 Linux 文件系统的缓存系统,用于 Web 应用程序,当 APC 和 Memcache 不可用时用作最后的手段。系统将缓存 500,000 到 1,000,000 个唯一字符串标识符,每个标识符都具有很大的值。我正在获取字符串 ID 的 MD5 哈希值,并基于前几个字符创建子文件夹,这样任何一个目录中都不会出现太多文件。

我知道这个概念有效,因为我在类似的应用程序中使用它。

虽然有多达 1MM 的字符串 ID,但它们都指向仅有的 18,000 个唯一值中的一个,因此,例如可能有 100,000 个字符串 ID 都指向相同的值。现在这意味着有 100,000 个不同文件名的文件包含相同的内容,这对底层文件系统缓存不利。

缓存 18,000 个唯一值,然后为每个唯一字符串 ID 创建指向唯一值文件的符号链接(symbolic link)有什么缺点吗?这样,文件系统缓冲区可以缓存 18,000 个文件和符号链接(symbolic link)的描述符。

我只担心有 1,000,000 个符号链接(symbolic link)以及这可能引入的任何潜在问题。

提前致谢!

最佳答案

与存储普通文件相比,存储符号链接(symbolic link)没有任何缺点。由于间接寻址,性能会稍微慢一些,但是 dentry 和 inode 也会被缓存。

但是,我强烈建议您需要 链接,因为那样的话,内容将一直存在,直到最后一个链接被删除。

关于Linux 文件系统百万符号链接(symbolic link)与百万文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6613573/

相关文章:

database - 远程服务的缓存策略;我应该考虑什么?

linux - 使用内连接连接两个 TSV 文件

linux - 是什么导致此 du 命令错误且选项无效?

linux - 根据特定的搜索模式拆分文件,并使用 AWK 命令在拆分文件中包含特定行数

javascript - 在我的本地机器上引用 javascript 文件

php - 使用可变项创建一个两次通过的 PHP 缓存系统

php - Laravel - 符号链接(symbolic link)公用文件夹

ios - Xcode- "The Argument Is Invalid"

Docker-Compose 卷不递归挂载

linux - 如何移动角色(在 sed 中?)