标签分类 热门分类
当前位置:首页 > 程序设计电子书 > Ceph电子书网盘下载
Ceph源码分析 Ceph源码分析
wang_qingqing

wang_qingqing 提供上传

资源
43
粉丝
27
喜欢
274
评论
11

    Ceph源码分析 PDF 完整影印版

    Ceph电子书
    • 发布时间:

    给大家带来的一篇关于Ceph相关的电子书资源,介绍了关于Ceph、源码分析方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小134 MB,常涛编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.3,更多相关的学习资源可以参阅 程序设计电子书、等栏目。

  • Ceph源码分析 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1iE8FWJvgZn98nnnWOSLVs
  • 分享码:vbv3
  • Ceph源码分析 PDF

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

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

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

    目录

    • 序言
    • 前言
    • 第1章 Ceph整体架构 1
    • 1.1 Ceph的发展历程 1
    • 1.2 Ceph的设计目标 2
    • 1.3 Ceph基本架构图 2
    • 1.4 Ceph客户端接口 3
    • 1.4.1 RBD 4
    • 1.4.2 CephFS 4
    • 1.4.3 RadosGW 4
    • 1.5 RADOS 6
    • 1.5.1 Monitor 6
    • 1.5.2 对象存储 7
    • 1.5.3 pool和PG的概念 7
    • 1.5.4 对象寻址过程 8
    • 1.5.5 数据读写过程 9
    • 1.5.6 数据均衡 10
    • 1.5.7 Peering 11
    • 1.5.8 Recovery和Backfill 11
    • 1.5.9 纠删码 11
    • 1.5.10 快照和克隆 12
    • 1.5.11 Cache Tier 12
    • 1.5.12 Scrub 13
    • 1.6 本章小结 13
    • 第2章 Ceph通用模块 14
    • 2.1 Object 14
    • 2.2 Buffer 16
    • 2.2.1 buffer::raw 16
    • 2.2.2 buffer::ptr 17
    • 2.2.3 buffer::list 17
    • 2.3 线程池 19
    • 2.3.1 线程池的启动 20
    • 2.3.2 工作队列 20
    • 2.3.3 线程池的执行函数 21
    • 2.3.4 超时检查 22
    • 2.3.5 ShardedThreadPool 22
    • 2.4 Finisher 23
    • 2.5 Throttle 23
    • 2.6 SafeTimer 24
    • 2.7 本章小结 25
    • 第3章 Ceph网络通信 26
    • 3.1 Ceph网络通信框架 26
    • 3.1.1 Message 27
    • 3.1.2 Connection 29
    • 3.1.3 Dispatcher 29
    • 3.1.4 Messenger 29
    • 3.1.5 网络连接的策略 30
    • 3.1.6 网络模块的使用 30
    • 3.2 Simple实现 32
    • 3.2.1 SimpleMessager 33
    • 3.2.2 Accepter 33
    • 3.2.3 DispatchQueue 33
    • 3.2.4 Pipe 34
    • 3.2.5 消息的发送 35
    • 3.2.6 消息的接收 36
    • 3.2.7 错误处理 37
    • 3.3 本章小结 38
    • 第4章 CRUSH数据分布算法 39
    • 4.1 数据分布算法的挑战 39
    • 4.2 CRUSH算法的原理 40
    • 4.2.1 层级化的Cluster Map 40
    • 4.2.2 Placement Rules 42
    • 4.2.3 Bucket随机选择算法 46
    • 4.3 代码实现分析 49
    • 4.3.1 相关的数据结构 49
    • 4.3.2 代码实现 50
    • 4.4 对CRUSH算法的评价 52
    • 4.5 本章小结 52
    • 第5章 Ceph客户端 53
    • 5.1 Librados 53
    • 5.1.1 RadosClient 54
    • 5.1.2 IoCtxImpl 56
    • 5.2 OSDC 56
    • 5.2.1 ObjectOperation 56
    • 5.2.2 op_target 57
    • 5.2.3 Op 57
    • 5.2.4 Striper 58
    • 5.2.5 ObjectCacher 59
    • 5.3 客户写操作分析 59
    • 5.3.1 写操作消息封装 60
    • 5.3.2 发送数据op_submit 61
    • 5.3.3 对象寻址_calc_target 61
    • 5.4 Cls 62
    • 5.4.1 模块以及方法的注册 62
    • 5.4.2 模块的方法执行 63
    • 5.4.3 举例说明 64
    • 5.5 Librbd 65
    • 5.5.1 RBD的相关的对象 65
    • 5.5.2 RBD元数据操作 66
    • 5.5.3 RBD数据操作 67
    • 5.5.4 RBD的快照和克隆 69
    • 5.6 本章小结 71
    • 第6章 Ceph的数据读写 72
    • 6.1 OSD模块静态类图 72
    • 6.2 相关数据结构 73
    • 6.2.1 Pool 74
    • 6.2.2 PG 75
    • 6.2.3 OSDMap 75
    • 6.2.4 OSDOp 77
    • 6.2.5 Object_info_t 77
    • 6.2.6 ObjectState 78
    • 6.2.7 SnapSetContext 79
    • 6.2.8 ObjectContext 79
    • 6.2.9 Session 80
    • 6.3 读写操作的序列图 81
    • 6.4 读写流程代码分析 83
    • 6.4.1 阶段1:接收请求 83
    • 6.4.2 阶段2:OSD的op_wq处理 85
    • 6.4.3 阶段3:PGBackend的处理 95
    • 6.4.4 从副本的处理 95
    • 6.4.5 主副本接收到从副本的应答 95
    • 6.5 本章小结 96
    • 第7章 本地对象存储 97
    • 7.1 基本概念介绍 98
    • 7.1.1 对象的元数据 98
    • 7.1.2 事务和日志的基本概念 98
    • 7.1.3 事务的封装 99
    • 7.2 ObjectStore对象存储接口 100
    • 7.2.1 对外接口说明 101
    • 7.2.2 ObjectStore代码示例 101
    • 7.3 日志的实现 102
    • 7.3.1 Jouanal对外接口 102
    • 7.3.2 FileJournal 103
    • 7.4 FileStore的实现 109
    • 7.4.1 日志的三种类型 110
    • 7.4.2 JournalingObjectStore 111
    • 7.4.3 Filestore的更新操作 112
    • 7.4.4 日志的应用 115
    • 7.4.5 日志的同步 115
    • 7.5 omap的实现 116
    • 7.5.1 omap存储 117
    • 7.5.2 omap的克隆 118
    • 7.5.3 部分代码实现分析 119
    • 7.6 CollectionIndex 120
    • 7.6.1 CollectIndex接口 122
    • 7.6.2 HashIndex 123
    • 7.6.3 LFNIndex 124
    • 7.7 本章小结 124
    • 第8章 Ceph纠删码 125
    • 8.1 EC的基本原理 125
    • 8.2 EC的不同插件 126
    • 8.2.1 RS编码 126
    • 8.2.2 LRC编码 126
    • 8.2.3 SHEC编码 128
    • 8.2.4 EC和副本的比较 129
    • 8.3 Ceph中EC的实现 129
    • 8.3.1 Ceph中EC的基本概念 129
    • 8.3.2 EC支持的写操作 130
    • 8.3.3 EC的回滚机制 131
    • 8.4 EC的源代码分析 132
    • 8.4.1 EC的写操作 132
    • 8.4.2 EC的write_full 133
    • 8.4.3 ECBackend 133
    • 8.5 本章小结 133
    • 第9章 Ceph快照和克隆 134
    • 9.1 基本概念 134
    • 9.1.1 快照和克隆 134
    • 9.1.2 RDB的快照和克隆比较 135
    • 9.2 快照实现的核心数据结构 137
    • 9.3 快照的工作原理 139
    • 9.3.1 快照的创建 139
    • 9.3.2 快照的写操作 139
    • 9.3.3 快照的读操作 140
    • 9.3.4 快照的回滚 141
    • 9.3.5 快照的删除 141
    • 9.4 快照读写操作源代码分析 141
    • 9.4.1 快照的写操作 141
    • 9.4.2 make_writeable函数 142
    • 9.4.3 快照的读操作 145
    • 9.5 本章小结 146
    • 第10章 Ceph Peering机制 147
    • 10.1 statechart状态机 147
    • 10.1.1 状态 147
    • 10.1.2 事件 148
    • 10.1.3 状态响应事件 148
    • 10.1.4 状态机的定义 149
    • 10.1.5 context函数 150
    • 10.1.6 事件的特殊处理 150
    • 10.2 PG状态机 151
    • 10.3 PG的创建过程 151
    • 10.3.1 PG在主OSD上的创建 151
    • 10.3.2 PG在从OSD上的创建 153
    • 10.3.3 PG的加载 154
    • 10.4 PG创建后状态机的状态转换 154
    • 10.5 Ceph的Peering过程分析 156
    • 10.5.1 基本概念 156
    • 10.5.2 PG日志 159
    • 10.5.3 Peering的状态转换图 166
    • 10.5.4 pg_info数据结构 167
    • 10.5.5 GetInfo 169
    • 10.5.6 GetLog 176
    • 10.5.7 GetMissing 181
    • 10.5.8 Active操作 183
    • 10.5.9 副本端的状态转移 187
    • 10.5.10 状态机异常处理 188
    • 10.6 本章小结 188
    • 第11章 Ceph数据修复 189
    • 11.1 资源预约 190
    • 11.2 数据修复状态转换图 191
    • 11.3 Recovery过程 193
    • 11.3.1 触发修复 193
    • 11.3.2 ReplicatedPG 195
    • 11.3.3 pgbackend 199
    • 11.4 Backfill过程 205
    • 11.4.1 相关数据结构 205
    • 11.4.2 Backfill的具体实现 205
    • 11.5 本章小结 210
    • 第12章 Ceph一致性检查 211
    • 12.1 端到端的数据校验 211
    • 12.2 Scrub概念介绍 213
    • 12.3 Scrub的调度 213
    • 12.3.1 相关数据结构 214
    • 12.3.2 Scrub的调度实现 214
    • 12.4 Scrub的执行 217
    • 12.4.1 相关数据结构 217
    • 12.4.2 Scrub的控制流程 219
    • 12.4.3 构建ScrubMap 221
    • 12.4.4 从副本处理 224
    • 12.4.5 副本对比 225
    • 12.4.6 结束Scrub过程 228
    • 12.5 本章小结 228
    • 第13章 Ceph自动分层存储 230
    • 13.1 自动分层存储技术 230
    • 13.2 Ceph分层存储架构和原理 231
    • 13.3 Cache Tier的模式 231
    • 13.4 Cache Tier的源码分析 234
    • 13.4.1 pool中的Cache Tier数据结构 234
    • 13.4.2 HitSet 236
    • 13.4.3 Cache Tier的初始化 237
    • 13.4.4 读写路径上的Cache Tier处理 238
    • 13.4.5 cache的flush和evict操作 245
    • 13.5 本章小结 250

    上一篇:Git学习指南  下一篇:大型网站服务器容量规划

    展开 +

    收起 -

    Ceph 相关电子书
    关于Ceph的学习笔记
    网友NO.684692

    jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)

    Selectator是一款实现多选和搜索过滤功能的jQuery下拉列表框插件。它支持搜索,并且能直接影响原始的选择框,而原始的选择框是用作数据容器。通过该下拉列表框插件可以多选项进行分组,设置选项的图标,对选项进行搜索过滤,以及进行多选选择。 效果展示 源码下载 使用方法 使用该下拉类别框插件需要在页面中引入fm.selectator.jquery.css、jQuery和fm.selectator.jquery.js文件。 link rel="stylesheet" href="fm.selectator.jquery.css"/script src="jquery-1.11.0.min.js"/scriptscript src="fm.selectator.jquery.js"/script HTML结构 一个选项带图标级带分组选项的下拉列表的HTML结构如下: label for="select"Multi select with custom content:/labelselect id="select" name="select" multipleoptgroup label="Group one" class="group_one"option value="1" class="option_one" data-subtitle="Et" data-left="img src='images/ingi.png'" data-right="1"One/optionoption value="2" class="option_two" data-subtitle="To" data-left="img src='images/runa.png'" data-right="2"Two/option/optgroupoptgroup label="Group two" class="group_two"option value="3" class="option_three" data-subtitle="Tre" data-left="img src='images/jogvan.png'" data-right="3"Three/optionoption value="4" class="option_four" selected data-left="img src='images/noimage.png'" data-right="4"Four/optionoption value="5" class="option_five" selected data-left="img src='images/noimage.png'" data-right="5"Five/optionopt……

    网友NO.970858

    jquery拖拽效果完整实例(附demo源码下载)

    本文实例讲述了jquery实现的拖拽效果。分享给大家供大家参考,具体如下: 运行效果截图如下: 点击此处查看在线演示效果。 具体代码如下: html部分: !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"htmlheadscript type="text/javascript" src="jquery-1.4.2.min.js"/scriptscript type="text/javascript" src="tuo.js"/scriptscript type="text/javascript" $(function(){ $("#box").tuoz(); })/scriptstyle type="text/css" *{ margin:0px; padding:0px; } #box{ height:100px; width:100px; background:#666666; } #box img{ height:50px; width:50px; background:#666666; } #big{ height:400px; width:300px; background:purple; }/style/headbody div id="box"img src="http://www.baidu.com/img/baidu_sylogo1.gif"/img/div div id="big"/div/body/html jquery部分: (function(){ $.fn.extend({ tuoz:function(){ return this.each(function(){ var $this=$(this); var ey=""; var ex=""; var mx=""; var my=""; var tx=""; var ty=""; var small_x=""; var small_y=""; var big_height=""; var big_width=""; var big_x=""; var big_y=""; var move="false"; $this.mousedown(function(e){ move="true"; mx=$this.offset().left; my=$this.offset().top; ex=e.clientX; ey=e.clientY; tx=ex-mx; ty=ey-my; small_x=$("#big").offset().left; small_y=$("#big").offset().top; big_height=$("#big").height(); big_width=$("#big").width(); big_x=small_x+big_width; big_y=small_y+big_height; }) $(document).mousemove(function(e){ ex=e.clientX; ey=e.clientY; if(mov……

    网友NO.834078

    SUSE Linux下源码编译方式安装MySQL 5.6过程分享

    MySQL为开源数据库,因此可以基于源码实现安装。基于源码安装有更多的灵活性。也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整。本文描述了如何在源码方式下安装MySQL。 1、安装环境及介质 #安装环境 SZDB:~ # cat /etc/issue Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l). SZDB:~ # uname -a Linux SZDB 2.6.16.60-0.54.5-smp #1 SMP Fri Sep 4 01:28:03 UTC 2009 x86_64 x86_64 x86_64 GNU/Linux #安装介质,可以到以下网址下载安装介质,注意下载时选择source code,当前版本为5.6.17 #根据你自身的环境下载相应的安装介质,本文演示的安装介质为Generic Linux (Architecture Independent), mysql-5.6.17.tar.gz http://dev.mysql.com/downloads/mysql/ #源码安装方式官方网站链接: http://dev.mysql.com/doc/refman/5.6/en/installing-source-distribution.html 2、系统需求 Source Installation System Requirements Installation of MySQL from source requires several development tools. Some of these tools are needed no matter whether you use a standard source distribution or a development source tree. Other tool requirements depend on which installation method you use. To install MySQL from source, your system ……

    网友NO.367736

    jQuery实现贪吃蛇小游戏(附源码下载)

    前言 相信贪吃蛇的游戏大家都玩过。在那个水果机还没有流行,人手一部诺基亚的时代,贪吃蛇是手机中的必备游戏。笔者闲的无聊的时候就拿出手机来玩上几局,挑战一下自己的记录。 后来上大学了,用c语言做过贪吃蛇的游戏,不过主要是通过函数来控制(PS:现在让我看代码都看不懂(⊙﹏⊙))。现在学习前端框架之后,通过jQuery来实现一个贪吃蛇的游戏效果,虽然游戏界面比(bu)较(ren)简(zhi)陋(shi),但是主要学习一下游戏中面向对象和由局部到整体的思想。 设计思想 在开始写代码前首先让我们来构思一下整体游戏的实现过程: 需要的对象 首先既然是贪吃蛇,那么游戏中肯定要涉及到两个对象,一个是蛇的对象,另一个是食物的对象。食物对象肯定要有一个属性就是食物的坐标点,蛇对象有一个属性是一个数组,用来存放蛇身体所有的坐标点。 如何移动 另外全局需要有一个定时器来周期性的移动蛇的身体。由于蛇的身体弯弯曲曲有各种不同的形状,因此我们只处理蛇的头部和尾部,每次移动都根据移动的方向的不同来添加新的头部,再把尾部擦去,看起来就像蛇在向前爬行一样。 方向控制 由于蛇有移动的方向,因此我们也需要在全局定义一个方向对象,对象中有上下左右所代表的值。同时,在蛇对……

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明