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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2025-3-29 11:00:01 | 显示全部楼层 |阅读模式
在 OpenStack 中使用 Ceph 纠删码(Erasure Coding, EC)池,通常涉及到以下几个步骤:
+ d7 ]! B) Y7 K% T  X4 l5 O. [, _1. 配置 Ceph 集群以支持纠删码首先,确保你的 Ceph 集群已经配置并支持纠删码。这通常涉及到以下几个步骤:" O1 i, A1 P% W- ]
a. 创建纠删码池在 Ceph 中,你可以创建一个使用纠删码的池。例如,使用 jerasure 和 reed_sol_van 算法创建一个纠删码池:0 P; \: b( r9 s# X; D$ @# ?( h* M

& l/ c7 Z: Q; j0 p) S1 F% _2 H) \% V" n$ \

( S  j9 O) z6 U/ h$ q. W" m0 U% G7 c7 q& T' V3 p( H; @

& q, k  Z5 p* }5 {- k4 P0 w+ _' H+ L8 f

8 s8 i' G. Y: U- O8 ?
% G6 h' @2 a: s9 Gceph osd pool create ec_pool 128 128 erasure code_profile ec_profile: }. {, ^' d0 M0 E$ K
ceph osd erasure-code-profile set ec_profile jerasure yel error_domain=1 k=6 m=2 ruleset-failure-domain=host crush-root=default
8 f/ F" U8 P5 ^: t
  N( P2 u. H& p6 B8 P- Q" ]" E3 }9 i$ ?
这里,k=6 表示数据块数量,m=2 表示校验块数量,error_domain=1 表示每个主机最多有一个故障域。8 \* t% v; a* u; P
b. 验证池配置确认池已正确配置为纠删码:
6 Z* c8 r3 s3 h3 X4 q. l% f; P' Y6 m. n
% R: L$ h  D/ Z3 |
0 x  l' m$ N$ E: z
0 R% e8 x8 R( }' X: K- p2 T3 k! l3 R0 P  _- Y) r* j4 [
3 z  X* K0 W' G" ?8 e: y
; W$ y/ T1 j7 {7 u! R" p: p

4 ]$ a( k- W9 z. M6 ~6 f$ r7 Tceph osd pool get ec_pool erasure_code_profile   
& l$ Z: M" E, d" [/ u, V8 N0 c1 S3 I% S) z' J

  z( U5 |  @- _( F% _2. 在 OpenStack 中配置 Ceph 和使用纠删码池在 OpenStack 中使用 Ceph 纠删码池,你需要在 Cinder 和 Nova 中配置 Ceph 以使用这个新的池。
/ M8 Z, N, P( e4 L2 k) Z5 ^! ]a. 修改 Cinder 配置文件编辑 Cinder 的配置文件(通常是 /etc/cinder/cinder.conf),并添加或修改以下设置:
% Y5 y) k# O/ U" T0 u6 P: W0 m: l. t1 G2 G* B1 g8 K7 n+ |: [  J

. M" ~; C. i, q4 E+ S. s! x6 z+ ^! d

  `0 q& h- o: N; ^# O# w! e/ a
2 e; I# J, J7 J$ I& L% z. v
1 [2 z4 {6 G; f3 ^1 `; R7 Z& o4 G: c: ~
! p8 Q! s: s, [
0 @4 M  y" ?3 z5 m- l
7 r4 T) r/ H# |: x0 `5 b+ R

0 `$ r3 N' v7 C[cinder]8 K$ p# b, C% r" o) d! p, n4 q+ F
volume_driver = cinder.volume.drivers.rbd.RBDDriver
" H1 b3 M$ P0 b' r6 ]rbd_pool = ec_pool, \+ Y3 R1 k; g. z+ l
rbd_user = cinder-user2 R3 w, e& ^& e1 P, H! S
rbd_secret_uuid = <secret-uuid>   
# F" r8 Q- H9 u6 [( K! f% a* z
" P' d1 N+ _: x& U0 t6 E
% O8 U3 ^% J; d2 P1 b6 E5 i确保 rbd_secret_uuid 是你的 Ceph 认证密钥的 UUID。你可以使用以下命令生成 UUID 长字符串:
" _# @. H4 X# @7 L' o; s" W5 @+ |0 B1 y! ?0 s$ z" `$ r

+ L5 k7 K2 P: {
6 K: b# q7 [5 T" l" i
: I* Q5 f3 |5 ^5 l) g$ c; n. V! N! l4 s1 ^4 t' |
$ w- q. V* N- I+ I! w

4 Y% i/ f# ]  c# K$ r* f8 g- Uuuidgen
& t2 R1 X0 p8 H$ R! n
+ }3 b1 m0 W2 k3 U4 u. S5 O# d9 A3 [0 `/ ~* ^

% \# t; P4 E9 x/ ]! |b. 配置 Ceph 认证密钥生成 Ceph 认证密钥并将其添加到 Cinder 和 Nova 的配置中:/ }- p0 K, c1 ^- o1 j; U. W: l6 {

6 _8 m# c5 @, Q% U! Y) i: I! B( F, d' t, c7 R+ G! X
9 U7 Z4 L: r7 }2 D* _0 z1 P

