描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111613893
编辑推荐
(1)Ceph 创始人 Sage Weil 亲自作序,王璞、陈绪、何宝宏、孙振鹏等专家力荐。
(2)作者是中兴通讯Clove团队核心成员,同时也是Ceph 开源社区技术委员会成员与 Ceph Member联袂奉献。
(3)中兴通讯Clove团队在Ceph项目的Commit数量,中国NO.1,世界NO.2,仅次于创始团队Red Hat
(4)系统剖析 Ceph 核心组件 RADOS 的设计原理与具体实现,全面掌握 Ceph 的核心设计理念与高级应用技巧,快速提升对于 Ceph 的研发与运维能力。
(2)作者是中兴通讯Clove团队核心成员,同时也是Ceph 开源社区技术委员会成员与 Ceph Member联袂奉献。
(3)中兴通讯Clove团队在Ceph项目的Commit数量,中国NO.1,世界NO.2,仅次于创始团队Red Hat
(4)系统剖析 Ceph 核心组件 RADOS 的设计原理与具体实现,全面掌握 Ceph 的核心设计理念与高级应用技巧,快速提升对于 Ceph 的研发与运维能力。
内容简介
内容简介
本书是继《Ceph设计原理与实现》之后,中兴通讯 Clove 团队在 Ceph 领域的又一全新力作。Clove团队是Ceph 开源社区国内*负盛名的组织贡献者之一,自 Jewel 版起,连续 4 个版本代码贡献量位列世界前三。目前该团队拥有社区技术委员会成员一名,Ceph Member 三名。鉴于 Clove 团队在 Ceph 不断发展与壮大过程中做出的杰出贡献, 创始人 Sage Weil 先生再次为本书亲自作序。
存储是云计算的基石,Ceph 是开源分布式软件定义存储解决方案中的领头羊。本书以大量存储技术的基本原理(例如分布式一致性、文件系统等等)为主线,系统剖析了 Ceph 核心组件 RADOS 的设计原理与具体实现。通过阅读本书可以掌握 Ceph 的核心设计理念与高级应用技巧,从而快速提升自身对于 Ceph 的研发与运维能力。
本书核心内容包括:
(1)Ceph 架构及基本设计理论解析
(2)CRUSH 算法详解与工程应用
(3)高性能本地对象存储引擎——BlueStore
(4)分布式一致性与在线数据恢复
(5)分布式 QoS 与Ceph中的流控策略
(6)纠删码原理及其在 Ceph 中的应用实践
本书是继《Ceph设计原理与实现》之后,中兴通讯 Clove 团队在 Ceph 领域的又一全新力作。Clove团队是Ceph 开源社区国内*负盛名的组织贡献者之一,自 Jewel 版起,连续 4 个版本代码贡献量位列世界前三。目前该团队拥有社区技术委员会成员一名,Ceph Member 三名。鉴于 Clove 团队在 Ceph 不断发展与壮大过程中做出的杰出贡献, 创始人 Sage Weil 先生再次为本书亲自作序。
存储是云计算的基石,Ceph 是开源分布式软件定义存储解决方案中的领头羊。本书以大量存储技术的基本原理(例如分布式一致性、文件系统等等)为主线,系统剖析了 Ceph 核心组件 RADOS 的设计原理与具体实现。通过阅读本书可以掌握 Ceph 的核心设计理念与高级应用技巧,从而快速提升自身对于 Ceph 的研发与运维能力。
本书核心内容包括:
(1)Ceph 架构及基本设计理论解析
(2)CRUSH 算法详解与工程应用
(3)高性能本地对象存储引擎——BlueStore
(4)分布式一致性与在线数据恢复
(5)分布式 QoS 与Ceph中的流控策略
(6)纠删码原理及其在 Ceph 中的应用实践
目 录
序1
序2
序3
前言
第1章 一生万物——RADOS导论 1
1.1 RADOS概述 3
1.2 存储池与PG 5
1.3 对象演进与排序 6
1.4 stable_mod与客户端寻址 10
1.5 PG分裂与集群扩容 13
1.6 总结和展望 17
第2章 计算寻址之美与数据平衡之殇——CRUSH 19
2.1 抽签算法 20
2.2 CRUSH算法详解 24
2.2.1 集群的层级化描述——cluster map 25
2.2.2 数据分布策略——placement rule 27
2.3 调制CRUSH 33
2.3.1 编辑CRUSH map 34
2.3.2 定制CRUSH规则 38
2.4 数据重平衡 40
2.4.1 reweight 42
2.4.2 weight-set 45
2.4.3 upmap 47
2.4.4 balancer 48
2.5 总结和展望 52
第3章 集群的大脑——Monitor 54
3.1 集群表OSDMap 56
3.2 集群管理 60
3.2.1 OSD管理 60
3.2.2 存储池管理 63
3.2.3 告警管理 66
3.3 总结和展望 66
第4章 存储的基石——OSD 68
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章 高效本地对象存储引擎——BlueStore 84
5.1 设计原理 85
5.2 磁盘数据结构 89
5.2.1 PG 89
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 BitmapFreelistManager 106
5.4.3 BitmapAllocator 107
5.5 BlueFS 109
5.5.1 概述 109
5.5.2 磁盘数据结构 112
5.5.3 块设备 116
5.6 实现原理 116
5.6.1 mkfs 117
5.6.2 mount 117
5.6.3 read 119
5.6.4 write 121
5.7 使用指南 126
5.7.1 部署BlueStore 127
5.7.2 配置参数 129
5.8 总结和展望 132
第6章 移动的对象载体——PG 134
6.1 基本概念与术语 135
6.2 读写流程 138
6.2.1 消息接收与分发 145
6.2.2 do_request 147
6.2.3 do_op 149
6.2.4 execute_ctx 155
6.3 状态迁移 163
6.3.1 状态机概述 164
6.3.2 创建PG 167
6.3.3 Peering 170
6.4 总结和展望 184
第7章 在线数据恢复——Recovery和Backfill 185
7.1 Recovery 186
7.1.1 资源预留 186
7.1.2 对象修复 187
7.1.3 增量Recovery和异步Recovery 191
7.2 Backfill 192
7.3 总结和展望 199
第8章 数据正确性与一致性的守护者——Scrub 201
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 mClock 221
9.2.2 dmClock 224
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 存储卷的QoS 237
9.4.4 集群流控策略 240
9.5 总结和展望 244
第10章 纠删码原理与实践 246
10.1 RAID技术概述 247
10.2 RS-RAID和Jerasure 253
10.2.1 计算校验和 254
10.2.2 数据恢复 255
10.2.3 算术运算 256
10.2.4 缺陷与改进 261
10.2.5 Jerasure 262
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 Scrub 275
10.4 总结和展望 275
序2
序3
前言
第1章 一生万物——RADOS导论 1
1.1 RADOS概述 3
1.2 存储池与PG 5
1.3 对象演进与排序 6
1.4 stable_mod与客户端寻址 10
1.5 PG分裂与集群扩容 13
1.6 总结和展望 17
第2章 计算寻址之美与数据平衡之殇——CRUSH 19
2.1 抽签算法 20
2.2 CRUSH算法详解 24
2.2.1 集群的层级化描述——cluster map 25
2.2.2 数据分布策略——placement rule 27
2.3 调制CRUSH 33
2.3.1 编辑CRUSH map 34
2.3.2 定制CRUSH规则 38
2.4 数据重平衡 40
2.4.1 reweight 42
2.4.2 weight-set 45
2.4.3 upmap 47
2.4.4 balancer 48
2.5 总结和展望 52
第3章 集群的大脑——Monitor 54
3.1 集群表OSDMap 56
3.2 集群管理 60
3.2.1 OSD管理 60
3.2.2 存储池管理 63
3.2.3 告警管理 66
3.3 总结和展望 66
第4章 存储的基石——OSD 68
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章 高效本地对象存储引擎——BlueStore 84
5.1 设计原理 85
5.2 磁盘数据结构 89
5.2.1 PG 89
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 BitmapFreelistManager 106
5.4.3 BitmapAllocator 107
5.5 BlueFS 109
5.5.1 概述 109
5.5.2 磁盘数据结构 112
5.5.3 块设备 116
5.6 实现原理 116
5.6.1 mkfs 117
5.6.2 mount 117
5.6.3 read 119
5.6.4 write 121
5.7 使用指南 126
5.7.1 部署BlueStore 127
5.7.2 配置参数 129
5.8 总结和展望 132
第6章 移动的对象载体——PG 134
6.1 基本概念与术语 135
6.2 读写流程 138
6.2.1 消息接收与分发 145
6.2.2 do_request 147
6.2.3 do_op 149
6.2.4 execute_ctx 155
6.3 状态迁移 163
6.3.1 状态机概述 164
6.3.2 创建PG 167
6.3.3 Peering 170
6.4 总结和展望 184
第7章 在线数据恢复——Recovery和Backfill 185
7.1 Recovery 186
7.1.1 资源预留 186
7.1.2 对象修复 187
7.1.3 增量Recovery和异步Recovery 191
7.2 Backfill 192
7.3 总结和展望 199
第8章 数据正确性与一致性的守护者——Scrub 201
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 mClock 221
9.2.2 dmClock 224
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 存储卷的QoS 237
9.4.4 集群流控策略 240
9.5 总结和展望 244
第10章 纠删码原理与实践 246
10.1 RAID技术概述 247
10.2 RS-RAID和Jerasure 253
10.2.1 计算校验和 254
10.2.2 数据恢复 255
10.2.3 算术运算 256
10.2.4 缺陷与改进 261
10.2.5 Jerasure 262
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 Scrub 275
10.4 总结和展望 275
前 言
2018年3月,全球 Cephers 的盛会——Cephalocon APAC 2018 在北京举行。来自RedHat、SUSE、Intel、中兴通讯、中国移动等 Ceph 生态联盟成员的 1000 多位 Ceph 开发者、使用者和爱好者共聚一堂,探讨 Ceph 的现状与未来,彰显了 Ceph 开源社区的蓬勃生机。
时光荏苒,自Ceph由Sage A. Weil在博士论文提出以来,十多年间,已经从一个默默无闻的学生作品成长为分布式存储领域活力与领导力的开源项目。据 Ceph 官方不完全统计,在世界范围内,目前已有超过 100 家公司(机构)研究与使用 Ceph,其中不乏欧洲原子能研究组织(CERN)这样知名的全球性科研机构和 Yahoo、阿里巴巴等著名的互联网公司。可见,作为分布式软件定义存储的标杆,Ceph 领先的架构和设计理念已经深入人心。
Ceph 的魅力源于其架构的前瞻性、可塑性和长期演进能力。事实上,在设计之初,Ceph 被定位成一个纯粹的分布式文件系统,主要用于解决大型超级计算机之间如何通过联网的方式提供可扩展的文件存储服务。随着云计算、大数据和人工智能逐渐成为信息时代的主旋律,Ceph 正不断拓展自身的触角,从取代 Swift 成为 OpenStack 存储后端进入公众视野,到完美适配以 Amazon S3 为代表的公有云接口,再到征战下一个没有硝烟的虚拟化(技术)高地——容器。时至今日,Ceph 已然成为一个兼容块、文件、对象等各类经典/新兴存储协议的超级统一存储平台。随着 Ceph 的加速进化,可以预见,我们将会看到越来越多的基于 Ceph 构建的自定义存储应用。
为什么写这本书
开源软件诞生的土壤决定了大部分开源软件从来就不是面向普通大众的,典型的如 Linux,其无可视化界面的命令行操作方式和海量命令足以让90%的用户望而却步。Ceph 作为一个出身于学院的开源作品也存在类似的缺点。此外,随着自身的不断演进和完善,Ceph 已经从初的分布式文件系统逐渐成长为一个全能的分布式统一存储平台,因此其复杂程度远远超过功能相对单一的传统存储系统。更糟的是,虽然社区有建议的编码规范,但是为了不挫伤贡献者的积极性,这些规范并未作为强制要求,因此随着贡献者数量的快速增长,Ceph 代码本身也不可避免地趋于异构化。上述种种因素使得无论是使用还是开发 Ceph 都难度巨大,再加上语言和文化背景的差异,足以造成大量国内 Ceph 初级玩家难以逾越的鸿沟。
距我们创作《Ceph 设计原理与实现》一书已经过去了两年。一方面,Ceph 代码发生了巨大变化;另一方面,我们对 Ceph 的认知也有了较大提升。因此,我们两位负责研究 RADOS 组件的同事基于前作中的相关章节重新创作了本书。
与前作相比,本书更加专注于 RADOS 这个基础组件,而剥离了RBD、RGW、CephFS 等具体存储应用和案例实战部分。这主要是基于以下考虑:
首先,RBD、RGW 和 CephFS与其承载的具体业务耦合度较高,例如 RBD 后续的重点工作是兼容 iSCSI/FC 传统块存储接口,而要彻底掌握 RGW 则必然要对以 S3、Swift 为代表的新兴对象存储协议簇有比较透彻的了解等,限于篇幅,很难单纯从 Ceph 的角度对这些组件做出比较完整和透彻的解读。
其次,由于时间仓促,加之不少章节均由不同的作者独立创作,因此前作中章节之间难免重复或者脱节,而本书则更加注重章节之间衔接与编排的合理性。此外,由于作者数量大幅减少,本书风格更加统一,相对而言读者可以获得更好的阅读体验。
再次,藉本次重新创作,我们进一步削弱了前作中相关章节与代码之间的耦合性,更加侧重于阐述设计理念。由于 Ceph 社区十分活跃,贡献者数量众多,每个版本代码都会发生翻天覆地的变化,因此,理解设计原理,以不变应万变,无疑比掌握某个特定版本的代码更为重要。
后,需要再次强调的是,虽然本书部分章节源自《Ceph 设计原理与实现》一书,但是基本上都进行了重新创作。重复录入这些章节不是简单的查漏补缺,而是进一步提炼与升华,它们是本书不可或缺的组成部分。事实上,与新增内容相比,重新创作这些章节花费了我们更多的时间与精力。
本书的读者对象
本书适合于对 Ceph 有一定了解,想更进一步参与到 Ceph 开源项目中来,并致力于后续为 Ceph,特别是 RADOS 组件添砖加瓦的开发者或者高级开发者阅读。
此外,高级运维人员通过阅读本书也能够了解和掌握 Ceph 的核心设计理念及高级应用技巧,从而在日常运维工作中更加得心应手。
与《Ceph设计原理与实现》力求如实反映源码的实现细节不同,本书是 Ceph(特别是 RADOS 组件)设计思想与基本理念的高度浓缩。有条件的读者可以将两本书对照阅读,相信可以有更大收获。
本书的主要内容
本书主要介绍 Ceph 的核心——RADOS。具体编排如下:
第1章 一生万物——RADOS 导论
Ceph 是集传统块、文件存储以及新兴对象存储于一身的超级分布式统一存储平台。
Ceph 在架构上采用存储应用与存储服务完全分离的模式,并基于 RADOS 对外提供高性能和可轻松扩展的存储服务。理论上,基于 RADOS 及其派生的 librados 标准库可以开发任意类型的存储应用,典型的如 Ceph 当前的三大核心应用:RBD、RGW和 CephFS。
作为全书的开始,本章旨在为读者建立一个 RAD
时光荏苒,自Ceph由Sage A. Weil在博士论文提出以来,十多年间,已经从一个默默无闻的学生作品成长为分布式存储领域活力与领导力的开源项目。据 Ceph 官方不完全统计,在世界范围内,目前已有超过 100 家公司(机构)研究与使用 Ceph,其中不乏欧洲原子能研究组织(CERN)这样知名的全球性科研机构和 Yahoo、阿里巴巴等著名的互联网公司。可见,作为分布式软件定义存储的标杆,Ceph 领先的架构和设计理念已经深入人心。
Ceph 的魅力源于其架构的前瞻性、可塑性和长期演进能力。事实上,在设计之初,Ceph 被定位成一个纯粹的分布式文件系统,主要用于解决大型超级计算机之间如何通过联网的方式提供可扩展的文件存储服务。随着云计算、大数据和人工智能逐渐成为信息时代的主旋律,Ceph 正不断拓展自身的触角,从取代 Swift 成为 OpenStack 存储后端进入公众视野,到完美适配以 Amazon S3 为代表的公有云接口,再到征战下一个没有硝烟的虚拟化(技术)高地——容器。时至今日,Ceph 已然成为一个兼容块、文件、对象等各类经典/新兴存储协议的超级统一存储平台。随着 Ceph 的加速进化,可以预见,我们将会看到越来越多的基于 Ceph 构建的自定义存储应用。
为什么写这本书
开源软件诞生的土壤决定了大部分开源软件从来就不是面向普通大众的,典型的如 Linux,其无可视化界面的命令行操作方式和海量命令足以让90%的用户望而却步。Ceph 作为一个出身于学院的开源作品也存在类似的缺点。此外,随着自身的不断演进和完善,Ceph 已经从初的分布式文件系统逐渐成长为一个全能的分布式统一存储平台,因此其复杂程度远远超过功能相对单一的传统存储系统。更糟的是,虽然社区有建议的编码规范,但是为了不挫伤贡献者的积极性,这些规范并未作为强制要求,因此随着贡献者数量的快速增长,Ceph 代码本身也不可避免地趋于异构化。上述种种因素使得无论是使用还是开发 Ceph 都难度巨大,再加上语言和文化背景的差异,足以造成大量国内 Ceph 初级玩家难以逾越的鸿沟。
距我们创作《Ceph 设计原理与实现》一书已经过去了两年。一方面,Ceph 代码发生了巨大变化;另一方面,我们对 Ceph 的认知也有了较大提升。因此,我们两位负责研究 RADOS 组件的同事基于前作中的相关章节重新创作了本书。
与前作相比,本书更加专注于 RADOS 这个基础组件,而剥离了RBD、RGW、CephFS 等具体存储应用和案例实战部分。这主要是基于以下考虑:
首先,RBD、RGW 和 CephFS与其承载的具体业务耦合度较高,例如 RBD 后续的重点工作是兼容 iSCSI/FC 传统块存储接口,而要彻底掌握 RGW 则必然要对以 S3、Swift 为代表的新兴对象存储协议簇有比较透彻的了解等,限于篇幅,很难单纯从 Ceph 的角度对这些组件做出比较完整和透彻的解读。
其次,由于时间仓促,加之不少章节均由不同的作者独立创作,因此前作中章节之间难免重复或者脱节,而本书则更加注重章节之间衔接与编排的合理性。此外,由于作者数量大幅减少,本书风格更加统一,相对而言读者可以获得更好的阅读体验。
再次,藉本次重新创作,我们进一步削弱了前作中相关章节与代码之间的耦合性,更加侧重于阐述设计理念。由于 Ceph 社区十分活跃,贡献者数量众多,每个版本代码都会发生翻天覆地的变化,因此,理解设计原理,以不变应万变,无疑比掌握某个特定版本的代码更为重要。
后,需要再次强调的是,虽然本书部分章节源自《Ceph 设计原理与实现》一书,但是基本上都进行了重新创作。重复录入这些章节不是简单的查漏补缺,而是进一步提炼与升华,它们是本书不可或缺的组成部分。事实上,与新增内容相比,重新创作这些章节花费了我们更多的时间与精力。
本书的读者对象
本书适合于对 Ceph 有一定了解,想更进一步参与到 Ceph 开源项目中来,并致力于后续为 Ceph,特别是 RADOS 组件添砖加瓦的开发者或者高级开发者阅读。
此外,高级运维人员通过阅读本书也能够了解和掌握 Ceph 的核心设计理念及高级应用技巧,从而在日常运维工作中更加得心应手。
与《Ceph设计原理与实现》力求如实反映源码的实现细节不同,本书是 Ceph(特别是 RADOS 组件)设计思想与基本理念的高度浓缩。有条件的读者可以将两本书对照阅读,相信可以有更大收获。
本书的主要内容
本书主要介绍 Ceph 的核心——RADOS。具体编排如下:
第1章 一生万物——RADOS 导论
Ceph 是集传统块、文件存储以及新兴对象存储于一身的超级分布式统一存储平台。
Ceph 在架构上采用存储应用与存储服务完全分离的模式,并基于 RADOS 对外提供高性能和可轻松扩展的存储服务。理论上,基于 RADOS 及其派生的 librados 标准库可以开发任意类型的存储应用,典型的如 Ceph 当前的三大核心应用:RBD、RGW和 CephFS。
作为全书的开始,本章旨在为读者建立一个 RAD
评论
还没有评论。