第 12 章 BlueStore
BlueStore 是 OSD 守护进程的后端对象存储,直接在块设备上放置对象。
重要
BlueStore 为生产环境中的 OSD 守护进程提供了高性能后端。默认情况下,BlueStore 配置为自我调整。如果您确定您的环境使用手动调优的 BlueStore 的性能更好,请联系红帽支持并共享您的配置详情,以帮助我们改进自动调整功能。红帽期待您的反馈意见并感谢您的建议。
12.1. Ceph BlueStore
以下是使用 BlueStore 的一些主要功能:
- 直接管理存储设备
- BlueStore 使用原始块设备或分区。这可避免任何抽象层的抽象层,如 XFS 等本地文件系统,这可能会限制性能或增加复杂性。
- 使用 RocksDB 进行元数据管理
- BlueStore 使用 RocksDB key-value 数据库来管理内部元数据,如从对象名称到磁盘上的块位置的映射。
- 完整数据和元数据校验和
- 默认情况下,写入 BlueStore 的所有数据和元数据都受到一个或多个校验和的保护。在不验证的情况下,不会从磁盘或返回给用户读取数据或元数据。
- 内联压缩
- 在写入磁盘之前,可以选择性地压缩数据。
- 高效的 copy-on-write 功能
- Ceph 块设备和 Ceph 文件系统快照依赖于在 BlueStore 中高效实施的写时复制克隆机制。这可以提高常规快照以及依赖克隆来实现高效的两阶段提交的纠删代码池的 I/O 效率。
- 没有大型的双写方式
- BlueStore 首先将任何新数据写入块设备上未分配空间,然后提交 RocksDB 事务来更新对象元数据以引用磁盘的新区域。只有在写入操作低于可配置的大小阈值时,它会返回 write-ahead 日志方案。
- 支持多设备
- BlueStore 可以使用多个块设备来存储不同的数据。例如:用于数据的硬盘驱动器(HDD),用于元数据的 Solid-state Drive(SSD),即 Non-volatile Memory(NVM)或 Non-volatile random-access memory(NVRAM)或 RocksDB write-ahead 日志的持久性内存。详情请参阅 Ceph BlueStore 设备。
- 高效的块设备使用
- 因为 BlueStore 不使用任何文件系统,所以它将尽可能减少需要清除存储设备缓存的需要。
- 分配元数据
-
分配元数据不再使用 RocksDB 中的独立对象,因为分配信息可以从存储在 RocksDB 中的所有 onodes 的聚合分配状态中减少。BlueStore V3 代码跳过分配时间上的 RocksDB 更新,并在
umount
过程中使用所有 OSD 分配状态执行分配器对象的完整 destage。这会使 IOPS 增加 25%,并在小的随机写工作负载中降低延迟;但是,它延长了恢复时间,通常要花费几分钟时间,并在失败的情况下不会调用 umount,因为您需要迭代所有 onodes 来重新创建分配元数据。 - 缓存期限 binning
- Red Hat Ceph Storage 将不同缓存中的项目与"age bins"相关联,它提供所有缓存项目的相对年龄。