|
|
楼主 |
发表于 2022-7-20 13:38:27
|
显示全部楼层
其他方式文档介绍::
" `- W+ @$ a# S& R" N4 B0 z. E 创建云盘volume-id,大小为1G9 v2 |1 ]8 b6 B+ E
, r2 w8 G! B/ w* u6 {( w()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G e) J4 w8 J/ `# Y; V+ ]( p; G
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id" o; s5 t. @& |, s3 U
volume-id 1GiB 2 : ?1 m( _9 w1 P- h V
- o+ k8 c' g" X' r+ [. {9 R
8 o! g$ N: I7 ~& t5 [" a& L1 W
2. 先尝试进行diff store, 创建backups中的base盘
. t: K( A& \* L3 D% x! O* F# f! E/ |! Y t2 k' ~8 e: Y
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G% o+ C0 {/ w9 d9 S
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups \( c" n3 F B% z
NAME SIZE PARENT FMT PROT LOCK
" \4 ^" t% g0 y v9 K9 Evolume-volume-id.backup.base 1GiB 2 5 b! h+ g0 M" M8 b2 @
# {3 B/ s# {5 D7 ?/ }& K7 P3 ]4 ]- M; k T2 e, d) s3 ~( }
3. 创建volume-id快照1,命名规则如下 S0 h1 z$ W- w! `" y* J: b
* a. c8 l0 r. `( h! K9 I
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id.snap.time1
d( K5 g1 e- {/ Q5 O4 v()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
- E" B% x+ X4 `$ Xvolume-id 1GiB 2 3 X/ a; @6 J3 H# ?
volume-id@backup.backup-id.snap.time1 1GiB 2 , a% C- G( F k- ?: i& f0 H: n
' i# i7 ^" I' W" f, v- Z; ~7 x9 M N0 z, i+ l( y
4. 导出云盘和快照1的差异1
+ ?" M+ e' i5 v
3 o j+ t: e d/ V5 R% ^4 ^()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1* w0 b$ o- u, q; W j
Exporting image: 100% complete...done.
. W7 |& K. g p4 t/ P()[root@busybox-openstack-f7bcf88-hgdkz /]# ls
9 f1 f& q3 U# s* f9 W. ttest_diff_snap_time1
7 [ ^* I9 [# j" `! z8 J. l- Q [( E1 Q. A) W; s6 B" D6 ^
# u- }! V u3 k- }) @! E5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照
/ U& [, ^6 r# n. g2 M9 H7 ?" Y2 f" x W
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base
( o/ c* K4 Z8 ~" Z; H7 ]6 t& s& @Importing image diff: 100% complete...done.
+ E4 g, M0 I3 A()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
0 a z8 t1 x$ c4 KNAME SIZE PARENT FMT PROT LOCK 9 x4 `; O# \1 {% c
volume-volume-id.backup.base 1GiB 2
9 N7 n+ V4 V3 nvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 : N: D6 N6 g Q# \& Z4 _
9 z& n( A7 p, P( `4 r6 D
Y8 T" f% E/ k/ a; ?: \6. 第二次做增量备份时, 创建volume-id新的快照21 q: N C2 m W1 D$ r; X/ j0 z
8 i+ l" \, N4 [1 Y( ^, U
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id2.snap.time2
* J. Z! I' R5 B()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups M- P3 o; q- ]( P1 g5 K8 B
NAME SIZE PARENT FMT PROT LOCK
/ j8 I! F% x2 T7 |6 d# Jvolume-volume-id.backup.base 1GiB 2 3 Z' g. H2 y; |3 W. I, r* x
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2
/ L9 u( {3 q) u1 T6 J()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id2 V0 g0 b( l0 Z- Y7 z( {- J
volume-id 1GiB 2 % i8 h9 {* w }/ R
volume-id@backup.backup-id.snap.time1 1GiB 2 . t: a1 J6 g: g6 z$ y7 J/ `
volume-id@backup.backup-id2.snap.time2 1GiB 2 - L# _/ T$ N0 N* |# W5 K
# G6 w' I- L/ u
: E3 h& s, L+ y2 f7 G: z) a7. 导出快照1和快照2的差异2
7 R: n( Y% K0 l E. w8 H2 `
* I3 I+ ]6 S: t()[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/ ~( r3 f( A: S0 d' w2 D
Exporting image: 100% complete...done.
9 K3 }4 o3 h+ X# N; x0 i
4 a* d4 s- u2 _0 D3 t2 E8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照) j/ q$ l x& B8 }
) A/ y0 O' k3 n. G8 n()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base
8 ^5 z4 Q6 q0 \8 t; s7 V' ?7 iImporting image diff: 100% complete...done.
- [" g' L4 p: v, @()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
7 S& I1 C' ^ JNAME SIZE PARENT FMT PROT LOCK # c' b1 i; c6 p
volume-volume-id.backup.base 1GiB 2 H$ W# e0 Q) ^/ M1 f
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 0 c! C w+ Z* H) }, ], R/ }
volume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB 2
6 B8 p3 _& I* ?! e# y& L* h' ]/ C$ E) G% V5 u6 t! {/ E$ v$ S/ t
! m/ \: n, ]& m+ f/ _9. 删除volume-id的快照1
% s- [1 @5 i8 z
Y4 p$ [1 L+ |5 L! o. P6 P/ B' H" M. H10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。) d% W. J$ X+ c( k9 F1 t
( K5 q: }' w9 i+ R) u+ M5 c* G. L
11. 备份元数据
: s, L% P/ p, U, s" l C! g- M/ P4 h
三 RBD恢复备份的实现:
4 O/ L0 I3 S, @8 N/ J8 w; k3 H1 先检查是否满足diff restore, 需要满足下面条件; c# W4 ^4 V: ~' c7 t" a7 N
8 ]$ S5 x, u/ Y3 D/ Scheck can diff restore:. F0 D) p2 U. M3 _3 o
1 base exist: backups/volume-volume-id.backup.base" y# L3 T4 }( r
2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time1
$ f9 r7 m) c) ^4 N$ |) F& y: K8 X4 w" o3 volume file is rbd
( Y/ Z! e: {! H- a$ t- C4 backup[volume_id] != new volume_id
1 o9 p& [9 G- E( E5 rbd volume has no extents (extend)8 s, i8 g6 j7 M- h' k+ K6 P2 W
! d' d3 d7 [1 o. c( g L
5 l0 R+ x$ c: P1 C7 v2. 如果满足diff restore条件, 先导出对应backup-id的差异
& ?+ p/ S" e- T5 q6 K4 o+ N3 v; m0 k
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id27 i( w2 z3 n I6 h8 c# e y2 b
Exporting image: 100% complete...done.! i! ?$ \) O, |) D1 J! x
+ g$ _# k$ E3 b+ P) g/ e0 A' V+ A
. }( ^% ~! H+ }1 `( k- A% `+ {3. 将对应backup-id的差异导入new-volume-id
1 q" f/ v* j& k, ]+ k
% q7 y P7 W: G& M% P4 y& a. q% \8 T()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id5 N: ~! j8 o* u3 c' k
Importing image diff: 100% complete...done.
5 M5 P% h( B0 k/ V0 j- s0 x- c/ S) T()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
5 P7 @0 [, X/ E! {2 O& Y5 \NAME SIZE PARENT FMT PROT LOCK . w' r/ B7 S3 X
new-volume-id 1GiB 2 6 ?: h; i- g3 q9 x6 n0 \
new-volume-id@backup.backup-id1.snap.time1 1GiB 2
: k$ G* K, s) vvolume-id 1GiB 2 % e- @& `5 N3 S
volume-id@backup.backup-id1.snap.time1 1GiB 2 . N, `9 p" H7 A3 F9 ] r2 M3 h+ ^
" S. l% f! b4 b3 @. F& k9 e' |7 k, y* Q/ C6 T) ?$ } ~0 Q
4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。
' p7 X q' b' L1 X0 H* V( R2 [
. l u. @) a% e* g1 y4 W3 j- I()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G
2 l" _( J3 l7 q3 L/ Y9 _# `()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2% _% d* U4 T D9 a' U
Importing image diff: 100% complete...done.
' r, `. J3 i- a! L5 J()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
$ x* S7 z& V& B8 V; r/ y2 VNAME SIZE PARENT FMT PROT LOCK 6 h e2 a% s4 q: G
new-volume-id 1GiB 2
+ {; [: I% I8 knew-volume-id@backup.backup-id1.snap.time1 1GiB 2
& ~! `6 v1 k& E6 r6 Fnew-volume-id2 1GiB 2 6 H" F" G. Q i. O1 U! q7 ~
new-volume-id2@backup.backup-id1.snap.time1 1GiB 2
4 T: v6 ]% \, m$ F4 L. G! ivolume-id 1GiB 2 ' {6 g5 T! q- f3 r( E
volume-id@backup.backup-id1.snap.time1 1GiB 2 , @# d5 |+ S k7 b2 Q
()[root@busybox-openstack-5c687fdc9-mpwjd /]# " S4 C0 o+ X& y2 _
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G" M9 R! ^' w& \% M( r% Z
Resizing image: 100% complete...done., u4 Z1 T: Y6 o8 K8 F6 N" C" N
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
& n! m1 N: Q1 Y$ z" n& u& m3 n/ i% |/ vNAME SIZE PARENT FMT PROT LOCK ! T3 K* _; I7 K( p+ I6 Z3 i4 w
new-volume-id 1GiB 2 1 {7 S' n2 h6 t6 g( v4 x- J" ?
new-volume-id@backup.backup-id1.snap.time1 1GiB 2
2 q3 x) X2 r8 i) y; m4 Cnew-volume-id2 2GiB 2 3 ^7 z3 @+ W+ b4 n+ p3 K2 i
new-volume-id2@backup.backup-id1.snap.time1 1GiB 2
% E g7 o' y$ C" {volume-id 1GiB 2 0 U$ d3 q* ?: W- l$ ]: p5 I
volume-id@backup.backup-id1.snap.time1 1GiB 2
: g) c5 k+ }2 J, ~) }0 P# f
p# I8 A" o6 u* ~6 Z$ S
! X3 n3 O: _/ w: X* M; `- }
% R. u% ~, P% B) ?7 G7 @; a5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
5 i& | G0 X0 B: \4 z( {! n. ~3 s* f$ M% [2 d
6. 恢复元数据 |
|