找回密码
 注册
查看: 724|回复: 3

openstack 平台cinder-backup恢复失败通过rbd方式恢复卷备处理过程份

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-7-20 11:23:11 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 金钱 才能浏览

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-20 11:47:01 | 显示全部楼层
最后所有的      卷恢复后,删除原来的系统盘卷,记录如下:
! x- z- Z7 _6 f: [" m[root@compute06 src]# rbd ls  -p  hdd-8T-volumes |grep bak
& W4 l% a+ Y2 v4 l4 A1 F' D3 xvolume-84942e67-2606-4efc-b27d-f7cd7612a311-bak
3 h' f" H8 ~# q: t( ~( tvolume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
/ m8 N0 Y: O2 B4 V) m1 T6 P) `volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
; m' v/ M0 `# b[root@compute06 src]#
: K# n8 f+ U: C[root@compute06 src]# . v3 h. c  v& A$ g; r
[root@compute06 src]#
! l, X9 u& t+ ^[root@compute06 src]#
, }. j4 b7 k5 V$ S[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak7 z6 {, i; f/ e8 _
2022-07-20 11:30:32.338 7f3868c35b00 -1 librbd::image::PreRemoveRequest: 0x55aaf6c55770 check_image_snaps: image has snapshots - not removing
! h, S( i6 c* l; E: K- ?/ t6 K$ l; nRemoving image: 0% complete...failed.5 _. i, r7 K! P) _2 s
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
9 O$ ^! r" N2 c+ V2 q[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak
1 r' ?8 t) F% `- \" H2 M1 }Removing all snapshots: 100% complete...done.
# C% `4 p) |( S$ k' A$ M0 m[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak, @! U5 t. V* ~/ H; b$ [
Removing image: 100% complete...done.+ Y- R0 Z) F' d: T1 N
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
. f) ~6 {! L5 B7 F: f% e2022-07-20 11:35:50.337 7f8d6925cb00 -1 librbd::image::PreRemoveRequest: 0x561d24561770 check_image_snaps: image has snapshots - not removing
# V2 t7 h9 ?  r2 w9 h9 p" k8 GRemoving image: 0% complete...failed.
% d' K% ^' ]) Erbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.) r  r; \& q- H+ O9 G
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
5 m2 m) K# {& _1 U) [$ VRemoving all snapshots: 100% complete...done.
3 ^/ p, o, K% G* S5 N3 X- T[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
$ i0 q. x9 v( m- c9 x' _Removing image: 100% complete...done.
6 j- A- G" G) o8 E[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
# X6 P& A0 H( _$ {2022-07-20 11:40:58.579 7f5a311ddb00 -1 librbd::image::PreRemoveRequest: 0x55e64a4d2740 check_image_snaps: image has snapshots - not removing
1 @" T1 ~" Q8 _8 R9 T8 k; B, Z* }Removing image: 0% complete...failed.
$ d, J/ H* H7 rrbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
* `# d8 e/ C5 h8 F( g+ D* |[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak4 E7 N7 j  O6 R# @2 \
Removing all snapshots: 100% complete...done./ g# _9 H% i7 C9 F6 G* h5 d
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak8 i- H! F+ w  N+ \8 j0 D
Removing image: 100% complete...done.

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-20 11:48:24 | 显示全部楼层
上述完美完成rbd import 导入export 导出 解决openstack cinder-back报错,无法还原的问题。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 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. 恢复元数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:00 , Processed in 0.017948 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表