🔗 使用 RAID 配合 Squid 缓存目录
磁盘存储架构的选择是决定 Squid 缓存性能的重要因素。
RAID 有多种类型,具有不同的特性。有关 RAID 的技术描述,请查阅 Wikipedia 上的相关条目。简而言之,RAID 通过冗余来提高磁盘子系统的可靠性。
为 Squid 缓存实现磁盘系统有多种选择。为任何磁盘系统做出选择时,最重要的参数是价格、性能和可靠性。
对于依赖该技术的大量用户环境来说,可靠性是一个重要参数;提高服务可靠性最常见的方法是冗余其关键组件。RAID 磁盘提高了 Squid 缓存的可靠性,而复杂的磁盘阵列还能显著提升性能。另外,您也可以使用多个 Squid 缓存,并使用负载均衡机制,如 VRRP、外部负载均衡器或 ad-hoc 代理自动配置脚本(请参阅 ConfiguringBrowsers 和 Technology/ProxyPac)来实现更高的可用性。
对于现代网络环境来说,性能也很重要,因为即使是少量用户,也可能持续地通过 Squid 缓存传输 MB 或 GB 的数据。
在接下来的段落中,将更详细地描述各种选项,旨在为选择适用于您的 Squid 缓存的选项提供指导。此处未讨论其他 RAID 选项。之所以省略它们,是因为作者认为它们并不比已提供的选项更好。
价格和性能已相对于 JBOD 等效配置进行评分。
🔗 JBOD
JBOD 是“Just a Bunch Of Disks”(仅是一堆磁盘)的缩写,是服务器中磁盘系统的最廉价实现方式。JBOD 没有数据保护,如果保存了缓存目录的磁盘发生故障,Squid 缓存也会失败。
目前有 计划 使 squid 在面对磁盘故障时更加健壮。
由于 JBOD 不能保证磁盘子系统的高可用性,因此获得高可靠性最简单的方法是复制整个缓存。
每个磁盘只使用一个缓存目录;使用多个目录会增加磁盘磁头的寻道次数,从而降低性能。由于驱动器磁头寻道时间是最关键的性能瓶颈,因此建议使用许多小磁盘而不是少数大磁盘。
建议
- 对于大多数设置,缓存内容可以轻松快速地从实时流量中恢复。使用多个代理进行故障转移的 JBOD 配置适合大多数网络。
总结
- 价格:最低。
- 性能:最佳。
- 可靠性:一般,单盘故障会导致 Squid 代理不可用。
🔗 RAID0 (条带化)
RAID0 并非真正的 RAID 级别,更像是一种优化系统以处理对少量大文件的非常大的读/写操作的技术,以及一个将多个小磁盘合并成一个大磁盘的行政管理工具。
由于 Squid 主要处理 KB 范围内随机分布在大量文件中的小 I/O 操作,RAID0 对 Squid 没有好处,并且如果单个驱动器发生故障,只会带来丢失整个缓存的缺点。
选择 cache_dir 类型极大地影响了 RAID0 的性能。ufs 和 diskd 类型为每个 cache_dir 条目使用一个线程 IO 进程。在使用 N 个磁盘的 RAID0 配置下,您的 IO 速度是等效 JBOD 配置的 1/N。aufs 可以通过每个 cache_dir 使用多个 IO 线程进行调优,在一定程度上减小性能差异。
建议
- 不如使用 JBOD,因为它在价格、潜在性能和可靠性方面都优于 RAID0/条带化。
总结
- 价格:最低。
- 性能:良好。
- 可靠性:差。有丢失整个缓存的风险。单盘故障也会导致 Squid 代理不可用。
🔗 软件 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 次写。
- 如果您有 4 个磁盘,软件 RAID1 被认为优于软件 RAID5,因为您可以使用 RAID1 创建 2 个逻辑磁盘,而 RAID5 只能创建 1 个逻辑磁盘,并且使用更多逻辑磁盘可以提高 Squid 的性能。
每个逻辑磁盘只使用一个缓存目录。不要将多个逻辑磁盘放在同一组物理磁盘上。
总结
- 价格:低。
- 性能:低。
- 可靠性:好。
🔗 硬件 RAID1 或 RAID5
硬件 RAID1 或 RAID5 由专用协处理器或附加卡实现,它们将处理任务从主系统 CPU 卸载,并执行额外优化,如带电池缓存。这是获得良好可靠性和性能的相对便宜的解决方案。
与相应的软件版本相同的建议适用。
总结
- 价格:适中(带 VRRP 的额外服务器成本相当)
- 性能:适中到良好,取决于 RAID 控制器和磁盘架构。
- 可靠性:好。
🔗 复杂磁盘阵列
来自所有硬件供应商和专业公司的复杂磁盘阵列以其极高的性能、可靠性和价格而闻名。
它们通常包含大到巨大的存储池,然后通过 光纤通道 或 iSCSI 传输层进行切片和虚拟化。利用复杂的管理和缓存机制来最大化磁盘吞吐量。得益于此,写入操作几乎可以瞬时完成,读取速度也非常快。
每个逻辑磁盘只使用一个缓存目录。将逻辑磁盘配置为使用多个磁头。使用更多逻辑磁盘可提高性能。
总结
- 价格:最高。
- 性能:最高。
- 可靠性:最高。
🔗 那么我该怎么做?
这取决于,没有一种适合所有情况的方法,它取决于您组织的具体需求。总的来说,获得更高可靠性最便宜的方法是复制缓存并使用廉价存储,但会增加一些网络级别的复杂性。
对于几乎所有设置,JBOD 方法是最有益的,也许为操作系统使用软件 RAID1。另外,您可能更倾向于构建两个缓存服务器,而不是在磁盘子系统上花费大量金钱。您至少需要 4 个驱动器才能获得最佳性能。超过 4 个缓存驱动器很难看到任何额外的性能提升。
如果您不需要绝对顶级的性能,并且您的组织已标准化使用带有内置 RAID5 控制器的硬件,那么这是一个合适的选择,因为它提供了高可靠性和简单的服务,但如果您真的需要达到极限,它并不是性能最佳的选择。
回到 FAQ 索引
导航: 网站搜索、网站页面、分类、🔼 向上