加入收藏 | 设为首页 | 会员中心 | 我要投稿 上海站长网 (https://www.021zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

LINUX开源存储全栈详解:从CEPH到容器存储

发布时间:2022-09-30 18:31:49 所属栏目:Linux 来源:未知
导读: "SPDK、ISA-L、OpenSDS、Ceph、OpenStack Swift与Cinder、容器存储等,Linux开源存储世界探险之旅从此开启!
《Linux开源存储全栈详解:从Ceph到容器存储》致力于帮助读者形成有关Linux开源

"SPDK、ISA-L、OpenSDS、Ceph、OpenStack Swift与Cinder、容器存储等,Linux开源存储世界探险之旅从此开启!

《Linux开源存储全栈详解:从Ceph到容器存储》致力于帮助读者形成有关Linux开源存储世界的细致的拓扑,从存储硬件、Linux存储堆栈、存储加速、存储安全、存储管理、分布式存储、云存储等各个角度与层次展开讨论,同时对处于地位的、较为流行的开源存储项目进行阐述,包括SPDK、ISA-L、OpenSDS、Ceph、OpenStack Swift与Cinder、容器存储等。

? 存储硬件

? Linux存储堆栈

? 存储加速

? 存储安全

? 存储管理

? 分布式存储

? 云存储

"

本书致力于帮助读者形成有关Linux开源存储世界的细致的拓扑,从存储硬件、Linux存储堆栈、存储加速、存储安全、存储管理、分布式存储、云存储等各个角度与层次展开讨论,同时对处于地位的、较为流行的开源存储项目进行阐述,包括SPDK、ISA-L、OpenSDS、Ceph、OpenStack Swift与Cinder、容器存储等。本书内容基本不涉及具体源码,主要围绕各个项目的起源与发展、实现原理与框架、要解决的网络问题等方面展开讨论,致力于帮助读者对Linux开源存储技术的实现与发展形成整体清晰的认识。本书语言通俗易懂,能够带领读者快速走入Linux开源存储的世界并作出自己的贡献。

"任桥伟:从事Linux内核、OpenStack、Ceph等开源项目的开发,著有《Linux内核修炼之道》《Linux那些事儿》系列。

李晓燕:活跃于Cinder和Ceph项目,具有多年存储领域经验。

程盈心:Ceph社区的活跃贡献者,专注于分布式系统的分析与优化。

马建朋:Ceph社区的活跃贡献者。

刘春梅: 哈尔滨工业大学自动控制专业博士,目前在美国硅谷英特尔工作。从事过网络安全、虚拟化、终端安全、云计算等领域的工作。

尚德浩:Ceph社区的活跃贡献者。

胡伟:从事云计算和边缘计算相关工作。 在OpenStack、Ceph和Edge Computing领域支持客户技术方案落地,参与业界多项前沿云计算相关技术验证和评估工作。

杨子夜:从事存储软件开发和优化工作。在虚拟化、存储、云安全等领域拥有诸多提交,其中21个已经被局授予 (其中14个在美国,7个在中国)。

曹刚:从事存储软件的开发和优化工作,现为英特尔开发经理。

刘长鹏:从事存储软件和虚拟化研发工作。

刘孝冬:从事存储软件研发及存储相关算法优化的工作。

惠春阳:从事存储软件研发及存储相关算法优化的工作。

万群:从事测试领域的研究及实践近十年,对测试方法及项目管理有相当丰富的经验。

闫亮:从事存储软件的测试和优化工作。

周雁波:在英特尔实习期间,从事存储软件的开发和优化工作。

徐雯昀:在英特尔实习期间,担任存储技术文档工程师,负责SPDK技术文档方面的工作。

"

章 Linux开源存储1

1.1 Linux和开源存储1

1.1.1 为什么需要开源存储3

1.1.2 Linux开源存储技术原理和解决方案6

1.2 Linux开源存储系统方案介绍8

1.2.1 Linux单节点存储方案8

1.2.2 存储服务的分类11

1.2.3 数据压缩13

1.2.4 重复数据删除16

1.2.5 开源云计算数据存储平台27

1.2.6 存储管理和软件定义存储29

1.2.7 开源分布式存储和大数据解决方案33

1.2.8 开源文档管理系统37

1.2.9 网络功能虚拟化存储39

1.2.10 虚拟机/容器存储40

1.2.11 数据保护43

1.3 三大很好基金会44

第2章 存储硬件与协议47

2.1 存储设备的历史轨迹47

2.2 存储介质的进化53

2.2.1 3D NAND53

2.2.2 3D XPoint55

2.2.3 Intel Optane58

2.3 存储接口协议的演变59

2.4 网络存储技术62

第3章 Linux存储栈67

3.1 Linux存储系统概述67

3.2 系统调用69

3.3 文件系统72

3.3.1 文件系统概述73

3.3.2 Btrfs75

3.4 Page Cache80

3.5 Direct I/O82

3.6 块层(Block Layer)83

3.6.1 bio与request84

3.6.2 I/O调度86

3.6.3 I/O合并88

3.7 LVM90

3.8 bcache93

3.9 DRBD96

第4章 存储加速99

4.1 基于CPU处理器的加速和优化方案100

4.2 基于协处理器或其他硬件的加速方案103

4.2.1 FPGA加速103

4.2.2 智能网卡加速105

4.2.3 Intel QAT107

4.2.4 NVDIMM为存储加速110

4.3 智能存储加速库(ISA-L)111

4.3.1 数据保护:纠删码与磁盘阵列112

4.3.2 数据安全:哈希113

4.3.3 数据完整性:循环冗余校验码115

4.3.4 数据压缩:IGZIP116

4.3.5 数据加密117

4.4 存储性能软件加速库(SPDK)117

4.4.1 SPDK NVMe驱动119

4.4.2 SPDK应用框架133

4.4.3 SPDK用户态块设备层136

4.4.4 SPDK vhost target150

4.4.5 SPDK iSCSI Target156

4.4.6 SPDK NVMe-oF Target163

4.4.7 SPDK RPC165

4.4.8 SPDK生态工具介绍172

第5章 存储安全181

5.1 可用性181

5.1.1 SLA181

5.1.2 MTTR、MTTF和MTBF182

5.1.3 高可用方案183

5.2 可靠性185

5.2.1 磁盘阵列186

5.2.2 纠删码187

5.3 数据完整性188

5.4 访问控制189

5.5 加密与解密191

第6章 存储管理与软件定义存储194

6.1 OpenSDS194

6.1.1 OpenSDS社区195

6.1.2 OpenSDS架构195

6.1.3 OpenSDS应用场景198

6.1.4 与Kubernetes集成200

6.1.5 与OpenStack集成200

6.2 Libvirt存储管理201

6.2.1 Libvirt介绍201

6.2.2 Libvirt存储池和存储卷205

第7章 分布式存储与Ceph206

7.1 Ceph体系结构209

7.1.1 对象存储211

7.1.2 RADOS212

7.1.3 OSD212

7.1.4 数据寻址214

7.1.5 存储池219

7.1.6 Monitor220

7.1.7 数据操作流程227

7.1.8 Cache Tiering228

7.1.9 块存储230

7.1.10 Ceph FS232

7.2 后端存储ObjectStore235

7.2.1 FileStore236

7.2.2 BlueStore240

7.2.3 SeaStore243

7.3 CRUSH算法244

7.3.1 CRUSH算法的基本特性244

7.3.2 CRUSH算法中的设备位置及状态246

7.3.3 CRUSH中的规则与算法细节249

7.3.4 CRUSH算法实践254

7.3.5 CRUSH算法在Ceph中的应用261

7.4 Ceph可靠性262

7.4.1 OSD多副本263

7.4.2 OSD纠删码264

7.4.3 RBD mirror265

7.4.4 RBD Snapshot267

7.4.5 Ceph数据恢复271

7.4.6 Ceph一致性274

7.4.7 Ceph Scrub机制278

7.5 Ceph中的缓存279

7.5.1 RBDCache具体实现285

7.5.2 固态硬盘用作缓存287

7.6 Ceph加密和压缩289

7.6.1 加密289

7.6.2 压缩291

7.6.3 加密和压缩的加速294

7.7 QoS294

7.7.1 前端QoS294

7.7.2 后端QoS295

7.7.3 dmClock客户端297

7.8 Ceph性能测试与分析298

7.8.1 集群性能测试299

7.8.2 集群性能数据304

7.8.3 综合测试分析工具307

7.8.4 不错话题311

7.9 Ceph与OpenStack315

第8章 OpenStack存储318

8.1 Swift321

8.1.1 Swift体系结构321

8.1.2 环327

8.1.3 Swift API330

8.1.4 认证331

8.1.5 对象管理与操作333

8.1.6 数据一致性337

8.2 Cinder338

8.2.1 Cinder体系结构338

8.2.2 Cinder API341

8.2.3 cinder-scheduler342

8.2.4 cinder-volume343

8.2.5 cinder-backup347

第9章 容器存储348

9.1 容器348

9.1.1 容器技术框架350

9.1.2 Docker353

9.1.3 容器与镜像355

9.2 Docker存储356

9.2.1 临时存储357

9.2.2 持久化存储366

9.3 Kubernetes存储369

9.3.1 Kubernetes核心概念370

9.3.2 Kubernetes数据卷管理376

9.3.3 Kubernetes CSI380

"自1991年Linux诞生,时间已经走过了近三十年。即将而立之年的Limix早已没有初生时的稚气,它正在各个领域展示自己成熟的魅力。以Linux为基础linux开源,各种开源生态,如网络、存储都出现了。而生态离不开形形色色的 开源项目,在人人谈开源的今天,一个又一个知名的开源项目正在全球快速生长。当然, 本书的主题仅限于Linux开源存储生态,面对其中一个又一个扑面而来且快速更迭的新项目、新名词,我们会有一种紧迫感,想去了解它们背后的故事,也会有一定的动力想要踏上Linux开源存储世界的旅程。而无论是否强迫,面对这样的一段旅程,我们心底浮现的最为愉悦的开场白或许应该是:“说实话,我学习的热情从来都没有低落过。JustforFun.”

正如Linus在自己的自传Fim中所希望的那样。

面对Linux开源存储这么一个庞大而又杂乱的世界,让人最为惴惴不安的问題或许便 是:我该如何更快、更好地适应这个全新的世界?人工智能与机器学习领域里研究的一个很重要的问题是,“为什么我们小时候有人牵一匹马告诉我们那是马,于是之后我们看到其他的马就知道那是马了? ”针对这个问题的一个结论是:我们在头脑里形成了一种生物关系的拓扑结构,我们所认知的各种生物都会放进这个拓扑结构里,而生物不断成长的过程就是形成并完善各种各样的或树形、或环形等拓扑结构的过程,并以此来认知我们所面对的各种新事物。

由此可见,或许我们认知Linux开源存储世界最快也最为自然的方式就是努力在脑海 里形成它的拓扑结构,并不断细化,比如这个生态包括什么样的层次,每个层次里又有什么样的项目去实现,各个项目又实现了哪些服务及功能,这些功能又是以什么样的方式实现的,等等。对于感兴趣的项目,我们可以更为细致地去勾勒其中的脉络,就好似我们头 脑里形成的有关一个城市的地图,它有哪些区,区里又有哪些标志性建筑及街道,对于熟 悉的地方,我们甚至可以将它的周围放大并细化到一个微不足道的角落。

本书的组织形式

本书正是为帮助读者形成有关Linux开源存储世界的细致拓扑而组织的^

章主要对Linux开源存储的生态进行整体描述,包括开源存储领域研究的热点方 向、相关的开源基金会等。

第2章从存储硬件的角度介绍了存储技术的发展历史,包括存储介质的进化、存储协 议的更新等。

第3章作为整个Linux开源存储世界的基础,描述了 Linux存储栈(Linux Storage Stack),对I/O在Linux内核里的处理流程及所涉及的主要模块进行介绍。

第4~9章的内容分别从存储加速、存储安全、存储管理与软件定义存储、分布式存 储与Ceph、OpenSteck存储、容器存储等角度与层次对处于主导地位的、较为流行的项目 进行介绍,以帮助读者对相应项目形成比较细致的拓扑。

第4章讲解了存储领域的加速技术,包括FPGA、QAT、NVDIMM等硬件加速技术, 以及ISA-L、SPDK等开源的软件加速方案。

第5章从可用性、可靠性、数据完整性、访问控制、加密与解密等方面讨论了存储安 全问题。

第6章介绍存储管理与软件定义存储方面的主要开源项目,包括OpenSDS、 Libvirt 等。

第7章讨论分布式存储并详细介绍了目前流行的开源分布式存储项目Ceph的设计 与实现。

第8章与第9章分别对OpenStack与Kubemetes两种主要云平台中的存储支持进 行讨论。

感谢

作为英特尔的开源技术中心,参与各个Linux开源存储项目的开发与推广是再自然不 过的事情了。除了为各个开源项目的完善与稳定贡献更多的思考和代码,我们还希望通过这本书让更多的人更快地融入Linux开源存储世界的大家庭。

如果没有Sandra Rivera (英特尔髙级副总裁兼网络平台事业部总经理)、ImadSousou (英特尔公司副总栽兼系统软件产品部总经理)、Mark Skarpness (英特尔系统软件产品部 副总裁兼数据中心系统软件总经理)、Timmy Labatte (英特尔网络平台事业部副总裁兼 软件工程总经理)、练丽萍(英特尔系统软件产品部网络与存储研发总监)、冯晓焰(英 特尔系统软件产品部安卓系统工程研发总监)、周林(英特尔网络平台事业部中国区软件 开发总监)、梁冰(英特尔系统软件产品部市场总监)、王庆(英特尔系统软件产品部网 络与存储研发经理)的支持,这本书不可能完成,谨在此感谢他们在本书编写过程中给予 的关怀与帮助。

感谢本书编辑孙学瑛老师,从选题到最后的定稿,在整个过程中,都给予我们无私的 帮助和指导。

感谢参与各章内容编写的各位同事,他们是李晓燕、程盈心、马建朋、尚德浩、胡伟、 刘春梅、任桥伟、杨子夜、曹刚、刘长鹏、刘孝冬、惠春阳、万群、闰亮、周雁波、徐雯 的。为了本书的顺利完成,他们付出了很多努力。

感谢所有对Linux开源存储技术抱有兴趣或从事各个Linux开源存储项目工作的人, 没有你们提供的源码与大量技术资料,本书便会成为无源之水。"

(编辑:上海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!