找回密码
 注册
查看: 926|回复: 6

openstack上创建卷,底层ceph 删除卷,然后rbd导入卷,创建新的虚机即可使用

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-6-17 17:17:03 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 金钱 才能浏览

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:22:40 | 显示全部楼层
查看导入的ceph镜像的大小:
4 ^1 q; h& }; o[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070- @- i% q; f6 j. P2 ?  v1 i
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
4 Y9 P3 Y! @) d0 Z# P        size 2.8 GiB in 717 objects7 ^3 l( c% z) |! H: l& q7 l
        order 22 (4 MiB objects)
' ?6 ]3 }6 L, q        snapshot_count: 04 r% {' L& Q1 @& J/ @; O5 W
        id: 9eb6a0f364b72b
6 k! k4 l  O+ q, C1 n        block_name_prefix: rbd_data.9eb6a0f364b72b
! D2 R; @* `3 P        format: 2
5 P; b! {2 g* M# m        features: layering
& _8 G/ T0 {3 f        op_features: 1 v7 h  C+ y* p4 @8 Y" P: q; c+ r
        flags: 2 }5 {: R: K% D# @. y2 |
        create_timestamp: Fri Jun 17 17:06:55 2022
- i" q3 i7 |: P7 |1 h$ V        access_timestamp: Fri Jun 17 17:06:55 20223 \5 N3 V' }$ \& d- S4 u/ l* `
        modify_timestamp: Fri Jun 17 17:06:55 2022
