第1章 Linux开源存储 1# ~: b6 G- i% N; g
1.1 Linux和开源存储 1
& h8 n' A4 v7 g7 |, ?$ i. A1.1.1 为什么需要开源存储 35 h, |* H) Z( S6 Q2 Y( s$ A4 h3 a
1.1.2 Linux开源存储技术原理和解决方案 6
$ z/ X1 _& p9 |7 r. t W8 l' \+ v1.2 Linux开源存储系统方案介绍 85 n. B/ _7 | Z
1.2.1 Linux单节点存储方案 8
# N/ @- P; j g4 Y0 Z0 R2 v% C1.2.2 存储服务的分类 11
' I. }9 I" W$ x9 ?5 u! m1.2.3 数据压缩 13+ \0 F& ^. V" ]( J5 F
1.2.4 重复数据删除 162 a# Q7 f# {! z' g) S5 y! E$ s& k) ?
1.2.5 开源云计算数据存储平台 27
/ J" A$ R3 K. v; n1.2.6 存储管理和软件定义存储 29
( L! O. A5 j- Z, q- B0 a- t% u7 D* l' W1.2.7 开源分布式存储和大数据解决方案 33+ s8 p3 u$ r/ z; M
1.2.8 开源文档管理系统 37- ^) {: f: i1 C! |- S
1.2.9 网络功能虚拟化存储 39 E2 I% T* b, N* c' v* A0 m8 t
1.2.10 虚拟机/容器存储 403 H$ {& t' r4 L9 U8 D% X
1.2.11 数据保护 43$ w! V/ U% d8 S" I& t. `4 a
1.3 三大基金会 44
) ^; f7 P: {# }, S4 C第2章 存储硬件与协议 47
+ a' J* N6 ~9 j/ K2.1 存储设备的历史轨迹 47+ |( u o* ?: q i/ _# F$ d+ y
2.2 存储介质的进化 53& X; [( }3 r; M, u
2.2.1 3D NAND 53
. R% B0 b k- P }' ]2.2.2 3D XPoint 55
" }8 A$ @! Y) C0 A& {* w' R2.2.3 Intel Optane 58+ {9 n6 o. X0 i4 q" C# a$ ?% o) z
2.3 存储接口协议的演变 592 Z! V! x% y% c& u7 Y8 F
2.4 网络存储技术 62
. A. ]% X2 A' }. d- r第3章 Linux存储栈 67& ~4 p1 q' ^1 h
3.1 Linux存储系统概述 676 W7 v. X9 f% N4 B+ n6 S
3.2 系统调用 69
: m7 W+ b$ r7 h- d3.3 文件系统 72
( C6 L: M. Z5 H3.3.1 文件系统概述 73 F. S% ?; Q3 p" _& H, M: g$ v
3.3.2 Btrfs 75
( o2 L, {: z# Z7 F( V. l/ O3.4 Page Cache 80
9 R; y( M! a! @; x! S3.5 Direct I/O 82
! r6 @ l0 c2 }3.6 块层(Block Layer) 83
# r3 v4 Z( o# f) Q3 I/ a3.6.1 bio与request 84; g6 J1 o. `) t z$ k/ d
3.6.2 I/O调度 86
. W4 b! I1 s" k; C& b4 Q3.6.3 I/O合并 88
3 P# T! i3 J0 J- n1 U8 r/ M3.7 LVM 90
* w" j$ Q* s9 s% q; Z; m- z+ k3.8 bcache 93) y+ N0 j- S- R* _4 |' `; e6 Q
3.9 DRBD 96% F# l) g. P( [2 q2 u1 \3 A) U
第4章 存储加速 99 R! C# M2 b& ^3 i6 g; X8 x
4.1 基于CPU处理器的加速和优化方案 100! Y8 G' |! `! O; z0 N' p- T
4.2 基于协处理器或其他硬件的加速方案 1033 J8 j$ l& M1 {3 V8 Z" K3 i" E
4.2.1 FPGA加速 103
9 S8 s/ r( x( C6 b( o4.2.2 智能网卡加速 105
7 X# w: F0 f6 d9 ^" P+ K0 v4.2.3 Intel QAT 107; W+ x* D2 W# h7 X1 {
4.2.4 NVDIMM为存储加速 110, N! R0 [! w6 a; k% b
4.3 智能存储加速库(ISA-L) 111+ U; a4 Q2 m( _5 [
4.3.1 数据保护:纠删码与磁盘阵列 112
/ P! d& E$ r j3 k# W4.3.2 数据安全:哈希 113
# C/ V5 h7 r1 W( g8 f4.3.3 数据完整性:循环冗余校验码 115
( c9 S0 S \; L! v( O/ O' u4.3.4 数据压缩:IGZIP 116* C/ l2 S; Y" a% l* g8 k
4.3.5 数据加密 117# R/ q; M# X1 n% u$ N4 A
4.4 存储性能软件加速库(SPDK) 117
, Y2 T+ s+ c" d; J) }4.4.1 SPDK NVMe驱动 119
' s- V0 z( g6 J5 |4.4.2 SPDK应用框架 133. H4 P( E# l7 q& u. n9 ]( Q
4.4.3 SPDK用户态块设备层 1369 G" }+ L9 z) H9 C6 U
4.4.4 SPDK vhost target 150- Q' g% M" l U( b
4.4.5 SPDK iSCSI Target 156
/ C0 {0 K: z- F! t4.4.6 SPDK NVMe-oF Target 163) {8 l Y g1 o# T9 u; w. w
4.4.7 SPDK RPC 1652 T, L" K: r, u9 h7 U
4.4.8 SPDK生态工具介绍 172
8 }1 z h# s7 ^第5章 存储安全 181: U4 z/ l: w/ C
5.1 可用性 181
4 o0 `7 L9 y: I: S( \4 {5.1.1 SLA 181/ @1 j. M2 ~3 z/ B8 r; w# B7 b
5.1.2 MTTR、MTTF和MTBF 182( A) [) V; A U3 ?6 s# T
5.1.3 高可用方案 183
4 f( N: S n" m" ^; p5 \5.2 可靠性 185
8 n- V! O9 J- L* O5.2.1 磁盘阵列 186* K: q4 f9 N5 m* j: ^/ E" r
5.2.2 纠删码 187) q4 o% v6 c. ?& x# a5 H) v2 d! Q# N
5.3 数据完整性 188
9 L. @+ j. \8 {. b; a* c0 W5.4 访问控制 189
6 g* m$ `! T/ R9 i& i5.5 加密与解密 1917 p% r) o7 [4 c8 g% Q0 I. b' X) }
第6章 存储管理与软件定义存储 194+ x) |! j v0 M$ M+ U% ^
6.1 OpenSDS 194# |: \% B) f; i; H# ~7 F
6.1.1 OpenSDS社区 195$ O" d* z0 x3 _
6.1.2 OpenSDS架构 195
- }, k i9 L( O/ r8 e0 u6.1.3 OpenSDS应用场景 198& M! W0 A/ P4 M+ C7 E: c; w6 u
6.1.4 与Kubernetes集成 200
4 ^* B5 E/ H$ ?7 m- o6.1.5 与OpenStack集成 2003 D$ z' R6 p3 L0 j. x$ d
6.2 Libvirt存储管理 201* g; ?/ S% f" V8 l" f
6.2.1 Libvirt介绍 201
) @. S/ I" _# J' o5 I/ ^6.2.2 Libvirt存储池和存储卷 205! J: ~" j/ Y/ {7 E7 @3 l
第7章 分布式存储与Ceph 206
/ M. n# b' u" b' F: |0 f/ A7.1 Ceph体系结构 209, V% B. y9 B& T9 E; `; W- W7 A
7.1.1 对象存储 211/ i. w2 K a2 Z7 W7 _$ ~5 e
7.1.2 RADOS 212
4 d1 G/ Z: n5 Y) D9 l* I8 F/ P7.1.3 OSD 212' O; ~( u1 @9 w6 \0 w1 O
7.1.4 数据寻址 214
7 x9 N! j( X4 \1 `5 {8 m7 r7.1.5 存储池 219. c1 c/ V* ], a5 o4 T6 r! \* r
7.1.6 Monitor 220
* f9 D: X1 M. w* W* H) f. Q- _" s, Y7.1.7 数据操作流程 2276 }, D; H; q" t4 y
7.1.8 Cache Tiering 228( ~6 V6 X1 b. ?* r
7.1.9 块存储 230
' v8 E7 k$ B7 v7.1.10 Ceph FS 232
7 }* y" ]9 t' t- T7.2 后端存储ObjectStore 235
& A4 f* |7 K% ]/ R1 [* y6 H7.2.1 FileStore 236, s) i. G4 q$ p) f+ G
7.2.2 BlueStore 2408 f. c1 i/ @0 ]5 r2 A* O" J
7.2.3 SeaStore 243% G7 S' i6 g4 w, v! m) a* @0 o5 ^) t0 c
7.3 CRUSH算法 244
1 p" n8 k. Q7 I- F4 z/ A7.3.1 CRUSH算法的基本特性 244' ?; B! G! B9 p
7.3.2 CRUSH算法中的设备位置及状态 246
, v `% h( V2 x7.3.3 CRUSH中的规则与算法细节 249" Z4 w+ @ ~0 t" `- |5 Q
7.3.4 CRUSH算法实践 254
" F% S, @0 f8 Q7.3.5 CRUSH算法在Ceph中的应用 261) v1 g- u# |8 G3 M
7.4 Ceph可靠性 262& W% b. V; @! t& ~& y
7.4.1 OSD多副本 263
3 i9 p) ] ~/ ? \' z7.4.2 OSD纠删码 264- c4 Z0 p8 `1 `( i" u' t( e
7.4.3 RBD mirror 265
0 D( x: D0 D1 L. D7 |7.4.4 RBD Snapshot 267/ n4 ?" M1 w, B" |3 o5 T& H8 W1 x
7.4.5 Ceph数据恢复 271
, }& D: U0 K9 W6 B9 _7 \# i7.4.6 Ceph一致性 274: x, A {1 f$ J2 u1 Z' i
7.4.7 Ceph Scrub机制 278- H- z, n6 u0 ]9 U! R5 e9 l1 Z
7.5 Ceph中的缓存 279
H+ \$ c9 h! j5 y. i5 E7.5.1 RBDCache具体实现 285
8 _' F' _: ]. J3 s% f7.5.2 固态硬盘用作缓存 287+ q" O p3 m) H3 V1 h$ \) o, w
7.6 Ceph加密和压缩 289 ~9 C0 j0 E4 W- n: }3 _0 g$ A0 d
7.6.1 加密 289
4 s4 w# w4 n# H) }: r7 R7.6.2 压缩 2911 M2 k. v+ s$ |" l8 _+ ?5 F5 f0 @/ M
7.6.3 加密和压缩的加速 2946 e9 ?# y. Y) }7 |8 j# ^
7.7 QoS 2949 y) N. m8 k2 I% u, G
7.7.1 前端QoS 294
+ F& ^7 O5 D$ |) _) @8 X7 x) S/ J7.7.2 后端QoS 2958 I5 j$ B2 n0 D- k: M) j) W
7.7.3 dmClock客户端 297' }) M3 J0 J$ B% I7 Z1 g5 z& b: X
7.8 Ceph性能测试与分析 298
/ l; M* C' U- B+ B! [1 C, U7.8.1 集群性能测试 299' H( o" U: J v3 u8 @. _
7.8.2 集群性能数据 304* ~% h4 ^; k8 {; l1 j% m2 }; t
7.8.3 综合测试分析工具 3078 s4 D$ c( |, g" D" J4 e
7.8.4 高级话题 311
; Q9 m* F- s X7.9 Ceph与OpenStack 315
' j M3 f0 r- ^6 D1 j/ H+ M第8章 OpenStack存储 318
' F/ h* C( }* {6 w8.1 Swift 321% N' K8 f2 L1 l; p
8.1.1 Swift体系结构 321
( m$ U( s% ]8 h6 h& T$ W& e8 O8.1.2 环 327! i( u0 o& f: j- S1 u& ` L% i
8.1.3 Swift API 330. C; X" t5 g0 t- z3 [* q O
8.1.4 认证 331% K. _" P k) w1 Y
8.1.5 对象管理与操作 333# g1 h* E* H( }( F, u+ d% U) Z# Y
8.1.6 数据一致性 337- g4 Y* ] L- L9 ^( W8 M) ^3 |+ I
8.2 Cinder 338
' X( Y) F' K; [8.2.1 Cinder体系结构 338
: g8 F) D# `" D0 ^8.2.2 Cinder API 3416 \ t9 _. L5 B5 Z
8.2.3 cinder-scheduler 342
% S: B: u- Q/ Q6 Y2 S2 t* g! ^8.2.4 cinder-volume 3437 E! o+ W. f5 x" h0 r' l$ ^% ]4 n
8.2.5 cinder-backup 347
' n0 ^5 n6 j! S9 `( k% B; d第9章 容器存储 348
7 m" F. z# M0 v; A: p9.1 容器 348
3 n# o0 B1 _5 q0 T9.1.1 容器技术框架 3508 |: h. n# \* B! w1 `9 @- n
9.1.2 Docker 353 java8.com5 t8 Y6 u9 @- o) m' Z
9.1.3 容器与镜像 355
- [0 D5 ]! I3 F$ K) ~; Q9.2 Docker存储 356
1 p) l) C4 S; T. o& c2 z+ e9.2.1 临时存储 357/ y y$ E) i$ |
9.2.2 持久化存储 366' i6 b4 \9 G. [8 l
9.3 Kubernetes存储 369
3 e+ [0 d0 L' H+ C9.3.1 Kubernetes核心概念 3703 X# r6 Y8 K! d3 n
9.3.2 Kubernetes数据卷管理 376% [1 C! I+ ]( K2 g9 A" g, `: |
9.3.3 Kubernetes CSI 3802 G' n: N$ |/ C( [ w# Q; t
2 |' p# Z8 [+ o- C" T( M+ U