找回密码
 注册
查看: 12|回复: 0

在openstack中对接ceph存储的纠错码池方式

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2025-3-29 11:00:01 | 显示全部楼层 |阅读模式
在 OpenStack 中使用 Ceph 纠删码(Erasure Coding, EC)池,通常涉及到以下几个步骤:
& n' R, L9 z( y( |2 m: Z1. 配置 Ceph 集群以支持纠删码首先,确保你的 Ceph 集群已经配置并支持纠删码。这通常涉及到以下几个步骤:; B6 d. k, w$ s3 R2 q' i' i
a. 创建纠删码池在 Ceph 中,你可以创建一个使用纠删码的池。例如,使用 jerasure 和 reed_sol_van 算法创建一个纠删码池:$ Z0 I  j3 Q# j! _  D8 N8 d

/ a) _- h! s0 [: k* x8 F3 [0 V% D- A6 s% {6 p6 t* V: _

+ i& ?) A  _  Q4 _3 e
+ M* k- v+ J7 q% k: u
+ g6 B# f) e1 h
7 Y) N$ H) U: j
5 S6 H2 _/ n& K- ^0 b) D$ k
$ q0 Z9 I3 x2 k! l4 k7 Sceph osd pool create ec_pool 128 128 erasure code_profile ec_profile
! w' Q7 w4 n4 h: e, Kceph osd erasure-code-profile set ec_profile jerasure yel error_domain=1 k=6 m=2 ruleset-failure-domain=host crush-root=default
$ R6 R& {. J9 A1 N6 P7 y
# v( e) j% q& n. J% f' `: s7 c- w4 Q( Z. W- r6 B9 l
这里,k=6 表示数据块数量,m=2 表示校验块数量,error_domain=1 表示每个主机最多有一个故障域。) x" s6 B4 m" s: |# q; N; ~
b. 验证池配置确认池已正确配置为纠删码:. O2 J7 @' w' N& y% m

