易陆发现互联网技术论坛

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

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

[复制链接]
发表于 2022-7-20 11:23:11 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 金钱 才能浏览
 楼主| 发表于 2022-7-20 11:47:01 | 显示全部楼层
最后所有的      卷恢复后,删除原来的系统盘卷,记录如下:! G0 l+ O7 }: z1 M5 c. n
[root@compute06 src]# rbd ls  -p  hdd-8T-volumes |grep bak3 A1 E) a* ]/ y& [
volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak' T/ Q- L! @% K. Y
volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
0 b. w6 Y# Y$ y7 u+ j' evolume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
* u, ]/ a5 w4 M' j[root@compute06 src]# / i7 F- c" I2 J8 u
[root@compute06 src]#
$ P. {4 S) z$ Z) N$ A[root@compute06 src]#
: l/ m* r5 l- g' Z[root@compute06 src]#
- C2 z/ r- [+ u5 y2 l' q! i) B[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak( \# Q+ \" P  O; Q7 l5 [+ u- e
2022-07-20 11:30:32.338 7f3868c35b00 -1 librbd::image::PreRemoveRequest: 0x55aaf6c55770 check_image_snaps: image has snapshots - not removing5 d) V+ c. y% |- ^/ V- d0 J
Removing image: 0% complete...failed.$ G+ ?: L" y! f3 {" h. j. I
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.) T2 {' z- z) u/ P7 f/ k+ X8 E; a5 L
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak
2 Y$ Q& S2 C; D$ \2 L" YRemoving all snapshots: 100% complete...done.  c- P' x1 h- b& u3 F1 G
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak8 j$ v, i5 U: s! {: T
Removing image: 100% complete...done.
( B' B2 `  c( E$ ^8 ^# w[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
) q; V. P9 t. [4 u2022-07-20 11:35:50.337 7f8d6925cb00 -1 librbd::image::PreRemoveRequest: 0x561d24561770 check_image_snaps: image has snapshots - not removing+ r1 ~0 j& O% g- k0 V
Removing image: 0% complete...failed.$ D+ Y- m5 c- J
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.+ }/ z4 ]0 ^: b5 @
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak $ C9 L" f& V0 r
Removing all snapshots: 100% complete...done.
8 N. N* P. j& i4 t) L# V* W[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak 2 V: q# y& u' n! E
Removing image: 100% complete...done.9 \3 G+ F! ?: b1 }. s, T9 x, H! N1 _; ~
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
- b8 ^- F& h+ Y1 g! o7 q1 m8 ~2022-07-20 11:40:58.579 7f5a311ddb00 -1 librbd::image::PreRemoveRequest: 0x55e64a4d2740 check_image_snaps: image has snapshots - not removing- F7 j: J8 Q0 l4 S
Removing image: 0% complete...failed.
' |, v& j% }* [4 Xrbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
& A$ y. v0 m. R/ g- F- p7 M[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
# V% y7 V) q/ c" ^; YRemoving all snapshots: 100% complete...done.* O4 e" P( U% e2 B- H1 |4 ^/ F! T
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak6 s, Y- p0 T  v" c% U/ A! q; A
Removing image: 100% complete...done.
 楼主| 发表于 2022-7-20 11:48:24 | 显示全部楼层
上述完美完成rbd import 导入export 导出 解决openstack cinder-back报错,无法还原的问题。
 楼主| 发表于 2022-7-20 13:38:27 | 显示全部楼层
其他方式文档介绍::6 Q* K/ t/ V* c  r" H( {9 `
创建云盘volume-id,大小为1G
: |, D1 }! H* y/ |$ v7 U  q' I$ G. N1 e+ b
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G) a' @3 R1 i6 ~2 o
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
9 Z1 p$ i2 Q, f2 `$ @( ]" pvolume-id         1GiB                          2           4 o6 H- h1 K3 d$ @
' R' }& g7 d$ z( [3 g( v7 [
  W+ {. j' I' R* `  ]- F4 E
