易陆发现互联网技术论坛

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

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

[复制链接]
发表于 2022-6-17 17:17:03 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 金钱 才能浏览
 楼主| 发表于 2022-6-17 17:22:40 | 显示全部楼层
查看导入的ceph镜像的大小:
4 F) f( v5 }# V/ j$ @! O7 E[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070: j% J: n5 S! `% }2 Z' f( Q( g! Q
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
" M9 c% c/ y+ N. u6 O1 S, k        size 2.8 GiB in 717 objects
. ?4 U" _% T2 Y1 r% d3 [% l        order 22 (4 MiB objects)
) ~2 t% A1 o- ]7 F/ c, A        snapshot_count: 0- v+ D8 o  a+ t3 w% E
        id: 9eb6a0f364b72b
/ B% M& ?% M. q. I        block_name_prefix: rbd_data.9eb6a0f364b72b  U  E9 x1 [% q, h  D9 ^- Q( X
        format: 2. o. P3 i! i  K' \; }, i' P2 p. h
        features: layering
  l( ]3 m2 M% i6 s9 e3 k. n  n        op_features:
3 p0 k9 }! T! v        flags:
$ o, l& N& I5 ]# v1 j0 l% i2 l        create_timestamp: Fri Jun 17 17:06:55 2022& `3 }! E2 @  R3 x, C. q+ e! ]
        access_timestamp: Fri Jun 17 17:06:55 2022
0 ~1 O) V" i; y( P        modify_timestamp: Fri Jun 17 17:06:55 2022  O6 F* v4 @4 }3 k& R  |8 \# Y
 楼主| 发表于 2022-6-17 17:23:36 | 显示全部楼层
