|
|
在 OpenStack 中使用 Ceph 纠删码(Erasure Coding, EC)池,通常涉及到以下几个步骤:2 |3 s) j( z# C5 _' [
1. 配置 Ceph 集群以支持纠删码首先,确保你的 Ceph 集群已经配置并支持纠删码。这通常涉及到以下几个步骤:7 h! Y7 z- s2 L# a3 l e. [
a. 创建纠删码池在 Ceph 中,你可以创建一个使用纠删码的池。例如,使用 jerasure 和 reed_sol_van 算法创建一个纠删码池:
0 u m2 J( Y' c3 g" K. x- g9 K \
+ N e) B s4 D9 C% A( O
4 h/ k+ Q7 [: r9 ^( X( f1 O+ K' t9 H7 v( [
3 i* v- E0 q' C- E
# D$ r) I6 r* T2 k: n8 U9 _
i9 z3 O: {; b+ w6 u) _3 u& Z# o/ @; q# i7 ], `7 G
ceph osd pool create ec_pool 128 128 erasure code_profile ec_profile0 @) |0 q% ^/ ~" H5 I8 V4 v
ceph osd erasure-code-profile set ec_profile jerasure yel error_domain=1 k=6 m=2 ruleset-failure-domain=host crush-root=default
. `& T. s- m, n; I! g% A
" @8 `5 K% h6 i* ]9 X. y' j8 L- D
. p# u. n1 A- d! y9 [这里,k=6 表示数据块数量,m=2 表示校验块数量,error_domain=1 表示每个主机最多有一个故障域。* \, H6 u5 V7 O
b. 验证池配置确认池已正确配置为纠删码:( \& r4 b N: A' J% h5 `9 H
% Q9 x* h H; g7 O
; ^, L/ J: Q! a. M u) S$ t' A, Q& e! |! E
1 M2 a( u9 b" A' g6 s' u) D) r
3 q( ?' m4 F/ S& q" x* I O
8 H8 \' K H& T# \+ |* P! H( q! b
0 a; M' [% l a. @# l0 iceph osd pool get ec_pool erasure_code_profile
7 u2 r* y) R4 S$ [. i% Y( q5 B$ R3 f7 Z$ P$ d, w& b5 U. i, B
* ~) k y9 H9 ]! V9 _- T: I
2. 在 OpenStack 中配置 Ceph 和使用纠删码池在 OpenStack 中使用 Ceph 纠删码池,你需要在 Cinder 和 Nova 中配置 Ceph 以使用这个新的池。
( g2 i( m$ R/ Z& Wa. 修改 Cinder 配置文件编辑 Cinder 的配置文件(通常是 /etc/cinder/cinder.conf),并添加或修改以下设置:
8 v T2 N9 S: J
/ V* e% |! k5 o0 F k C$ E: s" k
+ G8 m0 E5 @+ m' u& S6 a. o+ ~5 |( L/ S5 v/ j
) l- t6 D: r% O) z+ M
0 E5 ]- {+ N+ c* i" t5 [
{4 [# ?7 C6 \% u* @. U c6 j& m0 X, E
, S8 R' P/ G* l: `" U. r9 v! b g0 A3 [: q8 u8 j, {7 U V
( H) l. i7 R$ ^- @- y
, ]6 ^$ _( ^3 S- m' |& E3 ?
[cinder]
9 h# _ C/ F3 u+ {6 _" P0 ovolume_driver = cinder.volume.drivers.rbd.RBDDriver) Y3 ?" H4 h/ _7 v- L& R. E
rbd_pool = ec_pool
/ E0 Y. D: o+ X9 G& ~, c8 Orbd_user = cinder-user
0 ~/ h. }7 @- n" D6 @; D% trbd_secret_uuid = <secret-uuid> ! B! k" N8 T* n
2 Q! l% j( _. d
- ^7 O0 x" t! k' [- h) x/ l5 ^
确保 rbd_secret_uuid 是你的 Ceph 认证密钥的 UUID。你可以使用以下命令生成 UUID 长字符串:# O( V9 E0 C5 E) @
, Y& _( \9 s' L# f0 T; ^& i6 |
. u% p6 z" M0 _7 J" A& I: {& Y
# g2 M+ P* z' a/ l' `
( q& J' K: U! j! g" y( Y. k7 r" w, n: `2 H2 F% j6 a+ Y4 R6 q
7 I" Y4 V6 e% o% S
* y5 e' T; |' f0 N$ puuidgen
3 L0 `5 \) F. t6 }: A3 ^& Y( m
$ l. ]3 z" C* f+ `3 d- T. D0 L9 f5 o
5 H' O# _& u2 J- G$ Rb. 配置 Ceph 认证密钥生成 Ceph 认证密钥并将其添加到 Cinder 和 Nova 的配置中:3 v1 y0 G8 u% t% a4 L
' W7 Z8 C& d6 c3 P: L6 U! ]9 M H* S6 x8 l+ ]8 [& g9 b$ y
- c. v! H- E) D+ X! o& I5 G0 ]5 E, z! ?
# I! _0 u% J0 z e7 |6 T3 f
+ c; b& X+ W: R& V
" P( ~2 q! \! P" l/ Uceph auth get-key client.cinder-user | base646 W- M8 z- ]# T& L; o4 G/ q+ @! L
" ^* X- D7 D0 C# f
+ @# ~' Q1 n' i) Q M# N" I
将输出添加到 Cinder 和 Nova 的配置文件中:# ~4 e i0 f" U; L% E8 ^
# a6 Y8 M: w: Z$ K. P3 O6 }$ K7 R. E6 Y% I( c& W
& s, J) N2 D% Z* a* ~" t8 f" J6 k0 n" Q9 }' t. ~& ?& v/ s
5 t1 T) _1 _1 ]) I
! m& P! j: |1 h( f4 M9 J% Q, \
5 c$ Y: T- S* O! @
2 l2 h1 [. i9 n# Y* a( w4 H- ?7 h E- K& n( b9 |/ c. ?
. V$ b Z8 i5 B9 L1 X[DEFAULT]
# O: |7 ]" U- Z2 y! orbd_secret_uuid = <secret-uuid> ###from uuidgen
( a( j' s2 S2 srbd_user = cinder-user4 ~+ }! Q0 T# P' D9 q
rbd_ceph_conf = /etc/ceph/ceph.conf
4 f/ X3 U8 U+ Z/ d- v3 V0 _4 n+ {2 b# s- _+ Q2 ^7 @) V6 G; o# Q
/ I' F7 ^6 M; k, o: o ~% ^7 o& fc. 重启 Cinder 服务以应用更改3 m3 B8 [1 K* [
" C' {! \0 z7 U
- b- ~. R) d5 t' n2 E7 w3 h3 e: S2 A7 C/ K u& v
" k# M6 ^# A, Q" o6 g8 m
# w+ V- d/ U! o0 E4 }. S) \: N* B3 b5 g$ f! V9 {: h0 T; K* N
systemctl restart openstack-cinder-api.service openstack-cinder-volume.service openstack-cinder-scheduler.service/ p" T! I! E, H) W) L
# _# J* ?* ]+ k* ~1 v1 g7 Q
- j4 t+ f! D6 q8 {7 i" V* h3. 验证配置确认 Cinder 可以正常使用纠删码池:
/ M7 L, @6 ^3 u0 c% `. l8 `' E# {0 O
. V" k, Z k5 _1 S* ?+ w, g
% G% }8 w' U, K* O
' F# T" k0 B' q& a! |9 j
6 ] I' b2 w8 G) N
% w ~# Z" _5 Y7 f6 H9 s+ C4 ?5 _; A! I+ L2 u# j- I" d
openstack volume create --image <image-id> --size 10 <volume-name>+ C2 z( B* b5 u3 ^) Q6 p
# d, L% Q7 K) @1 V- x g, S& q/ c( o' E4 K! f
检查卷是否正确创建在 EC 池中:# N3 q0 \% A5 j8 I% F( h+ U* Z0 T" e
7 |$ Q4 e6 Z$ J# n
: l; S# s. t6 `
" k ^$ F& v" q2 s+ }# t9 i( I, O9 L/ B& e }6 z( a4 j
$ k( X1 p! A; [1 M- m2 s/ A9 X2 b. _8 N( h: E! c8 B/ l
1 _( N0 j/ ~. F: F; u* d
rbd ls -p ec_pool --id cinder-user --keyfile=/etc/ceph/ceph.client.cinder-user.keyring | grep <volume-name>
0 c9 `6 l% I$ \! R; m9 e8 F4 k) R" x9 T
. o# i* y2 U* ?- d
4. 在 Nova 中使用 Ceph 块存储(可选)如果需要在 Nova 中使用 Ceph 块存储,确保 Nova 的配置也指向正确的 Ceph 用户和密钥。这通常涉及到编辑 /etc/nova/nova.conf 并添加类似的 RBD 设置。
0 R$ I% Z) w- B! J) W' \5. 重启相关服务(如果需要)根据需要重启 Nova 服务:+ s# e9 \1 h7 [( M% H
( K6 g% N" \2 O* ~
* ?$ r! j4 E9 ], a. K& i: V* s6 L* z4 ]4 |+ f) R0 F6 \* t, @2 z
7 y" F0 g G" A7 F) s5 h) Q
8 d# u4 I+ \0 ?3 Y4 N' K% ~4 S x; V) F0 Q E" D6 i& V4 @
% T6 ?9 c/ _( x) @
systemctl restart openstack-nova-compute openstack-nova-api openstack-nova-scheduler openstack-nova-conductor
3 o) K7 i# `6 ?1 I8 l1 S# k( R% P, } |) [
9 o# ?# F8 ~+ O" f: \7 v, [+ n通过以上步骤,你应该能够在 OpenStack 中成功配置和使用 Ceph 的纠删码池9 A' k0 O* q. X7 ~
& z7 O! n* O+ F* h
配置完成。
! V- W2 f9 e3 K$ g* b" E7 Z# J% W0 Q, k
|
|