2. 先尝试进行diff store, 创建backups中的base盘
, N. @2 |& G' p* k
- n4 n# k  b6 ^()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G
2 N6 W7 e- D1 e+ d( H()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
8 \8 w) D! n3 M  K6 q! ENAME                         SIZE PARENT FMT PROT LOCK
) |7 k1 o5 E( H" f$ Yvolume-volume-id.backup.base 1GiB          2           - [3 ]$ A) |7 U  x9 C+ J; W2 ^
7 R  h; n8 I' T
" k9 Z8 l. C) x! S9 Y
3. 创建volume-id快照1,命名规则如下
3 t4 h7 |) W9 V( Y4 {0 C5 H
0 R8 `  T4 t  C1 s/ K& q) v()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap  create volumes/volume-id@backup.backup-id.snap.time11 D" P) S+ T3 p6 L4 i
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id! h. q/ U# J1 ~. f0 }' M. j/ o0 @$ U
volume-id                                 1GiB                       2           
( n8 w/ n! E5 Q! R: G  Ivolume-id@backup.backup-id.snap.time1     1GiB                       2           
# w( a- Q( A# A& P; i! k2 _( N" e8 f
( J  K- l( ]5 S# p/ h8 {' x5 ]
4. 导出云盘和快照1的差异1* o" X5 w- [9 `# U+ L
; o( @( n4 E( S$ t3 j+ }
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1: X6 _1 k; E6 l+ q, _
Exporting image: 100% complete...done.
' B  C& n  C7 Z: E( ~()[root@busybox-openstack-f7bcf88-hgdkz /]# ls9 v6 M( d; R* ~0 w# K
test_diff_snap_time1 ' g- A; @! e( F5 w9 Y
3 _4 v" A( Q9 N  }% c7 k" u* Z

8 w, h% o7 i+ C# H. T% ~5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照1 e- Y& l% P0 W; R: S) Y) \$ S

  \8 D" k6 J" D()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base
1 h$ Z! M8 W  B8 FImporting image diff: 100% complete...done.4 [! c0 P: Q; V: q
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
  m2 N8 e" I8 bNAME                                                     SIZE PARENT FMT PROT LOCK
* d% e  I! T2 |7 b. ~volume-volume-id.backup.base                             1GiB          2           $ D7 p' s3 ]9 q; V" D: f
volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB          2           6 m2 X: w+ k; m0 x3 l

- K3 o' m! u+ J" o4 f
8 b  L- L1 s, s3 {- t$ q/ r6. 第二次做增量备份时, 创建volume-id新的快照2
1 i6 R8 q( i/ O1 o# c
+ `/ p; V0 l! K- H; P5 f()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap  create volumes/volume-id@backup.backup-id2.snap.time2
4 m) w& Q/ Z/ J9 L()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
) ]7 _, U( B# o8 {; z# P% ]NAME                                                     SIZE PARENT FMT PROT LOCK
, x1 Q% g0 G8 x% B" g% Uvolume-volume-id.backup.base                             1GiB          2           
4 f( S+ n7 c8 r: z; K& ]# S# @# ~volume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB          2           $ p/ L2 _  t  C! j" J3 C
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id, Z/ U& ~0 {( L: i" t6 c% u
volume-id                                                                                     1GiB                                                                                                        2           + R) X4 m5 m  F/ [' \) d
volume-id@backup.backup-id.snap.time1                                                         1GiB                                                                                                        2           
7 L5 T/ o, g+ T% ?# q+ ~volume-id@backup.backup-id2.snap.time2                                                        1GiB                                                                                                        2           
0 v: T* ~# d. D" U8 Z3 N
) g: C; A4 q7 t' ^/ D
3 D) P! a* ~, s  r9 ~7. 导出快照1和快照2的差异2: ^' K0 c# h4 I. n* L

& Y" ~& G) b- A0 I, r# r()[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
; A8 P) d* |0 Y) P2 r: m9 ~Exporting image: 100% complete...done.9 u- g; `3 k0 x# o6 ?* a

( a& ^6 }# E$ g5 H2 L7 q8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照
* E+ ^" }7 b! L1 K! x
) `: n$ n1 |) D" G/ J* M3 T& w! n()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base
" w% ~, l% D" }/ yImporting image diff: 100% complete...done.
8 R' a7 Z  c: X  g6 K()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
, l' g# V5 s1 a& N; n$ vNAME                                                      SIZE PARENT FMT PROT LOCK   J  i( K6 d  f( D/ Y$ N6 }# _6 i4 v
volume-volume-id.backup.base                              1GiB          2           8 J9 b9 E/ C) X5 j* T  D
volume-volume-id.backup.base@backup.backup-id.snap.time1  1GiB          2           
% N+ z1 }- j" P+ z6 g4 J: pvolume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB          2           
1 L' r8 w9 v, ^7 e# `
+ K$ Y! V( O, O- {% H
# \3 r0 {7 v% v, D9. 删除volume-id的快照1
4 j5 G5 K) h# H' T5 q5 o) B9 S4 y
/ F+ N- ~2 X/ {4 v" u10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。6 T" N4 Y+ n1 s. V; u2 Q5 |1 R! J
( N+ a  p' Q1 N% X( b; {& F( W1 V
11. 备份元数据
  \" o" v3 }5 Z% ^! {1 J. k/ n6 ]6 U0 m% W) g/ W4 z6 p% D/ H
三 RBD恢复备份的实现:
: P4 j* v2 h( C  Y1 先检查是否满足diff restore, 需要满足下面条件/ n" w) Z# r% T5 u% `# N2 S6 L

( E1 \/ k" d- u  Y  Ncheck can  diff restore:
8 M6 \7 m: [8 m  r; \4 l1 base exist: backups/volume-volume-id.backup.base
  C% u- b; E. n# L4 _' `  W% v2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time1
6 [% A. C! r& S: S) T# ^! o' Y$ }3 volume file is rbd7 e  G, t% O' I* ^' k, h
4 backup[volume_id] !=  new volume_id
1 e$ C, `. p! D+ ^# v8 `  k5 rbd volume has no extents (extend)
% e. D( Y/ M) W, y& f- \* Q* L/ q' L1 @* C
  q- l# e+ Y* Q. V
2. 如果满足diff restore条件, 先导出对应backup-id的差异) j/ R% c( z) Z: ~$ o- _) v
  c1 S# a6 h: G9 Q5 W
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff  backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id21 O" U& n4 p( N6 G" I
Exporting image: 100% complete...done.! j7 T& F/ Y* _

- F8 l5 t. T7 h2 J. i3 V1 Z6 ]; i3 ?. b, I! ~
3. 将对应backup-id的差异导入new-volume-id* K! p1 e) _" G) B8 e

/ x' o. D0 S1 Y  u" G0 A& j()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2 Q1 o& j% R. F: p7 r' h
Importing image diff: 100% complete...done.) O: A3 C/ N! W; R% l
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes# ~6 b; e; N' u- X9 |8 J& }4 D; N
NAME                                       SIZE PARENT FMT PROT LOCK
+ t1 H: m. ^, W1 L" b* Onew-volume-id                              1GiB          2             h0 h& b! z: z  }7 V! N! ]+ ~
new-volume-id@backup.backup-id1.snap.time1 1GiB          2           
4 R- r; H7 S: j* T$ Q6 Nvolume-id                                  1GiB          2           ' U+ s) u3 z" B, C
volume-id@backup.backup-id1.snap.time1     1GiB          2           ) }5 C' J& ^+ O2 D* g4 k
3 R  P# M2 \# k; A- a

' h$ t& H1 i; s9 |4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。
) b* a% Y1 a3 r- p: v) T! h2 r7 m5 T1 x0 v
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G$ a* v( J5 Z7 N9 N
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id2; P. G" A7 L5 n0 v
Importing image diff: 100% complete...done.
* W! X0 J" X& w- w7 q()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
8 O$ M: B0 w  \* j6 rNAME                                        SIZE PARENT FMT PROT LOCK $ p8 {" D$ c: Z$ O  _  V5 O
new-volume-id                               1GiB          2           
+ S, X9 [' @6 |* `new-volume-id@backup.backup-id1.snap.time1  1GiB          2           ) j) l! {) N& o7 n
new-volume-id2                              1GiB          2           - u# v% F6 v7 k! p2 n% T7 D3 H
new-volume-id2@backup.backup-id1.snap.time1 1GiB          2           0 o4 h, b0 |# l2 a  T
volume-id                                   1GiB          2           0 ^8 T  \: {& W2 d
volume-id@backup.backup-id1.snap.time1      1GiB          2           
, k8 T  ?0 V( E()[root@busybox-openstack-5c687fdc9-mpwjd /]# " N& O+ Y) s) R* S: J
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G/ P& v9 L2 z& c! S0 ~0 ]! H
Resizing image: 100% complete...done.+ L7 `; ?# v+ d& c
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes# e7 k/ o- H- O3 D& P9 [- o8 L
NAME                                        SIZE PARENT FMT PROT LOCK
3 S" E1 R+ ^, `' X( ^9 Snew-volume-id                               1GiB          2           # R, Q8 D  ?% R) ]: ]7 ~8 Q
new-volume-id@backup.backup-id1.snap.time1  1GiB          2           5 K$ E6 G, ^5 z% F. N9 S0 t/ c* \
new-volume-id2                              2GiB          2           
9 k) r7 s1 o! Q6 c$ B4 U. @new-volume-id2@backup.backup-id1.snap.time1 1GiB          2           % ^* {2 ?/ j' O4 o* F% t2 W
volume-id                                   1GiB          2           4 d+ u# T" ?) |# N* R8 m
volume-id@backup.backup-id1.snap.time1      1GiB          2           / K7 P( C# D) o
5 {3 `/ \) m% U0 t1 u6 S1 W
: L" C# x- a) ?1 w
) c0 X2 F: C( ]+ V. j6 ]. b
5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
" Q8 [6 L! Y0 e* b; y, m! c& Z) B/ Z- u; I( P5 M6 A
6. 恢复元数据
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 23:45 , Processed in 0.081078 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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