' @5 T' _& ~! V, m( ]5 O+ r1 P( B& E7 X6 ]. X0 l

  m! `: [" ?' u. V# X- }& t/ q# `5 l1 R( u
ceph auth get-key client.cinder-user | base64# T7 N7 [' ~" Q4 w8 G

! l& B7 t4 q1 D/ O+ G: O9 N/ O0 G5 \
将输出添加到 Cinder 和 Nova 的配置文件中:
7 V1 u& s! Y: l% S8 }, S* z8 F, V
* a! ?8 g8 \: r7 F
) ]4 c  g; |# I) d3 n
, n5 I: n# V% m; ]) N5 U/ o9 I3 k* E# |# f9 e+ ~9 B1 f* Q& c9 L2 I9 ^

. Y5 O# D) u- f1 k; n  S1 Z. m6 R) J! p/ O1 x4 C" F- O& |2 _
, J- V$ C) d# t
9 r; |7 L8 J: x# @
& v; q5 h) c1 S$ s* |- o5 ]* p8 B( W5 `

. d+ P3 z" I5 Q9 W7 G! O[DEFAULT]. M* ]9 G: t2 {
rbd_secret_uuid = <secret-uuid>     ###from uuidgen
5 ]- t& c6 O5 F5 D( m3 ?7 arbd_user = cinder-user5 z& c! o. I, |5 @# l
rbd_ceph_conf = /etc/ceph/ceph.conf' g" X5 {& d8 Y/ j1 R- {( V
' I, W6 a# |: C; ?

2 d7 ^& F( {0 [' k$ wc. 重启 Cinder 服务以应用更改- c4 V* p. Z. j. s
9 K# G$ m6 Y' T/ A5 ~" d
3 M% A# o7 ~7 n" A3 E/ z. \, s
2 \$ j+ _/ F  S! i
* o& [8 L: O3 t! [' Y' T' R

- i) B% g# Q8 u" ^' j8 E1 j" P- N! a+ K4 }! W' _: ~7 Q' U7 |1 C% T
systemctl restart openstack-cinder-api.service openstack-cinder-volume.service openstack-cinder-scheduler.service3 x& r3 K: E* j% Y+ R( m9 b

* o% W8 x. i! s1 N- ^4 M, C1 G. k# S. `
3. 验证配置确认 Cinder 可以正常使用纠删码池:
, z* L# ]+ V( j! m) z3 S5 A9 J7 c- F6 _/ v/ c4 _$ [
% z, m# I- B) b9 J9 j

# v5 V  \$ h9 M1 I- O3 ?2 K- ~
( v8 j; x7 A9 Q
/ S$ _) r7 M' O0 X
& ]2 O5 {9 A; o3 q( \5 u* ^2 `$ I$ b1 Y( ]5 v) l1 {
openstack volume create --image <image-id> --size 10 <volume-name>
* N  M  w& D0 c" o
6 k" a- A3 \+ D0 c1 _. Z6 F6 ~/ X9 X' J: I
检查卷是否正确创建在 EC 池中:2 _6 L+ F  Z# s8 |$ f1 u

1 @+ ?& N2 W$ v* U% n" l' D
3 p  A; e$ I9 k; t4 Y' Z6 y# {1 q7 m7 ^" ~

. f4 c1 c# N; b# m1 T1 L7 W% c/ F/ l. I' O3 c- z! s  N$ F

) W  O* J' K8 _8 G' @$ [% s6 ^* n) U; r
rbd ls -p ec_pool --id cinder-user --keyfile=/etc/ceph/ceph.client.cinder-user.keyring | grep <volume-name>
4 }: g. }4 t* ^
4 W, J+ x8 \2 X" f. f6 o8 E3 {: A2 D: M+ Q5 N9 ~
4. 在 Nova 中使用 Ceph 块存储(可选)如果需要在 Nova 中使用 Ceph 块存储,确保 Nova 的配置也指向正确的 Ceph 用户和密钥。这通常涉及到编辑 /etc/nova/nova.conf 并添加类似的 RBD 设置。
$ T$ t0 j5 d5 m9 a: b* X, A5. 重启相关服务(如果需要)根据需要重启 Nova 服务:
9 j& G4 Y) N/ m/ U% P: ^* S) Y1 e7 u' N+ J

" Z, ^9 o: S1 c& h& d% S) \) J9 w: L- j% Z& s1 g( S

) ~$ g# D0 g$ W2 z4 G0 o4 |. G6 d1 T- s
. b8 `( i) T3 ]6 y

1 B# F- Y5 G% qsystemctl restart openstack-nova-compute openstack-nova-api openstack-nova-scheduler openstack-nova-conductor0 V0 H) e. d8 m# _: P* N8 b9 @, c

( H. d2 Z, u/ ?* M1 B) T5 k
  J6 j1 ^* d2 L+ H3 a! @通过以上步骤,你应该能够在 OpenStack 中成功配置和使用 Ceph 的纠删码池9 \+ J# `' v9 {8 H# ^

; S$ ]/ q' Y  h' l9 f配置完成。
: e. U# M9 ~7 w" y% B4 ^$ U3 v# }$ [4 K3 Q7 K3 L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:18 , Processed in 0.068861 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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