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 内核的 Debian 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