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

楼主 |
发表于 2022-7-20 13:38:27
|
显示全部楼层
其他方式文档介绍::% X' M7 b% I8 g4 ~( F6 J, E9 ^8 B/ I
创建云盘volume-id,大小为1G
2 J' _/ U G; J0 T# o3 U* E" \% O4 y
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G
, l2 j9 V2 D$ u& F! {()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
. }: k' i( N, B, G' Jvolume-id 1GiB 2
/ Q( s6 D! [5 E" C( O5 g+ i* Z: _0 e# u" L( M
) T* `9 C" d3 T! x- F2. 先尝试进行diff store, 创建backups中的base盘
# L$ ]* C1 B" p8 i* j+ G9 z5 P( Q5 r) z2 r
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G& U' B7 H( |5 s
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
9 h0 z$ }7 Y' d9 K' J ?+ sNAME SIZE PARENT FMT PROT LOCK
1 \8 a4 k$ M% o6 z2 V+ }volume-volume-id.backup.base 1GiB 2 $ o, t' C! M% V9 V+ ]* H: N
0 U( W- P% B0 E4 U' w. I+ Y
! M" e7 y5 v' s: w3 o$ P
3. 创建volume-id快照1,命名规则如下$ q3 [+ x1 \ y# F2 B H
; @5 P q0 G: P; }
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id.snap.time1
# X! h- d3 m5 \7 d()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
6 m7 ]) H1 v* `" @; k3 K" zvolume-id 1GiB 2
" l1 G8 y6 J2 _$ Svolume-id@backup.backup-id.snap.time1 1GiB 2
8 v3 {0 g# a# `
: N) V- T- ^9 U8 W2 v* l3 Z& T% g+ }
7 {) S7 D v7 H7 g" V; A4. 导出云盘和快照1的差异1
* S7 k; G+ I8 w/ g: h
4 D* y3 n) d! I5 |1 O) o/ y9 y()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1" X v* p2 y8 j$ g4 s
Exporting image: 100% complete...done.
: k J7 D0 h/ j! O, i()[root@busybox-openstack-f7bcf88-hgdkz /]# ls% X0 [- d9 o9 x$ F% O
test_diff_snap_time1
9 }5 U {' y/ {) m8 k2 Z7 e
3 A) X' y! k3 A3 E( R1 U3 Q9 ^1 b, D: a# v' U0 \5 Q6 q3 M, _
5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照" {; o: m# j ?, B, i
3 Y* e% M/ J- n1 |- i
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base5 g3 i* x/ V8 z! d( r7 g$ I# a
Importing image diff: 100% complete...done.$ _) u2 ~( g' G) l" G" N
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
* a( K. y) }. }% n3 ]* ]3 eNAME SIZE PARENT FMT PROT LOCK 6 r, u' U2 j9 }- [
volume-volume-id.backup.base 1GiB 2 ' F* j& K# S. c9 c5 l) \
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2
1 s" ?( U+ w: D: c/ s" X4 F5 ?* ~. o2 j# J
) Y( J- I7 U$ w0 U: }
6. 第二次做增量备份时, 创建volume-id新的快照25 D9 d3 @; C) O4 M
/ [9 o. j: |7 }) U7 s* O/ R& y4 H' t6 E
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id2.snap.time28 ~8 u& ~. ^# g
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups% g+ Z: m- L" F; q# L5 M$ h2 R9 Q
NAME SIZE PARENT FMT PROT LOCK 6 u% [. u& p, ]# O* ]
volume-volume-id.backup.base 1GiB 2
/ j' b/ e+ d6 y; g! |1 ?volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2
& a5 D. F4 r8 G( h9 P()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id& L9 c' k8 d% u; J4 Q+ f
volume-id 1GiB 2
% O' U! Y# l" `/ fvolume-id@backup.backup-id.snap.time1 1GiB 2
$ k* L. _! l) r3 Bvolume-id@backup.backup-id2.snap.time2 1GiB 2 * y3 U- `) g2 m! Y `% U
# S, m a" u# u! n. ?! r( {
7 N# z9 K$ \! W0 d* k7. 导出快照1和快照2的差异2
6 j. K+ P+ j. ?: v$ U s% J( p+ w2 J& ?! i, F5 o
()[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, ]- k+ o: p& _/ B
Exporting image: 100% complete...done.
: b8 {# Z9 a ?# c7 o+ E: y& z: I7 @3 L5 |0 c
8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照/ I4 e" p$ T7 _' W$ i5 m- F, r7 R
W" l l1 n3 Q+ h! v1 c; X( v, ?* m0 N
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base7 m3 _$ o- N. h0 a. B
Importing image diff: 100% complete...done.
: z. J% @6 c- I$ b: t()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups- ^+ h, }8 f9 M3 d1 V T
NAME SIZE PARENT FMT PROT LOCK & _% I* r: ?! k: X$ @
volume-volume-id.backup.base 1GiB 2 " `. H( M1 @* N
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2
" z& A/ K0 n: o( W3 ?volume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB 2
% a9 b5 S% H: C+ d5 k$ j6 z; V- @) k _) ^4 g8 @
8 ]( Y; n5 P9 b3 K
9. 删除volume-id的快照14 ~1 C @! ?5 o" ?8 v$ W+ I
* M) V# n+ n) y o" |; K7 {5 W10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
2 r6 I4 u2 K' }( v0 T% u
7 k: f, P$ |+ \+ u11. 备份元数据
* q! z1 h5 {+ ~8 W5 g C7 s) z+ p3 M% f6 v R0 @8 @
三 RBD恢复备份的实现:1 w, i& W' l' n# \
1 先检查是否满足diff restore, 需要满足下面条件
, U6 C' ?; Z4 c. _" t8 |
7 s' z8 S% w3 N0 c' q/ O( qcheck can diff restore:( G) _2 W7 I+ U* x
1 base exist: backups/volume-volume-id.backup.base
6 G) G% E0 _8 U. ^! j2 D# \2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time1
k- ]! N" h( Q# B8 A3 volume file is rbd- o9 @% l0 k$ l S, |- _2 s- v( J
4 backup[volume_id] != new volume_id5 U% f5 e9 C5 }- d" g% U
5 rbd volume has no extents (extend); ?8 m2 M3 v, o+ p& y7 B" |
5 X/ S; ~7 _+ c1 h& P
) j K' T5 G+ l8 o: a8 C2. 如果满足diff restore条件, 先导出对应backup-id的差异
0 Y, v/ l9 j. \- u2 {: a& J- I" D: l% S. W6 T- K: }
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id2' t. Q6 h5 H% n
Exporting image: 100% complete...done.
- g* d k' J( t( K9 G$ \
% K- D3 i9 B9 O( q- ~
, H$ j: P' y/ T; P- P2 {0 U3. 将对应backup-id的差异导入new-volume-id
9 E- {( g% V- x) k+ b: F( b6 O* N1 N, K8 ]- F1 U
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id
3 g" f l7 w" r+ QImporting image diff: 100% complete...done.- N' G) `: O; _& U, {5 Y' x
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
: B; N* Y6 y: M! UNAME SIZE PARENT FMT PROT LOCK
/ a( D a- W; C5 rnew-volume-id 1GiB 2
% q6 C7 q$ c$ K3 i- e8 wnew-volume-id@backup.backup-id1.snap.time1 1GiB 2 $ V5 ~6 _% M3 f3 j5 v) y
volume-id 1GiB 2
* j( D+ }1 `8 p- hvolume-id@backup.backup-id1.snap.time1 1GiB 2 ! r( X8 P0 N3 P. f8 S2 G
. D1 b2 X3 c a; b! b- @" @
, G6 p/ T9 u" X- B& r4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。5 h, Y6 a5 W" d9 f
# z# J- @, m* H1 \% }()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G
; w+ o* M% q x()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2
* P' W1 o( _ A2 @Importing image diff: 100% complete...done.# o: P5 ]" I& V3 Q
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
8 x3 B3 \% @+ q4 ~. S( xNAME SIZE PARENT FMT PROT LOCK 8 c/ l L0 U& H' ^4 `
new-volume-id 1GiB 2 , w' Y6 |, A9 z, b5 ^! k
new-volume-id@backup.backup-id1.snap.time1 1GiB 2 7 U3 x+ l8 \0 y7 D1 f6 L
new-volume-id2 1GiB 2 : D1 _, F; W7 Y& e4 i c
new-volume-id2@backup.backup-id1.snap.time1 1GiB 2
5 z, U5 `9 O0 Z7 Q: C" }) O. Rvolume-id 1GiB 2
+ R; l$ V9 b) Y% t, ?( O; |volume-id@backup.backup-id1.snap.time1 1GiB 2
$ @4 f% W2 s8 Z h8 Q()[root@busybox-openstack-5c687fdc9-mpwjd /]# # d6 V# J/ ]" d6 D) `! H
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G }; D& G8 D) F
Resizing image: 100% complete...done.
5 T) n ? R% l()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
9 Q0 X+ R. _7 GNAME SIZE PARENT FMT PROT LOCK ( x* t$ H/ p3 B+ V# b u
new-volume-id 1GiB 2 7 F9 C. A( A4 _6 r U
new-volume-id@backup.backup-id1.snap.time1 1GiB 2 ' q+ h, E' n. g/ P+ Y! i% n
new-volume-id2 2GiB 2 3 m0 ^3 q# f/ i! R& P# u
new-volume-id2@backup.backup-id1.snap.time1 1GiB 2
\* D$ G4 U) C- T2 y& ^volume-id 1GiB 2
' q7 q! S2 _8 o1 O5 }$ P# _volume-id@backup.backup-id1.snap.time1 1GiB 2
7 h% o% E. c7 E( ~# Q
: @- \" E- x, }( F" u' i, f- x K: q3 A0 A
/ J8 }2 n3 U( f
5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。1 ^6 x1 _! Z$ K# B( N$ x9 v! `
" K* k& M& h8 \ s
6. 恢复元数据 |
|