bcache 和/或 dm-cache 是否被认为在 2016 年可以稳定投入生产?

bcache 和/或 dm-cache 是否被认为在 2016 年可以稳定投入生产?

我想将 Linux SSD 缓存(dm-cache 或 bcache)与 Debian Jessie 生产服务器一起使用。(内核 3.16)

我的问题:dm-cache 和 bcache 模块在 Linux 3.16 中可靠吗?我需要将内核升级到较新的版本吗?

我还发现了有关 bcache 的令人担忧的消息:https://lkml.org/lkml/2015/12/22/154

请注意,我完全理解缓存模式选择(写回/写通)在可靠性和数据丢失方面的含义,我的问题更多是关于这些模块中的软件错误


2018 年 2 月,在持续集成服务器上使用 bcache 一年多之后进行跟进(jenkins 实例运行了大量密集型作业!)

服务器配置(本质上是存储堆栈)

硬件:

  • 2 x 480GB SSD(三星 SM863 企业级 MLC)
  • 2 x 4TB 硬盘 (希捷 Constellation ES.3 SATA)
  • 戴尔 R730 - 双 Xeon E52670 - 128GB RAM
  • 硬件 RAID,无需电池/闪存支持的硬件写入缓存,这就是 bcache 的写回功能变得有趣的地方。

软件:

  • 2016 年 9 月配置,从未重启
  • 带有 4.6 内核的 D​​ebian Jessie(来自上次更新时的官方 jessie-backport)
  • 软件 MD raid 10
    • 1 个 raid10 设备用于 2 个 SSD
    • 1 个 raid10 设备用于 2 个 HDD
  • 2 个 RAID 设备上的 2 个 LVM VG
  • 在 SSD_RAID10 VG 上的逻辑卷上创建 bcache “缓存”设备
  • 在 HDD_RAID10 VG 上的逻辑卷上创建 bcache“备份”设备
  • bcache 缓存配置为写回

工作量

  • 许多詹金斯作业(持续集成)
  • CPU 密集型作业与 I/O 密集型作业混合使用
    • 在使用 bcache 之前,I/O 平均延迟会定期上升到 5 秒以上(!!!)
  • 该服务器的实际工作量仅从 1 年前开始(~2017 年 2 月)

根据 /proc/diskstats 在 bcache 设备上发出的 I/O 量)

  • 写入350TB
  • 6TB 读取(我仔细检查了一下,我认为大量的 RAM 对在 VFS 层缓存读取有很大帮助)

结果

  • 非常稳定!机器从未重启过(正常运行时间 525 天),没有检测到损坏。
  • 命中率很高!历史平均命中率为 78%,并且还在上升:最近几个月命中率超过 80%
  • 写回有很大帮助:磁盘延迟现在降低了几个数量级,遗憾的是我没有对此进行准确的测量,但计算不再因写入突发而停滞。脏数据量超过 5GB,而硬件 RAID 写入缓存的大小通常在 512MB 到 1GB 之间)

结论

  • bcache 在这个配置上非常稳定(但是 1 台机器,1 种配置,1 台机器年,不足以概括,但这是一个好的开始!)
  • bcache 在这种工作负载下性能非常出色,并且写回模式似乎可以有效地取代硬件 RAID 写缓存(但请记住,断电时的可靠性尚未经过测试)
  • 我个人认为 bcache 被低估了,使用它来打包一些有趣的解决方案也不错,但请注意,原作者现在开发了 bcachefs(一个基于 bcache 工作的文件系统),并且不再改进 bcache

答案1

我认为,SSD 存储成本的下降以及可用容量和选项范围的增加,使得在需要时使用固态存储并放弃选择性(可能有缺陷的)缓存的想法成为一个很好的理由。

如果您填写一些有关环境、容量需求和其他任何内容的详细信息,可能会有助于得到更好的答案。

答案2

我在看你的链接并检查了所有补丁,并手动验证了每个补丁都已合并到 vanilla kernel 4.9.0 中,最后一个补丁合并于 2016-10-27 04:31:17 UTC。最后一个补丁出现在 2016-12-11 19:17:54 UTC 发布的 4.9.0 中。所有这些补丁也都出现在从 16.04 反向移植的 Ubuntu 14.04 上的 4.4 内核中linux-lts-xenial_4.4.0-67.88

而且我不会过多关注“SSD 存储成本降低”,因为 HDD 存储成本也会降低。您仍然可以同时使用两者来省钱。或者,您可以用 NVMe 来代替 SSD,速度更快。

虽然由错误导致的损坏率可能仍然不为零,但是即使还有错误,其损坏率也足够低,因此您不必担心是否有备份,无论您使用缓存还是 RAID,都应该有备份。

相关内容