书海网短评:
适读人群:本书适合于对Ceph有一定了解,想更进一步参与到Ceph开源项目中来,并致力于后续为Ceph、特别是RADOS组件添砖加瓦的开发者或者高级开发者阅读。此外,高级运维人员1)Ceph创始人SageWeil亲自
1)Ceph创始人SageWeil亲自作序,王璞、陈绪、何宝宏、孙振鹏等专家力荐。
(2)作者是中兴通讯Clove团队核心成员,同时也是Ceph开源社区技术委员会成员与CephMember联袂奉献。
(3)中兴通讯Clove团队在Ceph项目的Commit数量,世界NO.2,仅次于创始团队RedHat
(4)系统剖析Ceph核心组件RADOS的设计原理与具体实现,全面掌握Ceph的核心设计理念与高级应用技巧,快速提升对于Ceph的研发与运维能力。
作者简介
谢型果
中兴通讯软件工程师,6年存储研发经验,精通本地文件系统ZFS。2014年开始研究Ceph,目前是Ceph开源社区技术委员会成员兼CephMember,主要研究方向为RADOS。
严军
中兴通讯软件工程师,6年存储研发经验,先后从事NAS与分布式统一存储产品研发。2016年加入Ceph开源社区,主要研究领域为RADOS与分布式存储系统QoS,目前是Ceph开源社区的CephMember。
序1
序2
序3
前言
第1章 一生万物——RADOS导论1
1.1 RADOS概述3
1.2 存储池与PG5
1.3 对象演进与排序6
1.4 stable_mod与客户端寻址10
1.5 PG分裂与集群扩容13
1.6 总结和展望17
第2章 计算寻址之美与数据平衡之殇——CRUSH19
2.1 抽签算法20
2.2 CRUSH算法详解24
2.2.1 集群的层级化描述——clustermap25
2.2.2 数据分布策略——placementrule27
2.3 调制CRUSH33
2.3.1 编辑CRUSHmap34
2.3.2 定制CRUSH规则38
2.4 数据重平衡40
2.4.1 reweight42
2.4.2 weightset45
2.4.3 upmap47
2.4.4 balancer48
2.5 总结和展望52
第3章 集群的大脑——Monitor54
3.1 集群表OSDMap56
3.2 集群管理60
3.2.1 OSD管理60
3.2.2 存储池管理63
3.2.3 告警管理66
3.3 总结和展望66
第4章 存储的基石——OSD68
4.1 OSD概述69
4.1.1 集群管理70
4.1.2 网络通信71
4.1.3 公共服务72
4.2 OSD上电74
4.3 故障检测75
4.4 空间管理78
4.5 总结和展望82
第5章 高效本地对象存储引擎——BlueStore84
5.1 设计原理85
5.2 磁盘数据结构89
5.2.1 PG89
5.2.2 对象89
5.3 缓存机制97
5.3.1 概述97
5.3.2 实现100
5.4 磁盘空间管理103
5.4.1 概述103
5.4.2 BitmapFreelistManager106
5.4.3 BitmapAllocator107
5.5 BlueFS109
5.5.1 概述109
5.5.2 磁盘数据结构112
5.5.3 块设备116
5.6 实现原理116
5.6.1 mkfs117
5.6.2 mount117
5.6.3 read119
5.6.4 write121
5.7 使用指南126
5.7.1 部署BlueStore127
5.7.2 配置参数129
5.8 总结和展望132
第6章 移动的对象载体——PG134
6.1 基本概念与术语135
6.2 读写流程138
6.2.1 消息接收与分发145
6.2.2 do_request147
6.2.3 do_op149
6.2.4 execute_ctx155
6.3 状态迁移163
6.3.1 状态机概述164
6.3.2 创建PG167
6.3.3 Peering170
6.4 总结和展望184
第7章 在线数据恢复——Recovery和Backfill185
7.1 Recovery186
7.1.1 资源预留186
7.1.2 对象修复187
7.1.3 增量Recovery和异步Recovery191
7.2 Backfill192
7.3 总结和展望199
第8章 数据正确性与一致性的守护者——Scrub201
8.1 Scrub的指导思想202
8.2 Scrub流程详解207
8.2.1 资源预留207
8.2.2 范围界定209
8.2.3 对象扫描211
8.2.4 副本比对213
8.2.5 统计更新与自动修复215
8.3 Scrub抢占215
8.4 总结和展望218
第9章 基于dmClock的分布式流控策略219
9.1 概述220
9.2 dmClock基本原理221
9.2.1 mClock221
9.2.2 dmClock224
9.3 dmClock算法实现225
9.3.1 I/O请求入队227
9.3.2 I/O请求出队227
9.3.3 实例分析229
9.4 在Ceph中的应用实践233
9.4.1 client的界定233
9.4.2 支持带宽限制235
9.4.3 存储卷的QoS237
9.4.4 集群流控策略240
9.5 总结和展望244
第10章 纠删码原理与实践246
10.1 RAID技术概述247
10.2 RSRAID和Jerasure253
10.2.1 计算校验和254
10.2.2 数据恢复255
10.2.3 算术运算256
10.2.4 缺陷与改进261
10.2.5 Jerasure262
10.3 纠删码在Ceph中的应用264
10.3.1 术语266
10.3.2 新写268
10.3.3 读269
10.3.4 覆盖写271
10.3.5 日志274
10.3.6 Scrub275
10.4 总结和展望275
......
2018年3月,全球Cephers的盛会——CephaloconAPAC2018在北京举行。来自RedHat、SUSE、Intel、中兴通讯、中国移动等Ceph生态联盟成员的1000多位Ceph开发者、使用者和爱好者共聚一堂,探讨Ceph的现状与未来,彰显了Ceph开源社区的蓬勃生机。
时光荏苒,自Ceph由SageA.Weil在博士论文提出以来,十多年间,已经从一个默默无闻的学生作品成长为分布式存储领域最具活力与领导力的开源项目。据Ceph官方不完全统计,在世界范围内,目前已有超过100家公司(机构)研究与使用Ceph,其中不乏欧洲原子能研究组织(CERN)这样知名的全球性科研机构和Yahoo、阿里巴巴等著名的互联网公司。可见,作为分布式软件定义存储的标杆,Ceph领先的架构和设计理念已经深入人心。
Ceph的魅力源于其架构的前瞻性、可塑性和长期演进能力。事实上,在设计之初,Ceph被定位成一个纯粹的分布式文件系统,主要用于解决大型超级计算机之间如何通过联网的方式提供可扩展的文件存储服务。随着云计算、大数据和人工智能逐渐成为信息时代的主旋律,Ceph正不断拓展自身的触角,从取代Swift成为OpenStack首选存储后端进入公众视野,到完美适配以AmazonS3为代表的公有云接口,再到征战下一个没有硝烟的虚拟化(技术)高地——容器。时至今日,Ceph已然成为一个兼容块、文件、对象等各类经典/新兴存储协议的超级统一存储平台。随着Ceph的加速进化,可以预见,我们将会看到越来越多的基于Ceph构建的自定义存储应用。
为什么写这《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》
开源软件诞生的土壤决定了大部分开源软件从来就不是面向普通大众的,典型的如Linux,其无可视化界面的命令行操作方式和海量命令足以让90%的用户望而却步。Ceph作为一个出身于学院的开源作品也存在类似的缺点。此外,随着自身的不断演进和完善,Ceph已经从最初的分布式文件系统逐渐成长为一个全能的分布式统一存储平台,因此其复杂程度远远超过功能相对单一的传统存储系统。更糟的是,虽然社区有建议的编码规范,但是为了不挫伤贡献者的积极性,这些规范并未作为强制要求,因此随着贡献者数量的快速增长,Ceph代码本身也不可避免地趋于异构化。上述种种因素使得无论是使用还是开发Ceph都难度巨大,再加上语言和文化背景的差异,足以造成大量国内Ceph初级玩家难以逾越的鸿沟。
距我们创作《Ceph设计原理与实现》一书已经过去了两年。一方面,Ceph代码发生了巨大变化;另一方面,我们对Ceph的认知也有了较大提升。因此,我们两位负责研究RADOS组件的同事基于前作中的相关章节重新创作了《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》。
与前作相比,《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》更加专注于RADOS这个基础组件,而剥离了RBD、RGW、CephFS等具体存储应用和案例实战部分。这主要是基于以下考虑:
首先,RBD、RGW和CephFS与其承载的具体业务耦合度较高,例如RBD后续的重点工作是兼容iSCSI/FC传统块存储接口,而要彻底掌握RGW则必然要对以S3、Swift为代表的新兴对象存储协议簇有比较透彻的了解等,限于篇幅,很难单纯从Ceph的角度对这些组件做出比较完整和透彻的解读。
其次,由于时间仓促,加之不少章节均由不同的作者独立创作,因此前作中章节之间难免重复或者脱节,而《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》则更加注重章节之间衔接与编排的合理性。此外,由于作者数量大幅减少,《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》风格更加统一,相对而言读者可以获得更好的阅读体验。
再次,藉本次重新创作,我们进一步削弱了前作中相关章节与代码之间的耦合性,更加侧重于阐述设计理念。由于Ceph社区十分活跃,贡献者数量众多,每个版本代码都会发生翻天覆地的变化,因此,理解设计原理,以不变应万变,无疑比掌握某个特定版本的代码更为重要。
最后,需要再次强调的是,虽然《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》部分章节源自《Ceph设计原理与实现》一书,但是基本上都进行了重新创作。重复录入这些章节不是简单的查漏补缺,而是进一步提炼与升华,它们是《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》不可或缺的组成部分。事实上,与新增内容相比,重新创作这些章节花费了我们更多的时间与精力。
《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》的读者对象
《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》适合于对Ceph有一定了解,想更进一步参与到Ceph开源项目中来,并致力于后续为Ceph,特别是RADOS组件添砖加瓦的开发者或者高级开发者阅读。
此外,高级运维人员通过阅读《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》也能够了解和掌握Ceph的核心设计理念及高级应用技巧,从而在日常运维工作中更加得心应手。
与《Ceph设计原理与实现》力求如实反映源码的实现细节不同,《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》是Ceph(特别是RADOS组件)设计思想与基本理念的高度浓缩。有条件的读者可以将两《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》对照阅读,相信可以有更大收获。
《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》的主要内容
《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》主要介绍Ceph的核心——RADOS。具体编排如下:
第1章 一生万物——RADOS导论
Ceph是集传统块、文件存储以及新兴对象存储于一身的超级分布式统一存储平台。
Ceph在架构上采用存储应用与存储服务完全分离的模式,并基于RADOS对外提供高性能和可轻松扩展的存储服务。理论上,基于RADOS及其派生的librados标准库可以开发任意类型的存储应用,典型的如Ceph当前的三大核心应用:RBD、RGW和CephFS。
作为《Ceph之RADOS设计原理与实现/中兴通讯技术丛书》的开始,本章旨在为读者建立一个RAD









