|
|
楼主 |
发表于 2022-7-20 13:38:27
|
显示全部楼层
其他方式文档介绍::
, e2 j- e, t# F' Y 创建云盘volume-id,大小为1G# C |9 W. A% p
% R5 I% x3 D; ]1 @; H; h()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G
0 Z O" V @' T! m5 Y2 C) }()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
0 v% {4 D- \ C4 a9 U' s9 a/ u/ @volume-id 1GiB 2 : t/ X# T: }4 r6 H
" j% L5 ?2 z. S
$ M: q5 E' f# p1 ~5 m$ A7 e2. 先尝试进行diff store, 创建backups中的base盘/ k, l! ^. N- i: E+ L
! c1 @- v6 b `- M3 E* h2 H( x2 G6 E()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G
* X4 Z/ U' O) u0 G2 |7 u()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups9 g4 _0 }' P. ^7 F( A4 f( K' A
NAME SIZE PARENT FMT PROT LOCK
8 g0 M" X' t: l) I3 p( x8 dvolume-volume-id.backup.base 1GiB 2 ' q3 G1 a$ Q8 b# l0 s7 T
' _0 K: V. o: a6 c
9 f1 B0 E7 ^, x& }( g- T2 e( C9 \9 B
3. 创建volume-id快照1,命名规则如下
" P, o9 r6 v8 R9 ^( w: j1 L2 ?- `4 p" m
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id.snap.time1
! r" l' q6 C! p5 d9 @" v()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
4 F) s5 u% K6 K( m& Z V% `volume-id 1GiB 2
; f! j% R. C0 F8 Z7 t/ pvolume-id@backup.backup-id.snap.time1 1GiB 2 , B, q P3 b# Z! R8 Z. D2 T
5 G6 n7 {& N; p; w. K' @) E9 w
& v' y/ \/ r# a# K3 N( u- t# e8 A) w
4. 导出云盘和快照1的差异1! Z6 D, s. f& E6 D/ ? R
1 w. Y1 @7 Z( q( K+ p
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1
9 b6 S# t/ `4 z- \$ }Exporting image: 100% complete...done.
1 O, y3 [4 F/ V' g9 Z! g7 t1 p()[root@busybox-openstack-f7bcf88-hgdkz /]# ls
9 w4 `( X$ @0 d2 M4 Ptest_diff_snap_time1
& a+ ]% D* G) o; h; @0 T: L7 U4 q' x* a6 Q d( W# i% Y
* g$ x8 z+ ~ Q) R
5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照
. ^) q4 b$ f0 ~" M
8 v8 c( x$ f8 F()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base* i2 d# f. m+ S8 ^
Importing image diff: 100% complete...done.! L+ }3 P7 {+ i! n: I" @3 w
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups( I$ r: j, s3 g5 q/ c, F
NAME SIZE PARENT FMT PROT LOCK
3 @- A( h# m; C3 }( u/ h C, G0 C9 {volume-volume-id.backup.base 1GiB 2
2 U/ Y {/ o3 Q7 X5 p1 S5 Vvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 : d/ U4 T' \/ p
, t- d1 \- K* V7 a8 ^& B
, a8 W: W. d5 j: R
6. 第二次做增量备份时, 创建volume-id新的快照2
. j( x b8 G+ S4 C8 E
0 Q; x# h7 V) l* h7 H5 J0 U. T()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id2.snap.time2) f! b( d1 P) c. w) l
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
`" ^, {' p; u1 v! J- }NAME SIZE PARENT FMT PROT LOCK
8 }% o) t; ?1 B* L6 {( ~volume-volume-id.backup.base 1GiB 2
' u4 R& j+ _8 H: ^3 y) ivolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 8 i8 V M5 t: D5 U
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id, o/ N# a) j/ l7 H. I) X4 s
volume-id 1GiB 2
) A3 w0 @9 p8 }- a @, E/ v+ B/ _volume-id@backup.backup-id.snap.time1 1GiB 2 ! |8 n- a8 Y8 I' z4 z
volume-id@backup.backup-id2.snap.time2 1GiB 2 ! Y+ [1 G3 T& q6 C' S' e, P ~
( `" ?. p2 b% Q0 [+ k
1 Z6 f. J2 Q) y; D; n, f: }
7. 导出快照1和快照2的差异2
- Z" t4 `. D- @: A- V: `
8 ]8 E7 q* n: H6 D5 }2 k()[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
* C5 u( }! i7 nExporting image: 100% complete...done.
. x1 ^: B& E5 m# V, C& j3 n$ z M& r, o; T# u! w7 J
8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照
0 y9 j+ {$ U/ w& P$ y+ @! S% n5 S2 m, l9 O5 z
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base
! L ~/ i! z# W) BImporting image diff: 100% complete...done.( s8 \; L; Y+ F
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups1 W1 o9 @/ g2 ?9 a( N$ ?, g1 l
NAME SIZE PARENT FMT PROT LOCK & ?4 ^/ ?" c& M" z' M% e: G
volume-volume-id.backup.base 1GiB 2
( t% u# ?% S/ P4 I7 h1 y+ f, Tvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 3 l: e: @* b/ c# H+ ~
volume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB 2 7 J; O2 T" U0 a1 z
5 N4 v& b/ ]( h/ \3 o- `( }. F
D8 e- M9 J. ^: _# T" ]+ o8 }' m" m2 R5 w
9. 删除volume-id的快照1
0 B: ?( h! b% A1 y- O" o& n5 N$ ^4 s' {
10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。9 `9 H x$ X m
3 a0 Y# U# I$ P0 W
11. 备份元数据
, |- |" R6 H5 f4 t7 N# {2 M% u* j- ~0 S- R
三 RBD恢复备份的实现:
* Z v& g$ f( @! W% }+ M7 u$ k0 f4 x1 先检查是否满足diff restore, 需要满足下面条件( q2 I) ]/ L$ ?& g4 n% w
4 v2 @7 M7 D& t3 x0 \) n
check can diff restore: F/ f5 n$ q% Y) ]) ]" E
1 base exist: backups/volume-volume-id.backup.base- Y4 S7 u# X3 ?5 W/ x6 S
2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time1( i( Z% p( X$ O
3 volume file is rbd
7 y; l+ i& I; h5 G n4 backup[volume_id] != new volume_id* c! N! |/ q; B8 A
5 rbd volume has no extents (extend)
e! ^3 i6 G# _9 ?5 [, n5 u& l, T% h- G) ^
0 r* d: n' d3 i9 ?6 Y' n2. 如果满足diff restore条件, 先导出对应backup-id的差异
* K. q5 ~, r/ \) d2 C
9 ^) _ ?& o5 e9 x" R()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id2
+ A* ~5 h. c u" mExporting image: 100% complete...done.
. A0 [3 @ [) H; o' \
, r- | u* |+ j# C5 I' K& T, o& b$ y3 P
3. 将对应backup-id的差异导入new-volume-id
% L3 }3 W z6 S2 i; x* M$ ` } `. _
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id
. X& V2 E$ @/ ]7 o$ s ^Importing image diff: 100% complete...done.# w7 b5 L% }! ~
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes/ S2 S/ g+ S8 T" O3 Z; n1 L
NAME SIZE PARENT FMT PROT LOCK , o8 \: Z9 H/ r3 s9 W
new-volume-id 1GiB 2 & Z! s, y' {7 G% K; d# r
new-volume-id@backup.backup-id1.snap.time1 1GiB 2 . V$ Y. z. g% ]" n
volume-id 1GiB 2
- y* Q- G ^5 W6 V6 b2 wvolume-id@backup.backup-id1.snap.time1 1GiB 2
8 i z3 l% H, n" k- g- ? o
- @8 I: z6 }1 @7 x- h ]8 S; B+ T s4 E" t7 s# _
4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。
& G* V5 ?" l& e3 }& n0 h# L
3 o, S' ?8 f7 c2 l/ Y()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G0 k: N' C; W( R0 N8 }/ O
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2# P6 P% n+ u, j
Importing image diff: 100% complete...done.5 U X- L- V/ l3 @0 s* m
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
/ b% K2 T. N T! ^/ GNAME SIZE PARENT FMT PROT LOCK
3 ?3 W& B4 m1 u, K5 D) {; mnew-volume-id 1GiB 2
) ?0 d( I7 Y" ]# A2 Unew-volume-id@backup.backup-id1.snap.time1 1GiB 2 1 c g# ^* d3 H& ^3 n, A: d2 \
new-volume-id2 1GiB 2
. V, [# W% e% |* jnew-volume-id2@backup.backup-id1.snap.time1 1GiB 2 , r& O/ n6 C5 Q3 l. Z m3 p
volume-id 1GiB 2
* y7 R( l* n8 b k* g9 Cvolume-id@backup.backup-id1.snap.time1 1GiB 2 . F4 A# @+ p* j, M6 c
()[root@busybox-openstack-5c687fdc9-mpwjd /]#
6 n: n$ c/ N" O1 F0 A9 ~()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G9 ]9 R3 T9 ^" I: B' E. p
Resizing image: 100% complete...done.9 R, W/ _, ~6 t4 M! r
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
: {- ^2 y O8 ^0 l: }$ w: c5 _( jNAME SIZE PARENT FMT PROT LOCK 6 r4 N E0 s9 a* Q
new-volume-id 1GiB 2 4 R7 T: V- Z4 i o" V
new-volume-id@backup.backup-id1.snap.time1 1GiB 2
+ v7 G2 L- ^: \% y. n0 ^9 L( V$ Gnew-volume-id2 2GiB 2
- T7 h6 R O0 n; J3 k0 s' Wnew-volume-id2@backup.backup-id1.snap.time1 1GiB 2
5 B- }7 t/ V! d7 Z& F1 Ivolume-id 1GiB 2 l$ E7 |$ T: C; P2 j( H
volume-id@backup.backup-id1.snap.time1 1GiB 2
k" v% s. X/ q8 g9 B6 |$ b) W& s# e0 t2 ~& P
' _+ o" ^% O% U' q3 \7 |
6 Y1 L4 v4 z) {+ t: x) B7 \5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
) C1 e3 ?! b) E) I) q0 w* I9 P0 R. }, Z! o7 X6 o( B/ J6 y
6. 恢复元数据 |
|