将 Squid 缓存文件过滤到多个缓存目录

将 Squid 缓存文件过滤到多个缓存目录

我目前正在建立一个小型家庭网络 - 我选择使用 squid 代理,我想知道是否可以设置一个具有多个 cache_dirs 的 squid 实例,以便不同的文件(更准确地说,具有不同 cache_dirs 的文件)尺寸)最终会到达不同的 cache_dirs?

原因是我将在半拆解硬件的机器上以虚拟机的形式运行 squid。我有一个小型 SSD(我希望用它来缓存小型、动态、非常短暂的文件,如网页、小图片等)和一个大型、缓慢的 HDD(我希望用它来缓存较大的静态内容,如 Windows 更新、youtube 传输、大图片等)。

这是我第一次接触 squid,而且它只是一个小型网络,所以我想避免引入诸如多个 squid 实例或分层缓存之类的复杂性。理想情况下,应该有一种方法可以指定一些简单的标准集,将给定的文件放在缓存目录 A 或缓存目录 B 中。

我已经仔细查看了 SquidFAQ,但没有发现其中提到任何类似内容,所以我可能错过了一些真正基本的内容。

怎么才能做到这一点?是否有人使用某种模式来应对这种情况?这是否有必要/可取?

答案1

嘿,我之前遇到过你的问题,尝试设置一个类似的东西。

您的帖子虽然很旧,但并非无人看过。所以,如果有人像我昨天一样,也许这很有意义:

SSD 速度快,但每 MB 价格昂贵,HDD 速度慢,但每 MB 价格便宜。我们只需要在它们两个上的任意文件系统上创建一个文件夹。当然,不要两次使用同一个物理设备。您的答案:您可以使用特殊共享选项对它们进行分层,min-size然后max-size

cache_dir rock /mnt/ssd1/squid 1024 min-size=0 max-size=65536

cache_dir aufs /mnt/hdd1/squid 250000 16 256 min-size=65536

这会将缓存分散到 2 个 cache_dirs 中,第一个用于“Rock”数据库中小于 64kb 的块(这将成为文件 /mnt/ssd1/squid/rock/rock),位于最大大小为 1 GB* 的快速 SSD 上。

后者适用于大于该大小的块,在文件夹结构中,存储类型为“aufs”/mnt/hdd1/squid/16 文件夹/256 文件夹(仍在试验,可能会尝试 diskd),最大大小为 250GB *=until squid 将启动其保留方案。关于这一点,我选择了cache_replacement_policy heap LFUDA,为什么超出了这里的范围。但值得一提的是,如果您重叠了不同 cache_folders 的最小-最大边界,则需要小心使用此设置。

例如,如果在第二个 HDD 上有一个文件系统,我可以添加类似 cache_dir aufs /mnt/hdd2/ 250000 16 256 min-size=65536。这将完全与 hdd1 上的其他 cache_dir 重叠。

或者,您可以设置 3 层,确保您阅读了 squid.conf 部分TAG: cache_dir(请注意,您的答案位于最后部分,在“常用选项”下),尤其是最后一部分TAG: store_dir_select_algorithm。如果您有重叠的最小-最大边界。

相关内容