2 R; \7 Y* ]! W8 F& G' `

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:23:36 | 显示全部楼层
3、 快照导出的文件导入为新的RBD image
4 [; z$ u; Z0 w6 K# M快照的恢复过程使用的是刚刚上面提到的备份到本地的那些文件. 现在假如想恢复到v3那个快照的时间点,那么可以用两个方法 方法1:直接基于v3的时间点的快照做恢复 方法2:直接基于v1的时间点的数据,和后面的增量的v1-v3数据(要按顺序导入) & y- i  j- _3 e  ?1 b9 M% l
3.1增量导入:rbd import-diff ; x4 R$ j( a7 L' J
#方法1:直接基于v3的时间点的快照做恢复3 l" b- J  D6 i+ o! `" Q9 \( e
#首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息3 d8 ?# ]4 w% S
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-v1 --size 1    , U/ I. w, W4 A+ @1 `; @
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v3 replicapool/resume-v1                                          Importing image diff: 100% complete...done.  c6 o' `% m/ F  v; @! R
[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
3 d5 A1 q# p& ^0 ~6 T$ x- |" D/ t: T8 ^#方法2: 基于v1+ v1_v3数据恢复3 [4 N4 i3 M$ V7 x  ^
#首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息& n/ }) M( Y8 {2 v, B2 R$ f1 @
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-v3 --size 1- D3 n. E: v2 m4 M6 W2 K* n
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v1 replicapool/resume-v3
" D3 a7 V2 F0 fImporting image diff: 100% complete...done." _) a6 {% [- {: J$ n
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v1-v3 replicapool/resume-v3
4 B# [2 o+ I% _- T4 {# z1234567891011 - Q* S. L$ w; Y- o' ?5 ?
​ 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了 ; e# T( @/ F3 _$ v" x5 @5 k  L0 G
3.2全量导入:rbd import
/ h# ?7 C9 g8 B7 |) B注:不用提前创建目标image,否则rbd import会报错
# V. }# M, @8 ]/ Z# A' D* _3 @. v[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-full --size 1$ u1 Z" r1 b3 K: g
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-full replicapool/resume-full
3 ~" S2 Q* n% [0 W3 G" s& wrbd: invalid or unexpected diff banner$ r  N8 i4 D2 b
rbd: import-diff failed: (22) Invalid argument' j% V8 x5 x4 k1 U* u( k  y
[root@rook-ceph-tools-6f5694c655-hzpj5 /]#$ i7 @$ u8 V& Y4 M& W9 z. p  o! A% s
[root@rook-ceph-tools-6f5694c655-hzpj5 /]#4 ]$ M+ K9 b8 y. H) Z) _6 H9 B( }
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import csz-busybox-full replicapool/resume-full
# o: i. Z) D" v& q! C+ Erbd: image creation failed
9 K# v3 M6 A5 y3 v2 j) ?' u! aImporting image: 0% complete...failed.
% A1 b% V4 r" |6 brbd: import failed: 2021-01-29T02:11:56.790+0000 7fdfdcb4b500 -1 librbd: rbd image resume-full already exists
# A+ s6 ]2 N  |4 j( Y(17) File exists
; L5 u0 E6 V& E- P7 @, t& Z[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import csz-busybox-full replicapool/resume-full1
: H: o% P9 ], B, Y3 z0 R: g4 kImporting image: 100% complete...done.7 u7 H! e5 l$ s& q! [3 Z3 G
[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
& f) `; s; E+ g* @1234567891011121314 ! ]9 Z- ?. c9 c/ G  v
四、如何利用这个 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了,例如: 今天对所有的rbd的image做一个基础快照,然后导出这个快照的数据,然后从今天开始,每天晚上做一个快照,然后导出快照时间点之间的数据,这样每天导出来的就是一个增量的数据了,在做恢复的时候,就从第一个快照导入,然后按顺序导入增量的快照即可,也可以定期做一个快照,导出完整的快照数据,以防中间的增量快照漏了,然后就是要注意可以定期清理快照,如果是做备份的模式,在导入了快照数据后,也可以清理一些本地的数据,本地数据做异地机房复制的时候也可以做一下数据的压缩,来减少数据量的传输 / `7 h$ A. E% p5 i
客户端验证:将RBD image恢复到pod
3 `3 {! j$ B* U. u* \9 s6 N思路:将新的image name重命名rename成原来的image name 7 `  Q" n, I' c& i
删除旧的image
* g  W2 ~. a! G( @# Step1:停掉pod对image的使用
2 E3 f- W6 u6 T修改pod的yaml文件,将spec: replicas: 副本数改为08 T) d( e" m/ G8 j( _" k" D
# Step2:清空旧image的snapshots
6 e1 S7 k4 o6 G( }[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd snap purge replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c- j& u& c& ^5 A- l
Removing all snapshots: 100% complete...done.
" W1 Z% Y  Q( ^* Q" ]" V# Step3:删除旧的image
3 S8 y: N: ~  f  Y[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c. Q! n  |6 ?8 Y3 {) j3 V6 N. m6 g
Removing image: 100% complete...done.
  @& l  t! P' c1 P. t" Q4 d) K12345678
9 p/ s. e$ r$ N/ A# O将new image name重命名为old image name - `1 y) F  o, Z5 \
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rename replicapool/test-v3 replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
' t+ B, y2 _) g$ J1 4 V8 ^! W8 L8 s' L1 Y
启动pod 1 Z" W% C' j$ J. C* c
修改pod的yaml文件,将spec: replicas: 副本数由0改回原值
# a+ k5 W& ?+ h, Z# i9 h/ u1 ' _5 O7 C# [, f2 D5 y8 i3 O3 _
FAQ: 6 g$ s- h( N" F1 _6 ^( Q
rbd 删除image时,报错“rbd: image has snapshots - these must be deleted with ‘rbd snap purge’ before the image can be removed” - l. W7 k7 m1 W* x" H
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c1 P9 v4 ^! {; p9 x1 l* ?4 b; ^6 C1 P
Removing image: 0% complete...failed.  X. _! E  L8 s5 V" C0 v
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
  G; j' E9 T/ ^123
; M2 l& }* H; I8 x6 @" G* A解决方法:执行’rbd snap purge’删掉image相关snapshots ; O6 k1 @4 I  U2 z
rbd 删除image时,报错“rbd: error: image still has watchers”
5 {: V& m5 M1 ]1 J( [1 J' N; @[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-6ee1b63a-6060-11eb-b9c5-0e28ddb26a3c# X  h: |- d5 u5 X0 _# j3 v. F/ v1 u
2021-01-29T06:22:09.698+0000 7fe4677fe700 -1 librbd::image::PreRemoveRequest: 0x55a645137470 check_image_watchers: image has watchers - not removing9 W* T, k  k' @, n7 A
Removing image: 0% complete...failed.
0 T8 }2 X1 t9 i/ e% A8 mrbd: error: image still has watchers. n1 _$ o+ `& w/ l, X! L% T
This means the image is still open or the client using it crashed. Try again after closing/unmapping it or waiting 30s for the crashed client to timeout.
! m3 I4 S* I2 ^$ L& e" ?12345
! p4 m$ ?: ?8 `: D( I! v3 u解决方法:删除使用image的pod(修改pod的yaml文件,将spec: replicas: 副本数改为0)
# }) E/ D0 e0 I+ z: E+ a

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:25:41 | 显示全部楼层
[root@controller1 src]# rbd resize --size 50G hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070
) N) A+ c. `# |4 @# Z" S7 nResizing image: 100% complete...done.& s2 q) l' y& F; ]0 {( n# b
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070& E, u2 h$ z2 u% B- `4 S
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':! }/ w1 h8 }! W
        size 50 GiB in 12800 objects/ V9 Q& d" X% `* U/ \
        order 22 (4 MiB objects)
# K- O% I" x' j3 s6 P+ g        snapshot_count: 0
) y2 T  i+ A1 E& f" i3 K# v        id: 9eb6a0f364b72b
  d8 \7 e# q% I8 m8 z' x/ S: z5 s) \$ W        block_name_prefix: rbd_data.9eb6a0f364b72b/ v) w9 B( q0 C0 J  R
        format: 2. j& e! z0 V. }* p: V: n2 n" w
        features: layering' b9 F/ B- k4 [
        op_features: 3 J+ m+ H  @. G# q( `
        flags: ; a7 \& d& \: v7 K4 C6 ?5 T$ S
        create_timestamp: Fri Jun 17 17:06:55 20228 P* |! e  l; Y& f+ v
        access_timestamp: Fri Jun 17 17:06:55 2022
# x- j% d7 W4 @6 r$ D- b! x        modify_timestamp: Fri Jun 17 17:06:55 2022

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:37:29 | 显示全部楼层
在openstack上扩展卷后,底层执行命令:
: ?# U. f0 n+ P6 J[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070
, x5 `  M; r) f' M2 x: vrbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
+ H+ w, @: M! K) `  P. R        size 50 GiB in 12800 objects4 [$ o3 q% T4 i+ E7 i# O9 g1 m; t6 J
        order 22 (4 MiB objects)1 |& C; T( n$ K( a  U# x
        snapshot_count: 0+ ?4 a& }8 L1 [& R; c* r
        id: 9eb6a0f364b72b  z8 p( ~/ x- Z, e( i
        block_name_prefix: rbd_data.9eb6a0f364b72b- e# |( n: w1 s
        format: 2
! x$ B8 Z  }3 {1 N        features: layering
1 z5 y3 Z( _( `+ b, M/ ]1 n        op_features: ; g3 B7 s5 H' {2 i$ [
        flags: ) i- ^& y! ]" F0 R- R4 M* _$ _
        create_timestamp: Fri Jun 17 17:06:55 2022. |* z0 X+ U! Q  V
        access_timestamp: Fri Jun 17 17:06:55 20221 b6 O  D1 I5 g% o" K: N( J: Y" D
        modify_timestamp: Fri Jun 17 17:06:55 2022
$ J7 e* s7 l9 [4 |+ U[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e0708 ~1 T8 L; F  b0 l, n5 f* v
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
" n% k) M: n: u% Y. C6 j" j        size 51 GiB in 13056 objects
4 {1 _2 e" X4 z- P7 g) t        order 22 (4 MiB objects)0 c, O' ^  e; K8 G- ^; b
        snapshot_count: 0& H  t. X1 {" {( f; U0 q
        id: 9eb6a0f364b72b
1 @2 n8 y& k/ b  @3 _; |0 l        block_name_prefix: rbd_data.9eb6a0f364b72b
/ u0 [7 P4 Z3 T& T* G        format: 2( p6 J+ D0 @2 e8 U2 R
        features: layering
/ ^1 b" S7 E2 L        op_features:
: X$ Y* |; f# I; C        flags:
/ R3 F+ u2 [, t+ r  M0 J' F4 x        create_timestamp: Fri Jun 17 17:06:55 2022
% N* p0 }1 q# x: k( U4 c        access_timestamp: Fri Jun 17 17:06:55 2022% v, B4 w8 B# x/ @: _9 z4 k) S
        modify_timestamp: Fri Jun 17 17:06:55 2022$ v7 E; N+ h' r" |
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e0706 u. D, N8 O) p: }. C
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
: \! X0 E( Z) Q. _$ \4 H' z        size 51 GiB in 13056 objects
1 j1 C, ~7 g, ]4 e2 }        order 22 (4 MiB objects). y, q( u) T/ I5 }) ~
        snapshot_count: 0* T* N0 @" I$ m7 @7 j% P  f3 j
        id: 9eb6a0f364b72b5 T# [1 h$ r5 }* X. s5 s/ ]
        block_name_prefix: rbd_data.9eb6a0f364b72b4 `3 |5 i, P/ F0 l
        format: 2! g$ C4 ]& e) I& u4 C, V! G& v. s
        features: layering% h3 U1 f: A  Q$ i/ ?( f8 L  H
        op_features:
* q1 H6 L0 X$ ^8 n        flags:
2 L0 t8 Z- Q6 K5 M3 ?& f7 p  h' J        create_timestamp: Fri Jun 17 17:06:55 2022
. ]$ R9 \3 b: M7 n7 G        access_timestamp: Fri Jun 17 17:06:55 20220 q/ S. |/ v# Z
        modify_timestamp: Fri Jun 17 17:06:55 2022
& i5 D. c) l! q- F8 k[root@controller1 src]#

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:39:50 | 显示全部楼层
一套完整的流程搞定。openstack上不创建镜像,即可完成镜像使用。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-13 17:01:05 | 显示全部楼层
[root@host09 images]# rbd -p volumes-hdd ls |grep 98e50ac1-3b42-4393-b53f-6c6832fec4c4/ k& x7 h- h' L" X5 w& \( j
volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4
0 I( k( {5 J- _. \9 o8 j[root@host09 images]# rbd rename volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4 volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4-bak
; @" r# g3 k. \! K[root@host09 images]# rbd -p volumes-hdd ls |grep 98e50ac1-3b42-4393-b53f-6c6832fec4c4
6 @$ M" ?) H9 q# f; B, Ovolume-98e50ac1-3b42-4393-b53f-6c6832fec4c4-bak4 y7 p! v1 \! v) A
[root@host09 images]# rbd import volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4.raw volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4
+ M. l, z; r" z9 u  Q+ a3 S; ]Importing image: 100% complete...done.4 e& o; L; ~9 I7 @; ]# N
[root@host09 images]# & f+ d1 A# G2 j" i4 R$ q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:21 , Processed in 0.020702 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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