- w2 Q3 s3 \9 }* G9 y+ C" \
% @3 R+ ~1 ?$ V' ?( k# i
' n4 L! J! o$ K* E7 i% S2 [) |' I  [# F5 p5 @" T. y! y

7 l# Q* o4 o6 [% r
( \7 w3 Y- |# M$ d/ Y/ Q) w# b( y/ w6 n& o/ ?, ?7 R
ceph osd pool get ec_pool erasure_code_profile   * A: v2 T9 c7 \9 [0 c2 O

- T4 X" T. i# ?0 M. \  b8 `6 G0 u7 \: X
2. 在 OpenStack 中配置 Ceph 和使用纠删码池在 OpenStack 中使用 Ceph 纠删码池,你需要在 Cinder 和 Nova 中配置 Ceph 以使用这个新的池。
0 \, G( D/ y4 aa. 修改 Cinder 配置文件编辑 Cinder 的配置文件(通常是 /etc/cinder/cinder.conf),并添加或修改以下设置:
9 |- X- s2 C5 a3 F( P! P
9 r2 G( `! o) J% ~, C3 D0 I8 v
4 o% k2 ?8 m) r6 ]& D( ^  m- ^0 F5 m) s6 f; A

+ m& `/ R# J0 C) K9 N# ?9 v7 x' v$ I) B7 N7 k, g& s
/ G1 v$ j+ s; ^, m2 [

5 P( o/ N) q* @
7 m: C/ @# |! d& @; L' b4 f2 M# m  C" B

9 Q, _# E5 y" B7 p0 I8 I, z! F; ]: o+ r9 o1 |
[cinder]
6 f. N$ F( H9 _  l* ^volume_driver = cinder.volume.drivers.rbd.RBDDriver
  G4 P6 Z9 Y/ V2 P* E% x6 k, s* I/ nrbd_pool = ec_pool
( U- ^- B0 Y1 }3 orbd_user = cinder-user
2 z4 V" R. C3 n4 {7 \rbd_secret_uuid = <secret-uuid>    5 I  f4 U& g# W" X1 v6 m
# L# z  \2 h4 X( U$ H2 y
7 A, o  H2 J1 ~# ^; H6 e
确保 rbd_secret_uuid 是你的 Ceph 认证密钥的 UUID。你可以使用以下命令生成 UUID 长字符串:6 `. {* H( [: c. T: E% O. K1 H6 |

- W% p0 d( q- m
7 L6 I" Z# B( @! \! s6 Y4 ^6 c
) _" D( Z% Q! |  {! o# _+ S
0 f; P$ i& i5 j6 ~
( @$ c# n# X& ?1 ^. v& i' v
8 P( ^! V6 y# C/ V, _  R' D5 J
1 J  h8 O) [$ c- [5 ]uuidgen
' O1 O9 v  ~7 [1 c, [0 ^) S5 ^1 `: M8 e" `$ w
- }( Z4 J) v8 e1 w
% r' J0 U; @1 s
b. 配置 Ceph 认证密钥生成 Ceph 认证密钥并将其添加到 Cinder 和 Nova 的配置中:5 k, I5 p" A7 k* w- Y6 O
6 h; ]6 x! H. x$ N* H# {4 ?
2 T) W) v2 y/ j2 c/ o

; w$ e' W9 ]' A7 u
0 T, c* X7 c! ]
0 U5 b4 k5 {: W& ~5 I- L
2 A$ _0 P- F5 Z/ i! Q2 Q2 B. k7 x2 ^& o. ^
ceph auth get-key client.cinder-user | base64
4 ?, I7 O8 Z! l: H9 w$ `4 m& C3 Q! }( P: }& t2 K/ e8 B
1 G3 a. {% d" O
将输出添加到 Cinder 和 Nova 的配置文件中:6 Z  U" d* x. S8 k- p( g3 Y' J% q
4 h. M2 f* U* N' l& S
' `/ _: @; f+ R; n# m( M7 y2 k

) h* O9 {1 Z" e, x0 Z8 G' E" L! T5 F0 w; R% q
( t& k9 p# z/ r6 k4 \, V
5 ?  o0 k+ Z' n3 G

) z# U( z7 u: T( W$ F  [' r1 I: ~7 Z+ K$ \* \

8 \  W  V4 X  a4 b7 Q1 x) K  o8 O5 s; \7 B: J& f
[DEFAULT]$ F% V) z4 t$ X$ ~
rbd_secret_uuid = <secret-uuid>     ###from uuidgen! P3 b' {: D. D& u
rbd_user = cinder-user$ m1 t; M& x: r/ r! n% ~/ {
rbd_ceph_conf = /etc/ceph/ceph.conf5 v: {9 z! J& r

( t' ~' n! J5 [8 j5 P( y+ y. H" }1 u- R& G. y; t
c. 重启 Cinder 服务以应用更改
, U2 ]" E$ i5 @. V! Q
5 ]" y, [' _% K8 n+ u' R$ V: I
% @' C7 l$ e! E& b# F* }- u. |' ~- c& Q. y3 B1 i

# X; `* _) m9 W8 Z  o. M' Z; Z  G! v7 g' ?# W: I4 f

$ j$ n, n( K) O& M8 M( V0 rsystemctl restart openstack-cinder-api.service openstack-cinder-volume.service openstack-cinder-scheduler.service
) s9 s6 d/ i3 T4 N1 Y4 y, v, g
# |5 z: I& b4 H) `  p' v$ G+ J/ P% t/ C
3. 验证配置确认 Cinder 可以正常使用纠删码池:. _% `" j% g  H" {* f5 O

3 m! Q0 X( }( f: K6 j8 H9 v1 `8 U0 n0 `7 T) w" |+ I/ m/ [& a

5 m% \  {  M: w' ?3 J- A
# i6 r' R8 l( ~4 r+ a- M! J( Z5 y% T% Q% k5 l3 q. l

" y/ n8 n9 u* ^* r
  Z2 v7 v2 f* ]3 f  U/ {" ^, `, U2 Gopenstack volume create --image <image-id> --size 10 <volume-name>; W; V6 N: G! G) i, d$ Q% l7 D8 {
8 Q  N. o3 I; F3 [& Q$ X; ^' J; Q, Z

. X/ K7 b$ a3 K! k' w+ W检查卷是否正确创建在 EC 池中:
5 {- j7 r# V3 M; o; w2 i3 T: a3 s0 {1 z! C& P8 @

* C! |7 J; s8 v
: E; `9 m: {9 p% W% U) O3 m/ y
% U2 K4 N4 Y# ^- \) A0 j: L' Q4 n
+ S- F( \7 G' Z3 t$ P8 N1 O- W2 ?

  Z  M% l3 v( }6 F5 frbd ls -p ec_pool --id cinder-user --keyfile=/etc/ceph/ceph.client.cinder-user.keyring | grep <volume-name>
6 S  k; Z; b8 R8 F, y( x6 R; c8 n
, R& k* I! V7 B# Q/ D- ^
4. 在 Nova 中使用 Ceph 块存储(可选)如果需要在 Nova 中使用 Ceph 块存储,确保 Nova 的配置也指向正确的 Ceph 用户和密钥。这通常涉及到编辑 /etc/nova/nova.conf 并添加类似的 RBD 设置。' n9 r6 y8 Q1 F, ?1 F6 u/ y) v
5. 重启相关服务(如果需要)根据需要重启 Nova 服务:! e. r' @& Y# g* Z! R1 z

& l8 L" k& L% E) E. y# e7 c7 G2 U2 d
$ `6 ]; B6 W% I; [7 _4 U% t
9 B( V) F' W3 L, k8 ^

8 q! x  [! O, w$ _
' G- L5 M) M9 z3 x: Q0 O+ f3 y
! ~) K' W& R$ m0 t% J0 I- ]0 b' ksystemctl restart openstack-nova-compute openstack-nova-api openstack-nova-scheduler openstack-nova-conductor2 E0 I) T# }5 f$ X4 Y9 y3 _% b

( x- g. H8 X1 Z7 f$ B
6 Y% }* m5 T3 o9 G  y" {* F通过以上步骤,你应该能够在 OpenStack 中成功配置和使用 Ceph 的纠删码池& v5 v) Q( j4 C4 _& m# E
: u7 c% H* s- t4 F# c" e' Q& t" Q
配置完成。2 m. e2 T6 X) G% C

/ L3 r5 Z: Z2 w3 `" n( X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-11 23:56 , Processed in 0.037810 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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