易陆发现互联网技术论坛

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

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

[复制链接]
发表于 2022-7-20 11:23:11 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 金钱 才能浏览
 楼主| 发表于 2022-7-20 11:47:01 | 显示全部楼层
最后所有的      卷恢复后,删除原来的系统盘卷,记录如下:
* e: R  E$ n9 b3 F- E[root@compute06 src]# rbd ls  -p  hdd-8T-volumes |grep bak
6 [. \& y# T9 v0 Avolume-84942e67-2606-4efc-b27d-f7cd7612a311-bak+ ]7 y; l4 t0 A; e9 N
volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
% L7 k& Q7 e7 B# c: K4 bvolume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak4 z9 i) A( ?* I4 M5 \0 m, w$ ~6 t
[root@compute06 src]#
$ z( g2 ^9 A; U: J- N0 C[root@compute06 src]# . |1 t; k' o( u; Y/ Y7 U
[root@compute06 src]# 4 r( l0 G8 O2 Z; w
[root@compute06 src]# + J2 y& j2 O2 F( K$ G( Z
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak( g  _0 h& }) U8 Y* O0 _
2022-07-20 11:30:32.338 7f3868c35b00 -1 librbd::image::PreRemoveRequest: 0x55aaf6c55770 check_image_snaps: image has snapshots - not removing
9 y- j) v( m+ s" k, LRemoving image: 0% complete...failed.7 Y+ o- X) G" @4 e* q9 u4 T
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.2 R. c4 o' f; y8 u
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak+ H( v+ U' M  G( P/ y5 I
Removing all snapshots: 100% complete...done.2 p  b  u# ?. m) K
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-84942e67-2606-4efc-b27d-f7cd7612a311-bak9 F( y) q' a+ A+ h& a
Removing image: 100% complete...done., @/ g2 c1 r! Z, _9 @/ L
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
/ I! u# a- F0 I4 Y( B( O# i2022-07-20 11:35:50.337 7f8d6925cb00 -1 librbd::image::PreRemoveRequest: 0x561d24561770 check_image_snaps: image has snapshots - not removing% r) r" O# |. g  n" q1 I
Removing image: 0% complete...failed.1 s# G6 x* i0 L
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.9 Y( d1 V: J/ N  W7 K
[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak : O% K1 K2 O1 s. s: Q* v
Removing all snapshots: 100% complete...done.
1 A0 ~* I! K2 J& P4 N( {8 D- G[root@compute06 src]# rbd rm hdd-8T-volumes/volume-cac25744-8d4d-4930-bc1a-4e47dae3177a-bak
; G! @3 m! {7 V7 R+ QRemoving image: 100% complete...done.
' N- x) i) C( U' e5 x) M5 T/ D[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
' W, K1 r1 z# y- s: y" K2 i: y2022-07-20 11:40:58.579 7f5a311ddb00 -1 librbd::image::PreRemoveRequest: 0x55e64a4d2740 check_image_snaps: image has snapshots - not removing5 D6 X% J1 y7 C0 |
Removing image: 0% complete...failed.
7 [# u- H& U4 p7 ]8 ^1 I1 T) b! ~rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
. u- f5 z3 e2 ~2 g[root@compute06 src]# rbd snap purge hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
2 E1 K* @) M3 \( B9 dRemoving all snapshots: 100% complete...done.! }7 Z- M/ J  c- p0 |* ?$ B6 w  u9 {
[root@compute06 src]# rbd rm hdd-8T-volumes/volume-e0a075b5-0f1e-443e-8dd4-6077b3ecec8d-bak
5 ~; ~1 V" y/ w& I; i9 P* E/ W3 b1 {Removing image: 100% complete...done.
 楼主| 发表于 2022-7-20 11:48:24 | 显示全部楼层
上述完美完成rbd import 导入export 导出 解决openstack cinder-back报错,无法还原的问题。
 楼主| 发表于 2022-7-20 13:38:27 | 显示全部楼层
其他方式文档介绍::- V. U9 e( H8 B( t& j4 _% Y
创建云盘volume-id,大小为1G9 F2 h# r+ s8 H
) r0 p7 I) m" c6 P" {
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create volumes/volume-id --size 1G4 Y2 y" O2 B1 L4 V; u+ Y
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id
! u+ v" A" T" s$ M4 F$ @4 k- ?4 o, A. |volume-id         1GiB                          2           8 r: Q& b* l2 a. x1 `6 w

; B/ v* ?# j/ \1 V% G
7 N4 E2 V' F( \, W2 p3 I, c2. 先尝试进行diff store, 创建backups中的base盘1 K. E7 s8 _% A+ Z# @

- ?+ J1 }5 z8 m- J()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd create backups/volume-volume-id.backup.base --size 1G6 I' H7 f3 S: V5 y8 b
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups6 p& e& k* L0 J; e
NAME                         SIZE PARENT FMT PROT LOCK
) w" I# D% k, {9 T1 r* Dvolume-volume-id.backup.base 1GiB          2           5 a: D& @. @9 ~0 a5 I
, I) H* n4 g6 U/ t3 w
! s; i5 B) J5 B1 L. V  T
3. 创建volume-id快照1,命名规则如下6 [6 b6 |4 W/ E% |7 ^0 [+ |) A
$ r1 ?+ \: z1 T, @' t+ T# r, z" a
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap  create volumes/volume-id@backup.backup-id.snap.time1
* C7 l# @. x' f: M$ f8 T()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id: ]* [! P7 Z- ?6 m* E# z, U
volume-id                                 1GiB                       2           . e0 [$ J& J1 t6 ]; F- ~) C
volume-id@backup.backup-id.snap.time1     1GiB                       2           8 Z" D* c& Q. E. g+ g( l6 a+ b
1 Z8 z4 j2 r; J) K6 Z
. C3 K: J5 f+ r
4. 导出云盘和快照1的差异1
. }* f8 v' Y0 G7 \! ~; \8 t' U1 n, ^3 O/ |, n3 O
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd export-diff volumes/volume-id@backup.backup-id.snap.time1 test_diff_snap_time1; y5 C9 O$ E/ v$ S. d$ L5 g
Exporting image: 100% complete...done.
9 w) D( b0 E  l: ^% U7 d! `2 N()[root@busybox-openstack-f7bcf88-hgdkz /]# ls
9 ?& I. x6 B4 ztest_diff_snap_time1 ) f. I3 [% u# [

5 o* v% A9 g5 S5 {3 ?; V0 W7 l/ @3 j0 Y2 @& n
5. 将差异1导入到backups的base盘中,此时base盘生成了一个快照
" @. t# o( u& q! H5 J9 ^# `" J& x, d  J* p
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1 backups/volume-volume-id.backup.base
5 k4 w2 r; [* a. Y' p1 ]; R) oImporting image diff: 100% complete...done.* S5 v9 h9 H: t* o% T+ h
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups
" u9 y* b, d3 P/ b4 i" u3 U3 cNAME                                                     SIZE PARENT FMT PROT LOCK
9 j( j) z4 g8 g9 i9 n  Evolume-volume-id.backup.base                             1GiB          2           
) o! X3 X! l& M7 {# o* jvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB          2           & T7 \7 g- Y; S7 _1 K0 L
/ t: C0 e% h- ]
2 D/ n3 K4 `- }5 H
6. 第二次做增量备份时, 创建volume-id新的快照2
7 t; }6 D8 ?4 P: ]( A$ r& A' [. R3 N0 L+ A" Q
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd snap  create volumes/volume-id@backup.backup-id2.snap.time2& c7 S" p$ G7 r
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups; |" ?: A+ C+ r" N$ |, {3 W% D  u+ Q# t  h
NAME                                                     SIZE PARENT FMT PROT LOCK 5 d! D1 s( Q  o7 u* q6 W, A
volume-volume-id.backup.base                             1GiB          2           
( s" O4 v0 A+ {$ Xvolume-volume-id.backup.base@backup.backup-id.snap.time1 1GiB          2           
/ c1 z# i+ q" b% K/ r()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l volumes |grep volume-id. X, B# t1 w9 P3 p) F8 c
volume-id                                                                                     1GiB                                                                                                        2           
) p) B$ P/ J$ i- H) x% L  k! j- V1 kvolume-id@backup.backup-id.snap.time1                                                         1GiB                                                                                                        2           7 h# G' V/ W/ A1 F
volume-id@backup.backup-id2.snap.time2                                                        1GiB                                                                                                        2           
1 i; b3 [7 q# c0 j  }) n1 u
2 z) ?2 ~/ I" p8 j1 a* a$ Z$ G9 s# E4 n! S6 _' C
7. 导出快照1和快照2的差异2$ {- p# c4 d* K4 _. H5 |
$ t5 M" H& w3 V5 G5 v/ n
()[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
9 z: M2 n& N2 e9 tExporting image: 100% complete...done.
8 U& h1 z0 y/ ]$ \' s- O7 |% ]# K9 I% Q8 W, m$ R* Q1 P$ V
8. 将差异2导入backups的base盘,此时base盘又生成了一个新的快照$ u* u* ~1 Z; T# H' U1 L
" E' C* T! k9 u7 Y* L
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd import-diff test_diff_snap_time1_time2 backups/volume-volume-id.backup.base
% C3 U+ `" T" |4 g. u& Y2 AImporting image diff: 100% complete...done.8 R8 T9 F8 G# s2 q% s; M
()[root@busybox-openstack-f7bcf88-hgdkz /]# rbd ls -l backups3 W6 F* j7 g6 o! H" [
NAME                                                      SIZE PARENT FMT PROT LOCK
8 R' Y! k) [2 B  X8 l2 Q" [$ ?! dvolume-volume-id.backup.base                              1GiB          2           
$ f+ q# `3 r. n2 x3 Rvolume-volume-id.backup.base@backup.backup-id.snap.time1  1GiB          2             ?& W" N/ U2 f! N: Y
volume-volume-id.backup.base@backup.backup-id2.snap.time2 1GiB          2           9 V2 G( w; |4 B

# t3 i8 f' d8 D( b7 e
/ I, e: K- c4 ]8 c3 N3 X5 A9. 删除volume-id的快照1; w% ~1 k; C$ [/ y0 y

- _8 C3 f7 I# e5 r( }10. 如果diff store出现异常, 会通过full store来备份, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。( v8 y$ ]5 @: d+ z) R) D+ ~

3 Y$ A) v8 ?" A; N, P: F11. 备份元数据# _8 p2 ]2 W- ]4 }

: Z; c, e* e) `' x三 RBD恢复备份的实现:4 x% e' o$ _: t) ~( V( E! ^( Z
1 先检查是否满足diff restore, 需要满足下面条件5 u, ~$ y2 o6 b, b" i& J
$ ~, Z; P" |/ a. L
check can  diff restore:6 M" V0 K! J) X4 U1 }
1 base exist: backups/volume-volume-id.backup.base1 |+ l: T5 z7 q6 S( `4 t& {
2 restore point snapshot exist: backups/volume-volume-id.backup.base@backup.backup-id.snap.time16 n  C5 e6 ^: P" {5 U
3 volume file is rbd
& x/ a. v- t( i! L, x3 d- k1 N; i4 backup[volume_id] !=  new volume_id! u3 I- Z3 P( m9 {/ ^% x
5 rbd volume has no extents (extend)% P8 e' |  W9 H) ~5 f% R

7 D0 e% |1 v$ g! q: q! q/ g/ P6 \  ?
2. 如果满足diff restore条件, 先导出对应backup-id的差异
! {0 i# k, y: Y- h+ Q/ e3 `7 u+ k# o, @4 z! a
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd export-diff  backups/volume-volume-id.backup.base@backup.backup-id1.snap.time1 test_diff_backup_id2
( ?: S$ y8 h% |. {3 L; ~6 V, x( BExporting image: 100% complete...done.
; X1 t) S: @$ d+ ?. |4 `5 Y* _* P3 p8 ]  W2 D! B, ]8 L
1 m- n2 H0 C& z4 j1 Y% @
3. 将对应backup-id的差异导入new-volume-id
: ~* b2 L/ n! F9 \- h& y9 p7 u9 y7 q* i0 l( |9 [8 |' a' p
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id
$ z# W" ?! `. PImporting image diff: 100% complete...done.) U: a3 ?$ p- e$ n/ N7 K
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
7 g3 k! D  |$ kNAME                                       SIZE PARENT FMT PROT LOCK # {/ ]) h) F. b6 g3 H, Y
new-volume-id                              1GiB          2           
2 p* m6 R, `/ p+ b5 ?. w7 Y, Anew-volume-id@backup.backup-id1.snap.time1 1GiB          2           # o) b& k2 |) O" ?2 L, l/ {" Z
volume-id                                  1GiB          2           6 v; _( Y. @0 X* J
volume-id@backup.backup-id1.snap.time1     1GiB          2           
& C& Q5 N! x% t; K: e8 m) B6 _9 Y% V

$ a% ]# }- U! D& e0 l6 A4. 如果new volume的大小与备份的大小不一致,导入差异后需要resize。
' S3 ~0 H4 V6 p3 n- c
" y4 h! g  \$ i% ~4 {()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd create volumes/new-volume-id2 --size 2G9 u* s) I: q' a/ ~6 T$ G8 v! J
()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd import-diff test_diff_backup_id2 volumes/new-volume-id29 e7 c! e/ R+ G  U- }
Importing image diff: 100% complete...done.
# H8 x5 \/ n  z7 k. v9 @" T+ F! ^) I()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
; y9 E/ y0 C) z/ t0 R. E& `NAME                                        SIZE PARENT FMT PROT LOCK
% [0 L) |. Q3 Mnew-volume-id                               1GiB          2           
! }3 f( F' k/ a. Z" Lnew-volume-id@backup.backup-id1.snap.time1  1GiB          2           
# g0 S* r- }* onew-volume-id2                              1GiB          2           ! v' q" y) b9 m2 P
new-volume-id2@backup.backup-id1.snap.time1 1GiB          2           # b) s' [( o, I( g! a
volume-id                                   1GiB          2           7 B3 M( w+ z/ e4 w
volume-id@backup.backup-id1.snap.time1      1GiB          2           
  V1 H5 M+ ^4 B( _()[root@busybox-openstack-5c687fdc9-mpwjd /]#
/ Z0 c) e/ C+ I& g()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd resize volumes/new-volume-id2 --size 2G  N3 j+ ~- Z4 |. b- k  `4 ~
Resizing image: 100% complete...done.
% l: V7 v/ m2 o, X- b; X()[root@busybox-openstack-5c687fdc9-mpwjd /]# rbd ls -l volumes
+ h. K: k0 z3 ~7 UNAME                                        SIZE PARENT FMT PROT LOCK 1 z5 A! @7 P# w2 J6 w1 w* c& x
new-volume-id                               1GiB          2           ; |- j0 [; p& H5 Y6 I5 ?
new-volume-id@backup.backup-id1.snap.time1  1GiB          2           ( C, c1 T1 {/ ?6 r' v% P
new-volume-id2                              2GiB          2           
1 y7 ?% t6 J7 H( ^new-volume-id2@backup.backup-id1.snap.time1 1GiB          2           
! h0 u5 [( L. e  {) \( Q1 ?volume-id                                   1GiB          2           5 \7 i/ i/ F  {2 E* v
volume-id@backup.backup-id1.snap.time1      1GiB          2           
3 r& a2 `/ h; g! t( a7 z( J/ G/ ~/ B( E

  D$ c) |6 ^5 e. B% t/ |" s$ B  A0 y- R0 z
5. 如果不满足diff restore条件,或者在diff restore过程中出现异常,进行full restore, 通过将云盘按照chunk=128M分片拷贝数据到新的云盘。
& n+ i8 o: K5 r' g3 P& G: ?0 s3 s; |  v( Y
6. 恢复元数据
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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