Ceph源码分析

Ceph源码分析

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

一本书总结了作者使用Ceph的实战经验,并对Ceph的框架和主要源代码进行了分析!

内容简介

众所周知,在过去十年里,IT技术领域中巨大的创新项目很多来自于开源世界,从垄断大数据的Hadoop、Spark,到风靡全球的Docker,都证明了开源力量推动了新技术的产生与发展。而再往以前看十年,从Unix到Linux,从Oracle到MySQL/PostgreSQL,从VMWare到KVM,开源世界从传统商业技术继承并给用户带来更多的选择。处于开源社区一线的我欣喜地看到,在IT基础设施领域,越来越多的创业公司从创立之初就以开源为基石,而越来越多的商业技术公司也受益于开源,大量的复杂商业软件基于开源分布式数据库、缓存存储、中间件构建。相信开源的Ceph也将成为IT创新的驱动力。正如Sage Weil在2016 Ceph Next会议上所说,Ceph将成为存储里的Linux!

作者简介

作者常涛,靠前较早一批接触Ceph的先行者,具有多年分布式存储开发经验,曾在雅虎北京研发中心工作,后到京东、华为任职,目前在ZettaKit创业公司从事分布式存储、云计算相关技术研发。

章节目录

版权信息

序言

前言

第1章 Ceph整体架构

1.1 Ceph的发展历程

1.2 Ceph的设计目标

1.3 Ceph基本架构图

1.4 Ceph客户端接口

1.4.1 RBD

1.4.2 CephFS

1.4.3 RadosGW

1.5 RADOS

1.5.1 Monitor

1.5.2 对象存储

1.5.3 pool和PG的概念

1.5.4 对象寻址过程

1.5.5 数据读写过程

1.5.6 数据均衡

1.5.7 Peering

1.5.8 Recovery和Backfill

1.5.9 纠删码

1.5.10 快照和克隆

1.5.11 Cache Tier

1.5.12 Scrub

1.6 本章小结

第2章 Ceph通用模块

2.1 Object

2.2 Buffer

2.2.1 buffer::raw

2.2.2 buffer::ptr

2.2.3 buffer::list

2.3 线程池

2.3.1 线程池的启动

2.3.2 工作队列

2.3.3 线程池的执行函数

2.3.4 超时检查

2.3.5 ShardedThreadPool

2.4 Finisher

2.5 Throttle

2.6 SafeTimer

2.7 本章小结

第3章 Ceph网络通信

3.1 Ceph网络通信框架

3.1.1 Message

3.1.2 Connection

3.1.3 Dispatcher

3.1.4 Messenger

3.1.5 网络连接的策略

3.1.6 网络模块的使用

3.2 Simple实现

3.2.1 SimpleMessager

3.2.2 Accepter

3.2.3 DispatchQueue

3.2.4 Pipe

3.2.5 消息的发送

3.2.6 消息的接收

3.2.7 错误处理

3.3 本章小结

第4章 CRUSH数据分布算法

4.1 数据分布算法的挑战

4.2 CRUSH算法的原理

4.2.1 层级化的Cluster Map

4.2.2 Placement Rules

4.2.3 Bucket随机选择算法

4.3 代码实现分析

4.3.1 相关的数据结构

4.3.2 代码实现

4.4 对CRUSH算法的评价

4.5 本章小结

第5章 Ceph客户端

5.1 Librados

5.1.1 RadosClient

5.1.2 IoCtxImpl

5.2 OSDC

5.2.1 ObjectOperation

5.2.2 op_target

5.2.3 Op

5.2.4 Striper

5.2.5 ObjectCacher

5.3 客户写操作分析

5.3.1 写操作消息封装

5.3.2 发送数据op_submit

5.3.3 对象寻址_calc_target

5.4 Cls

5.4.1 模块以及方法的注册

5.4.2 模块的方法执行

5.4.3 举例说明

5.5 Librbd

5.5.1 RBD的相关的对象

5.5.2 RBD元数据操作

5.5.3 RBD数据操作

5.5.4 RBD的快照和克隆

5.6 本章小结

第6章 Ceph的数据读写

6.1 OSD模块静态类图

6.2 相关数据结构

6.2.1 Pool

6.2.2 PG

6.2.3 OSDMap

6.2.4 OSDOp

6.2.5 Object_info_t

6.2.6 ObjectState

6.2.7 SnapSetContext

6.2.8 ObjectContext

6.2.9 Session

6.3 读写操作的序列图

6.4 读写流程代码分析

6.4.1 阶段1:接收请求

6.4.2 阶段2:OSD的op_wq处理

6.4.3 阶段3:PGBackend的处理

6.4.4 从副本的处理

6.4.5 主副本接收到从副本的应答

6.5 本章小结

第7章 本地对象存储

7.1 基本概念介绍

7.1.1 对象的元数据

7.1.2 事务和日志的基本概念

7.1.3 事务的封装

7.2 ObjectStore对象存储接口

7.2.1 对外接口说明

7.2.2 ObjectStore代码示例

7.3 日志的实现

7.3.1 Jouanal对外接口

7.3.2 FileJournal

7.4 FileStore的实现

7.4.1 日志的三种类型

