|
|
楼主 |
发表于 2022-7-20 13:38:27
|
显示全部楼层
其他方式文档介绍::. R8 U. d6 i8 F
创建云盘volume-id,大小为1G
2 ~9 Y1 l( t( B, {* h- h k) X
+ E+ s1 t7 L1 p; X0 J5 C. c, Z()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G* v. n: A+ x3 P
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id3 q% Q0 c0 _% e4 B& q3 G
volume-id 1GiB 2 & Q, M$ k8 u* M( ]8 b! {; |' u
2 F' L* k! f8 o/ @- X- |4 q$ {1 h$ m( b3 ^8 r6 X& w
2. 先尝试进行diff store, 创建backups中的base盘/ ~2 r9 j/ _ w! V- m' @$ d
5 B) ]7 Z, e$ j: b9 |$ r/ H
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G5 p# ^+ y4 P0 b5 j
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups0 u/ a8 b" E* @3 M
NAME SIZE PARENT FMT PROT LOCK
* D! y1 j3 v F x+ Q* jvolume-volume-id.backup.base 1GiB 2 8 |1 K' X; z, t& o( a
% c/ b7 B/ ^1 E, ^) Q5 ?
1 E& p. h0 {% L% ^7 _3. 创建volume-id快照1,命名规则如下/ l- m& T/ R0 [' A; w
1 i" c5 x2 F7 I* s6 G()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id.snap.time1+ a% E( J4 D. M Z
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id/ ~* n F9 ?! B
volume-id 1GiB 2 9 A6 ~+ H: {0 m. T+ w
volume-id@backup.backup-id.snap.time1 1GiB 2 3 N Q( `6 Q) L& _8 }! j0 q4 B
6 B. \* z% ^: Z: ]$ r
& P3 u( B; Q0 l+ t) j1 h! b4. 导出云盘和快照1的差异1
( B9 z1 ^+ e2 h1 w2 \9 M/ O
^4 D' u! d- W) n5 R7 N0 V1 R" ^; t()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1: }' A0 C' m- S {. S
Exporting image: 100% complete...done.
' T& C& ?5 f- d( _0 @3 B: x" Z()[root@busybox-openstack-f7bcf88-hgdkz /]# ls
. n. D, A6 c$ `4 x0 p" [7 [* }) Gtest_diff_snap_time1 9 ?; T' f5 k6 }3 H, @8 v* Q& s
/ q* Y' o1 B# d9 A8 v P
; C0 b l4 X5 e* X0 [6 G8 a! F P6 ?' T5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照9 E4 g8 N" t* G% J u
* K6 \7 N& ^) p5 K()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base7 \2 ?. s6 s/ d7 ^- ?% b0 C
Importing image diff: 100% complete...done.
. Z4 I5 l# E4 t5 F% u()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups' R0 u1 `( b. a1 U8 J
NAME SIZE PARENT FMT PROT LOCK 6 O; \* g7 s R/ y# [: y/ R
volume-volume-id.backup.base 1GiB 2
: l- s- h1 B1 l8 U/ bvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 - s) ?4 h7 r* Q) C6 c( Q
5 U7 _' o! l5 x2 v3 x- S
# {0 O8 {+ d. D
6. 第二次做增量备份时, 创建volume-id新的快照2
% Q3 ~3 p2 i) i! v5 Q4 x: [) O9 }8 Z* S; m8 J9 v4 o V6 v. f
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id2.snap.time23 N5 {1 B! G/ ] ~2 E& u y' w% `) O3 S
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups+ s( l& I1 S& z8 p$ @
NAME SIZE PARENT FMT PROT LOCK . Z( X5 S6 r2 Y# `3 [0 }0 f
volume-volume-id.backup.base 1GiB 2 # l8 L# b% K: y! z/ Y% u
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 5 f8 H5 Y1 C" V
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id& _+ G0 ^" V/ f: u8 y6 {5 C4 x
volume-id 1GiB 2 & G j) ]/ @* U2 O( @' s( Q
volume-id@backup.backup-id.snap.time1 1GiB 2 3 X# I: c" ^% @ q
volume-id@backup.backup-id2.snap.time2 1GiB 2
7 L7 y% L2 v7 Z& t' v; r( @! ?1 o1 ]& x. h: ^7 X5 t
" H' Z# S, L" [* g- ^$ Y5 T3 p. A7. 导出快照1和快照2的差异2$ n; Q0 L/ q# R- X: _: x
+ K! \$ X1 o* z9 K( g6 j()[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_time21 o' S$ i6 p9 A, r( p
Exporting image: 100% complete...done.9 N! _6 @ \6 ~$ t! \' M
1 Z- P) r1 l- q4 B8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照) A$ Q6 Z+ n+ h- ]* b4 v5 b' w: {
/ J9 I) r2 z8 C4 O% n3 Q+ ~
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base& Q, E$ Q1 f" X5 ^" b, k' Y% A
Importing image diff: 100% complete...done.
: a+ e. ]2 V' V& L( n, e()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
; l- J9 z! P) I& vNAME SIZE PARENT FMT PROT LOCK
; n3 T4 T3 G: g1 Z/ d7 s+ q1 h: ?/ Dvolume-volume-id.backup.base 1GiB 2 ( f" u6 [# l' M9 t
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 $ N7 N# o0 l* C6 h/ w5 @0 ]/ M
volume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB 2 5 G3 ^6 t5 d0 V: T' F" Z4 e5 V
% Z; K8 C; ~: K4 Q- P0 @
, ~' }/ w2 V* Q3 G9. 删除volume-id的快照1( X0 k7 V- D+ D) A
1 m; f$ S+ ]. _' r# _4 {10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。) z. I+ [2 w' k( r7 E. h" q
) P3 L0 q% v4 w7 c+ L11. 备份元数据
& G7 R! P" v! Z Z4 Y6 O; n! T1 h- Y3 K
三 RBD恢复备份的实现:' a) o, `, g3 ^) c
1 先检查是否满足diff restore, 需要满足下面条件
! h/ `" z% T* f9 y
: E8 g1 o3 d; icheck can diff restore:
: P4 D2 C; J$ V/ ]/ f# ^1 base exist: backups/volume-volume-id.backup.base6 U; W0 H& t9 Q6 s
2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time1( I, s1 o5 l- s: L3 c
3 volume file is rbd% r- q& t; c; A5 L. J0 s1 ?. x
4 backup[volume_id] != new volume_id" `) c3 H6 {9 h
5 rbd volume has no extents (extend)
6 V& N" ]( `7 u5 i( K: l. \! {# W- t( P
* V( l3 E$ Z, Q6 @0 G2. 如果满足diff restore条件, 先导出对应backup-id的差异/ { T; [5 q+ D5 Q- {5 J
6 [ X$ T0 Q" W3 y()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id2* ^% a7 m" b1 ~9 ]1 _$ F
Exporting image: 100% complete...done.
& a! S0 K' H# v1 ^) j, e" V7 G b1 v, K: _0 N4 c
8 f/ ?. \; l' D8 m: F5 v) r3. 将对应backup-id的差异导入new-volume-id' H: E; c. }; r7 q. w' T
: m G! }. R8 x
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id
9 D2 j+ d9 h4 t' m0 k, O! s6 D+ P2 iImporting image diff: 100% complete...done.3 Q& x ?; M) Y. n6 i7 h
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
1 @+ w7 C' _2 i0 i7 gNAME SIZE PARENT FMT PROT LOCK
- ^' P+ t, v4 Bnew-volume-id 1GiB 2 & k: {% q( ?$ U% T6 L
new-volume-id@backup.backup-id1.snap.time1 1GiB 2
1 r, i+ M6 h* D$ @1 h2 l. C' Gvolume-id 1GiB 2
/ { D+ `, F% ]. l2 a7 k7 hvolume-id@backup.backup-id1.snap.time1 1GiB 2
# A3 ~3 i) w& n5 }+ ~5 Z3 i+ U
& ] c9 f, A7 o# a' x: ?% B
4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。
! U* ]) P% b6 B
a+ u8 ~0 b2 J7 e) f% F. K()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G4 g0 G! s9 i7 ~
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id26 H$ d* m; f2 x4 w; m" w; [
Importing image diff: 100% complete...done.) W3 @1 R; w; W4 K3 N' ~7 ~
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
' H0 ~. j; E- Y% S+ f9 DNAME SIZE PARENT FMT PROT LOCK
; j6 E9 P6 B1 {1 A: Rnew-volume-id 1GiB 2 5 t& |+ v% n( \( Y* g7 I- b( p
new-volume-id@backup.backup-id1.snap.time1 1GiB 2 ! v/ x; }* s- Q& z
new-volume-id2 1GiB 2 ( M$ D, ^- M0 o8 }* W8 i
new-volume-id2@backup.backup-id1.snap.time1 1GiB 2 6 G' l$ u4 [8 i! N5 ]- W/ J
volume-id 1GiB 2
+ |4 @5 P- s) ~1 B ]volume-id@backup.backup-id1.snap.time1 1GiB 2
% J" \& E" ~; L# X5 R) g()[root@busybox-openstack-5c687fdc9-mpwjd /]#
- ] N. g7 K, s$ Y% j( t: Z: e+ Z()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G- \! `) ^! A& [% _
Resizing image: 100% complete...done.) @/ m' z q! E( V8 L1 H
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes% Z; q6 J' C0 I
NAME SIZE PARENT FMT PROT LOCK $ G7 {9 o7 J* S$ I$ ~
new-volume-id 1GiB 2
2 C6 h4 ^2 D! j) M/ Vnew-volume-id@backup.backup-id1.snap.time1 1GiB 2
0 Z% j* w! n( f% Gnew-volume-id2 2GiB 2 ( R0 z6 Q0 G" e
new-volume-id2@backup.backup-id1.snap.time1 1GiB 2
+ V: F3 n9 P: Nvolume-id 1GiB 2 2 n d6 ~7 O* Y
volume-id@backup.backup-id1.snap.time1 1GiB 2 9 ?* \; g3 v# s
6 a7 }3 |8 s0 ^- e- ~
B7 W6 [2 _9 K6 Q* t2 o% F) |1 L! w" h. x
5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。# y1 D& B/ c& k+ q/ Z! n
3 q& ^& [# C* Y/ S6. 恢复元数据 |
|