- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2022-7-20 13:38:27
|
显示全部楼层
其他方式文档介绍::6 Q* K/ t/ V* c r" H( {9 `
创建云盘volume-id,大小为1G
: |, D1 }! H* y/ |$ v7 U q' I$ G. N1 e+ b
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G) a' @3 R1 i6 ~2 o
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
9 Z1 p$ i2 Q, f2 `$ @( ]" pvolume-id 1GiB 2 4 o6 H- h1 K3 d$ @
' R' }& g7 d$ z( [3 g( v7 [
W+ {. j' I' R* ` ]- F4 E
2. 先尝试进行diff store, 创建backups中的base盘
, N. @2 |& G' p* k
- n4 n# k b6 ^()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G
2 N6 W7 e- D1 e+ d( H()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
8 \8 w) D! n3 M K6 q! ENAME SIZE PARENT FMT PROT LOCK
) |7 k1 o5 E( H" f$ Yvolume-volume-id.backup.base 1GiB 2 - [3 ]$ A) |7 U x9 C+ J; W2 ^
7 R h; n8 I' T
" k9 Z8 l. C) x! S9 Y
3. 创建volume-id快照1,命名规则如下
3 t4 h7 |) W9 V( Y4 {0 C5 H
0 R8 ` T4 t C1 s/ K& q) v()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id.snap.time11 D" P) S+ T3 p6 L4 i
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id! h. q/ U# J1 ~. f0 }' M. j/ o0 @$ U
volume-id 1GiB 2
( n8 w/ n! E5 Q! R: G Ivolume-id@backup.backup-id.snap.time1 1GiB 2
# w( a- Q( A# A& P; i! k2 _( N" e8 f
( J K- l( ]5 S# p/ h8 {' x5 ]
4. 导出云盘和快照1的差异1* o" X5 w- [9 `# U+ L
; o( @( n4 E( S$ t3 j+ }
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1: X6 _1 k; E6 l+ q, _
Exporting image: 100% complete...done.
' B C& n C7 Z: E( ~()[root@busybox-openstack-f7bcf88-hgdkz /]# ls9 v6 M( d; R* ~0 w# K
test_diff_snap_time1 ' g- A; @! e( F5 w9 Y
3 _4 v" A( Q9 N }% c7 k" u* Z
8 w, h% o7 i+ C# H. T% ~5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照1 e- Y& l% P0 W; R: S) Y) \$ S
\8 D" k6 J" D()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base
1 h$ Z! M8 W B8 FImporting image diff: 100% complete...done.4 [! c0 P: Q; V: q
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
m2 N8 e" I8 bNAME SIZE PARENT FMT PROT LOCK
* d% e I! T2 |7 b. ~volume-volume-id.backup.base 1GiB 2 $ D7 p' s3 ]9 q; V" D: f
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 6 m2 X: w+ k; m0 x3 l
- K3 o' m! u+ J" o4 f
8 b L- L1 s, s3 {- t$ q/ r6. 第二次做增量备份时, 创建volume-id新的快照2
1 i6 R8 q( i/ O1 o# c
+ `/ p; V0 l! K- H; P5 f()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id2.snap.time2
4 m) w& Q/ Z/ J9 L()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
) ]7 _, U( B# o8 {; z# P% ]NAME SIZE PARENT FMT PROT LOCK
, x1 Q% g0 G8 x% B" g% Uvolume-volume-id.backup.base 1GiB 2
4 f( S+ n7 c8 r: z; K& ]# S# @# ~volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 $ p/ L2 _ t C! j" J3 C
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id, Z/ U& ~0 {( L: i" t6 c% u
volume-id 1GiB 2 + R) X4 m5 m F/ [' \) d
volume-id@backup.backup-id.snap.time1 1GiB 2
7 L5 T/ o, g+ T% ?# q+ ~volume-id@backup.backup-id2.snap.time2 1GiB 2
0 v: T* ~# d. D" U8 Z3 N
) g: C; A4 q7 t' ^/ D
3 D) P! a* ~, s r9 ~7. 导出快照1和快照2的差异2: ^' K0 c# h4 I. n* L
& Y" ~& G) b- A0 I, r# r()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff --snap backup.backup-id.snap.time1 volumes/volume-id@backup.backup-id2.snap.time2 test_diff_snap_time1_time2
; A8 P) d* |0 Y) P2 r: m9 ~Exporting image: 100% complete...done.9 u- g; `3 k0 x# o6 ?* a
( a& ^6 }# E$ g5 H2 L7 q8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照
* E+ ^" }7 b! L1 K! x
) `: n$ n1 |) D" G/ J* M3 T& w! n()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base
" w% ~, l% D" }/ yImporting image diff: 100% complete...done.
8 R' a7 Z c: X g6 K()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
, l' g# V5 s1 a& N; n$ vNAME SIZE PARENT FMT PROT LOCK J i( K6 d f( D/ Y$ N6 }# _6 i4 v
volume-volume-id.backup.base 1GiB 2 8 J9 b9 E/ C) X5 j* T D
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2
% N+ z1 }- j" P+ z6 g4 J: pvolume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB 2
1 L' r8 w9 v, ^7 e# `
+ K$ Y! V( O, O- {% H
# \3 r0 {7 v% v, D9. 删除volume-id的快照1
4 j5 G5 K) h# H' T5 q5 o) B9 S4 y
/ F+ N- ~2 X/ {4 v" u10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。6 T" N4 Y+ n1 s. V; u2 Q5 |1 R! J
( N+ a p' Q1 N% X( b; {& F( W1 V
11. 备份元数据
\" o" v3 }5 Z% ^! {1 J. k/ n6 ]6 U0 m% W) g/ W4 z6 p% D/ H
三 RBD恢复备份的实现:
: P4 j* v2 h( C Y1 先检查是否满足diff restore, 需要满足下面条件/ n" w) Z# r% T5 u% `# N2 S6 L
( E1 \/ k" d- u Y Ncheck can diff restore:
8 M6 \7 m: [8 m r; \4 l1 base exist: backups/volume-volume-id.backup.base
C% u- b; E. n# L4 _' ` W% v2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time1
6 [% A. C! r& S: S) T# ^! o' Y$ }3 volume file is rbd7 e G, t% O' I* ^' k, h
4 backup[volume_id] != new volume_id
1 e$ C, `. p! D+ ^# v8 ` k5 rbd volume has no extents (extend)
% e. D( Y/ M) W, y& f- \* Q* L/ q' L1 @* C
q- l# e+ Y* Q. V
2. 如果满足diff restore条件, 先导出对应backup-id的差异) j/ R% c( z) Z: ~$ o- _) v
c1 S# a6 h: G9 Q5 W
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id21 O" U& n4 p( N6 G" I
Exporting image: 100% complete...done.! j7 T& F/ Y* _
- F8 l5 t. T7 h2 J. i3 V1 Z6 ]; i3 ?. b, I! ~
3. 将对应backup-id的差异导入new-volume-id* K! p1 e) _" G) B8 e
/ x' o. D0 S1 Y u" G0 A& j()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2 Q1 o& j% R. F: p7 r' h
Importing image diff: 100% complete...done.) O: A3 C/ N! W; R% l
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes# ~6 b; e; N' u- X9 |8 J& }4 D; N
NAME SIZE PARENT FMT PROT LOCK
+ t1 H: m. ^, W1 L" b* Onew-volume-id 1GiB 2 h0 h& b! z: z }7 V! N! ]+ ~
new-volume-id@backup.backup-id1.snap.time1 1GiB 2
4 R- r; H7 S: j* T$ Q6 Nvolume-id 1GiB 2 ' U+ s) u3 z" B, C
volume-id@backup.backup-id1.snap.time1 1GiB 2 ) }5 C' J& ^+ O2 D* g4 k
3 R P# M2 \# k; A- a
' h$ t& H1 i; s9 |4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。
) b* a% Y1 a3 r- p: v) T! h2 r7 m5 T1 x0 v
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G$ a* v( J5 Z7 N9 N
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2; P. G" A7 L5 n0 v
Importing image diff: 100% complete...done.
* W! X0 J" X& w- w7 q()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
8 O$ M: B0 w \* j6 rNAME SIZE PARENT FMT PROT LOCK $ p8 {" D$ c: Z$ O _ V5 O
new-volume-id 1GiB 2
+ S, X9 [' @6 |* `new-volume-id@backup.backup-id1.snap.time1 1GiB 2 ) j) l! {) N& o7 n
new-volume-id2 1GiB 2 - u# v% F6 v7 k! p2 n% T7 D3 H
new-volume-id2@backup.backup-id1.snap.time1 1GiB 2 0 o4 h, b0 |# l2 a T
volume-id 1GiB 2 0 ^8 T \: {& W2 d
volume-id@backup.backup-id1.snap.time1 1GiB 2
, k8 T ?0 V( E()[root@busybox-openstack-5c687fdc9-mpwjd /]# " N& O+ Y) s) R* S: J
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G/ P& v9 L2 z& c! S0 ~0 ]! H
Resizing image: 100% complete...done.+ L7 `; ?# v+ d& c
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes# e7 k/ o- H- O3 D& P9 [- o8 L
NAME SIZE PARENT FMT PROT LOCK
3 S" E1 R+ ^, `' X( ^9 Snew-volume-id 1GiB 2 # R, Q8 D ?% R) ]: ]7 ~8 Q
new-volume-id@backup.backup-id1.snap.time1 1GiB 2 5 K$ E6 G, ^5 z% F. N9 S0 t/ c* \
new-volume-id2 2GiB 2
9 k) r7 s1 o! Q6 c$ B4 U. @new-volume-id2@backup.backup-id1.snap.time1 1GiB 2 % ^* {2 ?/ j' O4 o* F% t2 W
volume-id 1GiB 2 4 d+ u# T" ?) |# N* R8 m
volume-id@backup.backup-id1.snap.time1 1GiB 2 / K7 P( C# D) o
5 {3 `/ \) m% U0 t1 u6 S1 W
: L" C# x- a) ?1 w
) c0 X2 F: C( ]+ V. j6 ]. b
5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
" Q8 [6 L! Y0 e* b; y, m! c& Z) B/ Z- u; I( P5 M6 A
6. 恢复元数据 |
|