7.4.2 JournalingObjectStore

7.4.3 Filestore的更新操作

7.4.4 日志的应用

7.4.5 日志的同步

7.5 omap的实现

7.5.1 omap存储

7.5.2 omap的克隆

7.5.3 部分代码实现分析

7.6 CollectionIndex

7.6.1 CollectIndex接口

7.6.2 HashIndex

7.6.3 LFNIndex

7.7 本章小结

第8章 Ceph纠删码

8.1 EC的基本原理

8.2 EC的不同插件

8.2.1 RS编码

8.2.2 LRC编码

8.2.3 SHEC编码

8.2.4 EC和副本的比较

8.3 Ceph中EC的实现

8.3.1 Ceph中EC的基本概念

8.3.2 EC支持的写操作

8.3.3 EC的回滚机制

8.4 EC的源代码分析

8.4.1 EC的写操作

8.4.2 EC的write_full

8.4.3 ECBackend

8.5 本章小结

第9章 Ceph快照和克隆

9.1 基本概念

9.1.1 快照和克隆

9.1.2 RBD的快照和克隆比较

9.2 快照实现的核心数据结构

9.3 快照的工作原理

9.3.1 快照的创建

9.3.2 快照的写操作

9.3.3 快照的读操作

9.3.4 快照的回滚

9.3.5 快照的删除

9.4 快照读写操作源代码分析

9.4.1 快照的写操作

9.4.2 make_writeable函数

9.4.3 快照的读操作

9.5 本章小结

第10章 Ceph Peering机制

10.1 statechart状态机

10.1.1 状态

10.1.2 事件

10.1.3 状态响应事件

10.1.4 状态机的定义

10.1.5 context函数

10.1.6 事件的特殊处理

10.2 PG状态机

10.3 PG的创建过程

10.3.1 PG在主OSD上的创建

10.3.2 PG在从OSD上的创建

10.3.3 PG的加载

10.4 PG创建后状态机的状态转换

10.5 Ceph的Peering过程分析

10.5.1 基本概念

10.5.2 PG日志

10.5.3 Peering的状态转换图

10.5.4 pg_info数据结构

10.5.5 GetInfo

10.5.6 GetLog

10.5.7 GetMissing

10.5.8 Active操作

10.5.9 副本端的状态转移

10.5.10 状态机异常处理

10.6 本章小结

第11章 Ceph数据修复

11.1 资源预约

11.2 数据修复状态转换图

11.3 Recovery过程

11.3.1 触发修复

11.3.2 ReplicatedPG

11.3.3 pgbackend

11.4 Backfill过程

11.4.1 相关数据结构

11.4.2 Backfill的具体实现

11.5 本章小结

第12章 Ceph一致性检查

12.1 端到端的数据校验

12.2 Scrub概念介绍

12.3 Scrub的调度

12.3.1 相关数据结构

12.3.2 Scrub的调度实现

12.4 Scrub的执行

12.4.1 相关数据结构

12.4.2 Scrub的控制流程

12.4.3 构建ScrubMap

12.4.4 从副本处理

12.4.5 副本对比

12.4.6 结束Scrub过程

12.5 本章小结

第13章 Ceph自动分层存储

13.1 自动分层存储技术

13.2 Ceph分层存储架构和原理

13.3 Cache Tier的模式

13.4 Cache Tier的源码分析

13.4.1 pool中的Cache Tier数据结构

13.4.2 HitSet

13.4.3 Cache Tier的初始化

13.4.4 读写路径上的Cache Tier处理

13.4.5 cache的flush和evict操作

13.5 本章小结

Ceph源码分析是2016年由机械工业出版社华章分社出版,作者常涛。

得书感谢您对《Ceph源码分析》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Spring源码深度解析(第2版) 电子书
一本实践与理论并重、广度与深度兼顾的Spring源码开发指南。
Flink核心技术:源码剖析与特性开发 电子书
本书从设计思想和特性开发两个视角,对Flink框架进行介绍。
读源码学架构:系统架构师思维训练之道 电子书
本书以软件架构师的能力培养为切入点,结合作者在过去10多年的工作中积累的经验,介绍了一名合格甚至优秀的架构师应该必备的能力。本书分为4篇,总计9章,基本涵盖了大部分生产环境下的系统设计原则以及方案。本书主要内容有基本设计原则、轻松应对后续的变化、优雅地暴露内部属性、复杂逻辑的拆解与协同、复用的人性化设计、屏蔽外部依赖的防火墙设计、事件的分散性与协议化、基于Reactor模式的系统优化封装、代码边界
颜分析 电子书
日本脸型分析协会代表理事、专业个人形象顾问冈田实子的时尚穿搭指导书。
信息分析 电子书
本书按照基础知识、基本流程、分析方法、应用领域和辅助工具的编写思路,共7章,即第1章信息分析基础、第2章信息分析流程、第3章信息分析定性方法、第4章信息分析半定量方法、第5章信息分析定量方法、第6章信息分析应用和第7章计算机辅助信息分析,全面、系统地介绍了信息分析的核心内容。各章根据教学和学习需要安排了导入案例、导入问题、关键知识点、本章小结和本章习题,并补充了辅助阅读材料。本书适合作为高等院校信