易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 725|回复: 3
收起左侧

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

[复制链接]
发表于 2022-7-20 11:23:11 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 金钱 才能浏览
 楼主| 发表于 2022-7-20 11:47:01 | 显示全部楼层
最后所有的      卷恢复后,删除原来的系统盘卷,记录如下:
% W9 G' R: G9 Q! b[root@compute06 src]# rbd ls  -p  hdd-8T-volumes |grep bak
4 u+ ^6 V+ g+ f1 N7 fvolume-84942e67-2606-4efc-b27d-f7cd7612a311-bak! d( i$ h$ o6 A. e- m6 ]5 k/ B
volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
4 p/ h" X5 [. |1 k3 a: |0 L# ~volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
# P# v- D0 t, g  s9 E7 W[root@compute06 src]# 4 B1 Z; |1 q8 u; [
[root@compute06 src]# 2 e5 [# u" ~, p
[root@compute06 src]# . u  ]9 v- {. _$ g; K
[root@compute06 src]# 4 ]. K1 K) Z" G/ E; y
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak
7 A/ t1 f) d. S( R9 I2022-07-20 11:30:32.338 7f3868c35b00 -1 librbd::image::PreRemoveRequest: 0x55aaf6c55770 check_image_snaps: image has snapshots - not removing
5 Y$ x6 {5 y% [" e  lRemoving image: 0% complete...failed.2 N! m& r& L+ @0 @! h
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed." e5 U3 F% x" k8 v1 h( {8 O0 @
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak: t4 e1 U) U/ T8 R+ R3 o6 R
Removing all snapshots: 100% complete...done.
% [/ u  j% O% M! g6 @[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak4 U1 Q8 V7 Q, m) l0 D
Removing image: 100% complete...done.! ?2 g3 @, {: {; m1 F
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak ) ^3 Z- x3 o1 W4 e9 G
2022-07-20 11:35:50.337 7f8d6925cb00 -1 librbd::image::PreRemoveRequest: 0x561d24561770 check_image_snaps: image has snapshots - not removing
2 e* ]' H. e& ~/ tRemoving image: 0% complete...failed.4 v8 p- q5 S1 V4 Y1 Z3 x9 {/ `+ C
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.7 {) ]& D; w' \$ f: ~; U, i
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak 8 \) M9 @$ W8 d+ z9 W: Z9 s( G
Removing all snapshots: 100% complete...done.* A$ i9 a8 @2 _# o" e# }; k
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
5 M/ E( l! s3 z6 @5 ]Removing image: 100% complete...done.
$ h3 [4 |: O! f1 |[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
0 h! ^, J3 v4 K' f) _- ?# i+ C2022-07-20 11:40:58.579 7f5a311ddb00 -1 librbd::image::PreRemoveRequest: 0x55e64a4d2740 check_image_snaps: image has snapshots - not removing
  R" D# q0 B$ _0 q' d: E8 FRemoving image: 0% complete...failed.$ ~- N$ y7 ^) j  m
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.% U) w+ O. K' E' n, ]4 z$ P9 g$ k; c
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
& _" m9 c' \# Z9 u) U8 _6 u$ @* ?Removing all snapshots: 100% complete...done.% `5 m# W9 R6 @+ |- \, h
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak' @; d+ \5 U7 x2 |5 D5 t& {( w( N
Removing image: 100% complete...done.
 楼主| 发表于 2022-7-20 11:48:24 | 显示全部楼层
上述完美完成rbd import 导入export 导出 解决openstack cinder-back报错,无法还原的问题。
 楼主| 发表于 2022-7-20 13:38:27 | 显示全部楼层
其他方式文档介绍::
8 h, A% K, }; \ 创建云盘volume-id,大小为1G8 x& z3 j, r+ p3 n# }7 Z* X/ G
3 @" W$ p$ l9 H# W$ D9 U/ }7 R; X
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G& m* C. i" l0 H6 v2 o' V
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
6 ?! M2 J8 G  l/ R/ `1 c2 x- lvolume-id         1GiB                          2           
2 [! r( t+ D5 P. M9 Z  y
' w: h+ h/ A4 E+ [" B; o2 U4 c6 d( [) i9 t9 [0 e
2. 先尝试进行diff store, 创建backups中的base盘+ {! Q/ k' s# C* [) T
, Q9 @5 e5 I( M, @
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G! Z2 m* F* |( G6 U2 C" L% K
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
* E! j8 A) C; s  K/ TNAME                         SIZE PARENT FMT PROT LOCK
! ?  c5 ?' i, x3 q+ Kvolume-volume-id.backup.base 1GiB          2           
6 G% a# W. L, W/ k" p: w0 S
/ a  d% J& l/ l( x- N4 r# G) x6 A+ L& ^
3. 创建volume-id快照1,命名规则如下
1 p, p% ~) @) r
% A% ^# c: y% Y2 W9 s()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap  create volumes/volume-id@backup.backup-id.snap.time1
5 ^; K! c3 B' ~& x()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id7 X5 ^& A# X% j; r+ i
volume-id                                 1GiB                       2           ; O& E4 K5 C( M+ H1 ]- ?
volume-id@backup.backup-id.snap.time1     1GiB                       2           ) p1 K' m8 u6 o' w4 b0 `
; G8 C- y* [5 ~$ @0 u5 Q& T
/ S4 }4 l' n0 K" Y6 ~2 g- Q
4. 导出云盘和快照1的差异11 b, |/ a5 O. K9 s

# z' l: J$ V7 p# U( J# t9 N' @0 R()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1
9 ^7 H% X4 t( OExporting image: 100% complete...done.
/ E7 f4 x, ]: ^& ~) Y& `()[root@busybox-openstack-f7bcf88-hgdkz /]# ls
0 K3 E6 o0 K' p! X0 w$ Vtest_diff_snap_time1 $ Y2 U% _6 p' y* C* n
2 H2 a: Y- C6 I- t* B% J; g

" g+ b/ d0 T) h  d5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照
2 X/ L, }* _+ }; K6 g) M7 Y( z
( l8 ~- a" {6 m* N' Y- @()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base
& @  f" f6 _( G1 D# V8 Z; u! |: e+ JImporting image diff: 100% complete...done.8 a* h& D7 i" w9 y
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups1 B; n- I; T% b# s4 D5 L
NAME                                                     SIZE PARENT FMT PROT LOCK
% j, G9 ]# m$ V; t8 ?4 hvolume-volume-id.backup.base                             1GiB          2           
! F- o5 n' l) |) [4 k. y8 lvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB          2           / ?$ `9 U9 X4 X6 K( ^8 x; t
$ |8 ^* u6 N; R1 J/ `9 ^6 ?

6 @4 A/ x$ H; U8 z6. 第二次做增量备份时, 创建volume-id新的快照2  k( K2 L7 f4 N+ H7 m4 M
* n, I6 q* @; L4 f9 V
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap  create volumes/volume-id@backup.backup-id2.snap.time2
6 @0 D* c8 v- |( f( E& M8 H1 b()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups8 U& \+ Z. H! ^  t
NAME                                                     SIZE PARENT FMT PROT LOCK
* ^3 C, \" G3 T5 V: _6 r# d! tvolume-volume-id.backup.base                             1GiB          2           
# c5 V7 |+ _* e: {+ V. xvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB          2           8 ~  z7 C, `. S& L& x# J
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
" ^# Y" v# f% _( t/ D8 K- Q/ J: cvolume-id                                                                                     1GiB                                                                                                        2           6 C. \8 H# |4 F8 j
volume-id@backup.backup-id.snap.time1                                                         1GiB                                                                                                        2           ! @2 j) y/ ^$ P2 q
volume-id@backup.backup-id2.snap.time2                                                        1GiB                                                                                                        2           + W& c. u% b. @
+ }  X8 {" o7 p( g4 z
( l) O( S5 s- r: E
7. 导出快照1和快照2的差异2/ f. b' C4 O2 X2 E  D7 V  v

% r# U2 D/ T! b# H( }( N- f1 Q()[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
/ Z2 v# U0 n* W4 l! e, V- o, x8 s8 q4 D7 OExporting image: 100% complete...done.$ [6 M) E' Q9 Y) k

1 ^0 s9 \+ a5 }$ v4 a, w/ @' I4 C8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照7 ~8 n) o* ?+ i4 C: ~0 p
) D. A- F) [0 H$ Y$ Q6 Z7 S
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base5 T) [8 B( Z$ }. ]  k2 |
Importing image diff: 100% complete...done.
' V2 c) Q6 C: o1 W8 Q4 D! c()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
/ C$ r' k- m) }NAME                                                      SIZE PARENT FMT PROT LOCK ' Z1 i; o1 ~! |) p7 F
volume-volume-id.backup.base                              1GiB          2           
+ i, p0 e2 M/ m9 `8 X) _9 zvolume-volume-id.backup.base@backup.backup-id.snap.time1  1GiB          2           
$ ]' W  q4 b# T) [. wvolume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB          2           
+ c4 V+ ~, U& ?: a- F* H7 s
/ y7 J2 r- k0 M+ T9 n' ^2 W
, p# v7 M; d. q* W5 F% ?: b0 U, L3 p7 y9. 删除volume-id的快照1
7 y% X5 z( p( d% B! b. g6 B, N2 [  K$ z1 O% n& l
10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
# D- h" z# ~' J- d  {. g! j9 G( v& h2 |3 l8 x, |+ m/ E
11. 备份元数据- w+ r& ]0 ~3 j( J, u( ^6 A2 Y" \
6 F* P; {5 v+ o) ^/ e# W
三 RBD恢复备份的实现:
) H8 H' c7 j/ K8 x) S1 先检查是否满足diff restore, 需要满足下面条件0 L5 W3 r( Y" w# `8 Q3 h
$ X3 x% a1 _/ U2 o: G! o! Q
check can  diff restore:. [  @1 n- u% V- c3 O1 |! [0 B$ i
1 base exist: backups/volume-volume-id.backup.base
& ^. O' X5 x" j2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time13 u7 R0 ^" |& ^/ F: i+ r
3 volume file is rbd
1 K. u3 l2 i2 O* b4 backup[volume_id] !=  new volume_id
' H7 @8 K( w8 s+ B5 rbd volume has no extents (extend)
. F: _- m# p& T- W* |* r& g! H) i- l" T) D( e" r
7 g3 U6 y$ r3 [
2. 如果满足diff restore条件, 先导出对应backup-id的差异" d2 k: s: G" G% s

3 P/ \  n6 M* j# B6 O()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff  backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id2
/ `, _( W! `/ L+ y0 N5 bExporting image: 100% complete...done.. w$ K: N* r" `- s& m

, P6 a6 C8 m) N- ?/ \  ]( B: `( |% D) [7 t: ^7 Z
3. 将对应backup-id的差异导入new-volume-id
' T0 }6 H9 x' X3 L, h+ x
! O& G/ o6 n8 S' I0 B: q4 Q) N; E()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id5 ]- f# L7 t6 [5 r' n9 g0 A
Importing image diff: 100% complete...done.
1 R7 R$ r0 a3 A" U. f+ _()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes" [% ~" E) G; E# h$ e
NAME                                       SIZE PARENT FMT PROT LOCK
4 v  n" g2 j% y) @# d( U( znew-volume-id                              1GiB          2           0 e/ x% }, l2 E# \5 o: V
new-volume-id@backup.backup-id1.snap.time1 1GiB          2           8 G5 ]) ~( k1 t' `; H% g3 {
volume-id                                  1GiB          2           # Y5 W4 S& l4 ~# b) d# N4 g
volume-id@backup.backup-id1.snap.time1     1GiB          2           # Q3 S; ^. D. F9 A; D
) t1 ^2 f$ G, S* h+ E

9 l  y2 n# F8 O) s4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。
  h! I8 U% X* H- ~( r' m  H( n2 `& Q9 ~1 k
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G) a5 _3 v. @; E7 c
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2
8 |! ?( P$ r( y9 C- T% E2 @+ c2 Y9 NImporting image diff: 100% complete...done.9 W: G# F, y+ T) u
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
  }9 @& t' s2 o0 Y. v! o) p; G2 [9 ~NAME                                        SIZE PARENT FMT PROT LOCK
" ^) z/ b% Y7 knew-volume-id                               1GiB          2           
4 a/ \, f/ A- w4 r* hnew-volume-id@backup.backup-id1.snap.time1  1GiB          2           ; I/ m8 Z) |' J0 |( k* h5 V
new-volume-id2                              1GiB          2           ) _3 R* w2 g/ S
new-volume-id2@backup.backup-id1.snap.time1 1GiB          2           1 K7 y$ u+ {+ ]( q8 r
volume-id                                   1GiB          2           
' l4 f6 `6 ^  dvolume-id@backup.backup-id1.snap.time1      1GiB          2           
+ X# I3 |7 |2 a6 j. ?2 U()[root@busybox-openstack-5c687fdc9-mpwjd /]# . j+ E  B( |' `9 s4 q
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G: ^" X3 x/ l5 s# q5 L" s
Resizing image: 100% complete...done.
6 i" g' ~, X" a# |- V) m()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
" E& ^2 `4 M! X4 N+ D# V* X% DNAME                                        SIZE PARENT FMT PROT LOCK
5 V  q, d( v) |) i: W6 jnew-volume-id                               1GiB          2           1 ~. m4 J8 b6 B$ l* {. B6 V
new-volume-id@backup.backup-id1.snap.time1  1GiB          2           9 u4 |9 L/ G! T! x# D2 ]) |
new-volume-id2                              2GiB          2           
: L* P( m. q: c* j" g% L; H0 Xnew-volume-id2@backup.backup-id1.snap.time1 1GiB          2           $ s( V/ a; N7 s9 H; f
volume-id                                   1GiB          2           
6 {7 W7 A  m2 y7 D( ?* yvolume-id@backup.backup-id1.snap.time1      1GiB          2           $ |. F- F4 \1 a+ X

) L1 @! k- R" E4 }) ?; t" y4 p, c2 w3 i1 V3 \0 h, t; z/ W( w8 J
3 Y1 ~/ q/ e2 ~( D, ^% {* `: o4 m
5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
3 r5 ~1 }+ d! d3 s) ]- X. {  {8 \0 s7 h; k8 G- {
6. 恢复元数据
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:22 , Processed in 0.045411 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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