作品简介

随着云计算技术的兴起和普及,云计算基石:分布式共享存储系统受到业界的重视。Ceph以其稳定、高可用、可扩展的特性,乘着开源云计算管理系统OpenStack的东风,迅速成为最热门的开源分布式存储系统。

Ceph作为一个开源的分布式存储系统,人人都可以免费获得其源代码,并能够安装部署,但是并不等于人人都能用起来,人人都能用好。用好一个开源分布式存储系统,首先要对其架构、功能原理等方面有比较好的了解,其次要有修复漏洞的能力。这些都是在采用开源分布式存储系统时所面临的挑战。

要用好Ceph,就必须深入了解和掌握Ceph源代码。Ceph源代码的实现被公认为比较复杂,阅读难度较大。阅读Ceph源代码,不但需要对C++语言以及boost库和STL库非常熟悉,还需要有分布式存储系统相关的基础知识以及对实现原理的深刻理解,最后还需要对Ceph框架和设计原理以及具体的实现细节有很好的把握。所以Ceph源代码的阅读是相当有挑战性的。

本着对Ceph源代码的浓厚兴趣以及实践工作的需要,需要对Ceph在源代码层级有比较深入的了解。当时笔者尽可能地搜索有关Ceph源代码的介绍,发现这方面的资料比较少,笔者只能自己对着Ceph源代码开始了比较艰辛的阅读之旅。在这个过程中,每一个小的进步都来之不易,理解一些实现细节,都需要对源代码进行反复地推敲和琢磨。自己在阅读的过程中,特别希望有人能够帮助理清整体代码的思路,能够解答一下关键的实现细节。本书就是秉承这样一个简单的目标,希望指引和帮助广大Ceph爱好者更好地理解和掌握Ceph源代码。

本书面向热爱Ceph的开发者,想深入了解Ceph原理的高级运维人员,想基于Ceph做优化和定制的开发人员,以及想对社区提交代码的研究人员。官网上有比较详细的介绍Ceph安装部署以及操作相关的知识,希望阅读本书的人能够自己动手实践,对Ceph进一步了解。本书基于目前最新的Ceph 10.2.1版本进行分析。

本书着重介绍Ceph的整体框架和各个实现模块的实现原理,对核心源代码进行分析,包括一些关键的实现细节。存储系统的实现都是围绕数据以及对数据的操作来展开,只要理解核心的数据结构,以及数据结构的相关操作就可以大致了解核心的实现和功能。本书的写作思路是先介绍框架和原理,其次介绍相关的数据结构,最后基于数据结构,介绍相关的操作实现流程。

最后感谢一起工作过的同事们,同他们在Ceph技术上进行交流沟通并加以验证实践,使我受益匪浅。感谢机械工业出版社的编辑吴怡对本书出版所做的努力,以及不断提出的宝贵意见。感谢我的妻子孙盛南女士在我写作期间默默的付出,对本书的写作提供了坚强的后盾。

作品目录

  • 序言
  • 前言
  • 第1章 Ceph整体架构
  • 1.1 Ceph的发展历程
  • 1.2 Ceph的设计目标
  • 1.3 Ceph基本架构图
  • 1.4 Ceph客户端接口
  • 1.5 RADOS
  • 1.6 本章小结
  • 第2章 Ceph通用模块
  • 2.1 Object
  • 2.2 Buffer
  • 2.3 线程池
  • 2.4 Finisher
  • 2.5 Throttle
  • 2.6 SafeTimer
  • 2.7 本章小结
  • 第3章 Ceph网络通信
  • 3.1 Ceph网络通信框架
  • 3.2 Simple实现
  • 3.3 本章小结
  • 第4章 CRUSH数据分布算法
  • 4.1 数据分布算法的挑战
  • 4.2 CRUSH算法的原理
  • 4.3 代码实现分析
  • 4.4 对CRUSH算法的评价
  • 4.5 本章小结
  • 第5章 Ceph客户端
  • 5.1 Librados
  • 5.2 OSDC
  • 5.3 客户写操作分析
  • 5.4 Cls
  • 5.5 Librbd
  • 5.6 本章小结
  • 第6章 Ceph的数据读写
  • 6.1 OSD模块静态类图
  • 6.2 相关数据结构
  • 6.3 读写操作的序列图
  • 6.4 读写流程代码分析
  • 6.5 本章小结
  • 第7章 本地对象存储
  • 7.1 基本概念介绍
  • 7.2 ObjectStore对象存储接口
  • 7.3 日志的实现
  • 7.4 FileStore的实现
  • 7.5 omap的实现
  • 7.6 CollectionIndex
  • 7.7 本章小结
  • 第8章 Ceph纠删码
  • 8.1 EC的基本原理
  • 8.2 EC的不同插件
  • 8.3 Ceph中EC的实现
  • 8.4 EC的源代码分析
  • 8.5 本章小结
  • 第9章 Ceph快照和克隆
  • 9.1 基本概念
  • 9.2 快照实现的核心数据结构
  • 9.3 快照的工作原理
  • 9.4 快照读写操作源代码分析
  • 9.5 本章小结
  • 第10章 Ceph Peering机制
  • 10.1 statechart状态机
  • 10.2 PG状态机
  • 10.3 PG的创建过程
  • 10.4 PG创建后状态机的状态转换
  • 10.5 Ceph的Peering过程分析
  • 10.6 本章小结
  • 第11章 Ceph数据修复
  • 11.1 资源预约
  • 11.2 数据修复状态转换图
  • 11.3 Recovery过程
  • 11.4 Backfill过程
  • 11.5 本章小结
  • 第12章 Ceph一致性检查
  • 12.1 端到端的数据校验
  • 12.2 Scrub概念介绍
  • 12.3 Scrub的调度
  • 12.4 Scrub的执行
  • 12.5 本章小结
  • 第13章 Ceph自动分层存储
  • 13.1 自动分层存储技术
  • 13.2 Ceph分层存储架构和原理
  • 13.3 Cache Tier的模式
  • 13.4 Cache Tier的源码分析
  • 13.5 本章小结
展开全部