Ceph 缓存池分层:一个可扩展且分布式的缓存
shan

在软件定义存储原则的进一步发展中,Ceph 在其最新的稳定版本中引入了一种名为缓存池分层的新机制。它带来了一个非常有趣的概念,这将有助于我们提供可扩展的分布式缓存。
不再需要 RAID!她说… (+图片?)
我经常被问及软件缓存层。事实上,Flashcache、bcache 或 fatcache 等解决方案已经变得非常流行。然而,这些系统的主要缺点是它们往往相当复杂,甚至更糟糕的是在生产环境中维护。一年前,我在 这篇文章 中试验了 Flashcache。我相信这些系统可以提供性能提升,但是管理它们在生产环境中是一场噩梦。它们给您的设置增加了太多的复杂性,而且我不认为您可以从中获得真正的收益。此外
在深入任何设计架构示例之前,我想花一些时间介绍 Ceph 的缓存池覆盖。如前所述,缓存池功能带来了一个分布式且大规模可扩展的缓存。当前有几种模式可用
- 读写池,通常称为写回:我们有一个现有的数据池,并在其“前面”放置一个快速缓存池。写入将转到缓存池并立即确认。我们根据定义的策略将它们刷新回数据池。
- 只读池,弱一致性:我们有一个现有的数据池,并添加一个或多个只读缓存池。我们在读取时将数据复制到缓存池。写入转发到原始数据池。过时的数据根据定义的策略从缓存池中过期。
与任何分层解决方案一样,缓存有几个可以调整的参数,例如缓存大小(对象数量或大小)、缓存中的数据保留时间、脏比率。
设计实现
现在您了解了大致的图景,让我们谈谈设计!这将很好地适应您的 OpenStack 环境。从 Cinder 的角度来看,我们可以想象一个指向缓存池的 tiering 类型。

有一个设计我非常喜欢,但至今还没有机会进行试验
此设置相对较新,并且依赖于 Ceph 的最新版本:Firefly。
此设计的目的是提供
- 可扩展性:所有计算和存储节点都可以水平扩展。如果您需要更多资源,只需添加一个节点,您也将获得更多空间。
- 弹性与数据可用性:就像 Ceph 中的常见池一样,缓存和擦除对象池都分布在所有存储服务器上。
- 快速存储:通过高效的缓存机制,我们能够确保良好的性能,通过在计算节点上放置 SSD,我们可以限制在超visor 级别上的 IO。在这种情况下,我们可以期望第一次数据本地命中。拥有本地缓存可以大大减少延迟。
- 廉价的密度导向型存储:虽然我们有缓存池中的热数据,但我们也有冷数据。热数据会定期从缓存移动到冷数据池。该池具有擦除类型。借助擦除码,我们可以更有效地存储所有数据,并根据我们设置的配置文件(压缩级别)节省大量空间。显然,这里我们使用大容量 SATA 磁盘。
- 管理简便:有了这个设置,我们可以保持简单。操作员会很高兴的 :).
希望您喜欢这次对 Ceph 新功能的了解。下次再见 :).