新書推薦:
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:NT$
454.0
《
治盗之道:清代盗律的古今之辨
》
售價:NT$
556.0
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:NT$
959.0
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:NT$
1367.0
《
欲望与家庭小说
》
售價:NT$
449.0
《
惜华年(全两册)
》
售價:NT$
320.0
《
甲骨文丛书·古代中国的军事文化
》
售價:NT$
454.0
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:NT$
1112.0
|
內容簡介: |
本书作者通过多年的开发经验,总结了自己使用Ceph的实战经验,并对Ceph的框架和主要源代码进行了分析,为开发分布式系统提供了重要参考。主要内容包括:Ceph整体架构、Ceph通用模块、Ceph网络通信模块、Ceph客户端实现、CephCRUSH算法、Ceph底层对象存储机制、CephOsd、Cephmon等。
|
目錄:
|
目录序言前言第1章 Ceph整体架构11.1 Ceph的发展历程11.2 Ceph的设计目标21.3 Ceph基本架构图21.4 Ceph客户端接口31.4.1 RBD41.4.2 CephFS41.4.3 RadosGW41.5 RADOS61.5.1 Monitor61.5.2 对象存储71.5.3 pool和PG的概念71.5.4 对象寻址过程81.5.5 数据读写过程91.5.6 数据均衡101.5.7 Peering111.5.8 Recovery和Backfill111.5.9 纠删码111.5.10 快照和克隆121.5.11 Cache Tier121.5.12 Scrub131.6 本章小结13第2章 Ceph通用模块142.1 Object142.2 Buffer162.2.1 buffer::raw162.2.2 buffer::ptr172.2.3 buffer::list172.3 线程池192.3.1 线程池的启动202.3.2 工作队列202.3.3 线程池的执行函数212.3.4 超时检查222.3.5 ShardedThreadPool222.4 Finisher232.5 Throttle232.6 SafeTimer242.7 本章小结25第3章 Ceph网络通信263.1 Ceph网络通信框架263.1.1 Message273.1.2 Connection293.1.3 Dispatcher 293.1.4 Messenger293.1.5 网络连接的策略303.1.6 网络模块的使用303.2 Simple实现323.2.1 SimpleMessager333.2.2 Accepter333.2.3 DispatchQueue333.2.4 Pipe343.2.5 消息的发送353.2.6 消息的接收363.2.7 错误处理373.3 本章小结38第4章 CRUSH数据分布算法394.1 数据分布算法的挑战394.2 CRUSH算法的原理404.2.1 层级化的Cluster Map404.2.2 Placement Rules424.2.3 Bucket随机选择算法464.3 代码实现分析494.3.1 相关的数据结构494.3.2 代码实现504.4 对CRUSH算法的评价524.5 本章小结52第5章 Ceph客户端535.1 Librados535.1.1 RadosClient545.1.2 IoCtxImpl565.2 OSDC565.2.1 ObjectOperation565.2.2 op_target575.2.3 Op575.2.4 Striper585.2.5 ObjectCacher595.3 客户写操作分析595.3.1 写操作消息封装605.3.2 发送数据op_submit615.3.3 对象寻址_calc_target615.4 Cls625.4.1 模块以及方法的注册625.4.2 模块的方法执行635.4.3 举例说明645.5 Librbd655.5.1 RBD的相关的对象655.5.2 RBD元数据操作665.5.3 RBD数据操作675.5.4 RBD的快照和克隆695.6 本章小结71第6章 Ceph的数据读写726.1 OSD模块静态类图726.2 相关数据结构736.2.1 Pool746.2.2 PG756.2.3 OSDMap756.2.4 OSDOp776.2.5 Object_info_t776.2.6 ObjectState786.2.7 SnapSetContext796.2.8 ObjectContext796.2.9 Session806.3 读写操作的序列图816.4 读写流程代码分析836.4.1 阶段1:接收请求836.4.2 阶段2:OSD的op_wq处理856.4.3 阶段3:PGBackend的处理956.4.4 从副本的处理956.4.5 主副本接收到从副本的应答956.5 本章小结96第7章 本地对象存储977.1 基本概念介绍987.1.1 对象的元数据987.1.2 事务和日志的基本概念987.1.3 事务的封装997.2 ObjectStore对象存储接口1007.2.1 对外接口说明1017.2.2 ObjectStore代码示例1017.3 日志的实现1027.3.1 Jouanal对外接口1027.3.2 FileJournal1037.4 FileStore的实现1097.4.1 日志的三种类型1107.4.2 JournalingObjectStore1117.4.3 Filestore的更新操作1127.4.4 日志的应用1157.4.5 日志的同步1157.5 omap的实现1167.5.1 omap存储1177.5.2 omap的克隆1187.5.3 部分代码实现分析1197.6 CollectionIndex1207.6.1 CollectIndex接口1227.6.2 HashIndex1237.6.3 LFNIndex1247.7 本章小结124第8章 Ceph纠删码1258.1 EC的基本原理1258.2 EC的不同插件1268.2.1 RS编码1268.2.2 LRC编码1268.2.3 SHEC编码1288.2.4 EC和副本的比较1298.3 Ceph中EC的实现1298.3.1 Ceph中EC的基本概念1298.3.2 EC支持的写操作1308.3.3 EC的回滚机制1318.4 EC的源代码分析1328.4.1 EC的写操作1328.4.2 EC的write_full1338.4.3 ECBackend1338.5 本章小结133第9章 Ceph快照和克隆1349.1 基本概念1349.1.1 快照和克隆1349.1.2 RDB的快照和克隆比较1359.2 快照实现的核心数据结构1379.3 快照的工作原理1399.3.1 快照的创建1399.3.2 快照的写操作1399.3.3 快照的读操作1409.3.4 快照的回滚1419.3.5 快照的删除1419.4 快照读写操作源代码分析1419.4.1 快照的写操作1419.4.2 make_writeable函数1429.4.3 快照的读操作1459.5 本章小结146第10章 Ceph Peering机制14710.1 statechart状态机14710.1.1 状态14710.1.2 事件 14810.1.3 状态响应事件14810.1.4 状态机的定义14910.1.5 context函数15010.1.6 事件的特殊处理15010.2 PG状态机15110.3 PG的创建过程15110.3.1 PG在主OSD上的创建15110.3.2 PG在从OSD上的创建15310.3.3 PG的加载15410
|
內容試閱:
|
前言随着云计算技术的兴起和普及,云计算基石:分布式共享存储系统受到业界的重视。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技术上进行交流沟通并加以验证实践,使我受益匪浅。感谢机械工业出版社的编辑吴怡对本书出版所做的努力,以及不断提出的宝贵意见。感谢我的妻子孙盛南女士在我写作期间默默的付出,对本书的写作提供了坚强的后盾。由于Ceph源代码比较多,也比较复杂,写作的时间比较紧,加上个人的水平有限,错误和疏漏在所难免,恳请读者批评指正。有任何的意见和建议都可发送到我的邮箱changtao381@163.com,欢迎读者与我交流Ceph相关的任何问题。常涛2016年6月于北京
|
|