Ceph
文章平均质量分 77
程序员老董
毕业后先在腾讯做了近3年的kv存储引擎开发
之后在阿里做了3年多互动游戏的开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
说说BlueStore的磁盘分配器
摘要:Bluestore通过allocator管理磁盘空间分配,支持位图分配器(适合碎片化)和AVL树分配器(适合大段分配),以及混合两者的HybridAllocator。FreelistManager用于持久化分配信息到rocksdb,防止断电丢失数据。BlueFS因依赖关系不使用FreelistManager,而是通过日志记录空间分配。对于NVMe SSD,Bluestore可不使用FreelistManager,转而定期将分配器信息持久化到磁盘文件,并在启动时通过文件系统反向分析重建分配状态。意外断电原创 2026-04-22 14:38:51 · 452 阅读 · 0 评论 -
从rgw到rocksdb的调用链
本文分析了Ceph中RGW层到OSD层的调用流程及回调机制。RGW通过librados接口调用Objecter进行OP提交,同步(operate)和异步(aio_operate)方式的主要区别在于是否阻塞等待完成。回调通过Context机制实现,OSD层通过PrimaryLogPG和ReplicatedBackend处理请求,在不同阶段(commit/applied)触发相应回调。BlueStore最终通过Finisher队列执行回调,完成整个IO流程。文章详细梳理了从客户端请求到存储层的数据流和状态转换过原创 2026-03-03 11:04:25 · 453 阅读 · 0 评论 -
关于Ceph的一致性分析
本文对比分析了二阶段提交(2PC)和Ceph的写流程。2PC中主节点并行执行本地写日志和向从节点发送消息,等待所有从节点确认后提交或回滚,存在多轮消息交互的复杂性。Ceph采用类似流程但更简化:主节点并行执行本地写和发送写请求,只有所有节点(包括主)都成功才确认写操作,否则直接返回失败。Ceph在事务提交阶段遇到存储错误时会崩溃退出,确保数据一致性。两种方案都通过主从协作保证强一致性,但Ceph流程更简洁高效。原创 2026-02-02 10:23:02 · 379 阅读 · 0 评论 -
Ceph性能瓶颈梳理与应对方案
最近在做ceph相关的工作,很多特性都和ceph的性能相关。做了一段时间了,记录一下心得,希望帮助到有需要的朋友。主要应对的是对象存储的场景。索引分片按照三副本存储在index池,用户数据EC存储在data池。题目启的很大,但是实际上主要是分析硬盘瓶颈的解决方案。原创 2026-01-27 01:15:00 · 647 阅读 · 0 评论 -
ceph搬迁的时候压力汇总情况
摘要 本文介绍了一个用于分析Ceph集群数据迁移压力的Python脚本。该脚本通过解析ceph pg dump命令输出,统计各OSD节点在数据迁移过程中的读写压力。主要功能包括: 统计待迁移数据(backfill_wait)和正在迁移数据(backfilling)的分布情况 计算各OSD作为源节点(发送数据)和目标节点(接收数据)的PG数量 提供三种压力视图:发送压力、接收压力和总迁移压力 输出结果按压力降序排列,便于识别高负载节点 使用方式简单,只需通过管道将过滤后的PG信息传递给脚本即可。该工具弥补了原原创 2025-11-28 18:04:00 · 223 阅读 · 0 评论 -
ceph ceph-kvstore-tool compact 使用的一些坑
max_compaction_bytes默认1.5GB,手动compact涉及的文件量太多,max_compaction_bytes太小,新生成的文件 体积又太小。在手动compact过程中,有个参数max_compaction_bytes,它的默认值是25倍的单sst体积,也就是25MB*64,大概就是1.5GB。现在这里把max_compaction_bytes调整了,compact的时候新生成sst的判断条件也就改变了。在手动compact的时候,源层有100个文件,总体积5个G。原创 2025-12-12 21:15:00 · 574 阅读 · 0 评论 -
谈谈CosBench
我一直认为,任何一个组件的开发者在编写user guide的时候都应该秉持这样一个思路:最快的,最方便的先让用户能把这个组件跑起来。各种优化细节应该后面再说,而不是一上来就给用户说一大堆琐碎的知识点。原创 2024-08-23 11:47:28 · 1074 阅读 · 0 评论 -
谈谈BlueStore的BitmapAllocator
一次allocate的单元就是alloc_unit,咱们就按64KB计算。如果L2的槽位是上0xffffffffffffffff,就说明整个槽位都还没有分配过任何空间,完全是空闲的,把free_pos设为0,然后去L1查找。一个L1的children,管理L0里8个slot,L0里1个slot管理64个children,也就是说L1的一个children对应L0。一个L2的children,管理L1里8个slot,L1层1个slot管理32个children,也就是说L2的一个children对应L1。原创 2024-05-27 18:20:37 · 1240 阅读 · 0 评论 -
谈谈BlueStore
BlueStore是什么?Ceph是一个统一的分布式存储系统。BlueStore是Ceph的存储引擎。它的作用是什么?存储引擎的作用还能是什么?把Ceph上层交给他的数据安稳的存储在磁盘上,需要的时候再读出来或者删除。这就是他的作用。原创 2024-02-02 17:22:47 · 998 阅读 · 0 评论 -
Ceph文档
Ceph读写&迁移流程原创 2023-12-26 16:35:38 · 446 阅读 · 0 评论
分享