找回密码
 注册
查看: 722|回复: 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 | 显示全部楼层
最后所有的      卷恢复后,删除原来的系统盘卷,记录如下:& x4 o3 y& N9 e  b+ ~
[root@compute06 src]# rbd ls  -p  hdd-8T-volumes |grep bak. T: U  v; l" B6 l) I; B" l
volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak
! }& w+ [/ J0 a: rvolume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
4 t: B* L; m% h) S1 e, C* hvolume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
$ Y: d7 P5 ~- s9 S2 q/ {7 [  Q[root@compute06 src]# * {" E/ \1 [* [( Y
[root@compute06 src]#
9 o" U3 I$ J8 C8 E4 [2 B[root@compute06 src]# 7 l! {& Y: v% ^3 X% a1 G
[root@compute06 src]# 4 A) i  S4 ~( Z) c# R' T
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak% E$ k3 |4 n; O) L' u
2022-07-20 11:30:32.338 7f3868c35b00 -1 librbd::image::PreRemoveRequest: 0x55aaf6c55770 check_image_snaps: image has snapshots - not removing
6 s/ k. S& L0 i/ S% S7 A, z5 A; CRemoving image: 0% complete...failed.+ d# A/ V( k* Q" v
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
3 e' T& I3 p) E# |' u+ ^' s[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak) w: o2 m+ T6 Q& C( D: U1 u, p# v0 F7 S
Removing all snapshots: 100% complete...done.% ]& r1 r. d, ^( S) s* u
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak2 N1 k* _: ?6 O. t3 s1 w* T) [
Removing image: 100% complete...done.
9 {! p  O# q  u2 m! _[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak 1 I1 i  F% Y- o9 k- i
2022-07-20 11:35:50.337 7f8d6925cb00 -1 librbd::image::PreRemoveRequest: 0x561d24561770 check_image_snaps: image has snapshots - not removing
! M2 T2 w: Y) _) ^2 v( gRemoving image: 0% complete...failed.
, M) v2 r. I( U. ~* A9 qrbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.' T; m1 v- X  i
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
1 {' ]; J" d3 A5 ZRemoving all snapshots: 100% complete...done.8 d# k! t, _, w+ ?
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
: B; s% J6 K0 E2 ZRemoving image: 100% complete...done.4 z3 P; N' k7 ^, d4 K7 O
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak: t. r+ V9 {1 H  X9 p7 v# V
2022-07-20 11:40:58.579 7f5a311ddb00 -1 librbd::image::PreRemoveRequest: 0x55e64a4d2740 check_image_snaps: image has snapshots - not removing; l+ T5 i/ d# k. y5 V: \& {
Removing image: 0% complete...failed.  X$ f  P% [* P! F) Y# j
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
2 `5 f) I  I$ Z4 `; o, I[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak. c1 P* r' L9 X/ a2 G) u
Removing all snapshots: 100% complete...done." n0 P5 J+ l0 c1 c
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak; j9 x* H- V/ L7 A5 t* q
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 | 显示全部楼层
其他方式文档介绍::
, 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. 恢复元数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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