新的 Nautilus 版本:RADOS 亮点
BlueStore ¶
Nautilus 版本包含大量 RADOS 的新功能和改进。首先,BlueStore 现在变得更加出色!如果您一直想知道 BlueStore 如何在您的设备上使用空间,那么现在无需再疑惑。借助 Nautilus,BlueStore 空间利用率信息更加细致和准确,分别统计了数据、元数据和 omap 使用的空间。您还可以按池级别查看使用情况细分,以便轻松查看重要信息。但是,需要注意的是,在混合集群中,使用 pre-nautilus 和 nautilus OSD 的集群,此统计可能不完全准确。您还可以使用“ceph df”查看按设备类划分的可用原始空间。
调整 BlueStore 比以往任何时候都更容易——启用 bluestore_cache_autotune 选项后,BlueStore 使用一种尽力而为的算法,通过 osd_memory_target 配置选项,将 OSD 内存使用量控制在指定的目标大小之下。通常,BlueStore 现在也更智能地管理缓存,确保优先缓存重要内容。
Nautilus 还引入了一种新的“bitmap”分配器,这是一种磁盘分配器,在吞吐量和内存利用率方面都优于其前身。Igor Fedotov 已经做了一个详细比较,对比了新的“bitmap”和旧的分配器。
恢复、擦除和其他后台活动 ¶
Nautilus 版本中进行了很多工作,以使 Ceph 对故障具有弹性,并使恢复无缝。我们重新关注了恢复和回填期间 PG 的优先级顺序,以确保在可行的情况下,我们能够快速可靠地使集群恢复到活动状态。我们添加了新的配置选项,以手动触发池级别的强制恢复/回填。要强制恢复/回填,只需使用
ceph osd pool force-recovery/backfill {pool-name}
或者,要取消它,只需说
ceph osd pool cancel-force-recovery/backfill {pool-name}
回填机制变得更智能,如果完成所需的空间量不可用,则会推迟回填。
从历史上看,恢复和回填会消耗无限量的内存来存储 PG 日志,这一直是一个问题。现在,通过实施 PG 日志长度的硬性限制,解决了此问题,从而确保我们在这些操作期间限制内存消耗量。
Nautilus 版本中提供了一个改进的异步恢复版本。与 Mimic 版本中不同,Mimic 版本将 PG 日志长度的差异视为恢复成本,此版本还会考虑丢失的对象,以选择用于异步恢复的 OSD。这通常是选择 OSD 以推迟恢复的一种更好的方法。类似于限制恢复和擦除,我们引入了一个名为 osd_delete_sleep 的配置选项,允许用户限制放置组上的删除操作。
擦除和修复现在也有新的选项,可以针对每个池进行设置。此外,复制池的擦除“自动修复”现在已经实现,这意味着在极少数情况下,集群能够自行修复,而无需人工干预。
其他改进 ¶
现在,Nautilus 版本中还有其他一些令人兴奋的功能。其中一个有前景的新实验性功能是一种新的纠删码插件,称为Coupled-Layer “Clay” 纠删码,它有可能大大提高恢复性能。我们渴望听取用户的使用体验!
NUMA 节点监控和配置已通过添加“ceph osd numa-status”命令简化,该命令报告 NUMA 节点的 OSD 网络和存储,以及新的“osd_numa_node”配置设置,以便轻松将 OSD 绑定到 NUMA 节点。
另一个很棒的补充是管理器中的进度模块,它提供了跟踪恢复等 Rados 操作进度的能力,方法是使用 ceph status 命令。
概述 ¶
可用性和性能是 Nautilus 版本关注的重点,我们相信 RADOS 现在比以往任何时候都更加健壮。在每个版本中,我们都尝试在 RADOS 中加入各种改进,并且我们非常期待听到用户对 Nautilus 的看法。非常感谢所有做出贡献者,特别感谢 Myna V,她对 Clay 纠删码插件的贡献是学术研究成为开源软件的一部分的一个很好的例子。