bcache 和/或 dm-cache 是否被认为在 2016 年稳定用于生产?

sli*_*gor 5 storage lvm ssd disk-cache

我想在 Debian Jessie 生产服务器上使用 linux SSD 缓存(dm-cache 或 bcache)。(内核 3.16)

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

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

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


2018 年 2 月在持续集成服务器上使用 bcache 超过 1 年后跟进(jenkins 实例运行大量密集作业!)

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

硬件:

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

软件:

  • 2016 年 9 月配置,从未重启
  • 带有 4.6 内核的 D​​ebian Jessie(来自上次更新时的官方 jessie-backport)
  • 软件 MD 突袭 10
    • 1 个 raid10 设备用于 2 个 SSD
    • 1 个用于 2 个 HDD 的 raid10 设备
  • 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 writecache 的大小通常在 512MB 和 1GB 之间)

结论

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

eww*_*ite -1

我认为 SSD 存储成本的降低以及可用选项的容量和范围的增加为您在需要时使用固态存储并放弃选择性(且可能存在错误)缓存的想法提供了一个很好的案例。

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