3、 快照导出的文件导入为新的RBD image ) F; @% k% J1 v0 Y% }
快照的恢复过程使用的是刚刚上面提到的备份到本地的那些文件. 现在假如想恢复到v3那个快照的时间点,那么可以用两个方法 方法1:直接基于v3的时间点的快照做恢复 方法2:直接基于v1的时间点的数据,和后面的增量的v1-v3数据(要按顺序导入)
* B  X! J" \2 i3 O0 `6 |* O3.1增量导入:rbd import-diff
' |3 ?* u' X; D! C#方法1:直接基于v3的时间点的快照做恢复! Z8 i# e( D/ Y2 G8 J; V. Z, F
#首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息$ |/ M8 s1 Z8 U6 |: U/ I3 k# ~
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-v1 --size 1   
0 f5 `- Q2 T( U4 ~- M[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v3 replicapool/resume-v1                                          Importing image diff: 100% complete...done.
4 z6 R  _8 w# p[root@rook-ceph-tools-6f5694c655-hzpj5 /]#8 h8 D" p# g  \1 I' Y) c$ ^
#方法2: 基于v1+ v1_v3数据恢复! }5 f6 ~' d* t2 @- p7 d
#首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息
9 {1 a: @9 ?5 Z, \3 C[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-v3 --size 1  C' d2 ^+ I6 ~; u0 j) k- a: z1 B
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v1 replicapool/resume-v3
! D( ~8 R+ G6 }& W- C1 {, zImporting image diff: 100% complete...done.' w! r: B, O: r& Q0 L; R" p
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v1-v3 replicapool/resume-v3
/ I" m& U; s) z% H+ y0 i# O7 N4 n1234567891011 $ H3 W% ]5 u, R" C& q6 |
​ 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了 : d, ?% ]% P& N0 O- }4 f
3.2全量导入:rbd import 5 F6 R) q- O+ [+ I+ R2 J$ w2 W: O. J
注:不用提前创建目标image,否则rbd import会报错
8 j; R0 k3 Q% w8 r[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-full --size 18 A) y( N$ _/ ]3 f
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-full replicapool/resume-full
. Z2 e5 h+ \: B% C1 {rbd: invalid or unexpected diff banner
7 [, z+ z/ }2 }7 h7 Wrbd: import-diff failed: (22) Invalid argument
$ s  K( O. b: {9 h* n/ B/ J/ l[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
% I' U5 e) l8 D4 d* S[root@rook-ceph-tools-6f5694c655-hzpj5 /]#. D. w+ F$ p! ]* b& R
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import csz-busybox-full replicapool/resume-full9 Y1 l" X# N/ E  }1 z( U
rbd: image creation failed( r2 ]& A* [, d' v* K
Importing image: 0% complete...failed.
6 t9 q% P7 T0 s" R  K3 Zrbd: import failed: 2021-01-29T02:11:56.790+0000 7fdfdcb4b500 -1 librbd: rbd image resume-full already exists& }3 {0 K) E9 u$ x# x8 u; m7 L8 F
(17) File exists7 W$ Z% p4 l. \# [8 t5 ^; n
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import csz-busybox-full replicapool/resume-full1
/ C: U7 l" y: u7 x% L7 }Importing image: 100% complete...done.+ P! ?2 w0 m& l5 X* H+ f3 }
[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
" E9 n8 _6 M% A- e; d. F. V1234567891011121314
9 \4 N, C, |- F  P9 d) L 四、如何利用这个 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了,例如: 今天对所有的rbd的image做一个基础快照,然后导出这个快照的数据,然后从今天开始,每天晚上做一个快照,然后导出快照时间点之间的数据,这样每天导出来的就是一个增量的数据了,在做恢复的时候,就从第一个快照导入,然后按顺序导入增量的快照即可,也可以定期做一个快照,导出完整的快照数据,以防中间的增量快照漏了,然后就是要注意可以定期清理快照,如果是做备份的模式,在导入了快照数据后,也可以清理一些本地的数据,本地数据做异地机房复制的时候也可以做一下数据的压缩,来减少数据量的传输
8 H- ]' r! i% p8 d& @) E客户端验证:将RBD image恢复到pod
* e$ h3 i! y4 ~思路:将新的image name重命名rename成原来的image name 9 S, r' L- `8 _% E$ ^) A. P
删除旧的image : m8 q# @, X# y1 Y3 {7 ]2 \8 G$ q9 K
# Step1:停掉pod对image的使用
- O# i1 P; {; z- a6 l" y: v4 ]修改pod的yaml文件,将spec: replicas: 副本数改为0+ S5 @+ p/ }! U  o$ b
# Step2:清空旧image的snapshots
8 v" J1 B7 d% ~[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd snap purge replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
9 L- p* X" _& e9 J8 }1 k+ iRemoving all snapshots: 100% complete...done.$ ], Y* w3 L9 ?$ v9 ?8 l# }$ u3 e
# Step3:删除旧的image
8 S/ y9 ?" P9 N: o4 r7 B[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
5 P- U9 G# j; q8 H- L& @Removing image: 100% complete...done.
& Y5 f3 w1 ~7 w! H' W4 C' S% z  p12345678
7 @3 K  D( m9 Z1 B将new image name重命名为old image name 4 O; z7 A, }& e
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rename replicapool/test-v3 replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
. e9 n& v: i8 v# r) \) K1
! S) k; V, q7 U& b8 H, o+ f" e启动pod
' }: f% v4 X* I3 j修改pod的yaml文件,将spec: replicas: 副本数由0改回原值$ H0 n$ f' M; a% O- u! A; r
1
( Z6 T; V8 F& ~0 @FAQ: ! @( I% b2 D/ K# f7 v: ]/ F
rbd 删除image时,报错“rbd: image has snapshots - these must be deleted with ‘rbd snap purge’ before the image can be removed”
) D8 U  j- _) v. m( Z[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
4 L* _7 Z1 t* q: Q8 t' LRemoving image: 0% complete...failed.: l- W" w2 }* g# e
rbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
# H# G+ j- h, }; V: Q123 * T) ?" b" F* h4 D5 m5 I2 z
解决方法:执行’rbd snap purge’删掉image相关snapshots
; w/ ]2 s& n5 z" Crbd 删除image时,报错“rbd: error: image still has watchers” " f1 T, L% R+ B
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-6ee1b63a-6060-11eb-b9c5-0e28ddb26a3c+ u! R" p) M% N/ n: {0 L
2021-01-29T06:22:09.698+0000 7fe4677fe700 -1 librbd::image::PreRemoveRequest: 0x55a645137470 check_image_watchers: image has watchers - not removing
( n/ J1 t% g) t2 k! y8 K: URemoving image: 0% complete...failed.+ }: a! U( b4 c% s! k' k9 e$ K6 ~: R4 g
rbd: error: image still has watchers
. z& M+ K; c. s. ?5 `8 w% p+ dThis 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.
  B/ T/ `6 z$ i$ G, z* L12345
- q5 w8 G+ ~+ S( L4 U解决方法:删除使用image的pod(修改pod的yaml文件,将spec: replicas: 副本数改为0): _$ `2 R; f9 ^, u7 U
 楼主| 发表于 2022-6-17 17:25:41 | 显示全部楼层
[root@controller1 src]# rbd resize --size 50G hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070  ]: R' ~6 Z; X9 }& P) |
Resizing image: 100% complete...done.
- q/ j/ W1 j& U% U[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070* l! s( i8 A* S% W1 }
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':6 `- e3 \9 i# p
        size 50 GiB in 12800 objects
0 }0 c+ F% O& C; A' J        order 22 (4 MiB objects)
1 ]7 F9 |/ W) }9 g8 K" E- ^0 X        snapshot_count: 0% j9 T$ Y3 k7 c- @# @8 A# Y. w/ d5 g# t
        id: 9eb6a0f364b72b9 H, F2 v6 X, V% l( b
        block_name_prefix: rbd_data.9eb6a0f364b72b
2 t' p! p0 s6 U- G, B* ?        format: 2
/ ~- B! x% U+ @6 D8 f        features: layering# F+ {% L9 ~+ ^1 b  @6 u/ Z. ~% Z
        op_features: - W/ l5 w8 t# m$ p# ^- ~$ w
        flags: & q& P# o: }, Z
        create_timestamp: Fri Jun 17 17:06:55 2022( D0 L% Z) ?( \8 A% j
        access_timestamp: Fri Jun 17 17:06:55 2022" Y  u8 t6 w6 U! Z* D
        modify_timestamp: Fri Jun 17 17:06:55 2022
 楼主| 发表于 2022-6-17 17:37:29 | 显示全部楼层
在openstack上扩展卷后,底层执行命令:
4 ^$ J4 `9 I  E9 b9 l2 M, c, K! O[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070
% r% t( \4 x. |2 p" Crbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':( J$ ^6 b, P1 P4 F
        size 50 GiB in 12800 objects
4 W9 w3 m6 N0 l0 ]        order 22 (4 MiB objects)) p( D$ F3 R2 e, r
        snapshot_count: 07 [  W( b; w7 Z
        id: 9eb6a0f364b72b0 K' t; p5 D, }; k. W  M3 _. a
        block_name_prefix: rbd_data.9eb6a0f364b72b
& y3 ?1 r: ^/ c* H$ |- C1 L        format: 2
  G/ V- ^& z' w6 c. J        features: layering4 ?" \/ ]+ s3 G3 ~
        op_features:
5 ^. {4 k, W: }, _        flags: # p. g2 b2 i6 y, z
        create_timestamp: Fri Jun 17 17:06:55 2022/ n2 n9 p5 }1 N$ b0 m  m* o
        access_timestamp: Fri Jun 17 17:06:55 2022; C# t  I0 G; ^% l
        modify_timestamp: Fri Jun 17 17:06:55 20227 [& Z5 N- E6 C2 e, L
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e0701 a. h1 L( X  Y7 c
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
( g+ B+ Y$ u9 ^# u" ^2 c7 b  X        size 51 GiB in 13056 objects# c( \- z# T% z& n# \
        order 22 (4 MiB objects)
! Z6 d( p7 C; y' A+ z' Y& x1 \        snapshot_count: 0
5 K: d7 j% w# U/ Y- U  ]        id: 9eb6a0f364b72b4 b  ]0 U& |; V' F$ h& j; d  @7 d
        block_name_prefix: rbd_data.9eb6a0f364b72b% c) [& v- N) X4 ^; `( A: a9 G1 V
        format: 2
6 X1 U! o* I# W& s4 ^        features: layering
5 X$ V7 {2 ?. t0 U* N* t        op_features: 7 r- P6 {' F9 ~1 k# W3 y+ i
        flags:
8 b7 J9 I: X& }9 c        create_timestamp: Fri Jun 17 17:06:55 20227 c' C6 N6 f& `3 \  ]
        access_timestamp: Fri Jun 17 17:06:55 2022% V+ x8 I7 J3 J+ ^4 e; ~
        modify_timestamp: Fri Jun 17 17:06:55 2022: A5 b  G% [3 r% b2 ^" r: k
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e0705 H' V' m* [. I1 `& r% f
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
- v8 ~% H" r" e" b( ]& \        size 51 GiB in 13056 objects9 H; o# p$ \5 M* d7 w' k5 s
        order 22 (4 MiB objects)/ t- T! }4 B# q5 q- y6 L; l( K
        snapshot_count: 0* O. }2 K8 [( ]* d" ?* z0 n
        id: 9eb6a0f364b72b0 M' G. Y! J! y& ~1 ^
        block_name_prefix: rbd_data.9eb6a0f364b72b
! P/ X! k; F5 X6 c) c: E        format: 2
6 Y8 C' B5 p) B6 W2 p        features: layering& q) e5 V% [' h3 c; [
        op_features:
/ o6 A9 G% `- k- w) _! `        flags:
2 h) M5 Y0 \( {* o        create_timestamp: Fri Jun 17 17:06:55 2022
( [( Q: E! d4 U6 u        access_timestamp: Fri Jun 17 17:06:55 2022$ O- R2 B' n9 y2 K4 s
        modify_timestamp: Fri Jun 17 17:06:55 20225 V& T! Y1 n" ~0 k9 G9 N+ g$ Z) w
[root@controller1 src]#
 楼主| 发表于 2022-6-17 17:39:50 | 显示全部楼层
一套完整的流程搞定。openstack上不创建镜像,即可完成镜像使用。
 楼主| 发表于 2022-7-13 17:01:05 | 显示全部楼层
[root@host09 images]# rbd -p volumes-hdd ls |grep 98e50ac1-3b42-4393-b53f-6c6832fec4c4) D) e- l+ ?) B! e8 m8 E. V) i: c
volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4
0 K+ ]+ B7 y3 z8 ^, m* P0 \[root@host09 images]# rbd rename volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4 volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4-bak; j- J0 j6 f1 x/ S0 I% a. s
[root@host09 images]# rbd -p volumes-hdd ls |grep 98e50ac1-3b42-4393-b53f-6c6832fec4c4
' v) @: o& L# i7 v% |volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4-bak7 S, c5 \' h. M( a
[root@host09 images]# rbd import volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4.raw volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4
1 l5 m( q7 }' f: ]Importing image: 100% complete...done.  k& A* R% a0 j( X
[root@host09 images]#
, Q/ @2 k, Z3 r+ C& _$ T& k5 r. x
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 21:01 , Processed in 0.045638 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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