前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Intel:Crimson优化Ceph OSD引擎

Intel:Crimson优化Ceph OSD引擎

作者头像
数据存储前沿技术
发布2025-02-11 17:16:06
发布2025-02-11 17:16:06
890
举报

问题意识

Crimson项目产生的背景,及其特性 ?

Crimson项目背景

Crimson项目产生的背景主要是由于现代硬件技术的快速发展与Ceph存储系统原有架构之间的不匹配。具体来说:

  1. 1. 硬件性能提升:
    • • 内存和IO技术:内存容量和IO性能在过去几十年中显著增加。例如,最新的NVMe设备可以提供数百万的IOPS读写和TB级的磁盘容量。
    • • 网络IO:网卡设备现在能够提供超过400Gbps的速度,而几年前只有10Gbps。
    • • CPU核心数量:逻辑核心的数量随着晶体管规模的增加而迅速增长,但CPU频率和单线程性能的增长相对缓慢。
  2. 2. Ceph架构的限制:
    • • Ceph最初设计时主要部署在机械硬盘上,依赖于单核CPU性能。随着硬件的发展,Ceph的原有架构难以充分利用多核CPU和高速IO设备。
    • • 传统Ceph OSD(对象存储守护程序)依赖线程池处理不同的IO操作,跨CPU核心通信会产生大量的延迟开销。

Crimson项目的特性

Crimson项目通过重新设计Ceph OSD,旨在解决上述问题,并提供以下特性:

  1. 1. shared-nothing设计:
    • • 每个内核或CPU运行一个固定线程,并在用户空间中分配非阻塞任务。请求及其资源被分配到各个核心,可以在同一个核心中处理直到完成。
  2. 2. run-to-completion模型:
    • • 强制每个任务在一个核心中运行直到完成,减少锁和上下文切换的开销。理想情况下,性能将随着内核数量线性扩展,直到IO设备达到其极限。
  3. 3. 基于Seastar框架:
    • • Seastar是一个异步编程框架,提供one-thread-per-core的shared-nothing架构,并提供高效的非阻塞通信和用户空间任务调度。
    • • 资源默认情况下不在分片之间共享,Seastar实现了自己的内存分配器以进行无锁分配。

通过这些特性,Crimson项目旨在提高Ceph存储系统的性能和扩展性,使其能够更好地适应现代硬件环境。

参考阅读:

Crimson:高性能,高扩展的新一代 Ceph OSD

Crimson 在Ceph系统中的作用位置-OSD

图描述了Ceph分布式存储系统的架构和Crimson(一个新的OSD实现)在其中的位置。图片主要表达以下几点:

  1. 1. Ceph的分层架构:从上层应用到底层存储的完整结构。
  2. 2. 多种接口和协议:包括LIBRADOS、RADOSGW、RBD和CEPH FS,支持不同类型的存储需求。
  3. 3. RADOS协议:作为核心协议,连接上层接口和底层存储组件。
  4. 4. 核心组件:OSD(Object Storage Daemon)、Monitor和MGR(Manager)。
  5. 5. Crimson的位置:通过黄色框突出显示OSD,表明Crimson作为新的OSD实现,是Ceph系统的核心组件之一。

Crimson OSD 软件栈

与传统OSD软件栈相比,Crimson在已有基础上增加了 Seastar Framework

单核线程模型

图展示了Ceph存储系统中的单核线程模型架构。它描述了一种初始实现方式,其中每个对象存储设备(OSD)运行在单独的核心上,采用单线程模型。

主要特点包括:

  1. 1. 简化的架构:每个OSD独立运行在一个核心上,减少了复杂性。
  2. 2. 通信效率:逻辑处理不需要跨核心通信,简化了操作。
  3. 3. 性能限制:由于采用单核心设计,整体性能受到限制。
  4. 4. 资源约束:存在存储设备数量不足以匹配每个OSD的问题。
  5. 5. 扩展性挑战:OSD实例变大导致Osdmap大小增加,可能影响系统扩展性。
  6. 6. 执行模式:采用运行至完成的模型,每个任务在开始后会一直执行到结束。

这种模型虽然简单直观,但在性能和可扩展性方面存在明显局限。它可能适用于小规模或初始部署场景,但对于大规模、高性能的存储系统来说,可能需要考虑更复杂的多核心或分布式模型来克服这些限制。

Ceph IO 路径

展示了Ceph存储系统的IO数据放置层次结构,从上到下依次为:

  1. 1. 文件层
  2. 2. 对象层
  3. 3. 放置组(PG)层
  4. 4. 对象存储设备(OSD)层

专业术语解释:

  • • ino: inode number,文件的唯一标识符
  • • ono: object number,对象编号
  • • oid: object ID,对象标识符
  • • pgid: placement group ID,放置组标识符
  • • CRUSH: Controlled Replication Under Scalable Hashing,Ceph使用的数据分布算法

图清晰地展示了Ceph存储系统的数据放置机制。它说明了从文件到最终物理存储的整个数据映射过程,涵盖了对象存储、数据分布算法和故障域概念。这种设计使Ceph能够高效地管理海量数据,同时保证数据的可靠性和系统的可扩展性。理解这一机制对于深入掌握Ceph的工作原理和优化Ceph集群的性能至关重要。

多核线程模型

