找回密码
 注册
查看: 925|回复: 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镜像的大小:3 v0 {- P/ {& j# h+ m: s
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e0704 @2 w# t; o9 X* h* C$ P
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
9 P* E& Q) X1 a2 ?- ~6 v3 u        size 2.8 GiB in 717 objects
* Z, Z% c$ c0 }" n! Z9 |  h        order 22 (4 MiB objects)
& h/ ?0 e* i: h9 ^" D) g" B        snapshot_count: 0, D+ f  r* O7 b
        id: 9eb6a0f364b72b$ I9 @2 ^, y+ k( i% x" X
        block_name_prefix: rbd_data.9eb6a0f364b72b' m5 z" k4 K. u+ b  C2 B
        format: 2
# u/ F3 @* |, j  y: I# w4 O        features: layering
3 ~7 [) e" |" g" _        op_features:
) ^1 t2 o# W4 M# H        flags:   e8 w* Z- B2 y5 }6 v- X2 I) e
        create_timestamp: Fri Jun 17 17:06:55 2022. }  g$ e2 ^! H  ?- `9 P2 J% k: `2 b
        access_timestamp: Fri Jun 17 17:06:55 2022
7 T6 Y& F% F1 z, z) g0 [2 x: Z        modify_timestamp: Fri Jun 17 17:06:55 2022. k( R' _4 c! B& \7 L( D& A

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:23:36 | 显示全部楼层
3、 快照导出的文件导入为新的RBD image 1 F, m: S  s; t& E
快照的恢复过程使用的是刚刚上面提到的备份到本地的那些文件. 现在假如想恢复到v3那个快照的时间点,那么可以用两个方法 方法1:直接基于v3的时间点的快照做恢复 方法2:直接基于v1的时间点的数据,和后面的增量的v1-v3数据(要按顺序导入) + e3 G) T; X3 a! ?+ S. ?
3.1增量导入:rbd import-diff ( r7 X; D5 x  J& Y; r8 T: K
#方法1:直接基于v3的时间点的快照做恢复  N  D9 ]$ v. y( p
#首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息2 D* `/ e0 n' C! U2 e2 M
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-v1 --size 1   
( K% ?+ K4 c5 D+ H3 z- ~. _: S[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v3 replicapool/resume-v1                                          Importing image diff: 100% complete...done.
$ z5 X! i  }& M% `: R$ D7 T[root@rook-ceph-tools-6f5694c655-hzpj5 /]#( Q7 Q7 x) j2 s( T2 z+ l. w
#方法2: 基于v1+ v1_v3数据恢复
& A- l( n* o+ k9 K#首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息0 T1 P1 n2 y: m, E1 U
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-v3 --size 1+ W9 y, D. z' T! N! Q! F3 P
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v1 replicapool/resume-v3' @& o0 v0 m3 m! z" p: q. T/ d6 O
Importing image diff: 100% complete...done./ w) N2 \" \! J; Y% R) Z
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v1-v3 replicapool/resume-v3$ n# ^/ G3 d4 F1 f+ A! t
1234567891011 1 W, p  C7 n3 B, z% }
​ 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了
$ Y) g2 f* V& f  f* |3.2全量导入:rbd import 0 N" p# l6 f' e" W4 A  d- g. O' X
注:不用提前创建目标image,否则rbd import会报错   F+ Y" l2 E+ ]: w! d' s8 j
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-full --size 1
4 K$ r9 M, v, D1 D. J1 `[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-full replicapool/resume-full2 v3 H; l1 J( M+ C* N5 I3 Y/ E( @
rbd: invalid or unexpected diff banner* W. f" a0 Y; i" V9 T  y
rbd: import-diff failed: (22) Invalid argument& g; Q: I- |$ C' `
[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
0 w3 D8 d9 G: ^& F& J4 f[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
, L* a8 E- U! g! n; P4 o[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import csz-busybox-full replicapool/resume-full, L1 S' ?$ M4 ?, M
rbd: image creation failed) y$ N& U6 \2 Y" c8 W( o
Importing image: 0% complete...failed.
; E3 y: m  y$ Y7 c( x4 Grbd: import failed: 2021-01-29T02:11:56.790+0000 7fdfdcb4b500 -1 librbd: rbd image resume-full already exists( b& E  C6 ^0 k8 j2 t5 B3 b
(17) File exists6 _8 N' b) D' u  d/ z
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import csz-busybox-full replicapool/resume-full11 O; E1 ~. E& h8 j1 p+ _1 R
Importing image: 100% complete...done.
) F% h8 O; O8 w" O, F[root@rook-ceph-tools-6f5694c655-hzpj5 /]#3 K  m; J- x' {  T: j
1234567891011121314 0 ]7 _5 n5 }) [: O
四、如何利用这个 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了,例如: 今天对所有的rbd的image做一个基础快照,然后导出这个快照的数据,然后从今天开始,每天晚上做一个快照,然后导出快照时间点之间的数据,这样每天导出来的就是一个增量的数据了,在做恢复的时候,就从第一个快照导入,然后按顺序导入增量的快照即可,也可以定期做一个快照,导出完整的快照数据,以防中间的增量快照漏了,然后就是要注意可以定期清理快照,如果是做备份的模式,在导入了快照数据后,也可以清理一些本地的数据,本地数据做异地机房复制的时候也可以做一下数据的压缩,来减少数据量的传输 ! t- s9 J) k* o$ r
客户端验证:将RBD image恢复到pod
- N  S( [$ ]7 R( i! Y思路:将新的image name重命名rename成原来的image name ; w% {+ ]' t; w) g
删除旧的image
+ h& c' q2 W4 S1 Q2 i/ x# Step1:停掉pod对image的使用7 j4 Q+ c6 I0 ^. J0 u6 Z* h/ S
修改pod的yaml文件,将spec: replicas: 副本数改为0
, Z0 I: q  {: i( e) b$ @; o/ \8 w# Step2:清空旧image的snapshots  ^6 u$ C6 i  s+ u
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd snap purge replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c. D+ `1 i+ M" g1 @( V" J
Removing all snapshots: 100% complete...done.
5 q0 l  u# x5 E# b  N# Step3:删除旧的image
; S0 s( K1 q. \# }, ], p2 h[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
* _' L; m! E" D# ]& a+ L/ VRemoving image: 100% complete...done.
2 K) \4 _* [/ F7 }12345678 + Z+ g  `5 c% x
将new image name重命名为old image name
0 N* C4 S3 M* b3 _[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rename replicapool/test-v3 replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
& y/ H7 z& g' R4 }& @7 ]7 G1
, L" {1 ~+ z3 {启动pod % o+ }5 w0 w% E# I5 k+ P  ~
修改pod的yaml文件,将spec: replicas: 副本数由0改回原值8 d/ a5 ]) H+ o% B2 x
1 / d9 n: P8 U+ J9 y$ T
FAQ:
; Z& k# y( |5 Q! W6 H5 J* Erbd 删除image时,报错“rbd: image has snapshots - these must be deleted with ‘rbd snap purge’ before the image can be removed”
) J9 K( |. f5 M7 A7 @/ b0 X5 ?[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c& b) e6 S! X# J* x* z+ z/ h
Removing image: 0% complete...failed.
4 a- E# T& b) K& H1 ]# srbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
8 F+ _; \! Y7 N( h# w9 f3 E! O123
4 U2 z( e: ]' D$ I8 P4 T6 k解决方法:执行’rbd snap purge’删掉image相关snapshots
& _1 S1 e9 }) D. o7 d1 k) j& trbd 删除image时,报错“rbd: error: image still has watchers” % `( f2 ]5 }6 ~, |
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-6ee1b63a-6060-11eb-b9c5-0e28ddb26a3c
+ h1 e) Y" h, s4 f9 I- G( q& V+ n4 a* C2021-01-29T06:22:09.698+0000 7fe4677fe700 -1 librbd::image::PreRemoveRequest: 0x55a645137470 check_image_watchers: image has watchers - not removing
6 f  a" B5 k4 @& z. n% \- W1 q4 lRemoving image: 0% complete...failed.
- R) c* e2 f, C+ w1 z1 ~; i, ?) Yrbd: error: image still has watchers/ @: G* @$ y1 B) @8 N
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.
3 t- X5 j- _0 T( i! q12345 4 q. k6 Y/ ?" W6 E  @5 {& i4 {( k' V6 k
解决方法:删除使用image的pod(修改pod的yaml文件,将spec: replicas: 副本数改为0)
7 y. R( e) ]3 O! S

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
+ Q; ~; F: y" A, i  x: DResizing image: 100% complete...done.
  x: `, e2 |+ V( R# x& \% Z[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070
3 r6 M. s9 g' h3 s5 Srbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
' x# F- M7 Z% T- c$ E        size 50 GiB in 12800 objects
$ |: Z6 [" v7 U( }- i& P        order 22 (4 MiB objects)3 \) P* D! Z, U0 Y# k
        snapshot_count: 0
" e$ A$ @' _+ i5 ?7 }        id: 9eb6a0f364b72b$ \; W$ T+ R5 Q7 v
        block_name_prefix: rbd_data.9eb6a0f364b72b
9 j/ E1 u0 |/ I; O7 J        format: 23 c$ \5 p& g) R# h$ l" d
        features: layering
5 K9 L. ]# o. R" ?        op_features: ' P/ u) E3 v5 b1 S+ X+ \
        flags:
# L7 w! ~) `8 I- i: t- E/ p# M        create_timestamp: Fri Jun 17 17:06:55 2022; Y* j. u1 D, I/ w7 D
        access_timestamp: Fri Jun 17 17:06:55 2022" a7 R, i% g3 e9 _' L
        modify_timestamp: Fri Jun 17 17:06:55 2022

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:37:29 | 显示全部楼层
在openstack上扩展卷后,底层执行命令:- t) W. L8 p2 ~3 X8 N) k- p8 B
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070& w4 V9 W5 q! ^: m6 e" w3 M) |
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':: c0 i& B7 \) E4 F1 T7 [& l' U5 A# x& ~
        size 50 GiB in 12800 objects
4 C1 ]0 I8 u! X) y        order 22 (4 MiB objects)
9 C- k, O; l0 w, o% M        snapshot_count: 0
( U9 u6 o1 T6 \+ ?, O- A        id: 9eb6a0f364b72b
( P4 ^, P! z# C& F# D% A! V        block_name_prefix: rbd_data.9eb6a0f364b72b# S6 j! i$ Y2 C( N
        format: 2
6 c- @' a) n, ]. d' _" ]% O' ^$ L        features: layering( o5 c7 U  B0 N
        op_features: ' N, v, i; d" G! W# G0 y
        flags: / ?* m4 v$ t0 ?" @5 i) @# \) n, Z: T& [
        create_timestamp: Fri Jun 17 17:06:55 2022- g! W7 S0 m3 @# U4 U1 ^3 s' J
        access_timestamp: Fri Jun 17 17:06:55 2022
5 A7 B# a9 ]3 x+ H* K2 f        modify_timestamp: Fri Jun 17 17:06:55 2022
3 l6 `( A) [5 r+ a+ P[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070$ H7 Z# I5 X) Z7 d5 z& J$ ^
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
+ ?! v# |/ r5 r5 T8 c9 [, I( V        size 51 GiB in 13056 objects/ n' L" ]; ]& ?/ T9 l, ?
        order 22 (4 MiB objects)
& [" U! b# A# Q# a5 ~+ L; T- o: J7 r        snapshot_count: 0
$ w. U/ K: \* w+ \& Q1 G) m        id: 9eb6a0f364b72b
3 j5 x4 u8 E$ m- Z        block_name_prefix: rbd_data.9eb6a0f364b72b- f* y4 ~7 P) ?6 z; S* h
        format: 2
% @( `, h+ v8 |' [, @" O3 [        features: layering5 Z$ ~. @* M# h
        op_features:
! a) O1 O. i, `# h        flags: 9 I  v4 P& u: g0 D. ?6 N
        create_timestamp: Fri Jun 17 17:06:55 20229 W: O& ]& k  J* \. f/ e
        access_timestamp: Fri Jun 17 17:06:55 20226 w$ B( k- l4 y+ M( C5 W( L
        modify_timestamp: Fri Jun 17 17:06:55 2022
1 @# C9 |9 I& d2 L0 c0 D- K[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070. b( Z! B" J) l2 ^
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
5 |. y. G" v: m- S( B! ?# u# H        size 51 GiB in 13056 objects1 V+ K  z  R9 t" `, K# Z
        order 22 (4 MiB objects); V/ ]7 H2 G' N$ |; A. l% \2 S% K
        snapshot_count: 0
4 C7 N5 }' V# D        id: 9eb6a0f364b72b
- n; H; ]" s$ c  g        block_name_prefix: rbd_data.9eb6a0f364b72b
; G4 C! i! h3 _6 Q6 q        format: 2  @; D1 ^4 Y5 f2 f* F
        features: layering7 A  N/ d5 `2 h$ U1 m4 L( u
        op_features: 2 M$ U, \4 ]# K, O$ S! X7 _
        flags:
7 \. {% p. U: t$ k+ R  o. ]        create_timestamp: Fri Jun 17 17:06:55 2022
/ }/ p& W: x% c. A' k        access_timestamp: Fri Jun 17 17:06:55 2022# H9 l( c  l/ |2 O
        modify_timestamp: Fri Jun 17 17:06:55 20223 J; @+ b# s% k: n
[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
) a1 L/ {4 Q7 ~! t: L: L. P# G  Jvolume-98e50ac1-3b42-4393-b53f-6c6832fec4c4
% c/ A* y: F2 x: d# V7 [3 ~, g  N[root@host09 images]# rbd rename volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4 volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4-bak
" b: W5 A. [4 s. Q8 g. Y$ j6 @[root@host09 images]# rbd -p volumes-hdd ls |grep 98e50ac1-3b42-4393-b53f-6c6832fec4c4
  V: ~. `0 [; X* e- z9 {5 o. S5 `volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4-bak
: r/ @* N) h, S% i7 ~- Z9 k& \9 }  Z[root@host09 images]# rbd import volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4.raw volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c44 l0 o* x+ ^& a2 ^
Importing image: 100% complete...done.
4 \% Y# X: g! Y[root@host09 images]# ' I) M( x# ?" L9 s& K7 l6 a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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