找回密码
 注册
查看: 924|回复: 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镜像的大小:' `& i( o+ x) s( R. I; n0 x) h& A
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070" X# r/ V& q& D( q  L$ w
rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':7 h4 k- N' Z* C' J
        size 2.8 GiB in 717 objects; R$ b8 p+ W, @; F- a6 `
        order 22 (4 MiB objects)" b" Z- Y: @  N% G  f' V" K
        snapshot_count: 0
( d7 a# P9 U- @, M# \* q7 ?, f& P        id: 9eb6a0f364b72b! q. H8 l. O5 Q% D
        block_name_prefix: rbd_data.9eb6a0f364b72b& f6 d+ b! O# U
        format: 2
& [0 a% p( q2 [! i  @        features: layering& u7 `2 c  R) I& m5 X( ?
        op_features: " p) k- A, H! S+ V0 E! E
        flags:
  F$ y" V/ X+ Y" r9 ^( _        create_timestamp: Fri Jun 17 17:06:55 2022
, N6 t8 X) K# \8 H        access_timestamp: Fri Jun 17 17:06:55 2022
$ h# s: l7 e) d3 p        modify_timestamp: Fri Jun 17 17:06:55 2022# k7 F# z$ ~: Y( r$ Q

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:23:36 | 显示全部楼层
3、 快照导出的文件导入为新的RBD image ' m/ t5 n& Z5 x9 s1 N. X
快照的恢复过程使用的是刚刚上面提到的备份到本地的那些文件. 现在假如想恢复到v3那个快照的时间点,那么可以用两个方法 方法1:直接基于v3的时间点的快照做恢复 方法2:直接基于v1的时间点的数据,和后面的增量的v1-v3数据(要按顺序导入)
0 O: d* m3 [, e& G$ q9 n( D3.1增量导入:rbd import-diff
2 A( v' e2 w/ h' G. n, @! o8 ~#方法1:直接基于v3的时间点的快照做恢复
# {1 G" T0 t9 V) p5 t#首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息$ }- o5 S: G; L
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-v1 --size 1    ( N/ Q+ r0 G8 `1 R
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v3 replicapool/resume-v1                                          Importing image diff: 100% complete...done.
" j5 N+ e/ e6 R" d$ h4 _[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
  N, j& h' D  w: t* s9 a$ ]- J#方法2: 基于v1+ v1_v3数据恢复8 n/ B6 P$ q5 p8 E
#首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息
, `- f: S3 ], [2 f6 |[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-v3 --size 19 O9 f0 s6 D+ }# j, k
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v1 replicapool/resume-v3
6 R6 B" d: U6 ^' r' aImporting image diff: 100% complete...done." J8 q& Q/ s( I$ n) F
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-v1-v3 replicapool/resume-v3
2 ^, t0 E$ Q) o4 h, K1234567891011 , G# o. O- n" V4 b
​ 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了
. g9 g; i, J# U% z; T0 J3.2全量导入:rbd import
4 q. X0 q- u( n: P5 x0 m注:不用提前创建目标image,否则rbd import会报错
% h* \1 s$ k( N/ z) ~- c[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd create replicapool/resume-full --size 1
+ S% }( Q% o+ p! {% F[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import-diff csz-busybox-full replicapool/resume-full
$ q+ J8 w* E) k, `" l. w9 Irbd: invalid or unexpected diff banner' a$ v9 k& s( c% ~! p* P$ V
rbd: import-diff failed: (22) Invalid argument
  k3 X  ~; ~$ t7 J[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
( p/ E) K9 ~' O# v[root@rook-ceph-tools-6f5694c655-hzpj5 /]#
* X# S' W. b1 G# k) C: @! j# z' s[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import csz-busybox-full replicapool/resume-full, V, p7 T0 |7 f- J: Z2 T
rbd: image creation failed2 W( }3 x2 e2 Q4 ?* L6 J5 x+ Q5 j
Importing image: 0% complete...failed.+ z/ t# f9 h( S, q
rbd: import failed: 2021-01-29T02:11:56.790+0000 7fdfdcb4b500 -1 librbd: rbd image resume-full already exists
4 z/ O- r  n4 P1 S2 f3 c(17) File exists
& b; m3 g% I; o  P' c) {[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd import csz-busybox-full replicapool/resume-full18 J1 L& g% p; S# P
Importing image: 100% complete...done.
  H! G8 h, A4 N1 u3 J[root@rook-ceph-tools-6f5694c655-hzpj5 /]#" ^4 S! }# O. r0 W3 N, s
1234567891011121314 + b* O; `) q8 ~" e/ \7 ^
四、如何利用这个 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了,例如: 今天对所有的rbd的image做一个基础快照,然后导出这个快照的数据,然后从今天开始,每天晚上做一个快照,然后导出快照时间点之间的数据,这样每天导出来的就是一个增量的数据了,在做恢复的时候,就从第一个快照导入,然后按顺序导入增量的快照即可,也可以定期做一个快照,导出完整的快照数据,以防中间的增量快照漏了,然后就是要注意可以定期清理快照,如果是做备份的模式,在导入了快照数据后,也可以清理一些本地的数据,本地数据做异地机房复制的时候也可以做一下数据的压缩,来减少数据量的传输 % Z7 j' P3 h! M, D. i7 W
客户端验证:将RBD image恢复到pod
+ ~' [5 |( R% o思路:将新的image name重命名rename成原来的image name
7 \( U/ t9 K7 d# O6 u+ C删除旧的image ( o0 C/ \5 a7 `1 Q
# Step1:停掉pod对image的使用$ U/ W+ V( W3 K1 j$ h! q  S
修改pod的yaml文件,将spec: replicas: 副本数改为0
- g1 Y; [" E7 I# Step2:清空旧image的snapshots# P2 M5 X, O2 T5 `
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd snap purge replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
9 C( e* ]  [% Z) qRemoving all snapshots: 100% complete...done.
; ]8 |3 {  c& |/ [5 J0 J# Step3:删除旧的image
. s9 Z; s+ Q' L6 R, L[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c4 ]: V! b5 k0 O0 V: J' v
Removing image: 100% complete...done.
$ Z5 u2 X2 E" O& m12345678 5 L- e7 ~0 L# r" m$ c( w! ]% b
将new image name重命名为old image name ; m& }' K( Z' E
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rename replicapool/test-v3 replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c1 g: }2 d* R$ h. r
1
; q4 P  j3 P. }( S$ S! f+ C9 W启动pod 5 }1 T- d! N& a' Y2 r* T
修改pod的yaml文件,将spec: replicas: 副本数由0改回原值
$ M* W: C9 v4 C/ w3 `2 `1 7 q) G4 @; x% O9 s, E6 `
FAQ:
# u7 q  D" d  U: m3 ~( Rrbd 删除image时,报错“rbd: image has snapshots - these must be deleted with ‘rbd snap purge’ before the image can be removed” ' }" n8 p4 Q+ i# t  d
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-387b2608-61f7-11eb-b9c5-0e28ddb26a3c
: R9 I, t3 ^& R( G" `Removing image: 0% complete...failed.
& V9 s- [* R, u4 _( y; krbd: image has snapshots - these must be deleted with 'rbd snap purge' before the image can be removed.
$ n+ x* A4 D* K  W- C, f123 & C. Z$ g  P4 o% x9 w, j
解决方法:执行’rbd snap purge’删掉image相关snapshots
. K0 J- n, @$ C6 F2 s# t, `3 Krbd 删除image时,报错“rbd: error: image still has watchers” # G9 }/ I0 P! b( e& K* ^7 M8 C9 U; H
[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd rm replicapool/csi-vol-6ee1b63a-6060-11eb-b9c5-0e28ddb26a3c
& Z! X0 ]4 u7 [2021-01-29T06:22:09.698+0000 7fe4677fe700 -1 librbd::image::PreRemoveRequest: 0x55a645137470 check_image_watchers: image has watchers - not removing7 l" o, V+ q* p
Removing image: 0% complete...failed.
' W0 \, y' d* W# ~7 drbd: error: image still has watchers
! P% `) i3 ^8 }, WThis 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.
8 O/ F+ D  B# L" c2 W& I12345
% G8 K0 |7 ^* g) Y5 C0 E5 T( Z" D解决方法:删除使用image的pod(修改pod的yaml文件,将spec: replicas: 副本数改为0)1 B( ^  J, n, C) @# H( Z

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* s" H  ]) G9 T( g- |- j4 D0 x
Resizing image: 100% complete...done.6 @( I7 x  B' F
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070
* m  [4 \3 x, M5 Mrbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
: `; m7 i( `: c4 u        size 50 GiB in 12800 objects5 I. D9 y  i  a) C$ q  c9 k3 e
        order 22 (4 MiB objects)
; p7 Q$ \: k1 {, q( y4 B        snapshot_count: 0
: p1 E" J0 s) _, L: p" B1 J7 U$ i        id: 9eb6a0f364b72b- ~3 S! K2 Q8 p( X+ p7 u! S2 u: o
        block_name_prefix: rbd_data.9eb6a0f364b72b
2 i3 X4 b7 y: W- f        format: 29 J5 \' v1 X8 [4 U; _
        features: layering$ N2 N9 `! E) ~/ ?
        op_features:
6 n$ u. z. }' S& I5 F2 e; p        flags:
" m# h1 q7 M% ]' ~        create_timestamp: Fri Jun 17 17:06:55 2022
% u2 Y/ D. A* R# e        access_timestamp: Fri Jun 17 17:06:55 2022
3 i7 z' c6 ~2 E        modify_timestamp: Fri Jun 17 17:06:55 2022

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-17 17:37:29 | 显示全部楼层
在openstack上扩展卷后,底层执行命令:
) }" [+ T. E1 {* d" w, o8 {7 |[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070
+ b& I7 ^- Z, I8 A0 Lrbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':) i, C* j# d" f$ s0 b
        size 50 GiB in 12800 objects$ P* C6 }: ?9 O, B( x
        order 22 (4 MiB objects)
/ R0 Y' @+ u( q0 G' i3 `: W        snapshot_count: 0
6 k1 V" x4 I* s$ a2 s4 T' e        id: 9eb6a0f364b72b
0 J' V) [2 Q8 a  F+ {' }        block_name_prefix: rbd_data.9eb6a0f364b72b% B3 y5 R2 J/ Y- B
        format: 2
  @( f. ?8 T3 U7 G6 {2 H        features: layering, a5 t2 \$ a- y" J/ G$ i* x
        op_features: ' ]( H* p" l) T* p( M6 ]4 ?7 a
        flags: 2 A8 K* r" v! f1 A2 P0 z
        create_timestamp: Fri Jun 17 17:06:55 2022
; {+ `/ ~7 e6 b7 U. w& `% ]        access_timestamp: Fri Jun 17 17:06:55 20226 P( U% E* ]: u6 Q
        modify_timestamp: Fri Jun 17 17:06:55 2022
0 b" Z+ k8 O. c" p[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070
& m: V+ M: c2 e3 f# f# o( brbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
8 P3 B- N! L2 C$ z7 c        size 51 GiB in 13056 objects+ x! T. `9 t& I' P
        order 22 (4 MiB objects)
& G' p+ h- L" M% I$ ^! J! J        snapshot_count: 0. c- i% G) ]0 }$ M8 ?
        id: 9eb6a0f364b72b! n# ^8 ]6 x2 G1 q' _) r& Z
        block_name_prefix: rbd_data.9eb6a0f364b72b
% u. J# f! m7 A/ T4 P# I/ }0 R        format: 2( V7 r  v/ D6 ^
        features: layering: \: s! d2 M  ]
        op_features: % h- Y; q* g5 Q. L& C4 A7 j
        flags: 0 p+ T" _; h0 @; ^7 T. z
        create_timestamp: Fri Jun 17 17:06:55 2022* C% W' T3 j* Y
        access_timestamp: Fri Jun 17 17:06:55 2022) O) h7 a0 u: @* r
        modify_timestamp: Fri Jun 17 17:06:55 20226 I3 U/ L& Q% X- o- {5 k9 f# C
[root@controller1 src]# rbd info hdd-8T-volumes/volume-7339c495-25dd-44a3-b0cb-3b00cd59e070
3 Y- C7 o3 [* B3 ~- S  [rbd image 'volume-7339c495-25dd-44a3-b0cb-3b00cd59e070':
; x" l8 Y% q- z- k* F        size 51 GiB in 13056 objects+ C8 ~3 t% x  a% H1 z1 }) u
        order 22 (4 MiB objects)
- Z$ r" z- D2 G0 ~% ^7 Z4 s8 ?& \        snapshot_count: 0  P6 u; W2 r0 u6 M% H2 R1 ^; U
        id: 9eb6a0f364b72b/ G  }) D8 E- C7 @
        block_name_prefix: rbd_data.9eb6a0f364b72b; ^- `/ R7 [( \  z; v: H/ q) Q* n
        format: 2
8 i# C. A. z5 R        features: layering
4 S3 ^4 e/ l3 L2 b# M; l' K        op_features:
/ T1 i7 g6 G4 W% G  D* f        flags: ! _, N$ Y# E% O. [  o5 E+ W) e$ U
        create_timestamp: Fri Jun 17 17:06:55 2022, q; l6 {# i) K1 H( b( v# `% R
        access_timestamp: Fri Jun 17 17:06:55 2022
1 r; N, x2 ]. j/ V        modify_timestamp: Fri Jun 17 17:06:55 2022, G( l- n: g# x2 ^% \
[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
$ F( L; L$ ?/ t& f: wvolume-98e50ac1-3b42-4393-b53f-6c6832fec4c4
  a- \. l8 [% ][root@host09 images]# rbd rename volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4 volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4-bak
6 |! {( w' g" q[root@host09 images]# rbd -p volumes-hdd ls |grep 98e50ac1-3b42-4393-b53f-6c6832fec4c4
, p3 {7 X, s9 g2 X. nvolume-98e50ac1-3b42-4393-b53f-6c6832fec4c4-bak( G3 J, K  \# p" z' w
[root@host09 images]# rbd import volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4.raw volumes-hdd/volume-98e50ac1-3b42-4393-b53f-6c6832fec4c4
* V+ \$ J- n% U/ u; X% {. jImporting image: 100% complete...done.
& x2 x; P6 g  d" Z' _[root@host09 images]# ; J( D  E* E+ J
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:59 , Processed in 0.023148 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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