第1章 云存储概述 1
1.1云存储起源 2
1.1.1云存储技术起源 2
1.1.2云存储服务起源 3
1.2云存储概念 3
1.3云存储的特点 4
第2章 对象存储系统 6
2.1非结构化数据存储 6
2.1.1什么是非结构化数据 6
2.1.2非结构化数据的存储要求 7
2.1.3存储系统的种类 8
2.1.4传统的共享存储方法的缺点 8
2.2对象存储系统 9
2.2.1对象存储的产生 9
2.2.2对象存储的基本概念 10
2.2.3对象存储的关键特性与价值 11
2.2.4 对象存储的主要应用场景 11
第3章 Swift简介 13
3.1 Swift的开发历史 13
3.2 Swift的特性 14
3.2.1极高的数据持久性 14
3.2.2可扩展性 14
3.2.3高并发 14
3.2.4完全对称的系统架构 14
3.2.5硬件设备要求低 15
3.2.6开发的友好性 15
3.2.7管理友好性 15
3.3 Swift应用场景 16
3.3.1常见案例介绍 16
3.3.2存储用于数据分析 16
3.3.3备份、归档和灾难恢复 16
3.3.4 静态网站托管 17
3.4 CAP理论简介 17
3.4.1 CAP理论 17
3.4.2一致性种类 17
3.4.3 CAP理论的应用 18
第4章 Swift的工作原理 20
4.1核心概念 20
4.1.1 Swift URL 20
4.1.2账号(Accounts) 21
4.1.3容器(Containers) 21
4.1.4对象(Objects) 21
4.1.5 Swift API 21
4.2 Swift的总体架构 22
4.2.1代理服务器(Proxy Server) 22
4.2.2存储服务器(Storage Server) 23
4.3 Swift的工作原理 24
4.3.1虚节点 24
4.3.2环(The Ring) 25
4.3.3一致性服务器(Consistency Server) 26
4.3.4 区域(Zones) 28
4.3.5地区(Regions ) 28
4.3.6数据存储点选择算法 29
4.4 使用场景举例 29
4.4.1上传(PUT) 29
4.4.2下载(GET) 30
4.5总结 31
第5章 Swift的使用 33
5.1命令行客户端 33
5.1.1安装 34
5.1.2认证 34
5.1.3访问控制 35
5.1.4访问容器和对象 36
5.1.5 swift CLI命令清单 38
5.2存储服务的HTTP API 39
5.2.1认证 40
5.2.2存储账号服务 42
5.2.3 存储容器服务 47
5.2.4存储对象服务 54
5.3利用curl使用Swift存储服务 59
5.3.1 curl的安装 59
5.3.2 curl简单使用 60
5.3.3认证 60
5.3.4获取集群存储使用情况 61
5.3.5创建容器和获取容器列表 61
5.3.6 分页返回容器列表 63
5.3.7内容格式 64
5.3.8获取容器的元数据 66
5.3.9删除容器 66
5.3.10创建对象 67
5.3.11分页返回对象列表 68
5.3.12下载、复制和删除对象 69
5.3.13对象元数据 71
5.4总结 72
第6章 Swift的高级特性 74
6.1创建大对象 74
6.1.1动态大对象 75
6.1.2静态大对象 76
6.1.3静态和动态大对象的比较 77
6.2许可和访问控制表 78
6.3多版本对象 79
6.4失效对象 82
6.5客户元数据 82
6.6总结 83
第7章 使用Java开发Swift应用 85
7.1 jclouds简介 86
7.1.1 jclouds的特性 86
7.1.2 BlobStore简介 86
7.1.3 BlobStore的核心概念 86
7.2 jclouds—Swift的安装 87
7.2.1 jclouds简介 87
7.2.2 jclouds安装 88
7.3 BlobStore API 91
7.3.1连接 91
7.3.2获取BlobStore接口 91
7.3.3容器操作命令 91
7.3.4 blob操作命令 92
7.3.5使用BlobStore API 93
7.4使用Blob Store API的高级功能 104
7.4.1 上传大型数据 104
7.4.2大型列表 106
7.4.3 目录标识 106
7.4.4 Content Disposition 106
7.5 Swift Client接口 107
7.5.1 SwiftClient接口简介 107
7.5.2 SwiftClient接口使用 108
第8章 Swift的实现原理 114
8.1环(Ring)的实现原理 114
8.1.1普通Hash算法与场景分析 115
8.1.2一致性哈希算法 116
8.1.3虚节点(Partition) 118
8.1.4 副本(Replica) 120
8.1.5分区(Zone) 122
8.1.6权重(Weight) 122
8.1.7小结 123
8.2环的数据结构 123
8.3存储节点的实现 124
8.3.1对象(objects) 目录 125
8.3.2账号(accounts)目录 127
8.3.3 容器(containers)目录 132
8.3.4 临时(tmp)目录 134
8.3.5 async_pending目录 134
8.3.6 隔离(quarantined ) 目录 137
8.3.7小结 138
8.4容器间同步的实现 138
8.4.1简介 138
8.4.2设置容器同步 138
8.4.3容器同步的实现 140
8.5总结 142
第9章 Swift的单机搭建 144
9.1安装说明 145
9.1.1安装环境 145
9.1.2单机版Swift结构 145
9.2环境准备 146
9.2.1系统要求 146
9.2.2更新配置操作系统 146
9.3安装代理(Proxy)节点 148
9.3.1创建Swift目录 148
9.3.2创建swift.conf文件 148
9.3.3创建Swift服务 148
9.3.4创建SSL自签名证书 148
9.3.5更改memcached监听地址 148
9.3.6 创建代理节点配置文件 149
9.3.7生成相关nng以及builder文件 149
9.4安装存储节点 151
9.4.1安装存储服务相关包 151
9.4.2配置各个存储节点 152
9.4.3更改rsyncd.conf文件 158
9.4.4设置rsyncd文件 160
9.4.5建立存储点 160
9.5安装成功验证 161
9.5.1检测Swift运行状态 161
9.5.2.上传和列出文件 161
9.5.3 下载文件 162
9.6常见问题说明 162
第10章 Swift的多机搭建 163
10.1基本结构和术语 163
10.2安装环境准备 165
10.2.1操作系统配置 165
10.2.2添加下载源 165
10.2.3创建Swift用户 166
10.2.4创建Swift的工作目录 166
10.3安装代理节点 167
10.3.1安装代理节点Proxy 167
10.3.2创建工作目录 167
10.3.3 配置memched监听默认端口 167
10.3.4创建swift.conf文件 168
10.3.5创建SSL自签名证书 168
10.3.6创建代理节点配置文件 168
10.3.7构建创建ring的builder文件 169
10.3.8添加 Zone的命令 170
10.3.9启动代理服务 171
10.4安装存储节点 171
10.4.1安装存储服务相关包 171
10.4.2存储点的设置 171
10.4.3创建Swift工作目录 172
10.4.4复制配置文件 172
10.4.5创建/etc/rsyncd.conf 173
10.4.6修改/etc/default/rsync 173
10.4.7创建配置文件 173
10.4.8开启存储节点服务 175
10.5安装成功验证 176
10.5.1检测 Swift运行状态 176
10.5.2 上传和列出文件 176
10.5.3 下载文件 177
10.6常见问题说明 177
第11章 运行维扩Swift集群 178
11.1增加存储容量 179
11.1.1 Swift安置数据的方法 179
11.1.2添加新磁盘的方法 179
11.1.3平滑添加存储容量的方法 180
11.1.4添加新的存储节点 181
11.2移出存储设备 182
11.2.1移出存储节点 182
11.2.2移出存储磁盘 183
11.3处理硬件故障 184
11.3.1处理有故障的磁盘驱动器 185
11.3.2处理写满的磁盘驱动器 185
11.3.3处理磁盘区域失效故障 185
11.3.4处理失去联系的节点故障 186
11.3.5处理故障节点 186
11.4观察和优化集群性能 187
11.5总结 187