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

楼主 |
发表于 2022-7-20 13:38:27
|
显示全部楼层
其他方式文档介绍::- V. U9 e( H8 B( t& j4 _% Y
创建云盘volume-id,大小为1G9 F2 h# r+ s8 H
) r0 p7 I) m" c6 P" {
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G4 Y2 y" O2 B1 L4 V; u+ Y
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
! u+ v" A" T" s$ M4 F$ @4 k- ?4 o, A. |volume-id 1GiB 2 8 r: Q& b* l2 a. x1 `6 w
; B/ v* ?# j/ \1 V% G
7 N4 E2 V' F( \, W2 p3 I, c2. 先尝试进行diff store, 创建backups中的base盘1 K. E7 s8 _% A+ Z# @
- ?+ J1 }5 z8 m- J()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G6 I' H7 f3 S: V5 y8 b
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups6 p& e& k* L0 J; e
NAME SIZE PARENT FMT PROT LOCK
) w" I# D% k, {9 T1 r* Dvolume-volume-id.backup.base 1GiB 2 5 a: D& @. @9 ~0 a5 I
, I) H* n4 g6 U/ t3 w
! s; i5 B) J5 B1 L. V T
3. 创建volume-id快照1,命名规则如下6 [6 b6 |4 W/ E% |7 ^0 [+ |) A
$ r1 ?+ \: z1 T, @' t+ T# r, z" a
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id.snap.time1
* C7 l# @. x' f: M$ f8 T()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id: ]* [! P7 Z- ?6 m* E# z, U
volume-id 1GiB 2 . e0 [$ J& J1 t6 ]; F- ~) C
volume-id@backup.backup-id.snap.time1 1GiB 2 8 Z" D* c& Q. E. g+ g( l6 a+ b
1 Z8 z4 j2 r; J) K6 Z
. C3 K: J5 f+ r
4. 导出云盘和快照1的差异1
. }* f8 v' Y0 G7 \! ~; \8 t' U1 n, ^3 O/ |, n3 O
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1; y5 C9 O$ E/ v$ S. d$ L5 g
Exporting image: 100% complete...done.
9 w) D( b0 E l: ^% U7 d! `2 N()[root@busybox-openstack-f7bcf88-hgdkz /]# ls
9 ?& I. x6 B4 ztest_diff_snap_time1 ) f. I3 [% u# [
5 o* v% A9 g5 S5 {3 ?; V0 W7 l/ @3 j0 Y2 @& n
5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照
" @. t# o( u& q! H5 J9 ^# `" J& x, d J* p
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base
5 k4 w2 r; [* a. Y' p1 ]; R) oImporting image diff: 100% complete...done.* S5 v9 h9 H: t* o% T+ h
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
" u9 y* b, d3 P/ b4 i" u3 U3 cNAME SIZE PARENT FMT PROT LOCK
9 j( j) z4 g8 g9 i9 n Evolume-volume-id.backup.base 1GiB 2
) o! X3 X! l& M7 {# o* jvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 & T7 \7 g- Y; S7 _1 K0 L
/ t: C0 e% h- ]
2 D/ n3 K4 `- }5 H
6. 第二次做增量备份时, 创建volume-id新的快照2
7 t; }6 D8 ?4 P: ]( A$ r& A' [. R3 N0 L+ A" Q
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap create volumes/volume-id@backup.backup-id2.snap.time2& c7 S" p$ G7 r
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups; |" ?: A+ C+ r" N$ |, {3 W% D u+ Q# t h
NAME SIZE PARENT FMT PROT LOCK 5 d! D1 s( Q o7 u* q6 W, A
volume-volume-id.backup.base 1GiB 2
( s" O4 v0 A+ {$ Xvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2
/ c1 z# i+ q" b% K/ r()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id. X, B# t1 w9 P3 p) F8 c
volume-id 1GiB 2
) p) B$ P/ J$ i- H) x% L k! j- V1 kvolume-id@backup.backup-id.snap.time1 1GiB 2 7 h# G' V/ W/ A1 F
volume-id@backup.backup-id2.snap.time2 1GiB 2
1 i; b3 [7 q# c0 j }) n1 u
2 z) ?2 ~/ I" p8 j1 a* a$ Z$ G9 s# E4 n! S6 _' C
7. 导出快照1和快照2的差异2$ {- p# c4 d* K4 _. H5 |
$ t5 M" H& w3 V5 G5 v/ n
()[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
9 z: M2 n& N2 e9 tExporting image: 100% complete...done.
8 U& h1 z0 y/ ]$ \' s- O7 |% ]# K9 I% Q8 W, m$ R* Q1 P$ V
8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照$ u* u* ~1 Z; T# H' U1 L
" E' C* T! k9 u7 Y* L
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base
% C3 U+ `" T" |4 g. u& Y2 AImporting image diff: 100% complete...done.8 R8 T9 F8 G# s2 q% s; M
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups3 W6 F* j7 g6 o! H" [
NAME SIZE PARENT FMT PROT LOCK
8 R' Y! k) [2 B X8 l2 Q" [$ ?! dvolume-volume-id.backup.base 1GiB 2
$ f+ q# `3 r. n2 x3 Rvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB 2 ?& W" N/ U2 f! N: Y
volume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB 2 9 V2 G( w; |4 B
# t3 i8 f' d8 D( b7 e
/ I, e: K- c4 ]8 c3 N3 X5 A9. 删除volume-id的快照1; w% ~1 k; C$ [/ y0 y
- _8 C3 f7 I# e5 r( }10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。( v8 y$ ]5 @: d+ z) R) D+ ~
3 Y$ A) v8 ?" A; N, P: F11. 备份元数据# _8 p2 ]2 W- ]4 }
: Z; c, e* e) `' x三 RBD恢复备份的实现:4 x% e' o$ _: t) ~( V( E! ^( Z
1 先检查是否满足diff restore, 需要满足下面条件5 u, ~$ y2 o6 b, b" i& J
$ ~, Z; P" |/ a. L
check can diff restore:6 M" V0 K! J) X4 U1 }
1 base exist: backups/volume-volume-id.backup.base1 |+ l: T5 z7 q6 S( `4 t& {
2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time16 n C5 e6 ^: P" {5 U
3 volume file is rbd
& x/ a. v- t( i! L, x3 d- k1 N; i4 backup[volume_id] != new volume_id! u3 I- Z3 P( m9 {/ ^% x
5 rbd volume has no extents (extend)% P8 e' | W9 H) ~5 f% R
7 D0 e% |1 v$ g! q: q! q/ g/ P6 \ ?
2. 如果满足diff restore条件, 先导出对应backup-id的差异
! {0 i# k, y: Y- h+ Q/ e3 `7 u+ k# o, @4 z! a
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id2
( ?: S$ y8 h% |. {3 L; ~6 V, x( BExporting image: 100% complete...done.
; X1 t) S: @$ d+ ?. |4 `5 Y* _* P3 p8 ] W2 D! B, ]8 L
1 m- n2 H0 C& z4 j1 Y% @
3. 将对应backup-id的差异导入new-volume-id
: ~* b2 L/ n! F9 \- h& y9 p7 u9 y7 q* i0 l( |9 [8 |' a' p
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id
$ z# W" ?! `. PImporting image diff: 100% complete...done.) U: a3 ?$ p- e$ n/ N7 K
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
7 g3 k! D |$ kNAME SIZE PARENT FMT PROT LOCK # {/ ]) h) F. b6 g3 H, Y
new-volume-id 1GiB 2
2 p* m6 R, `/ p+ b5 ?. w7 Y, Anew-volume-id@backup.backup-id1.snap.time1 1GiB 2 # o) b& k2 |) O" ?2 L, l/ {" Z
volume-id 1GiB 2 6 v; _( Y. @0 X* J
volume-id@backup.backup-id1.snap.time1 1GiB 2
& C& Q5 N! x% t; K: e8 m) B6 _9 Y% V
$ a% ]# }- U! D& e0 l6 A4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。
' S3 ~0 H4 V6 p3 n- c
" y4 h! g \$ i% ~4 {()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G9 u* s) I: q' a/ ~6 T$ G8 v! J
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id29 e7 c! e/ R+ G U- }
Importing image diff: 100% complete...done.
# H8 x5 \/ n z7 k. v9 @" T+ F! ^) I()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
; y9 E/ y0 C) z/ t0 R. E& `NAME SIZE PARENT FMT PROT LOCK
% [0 L) |. Q3 Mnew-volume-id 1GiB 2
! }3 f( F' k/ a. Z" Lnew-volume-id@backup.backup-id1.snap.time1 1GiB 2
# g0 S* r- }* onew-volume-id2 1GiB 2 ! v' q" y) b9 m2 P
new-volume-id2@backup.backup-id1.snap.time1 1GiB 2 # b) s' [( o, I( g! a
volume-id 1GiB 2 7 B3 M( w+ z/ e4 w
volume-id@backup.backup-id1.snap.time1 1GiB 2
V1 H5 M+ ^4 B( _()[root@busybox-openstack-5c687fdc9-mpwjd /]#
/ Z0 c) e/ C+ I& g()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G N3 j+ ~- Z4 |. b- k `4 ~
Resizing image: 100% complete...done.
% l: V7 v/ m2 o, X- b; X()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
+ h. K: k0 z3 ~7 UNAME SIZE PARENT FMT PROT LOCK 1 z5 A! @7 P# w2 J6 w1 w* c& x
new-volume-id 1GiB 2 ; |- j0 [; p& H5 Y6 I5 ?
new-volume-id@backup.backup-id1.snap.time1 1GiB 2 ( C, c1 T1 {/ ?6 r' v% P
new-volume-id2 2GiB 2
1 y7 ?% t6 J7 H( ^new-volume-id2@backup.backup-id1.snap.time1 1GiB 2
! h0 u5 [( L. e {) \( Q1 ?volume-id 1GiB 2 5 \7 i/ i/ F {2 E* v
volume-id@backup.backup-id1.snap.time1 1GiB 2
3 r& a2 `/ h; g! t( a7 z( J/ G/ ~/ B( E
D$ c) |6 ^5 e. B% t/ |" s$ B A0 y- R0 z
5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
& n+ i8 o: K5 r' g3 P& G: ?0 s3 s; | v( Y
6. 恢复元数据 |
|