Squid Web Cache Wiki

Squid Web Cache 文档

🔗 使用 RAID 配合 Squid 缓存目录

磁盘存储架构的选择是决定 Squid 缓存性能的重要因素。

RAID 有多种类型,具有不同的特性。有关 RAID 的技术描述,请查阅 Wikipedia 上的相关条目。简而言之,RAID 通过冗余来提高磁盘子系统的可靠性。

为 Squid 缓存实现磁盘系统有多种选择。为任何磁盘系统做出选择时,最重要的参数是价格性能可靠性

对于依赖该技术的大量用户环境来说,可靠性是一个重要参数;提高服务可靠性最常见的方法是冗余其关键组件。RAID 磁盘提高了 Squid 缓存的可靠性,而复杂的磁盘阵列还能显著提升性能。另外,您也可以使用多个 Squid 缓存,并使用负载均衡机制,如 VRRP、外部负载均衡器或 ad-hoc 代理自动配置脚本(请参阅 ConfiguringBrowsersTechnology/ProxyPac)来实现更高的可用性。

对于现代网络环境来说,性能也很重要,因为即使是少量用户,也可能持续地通过 Squid 缓存传输 MB 或 GB 的数据。

在接下来的段落中,将更详细地描述各种选项,旨在为选择适用于您的 Squid 缓存的选项提供指导。此处未讨论其他 RAID 选项。之所以省略它们,是因为作者认为它们并不比已提供的选项更好。

价格和性能已相对于 JBOD 等效配置进行评分。

🔗 JBOD

JBOD 是“Just a Bunch Of Disks”(仅是一堆磁盘)的缩写,是服务器中磁盘系统的最廉价实现方式。JBOD 没有数据保护,如果保存了缓存目录的磁盘发生故障,Squid 缓存也会失败。

:information_source: 目前有 计划 使 squid 在面对磁盘故障时更加健壮。

由于 JBOD 不能保证磁盘子系统的高可用性,因此获得高可靠性最简单的方法是复制整个缓存。

每个磁盘只使用一个缓存目录;使用多个目录会增加磁盘磁头的寻道次数,从而降低性能。由于驱动器磁头寻道时间是最关键的性能瓶颈,因此建议使用许多小磁盘而不是少数大磁盘。

建议

总结

🔗 RAID0 (条带化)

RAID0 并非真正的 RAID 级别,更像是一种优化系统以处理对少量大文件的非常大的读/写操作的技术,以及一个将多个小磁盘合并成一个大磁盘的行政管理工具。

由于 Squid 主要处理 KB 范围内随机分布在大量文件中的小 I/O 操作,RAID0 对 Squid 没有好处,并且如果单个驱动器发生故障,只会带来丢失整个缓存的缺点。

选择 cache_dir 类型极大地影响了 RAID0 的性能。ufsdiskd 类型为每个 cache_dir 条目使用一个线程 IO 进程。在使用 N 个磁盘的 RAID0 配置下,您的 IO 速度是等效 JBOD 配置的 1/N。aufs 可以通过每个 cache_dir 使用多个 IO 线程进行调优,在一定程度上减小性能差异。

建议

总结

🔗 软件 RAID1

RAID 1,也称为镜像,它将两个物理卷组合成一个逻辑磁盘;数据同时写入两个磁盘,如果一个磁盘发生故障,系统可以依赖另一个仍在工作的磁盘。一次高级写操作需要两次低级写操作,而读操作可以通过向任一磁盘发出一次读操作来进行优化。

由于 Squid 代理使用的写操作多于读操作,RAID1 被认为比 JBOD 慢。最佳硬件级别镜像最多只能达到与 JBOD 相等的速度。软件控制器可能会在磁盘 IO 上增加 50% 的 CPU 开销。

与 JBOD 类似,建议每个逻辑卷使用一个 cache_dir 以最大化吞吐量。

建议

总结

🔗 RAID10

链条的强度取决于其最薄弱的环节。在这种情况下,薄弱环节是 RAID-0 操作的包含。见上文。

🔗 软件 RAID5

RAID 5 为每个逻辑卷使用一个磁盘用于奇偶校验数据;奇偶校验块分散在物理磁盘之间以提高可靠性。一个逻辑卷通常可以由 2+1 到 7+1 个物理磁盘组成。

它非常慢,因为在一个由 N+1 个磁盘组成的卷上的每个高级写操作都需要 N+1 次读和 2 次写。

每个逻辑磁盘只使用一个缓存目录。不要将多个逻辑磁盘放在同一组物理磁盘上。

总结

🔗 硬件 RAID1 或 RAID5

硬件 RAID1 或 RAID5 由专用协处理器或附加卡实现,它们将处理任务从主系统 CPU 卸载,并执行额外优化,如带电池缓存。这是获得良好可靠性和性能的相对便宜的解决方案。

与相应的软件版本相同的建议适用。

总结

🔗 复杂磁盘阵列

来自所有硬件供应商和专业公司的复杂磁盘阵列以其极高的性能、可靠性和价格而闻名。

它们通常包含大到巨大的存储池,然后通过 光纤通道iSCSI 传输层进行切片和虚拟化。利用复杂的管理和缓存机制来最大化磁盘吞吐量。得益于此,写入操作几乎可以瞬时完成,读取速度也非常快。

每个逻辑磁盘只使用一个缓存目录。将逻辑磁盘配置为使用多个磁头。使用更多逻辑磁盘可提高性能。

总结

🔗 那么我该怎么做?

这取决于,没有一种适合所有情况的方法,它取决于您组织的具体需求。总的来说,获得更高可靠性最便宜的方法是复制缓存并使用廉价存储,但会增加一些网络级别的复杂性。

对于几乎所有设置,JBOD 方法是最有益的,也许为操作系统使用软件 RAID1。另外,您可能更倾向于构建两个缓存服务器,而不是在磁盘子系统上花费大量金钱。您至少需要 4 个驱动器才能获得最佳性能。超过 4 个缓存驱动器很难看到任何额外的性能提升。

如果您不需要绝对顶级的性能,并且您的组织已标准化使用带有内置 RAID5 控制器的硬件,那么这是一个合适的选择,因为它提供了高可靠性和简单的服务,但如果您真的需要达到极限,它并不是性能最佳的选择。

回到 FAQ 索引

导航: 网站搜索网站页面分类🔼 向上