图描述了一个基于多核线程模型的存储系统架构,主要用于优化OSD(对象存储设备)的性能。其核心特点包括:

  1. 1. 架构设计:采用seastar分片框架,允许每个OSD使用多个线程,充分利用多核处理器的优势。
  2. 2. 性能优化:通过使用更多核心处理每个OSD,显著提升了系统性能,超越了单核设计。
  3. 3. 资源分配:每个分片共享一个物理存储设备(SSD),提高了硬件资源的利用效率。
  4. 4. 通信机制:实现了跨核心通信,确保了不同核心上运行的线程之间的协调和数据交换。
  5. 5. 模块化结构:每个分片包含Crimson Messenger、Crimson OSD/PG和Crimson Seastar三个主要组件,形成了一个完整的处理单元。
  6. 6. 可扩展性:设计支持多个分片(从shard 0到shard n),适应不同规模的存储需求。

多核消息机制

图展示了一个多核心消息传递系统的工作流程,主要用于分布式存储系统中的通信。

  1. 1. 分片架构:系统使用OSD(对象存储设备)和Msgr(消息处理器)的分片结构,以实现并行处理和负载均衡。
  2. 2. 核心分配:每个核心都有一个对应的Msgr分片,负责特定的消息处理任务。
  3. 3. Seastar框架:使用Seastar Reactor作为底层的事件驱动框架,优化了高并发IO操作。
  4. 4. 协议处理:Msgr分片0负责初始连接和协议处理,包括握手和收集信息。
  5. 5. 消息分发:所有Msgr分片都具备分发消息和事件的能力,确保高效的消息传递。
  6. 6. 套接字管理:系统使用seastar套接字进行通信,每个核心都可以接受这些套接字。
  7. 7. 客户端交互:底层架构支持与客户端或其他OSD的通信。

多核OSD工作流

图展示了一个多核OSD(对象存储守护进程)的工作流程,主要阐述了以下几个关键点:

  1. 1. 分片结构:系统被划分为多个分片(shard),包括seastore、osd和Msgr分片,每个分片对应一个处理器核心。
  2. 2. OSD组件:每个OSD分片包含多个关键组件,如本地状态、分片服务、PG到分片的映射表等,用于管理和处理存储请求。
  3. 3. 状态管理:系统通过获取OSD状态(活动或停止中)来控制工作流程。
  4. 4. 请求路由:使用PG(Placement Group)到分片的映射来确定请求应该被发送到哪个分片处理。
  5. 5. 跨分片通信:通过Submit_to机制实现不同分片之间的请求传输。
  6. 6. 负载均衡:通过将请求分散到不同的分片和核心上,实现了工作负载的均衡分配。
  7. 7. 并行处理:多核结构允许系统同时处理多个请求,提高整体性能和吞吐量。

全局数据在shards间共享机制

图描述了分布式存储系统中分片间全局数据共享的机制。其主要特点和目的如下:

  1. 1. 分片架构:系统采用多核心(分片)结构,每个核心代表一个独立的处理单元。
  2. 2. 状态同步:每个核心维护本地状态(Osd_local_state),包含OSDState、Set_stopping和Set_active等关键状态信息。
  3. 3. 异步处理:使用seastar::shared_promise和wait_for_active机制实现异步操作,提高系统效率。
  4. 4. 主核心更新模式:采用"主核心更新并通知其他核心"的策略,确保数据一致性。
  5. 5. 跨核心通信:通过"Invoke_on_others"方法实现核心之间的通信和状态同步。
  6. 6. 扩展性:图中显示的"Core n"暗示系统可以扩展到多个核心,具有良好的可扩展性。

图片描述了,当core1没找到本地信息时,会启动通信机制,通过Core0去拉取,并在自身core和远程core同步复制,保证全局数据的一致性。

Seastore 工作流

  1. 1. 图展示了Seastore存储系统的架构和工作流程,清晰地呈现了其分层设计。
  2. 2. 架构分析:
    • • 逻辑层:负责处理高级抽象,如SeaStore接口和各种管理器(OnodeManager, OmapManager, ObjectDataHandler)。
    • • 物理层:负责底层操作,包括事务管理、缓存、日志、LBA管理等。
    • • 底层支持:使用Seastar框架作为基础构建块。
  3. 3. 关键组件:
    • • TransactionManager:协调和管理事务,确保数据一致性。
    • • Cache和Journal:优化性能和保证数据持久性。
    • • LBAManager:管理逻辑块地址,是存储系统的核心组件。
    • • BackrefManager和Cleaner:负责垃圾回收和空间管理。

多核 Seastore 工作流

图示在seastore引擎中,会为每个OSD分配 Seastore shard,支持OSD读写操作调用SSD中的数据,其中每个 Seastore shard 都会将挂载的元数据信息写入到SSD superblock中,从而实现共享,提高多核间的通信效率。

值得一提的是 Seastore shard 0 作为第一个启动的引擎流,负责初始化SSD上超级块的文件系统。

总结

  1. 1. Crimson架构的多核心设计与实现:通过Seastar框架实现多线程模型,优化了Ceph OSD的性能和资源利用,解决了传统单核模式的性能瓶颈。
  2. 2. 高效的跨核心通信与异步I/O处理:详细讨论了跨核心通信需求及Seastat框架的高效异步I/O处理,确保了请求在不同OSD shard间的高效转发和数据一致性。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 王知鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题意识
    • Crimson项目背景
    • Crimson项目的特性
    • Crimson 在Ceph系统中的作用位置-OSD
    • Crimson OSD 软件栈
    • 单核线程模型
    • Ceph IO 路径
    • 多核线程模型
    • 多核消息机制
    • 多核OSD工作流
    • 全局数据在shards间共享机制
    • Seastore 工作流
    • 多核 Seastore 工作流
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档