找回密码
 注册
查看: 725|回复: 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 | 显示全部楼层
最后所有的      卷恢复后,删除原来的系统盘卷,记录如下:
0 Z0 |# D$ u9 |1 t) [[root@compute06 src]# rbd ls  -p  hdd-8T-volumes |grep bak7 \7 t' h/ Y7 B' W
volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak
9 ~. l, F2 T! F1 z) T! o$ E, g3 nvolume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
. l9 S2 n6 A# Cvolume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
+ ~- }5 n. \8 m" l! H[root@compute06 src]#
& r! r! ~$ \. |+ ^0 [* W6 [[root@compute06 src]# 0 |4 r* H# ~, p
[root@compute06 src]# 4 v" q" [9 m* m0 c' K4 H
[root@compute06 src]#
$ E9 Y/ F4 x. e6 s6 i[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak: s/ A9 s+ @; J% |' E/ A, `
2022-07-20 11:30:32.338 7f3868c35b00 -1 librbd::image::PreRemoveRequest: 0x55aaf6c55770 check_image_snaps: image has snapshots - not removing
  j- i, T" Y/ _7 v2 \" C& N7 ]Removing image: 0% complete...failed.8 q% |& ^/ Z% ?/ U; }
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed., i6 ], N/ m% U( m
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak- l9 X" s& F4 ]6 t7 Y! a- a+ W1 J
Removing all snapshots: 100% complete...done.
$ o9 G  [, K  _; y2 C. g9 ?  y1 D[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak6 Y% K/ i9 b- p( I- ?
Removing image: 100% complete...done.
* d& y( g6 D2 R, e: m[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak 7 b$ T! r& D, m8 q  i0 m/ Z
2022-07-20 11:35:50.337 7f8d6925cb00 -1 librbd::image::PreRemoveRequest: 0x561d24561770 check_image_snaps: image has snapshots - not removing
: I: v9 {- @! \9 g" n# a" ?- PRemoving image: 0% complete...failed.
! A+ Y, K$ U" x3 W+ L+ Brbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
  o1 K3 P) {: Z& T7 V- g[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak ) g( p1 X" q2 ^  }& ~4 r& K9 I
Removing all snapshots: 100% complete...done.
5 B1 c) U( E# C1 C% b/ K[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak # N  m! m; q/ P) G% y* s
Removing image: 100% complete...done.
, D- I7 B2 @( K[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak" W1 B8 V4 G- C; t$ e
2022-07-20 11:40:58.579 7f5a311ddb00 -1 librbd::image::PreRemoveRequest: 0x55e64a4d2740 check_image_snaps: image has snapshots - not removing
; J% @/ j0 U2 K" X! d) A6 ERemoving image: 0% complete...failed.
, l' V$ z2 Q2 {" a, s/ d4 B1 trbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.5 {! b1 I7 v8 W
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
0 V2 v) H  n, b! VRemoving all snapshots: 100% complete...done.4 K7 d! j" _/ {  ?8 |
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak, ?: [4 ^9 L9 S" F
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 | 显示全部楼层
其他方式文档介绍::1 Q4 ]  S# H! O% ]+ C3 A' G. f
创建云盘volume-id,大小为1G9 `# I1 t5 ]1 _4 |# `2 M) G

$ S+ G* b  Y, o2 P/ i* {4 e4 L: @()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G
) _0 T: Y( t% G3 N4 v% {()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
# ~1 X7 r/ M: h& _: m1 i: Q) X7 Y; ivolume-id         1GiB                          2           3 l2 X! g1 Z4 U. M

2 x9 j2 I! D$ S/ q7 \5 [7 z. C9 L" Q
2. 先尝试进行diff store, 创建backups中的base盘
5 u4 e- I( H7 U3 A2 f# r' q
- w, Z+ S7 q" A- P4 }$ u()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G
" V) ?8 V* X5 o: e3 A()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups6 _9 z  I& M) j% _8 }  f0 b
NAME                         SIZE PARENT FMT PROT LOCK : |* Z" S, S- o( d. ^8 P0 `1 u9 ^8 `
volume-volume-id.backup.base 1GiB          2           
. ^2 W0 Q8 w6 l7 _1 Y( P6 k5 |3 s* E, c  j$ f" \* e+ e" V0 I/ Q7 U% R

% O. e& {6 N& m3 q' g9 o$ [; r  a3. 创建volume-id快照1,命名规则如下
  z  w3 `  _$ r! }/ h+ }" z: }& M2 H; L; M  j3 ]" a$ C
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap  create volumes/volume-id@backup.backup-id.snap.time1
; d" v/ j# U2 m% j5 U()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id1 l2 o9 \: c/ f/ K
volume-id                                 1GiB                       2           9 B; x" v& |9 h( d7 v3 M2 n
volume-id@backup.backup-id.snap.time1     1GiB                       2           1 S7 V* Y3 M; n0 E/ v
) Q8 C- ?* u0 A  P# d. k' G

! e: x  x0 B4 F; _. \( F/ ]( b4. 导出云盘和快照1的差异10 q' j4 D- v0 {( t

$ h8 g- Z4 H5 u; ?2 p()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1
6 v0 p2 S) E- y3 \0 G- d: Y; ~& IExporting image: 100% complete...done.! ^5 P. w% r$ T' m
()[root@busybox-openstack-f7bcf88-hgdkz /]# ls# {, |  x& r$ f  e, m
test_diff_snap_time1
. K7 ^4 E7 ]# e; i8 @9 u9 t0 X0 c8 H0 g2 f7 L

4 d  M# s* t6 L5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照# f5 u) `; J' d" N

  E- _6 h' {' P0 {()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base' V& ]. I+ G' s4 Y  `5 w5 G8 z0 j
Importing image diff: 100% complete...done.0 h, x# _7 t2 x; Y
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups! t0 u$ M+ p) z& V9 x3 |
NAME                                                     SIZE PARENT FMT PROT LOCK ) G* G/ I5 h7 s- S' c! x8 O- g
volume-volume-id.backup.base                             1GiB          2           
, n- P. J% @* z- C' W% z. b' ^# Uvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB          2           7 m8 y4 n6 a4 [6 r- p/ _* @

" w3 q' }4 L  v7 z+ l* ~. J" r% C# b0 \$ Z. v, q
6. 第二次做增量备份时, 创建volume-id新的快照2+ I* l, b0 Y4 c( n$ F% {

" c6 F* I! N' |; h# }' u1 ^()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap  create volumes/volume-id@backup.backup-id2.snap.time2! O1 w9 E) N# Z# {, |$ c
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
  Q* n# f. C; M8 L  eNAME                                                     SIZE PARENT FMT PROT LOCK % ^7 j6 [" l0 I& }7 N
volume-volume-id.backup.base                             1GiB          2           
3 h& t, d1 J# P$ qvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB          2           " y! s$ d4 b, M" P) l6 m
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id& b5 Y# [/ p! d& G) P5 |6 [" v
volume-id                                                                                     1GiB                                                                                                        2           
9 a6 g7 d: y) P  ^volume-id@backup.backup-id.snap.time1                                                         1GiB                                                                                                        2           ; z6 i; n. v& i) X( ?
volume-id@backup.backup-id2.snap.time2                                                        1GiB                                                                                                        2           
  a) ?, S" \" B* Z1 f3 S; ^. H) E9 l, I

; ^+ V* j6 k$ r/ g7 F7. 导出快照1和快照2的差异22 G/ k- `8 E8 C
  i) K+ G1 h' P) S: f
()[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
: p5 v# j/ z9 {Exporting image: 100% complete...done.
" v# J% H) [" U0 E
$ b; g7 O/ G5 z8 X8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照
& [1 c" a% R+ g1 i( n! C6 X/ O1 ?: G7 Z# g
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base6 x" }' Z1 [5 q& K
Importing image diff: 100% complete...done.
( {) H$ |0 w6 h3 k()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups! {" ~+ [2 d8 i2 X0 ~- i
NAME                                                      SIZE PARENT FMT PROT LOCK * H2 a/ L1 S; d
volume-volume-id.backup.base                              1GiB          2           * w. u9 {" D3 r" R
volume-volume-id.backup.base@backup.backup-id.snap.time1  1GiB          2           
& {. }  o3 s' z1 F* ovolume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB          2           
: e' ]1 }  c* c4 i* {! {& f2 Q5 b1 L" ^2 s/ X2 T

; [1 X3 T& X* Y, R$ r# \# I9. 删除volume-id的快照1* X6 M& n8 r# J/ b- X5 Y7 z
3 k( U& C$ @$ Z1 T8 s0 d
10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
* {* y8 g* y4 T$ O4 r* M3 M
/ q# }0 l' T) {, q# W11. 备份元数据
. c2 b0 k/ a5 _4 e* v4 a3 _* k, m+ X1 I. ~' |
三 RBD恢复备份的实现:; m" u+ u: G: C5 F
1 先检查是否满足diff restore, 需要满足下面条件
- E2 ]: U' h$ W3 P* J* j. A. f
check can  diff restore:
+ Y- W' J' ?4 A" f1 base exist: backups/volume-volume-id.backup.base
+ s! V; W/ H: \% w1 \2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time12 L- F4 Q3 ^- V/ E! E1 }
3 volume file is rbd8 z, R# J3 c% d: W, E
4 backup[volume_id] !=  new volume_id# g2 F7 z. y) y/ z/ M5 Z( t5 ]
5 rbd volume has no extents (extend)" W* Y" F- o5 F& v4 P+ I

, Y* L/ \1 A- X  ^9 R# n3 G+ [! n/ }8 {% `7 \. Y
2. 如果满足diff restore条件, 先导出对应backup-id的差异
' R0 b9 \# S0 x8 v7 T
$ w* I( i4 N8 f# E2 B7 |()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff  backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id2
( \! I# v* ~3 s2 O$ Q  ?# ?; d1 YExporting image: 100% complete...done.% N3 R8 I7 j, G* L# s
7 u* c9 p( z: L5 u$ X. R& t; p4 z7 e3 q
. z$ C% ^0 x+ ^$ F7 J
3. 将对应backup-id的差异导入new-volume-id' ^; k0 N  V, N' Z' z; H( p

. Z4 t( T5 H9 J5 l2 O1 G$ C) W6 u+ T()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id
/ ]" q7 c' u+ N# n" W5 `+ l# g) CImporting image diff: 100% complete...done.' h1 f  q, d3 X7 U
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
1 H0 r0 m1 ~+ m' ^8 T# sNAME                                       SIZE PARENT FMT PROT LOCK
4 S/ c) _4 J  i0 \+ j0 V( Qnew-volume-id                              1GiB          2           
; {3 r3 j# |) h, w2 y" D: unew-volume-id@backup.backup-id1.snap.time1 1GiB          2           ; \2 n& y6 w4 e" z; O: y  V4 W1 r
volume-id                                  1GiB          2           
, {- c- u$ ^' Q$ u7 l; H5 Gvolume-id@backup.backup-id1.snap.time1     1GiB          2           
5 Z2 f/ B7 x( o( c& L- E- M1 ?# z: L! _8 A% }
2 P, f. V/ O  i7 ?# Z
4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。  f1 |# N2 M; k4 }
' C: O/ i+ l# j  K1 L# }) o
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G+ ~5 R$ O. B; G5 h' V4 I$ N
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2
4 ?# }5 B9 H- @; J* x0 \4 ]0 j7 |Importing image diff: 100% complete...done.! t# Z9 h. H& n
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
) v9 I& [' s' W# p5 gNAME                                        SIZE PARENT FMT PROT LOCK ' R& f2 P1 r4 `: Q* O* [0 T% ~
new-volume-id                               1GiB          2           
. Q( R, W8 ?0 V$ B0 x. Pnew-volume-id@backup.backup-id1.snap.time1  1GiB          2           
, {- r; j$ e- x" O: Y- unew-volume-id2                              1GiB          2           6 L8 a; |2 a! j8 M; _& c; [
new-volume-id2@backup.backup-id1.snap.time1 1GiB          2           
: c/ j% i) b6 j) Z$ `& y1 qvolume-id                                   1GiB          2           
9 P& u: |0 M: Lvolume-id@backup.backup-id1.snap.time1      1GiB          2           
- \+ w+ l) E: g1 z& i( \()[root@busybox-openstack-5c687fdc9-mpwjd /]# 1 g3 \" ~- V* `
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G
( v( X, m! P0 Z8 OResizing image: 100% complete...done.
/ E: n4 _& N" A3 E()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
$ k" R! n# D/ I" H; H6 fNAME                                        SIZE PARENT FMT PROT LOCK
; x# ~, j8 b4 |% }$ K0 Gnew-volume-id                               1GiB          2           
, N( e( Q; |5 ^new-volume-id@backup.backup-id1.snap.time1  1GiB          2           . m, E# c, b3 H" `1 _- L
new-volume-id2                              2GiB          2           : ]0 J8 z- L( E- |/ M4 A
new-volume-id2@backup.backup-id1.snap.time1 1GiB          2           9 ~8 J) l  W6 S% M5 a% s7 r
volume-id                                   1GiB          2           + U  N; p. }0 K+ R+ e& U2 h
volume-id@backup.backup-id1.snap.time1      1GiB          2           2 N6 s  P6 G8 P5 |4 h
* J; I0 U7 T1 N+ T
* w3 \- M- e- |9 U+ e9 R

9 n, j6 r% J' b- ]* u5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
0 d. b2 ^' k  f2 C& t4 ?6 q1 J$ o. f6 [2 z6 P9 i& C0 r
6. 恢复元数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 02:02 , Processed in 0.017616 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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