|
|
在 OpenStack 中使用 Ceph 纠删码(Erasure Coding, EC)池,通常涉及到以下几个步骤:
c7 L. C. T% \7 `1. 配置 Ceph 集群以支持纠删码首先,确保你的 Ceph 集群已经配置并支持纠删码。这通常涉及到以下几个步骤:
7 w1 F5 f) k3 S; k4 P6 _: aa. 创建纠删码池在 Ceph 中,你可以创建一个使用纠删码的池。例如,使用 jerasure 和 reed_sol_van 算法创建一个纠删码池:- k$ W' e M& d: L
% S' m3 i0 z/ A+ ~ J8 K9 z6 B- } b
0 ?" a8 j8 C E1 N9 q, V) e+ E
9 Y" f% j! ^4 `+ p. |* ?
' X, W, E9 ]' y H/ j3 M& X( P3 R! J% P! g* v( X2 {2 X
5 w1 _- f% l1 v% _- d1 S' F8 I
6 K9 f: j m( E* e3 @3 c; \
( T/ h1 n& R! yceph osd pool create ec_pool 128 128 erasure code_profile ec_profile
7 c) F! g1 r, M6 C9 S# E+ sceph osd erasure-code-profile set ec_profile jerasure yel error_domain=1 k=6 m=2 ruleset-failure-domain=host crush-root=default$ G1 |' T6 M) X9 [+ L1 i
" }6 n2 ]) w+ x* F
& Q, g% v6 J. r% c% t
这里,k=6 表示数据块数量,m=2 表示校验块数量,error_domain=1 表示每个主机最多有一个故障域。' z- c, A A1 V2 p: ?$ Y$ ]
b. 验证池配置确认池已正确配置为纠删码:
% z/ C/ A! N" {6 _5 E
; u9 G6 F( C9 \; B) X7 C v1 x
" t. b* A8 a6 [) K4 p
" f7 o% M- }" L1 |& Z; f& |& r$ L
; P+ u8 k5 @3 P$ J
7 C, F, T5 M. \5 {
" r" m1 A( T; v2 F: @) p
; u& [; {3 u' E2 R+ J Sceph osd pool get ec_pool erasure_code_profile 9 J- f; ]$ I% U* V+ x X% D
3 v, r1 B; c$ k9 P: q# d
6 w2 B" N- n& A9 A7 z2. 在 OpenStack 中配置 Ceph 和使用纠删码池在 OpenStack 中使用 Ceph 纠删码池,你需要在 Cinder 和 Nova 中配置 Ceph 以使用这个新的池。
/ _# d+ T+ L" H6 q# V6 [8 c/ Pa. 修改 Cinder 配置文件编辑 Cinder 的配置文件(通常是 /etc/cinder/cinder.conf),并添加或修改以下设置:2 }2 K$ L6 W3 ~3 |6 X9 O+ [5 O7 W) L
2 U2 d6 P8 p) R, Y" ^- @/ L
0 F* g# D7 ]) U4 f' O3 F
5 g6 z( S2 L/ Y9 K' U
, T6 Q- p! c# F% k
% F) o2 r" a8 h# R5 D- O% Q, Z q
8 k1 }9 s3 J8 T6 J6 L8 x# ]7 L4 D. ?1 c) E2 x, M+ x- W
( N: ]% c9 d8 c
) e3 X0 u% f. J) b) \) p% f5 Q
' q( i+ @: p7 b) U' a
# R2 h0 e9 g) _! {7 x2 t. M9 L[cinder]+ s" q- T0 |5 @, }4 g, v. n+ l
volume_driver = cinder.volume.drivers.rbd.RBDDriver
/ i7 z c% ` lrbd_pool = ec_pool
( n+ ?+ D: Y( {. L/ y- Frbd_user = cinder-user! @2 s" q1 Z! o. H
rbd_secret_uuid = <secret-uuid> + B+ {1 L& q6 q+ h# q2 d( @) C7 f
Z7 j% {2 C+ m ^0 Z9 ?8 |
% x! K. \' r, n' @确保 rbd_secret_uuid 是你的 Ceph 认证密钥的 UUID。你可以使用以下命令生成 UUID 长字符串:
2 g( c0 C! D; _, w' F- l% a% E4 W" v( s
2 u/ z5 @) B, [4 ^$ g' i
% S: J. x( ~3 ?$ ~$ l/ E
+ K5 V0 [% e J* B) y
* V2 z2 y: c0 Y1 x3 y% ?' r* v3 |% [- q* n5 B& d. n
) F3 k- M& @6 I; c; Fuuidgen
& c( D+ ?# a6 ? v; K Q
2 u( Q1 y8 ] P; z0 s/ ~: s; M$ W" R8 m- E& H+ Z$ K& U5 l: e! X7 Y
! F4 W6 I: Z9 n3 |& y& wb. 配置 Ceph 认证密钥生成 Ceph 认证密钥并将其添加到 Cinder 和 Nova 的配置中:- g6 z2 N7 J3 r; c& O: D$ n
$ [+ d& q) r: |1 t( ^! W/ l! H: y* Y1 D7 c
# h$ l8 C& \8 L" G( A0 I) e: H2 e+ A; a2 Q' t! _
9 A8 G# N/ q$ w0 r
2 ~' y; R5 ~. q) ~5 B
8 e: I: A' V9 yceph auth get-key client.cinder-user | base64
* _ E3 Z4 Z/ j; z, D5 S! H; J7 O, _& C9 _! g! d; X% }
; W6 l2 U8 I/ M* u" e- c+ w0 C* d
将输出添加到 Cinder 和 Nova 的配置文件中:
+ A$ N T8 p6 _/ Y% ~: X R! H* [
- ]0 d' } k# w) h( V6 M
$ c* z. x2 T$ L$ {
; S- V; e- L5 n( f# z' n- ]$ ]3 {1 k; X2 f6 g6 z% ^
1 B: }) Y) l8 c/ z/ W" l. Y1 }" I# O; P6 @0 p
% b# Z% M& ?- H4 t# z3 |' `% A
) S& I! A' ~1 _' s6 |4 r% Z
8 ]' Z1 y6 B( `! r, z5 M+ M( `7 q[DEFAULT]
+ \' ?6 f0 h5 V. mrbd_secret_uuid = <secret-uuid> ###from uuidgen+ r, e' H; ~/ g# N! G3 O
rbd_user = cinder-user
# m6 }% v) u- W B- Z4 h0 frbd_ceph_conf = /etc/ceph/ceph.conf3 N% h7 E4 R4 |1 Q+ @" p
" p3 D, {& S2 W# y! k. d. N Y: i$ Q
, D; G6 p& ~* S( I* M7 Q# ~c. 重启 Cinder 服务以应用更改
/ S- U. M' Q" o! d# u& B; n
9 x g+ N0 T5 k. Y
( Y! [) ?& c8 O S" t+ v
7 r# c& S5 v; V4 b: ~$ ]+ x+ }$ ?% P1 P) b( ?8 n
. \$ S7 ^! f2 @& B9 S0 ]1 e
( a, `7 B+ @3 y5 c! ~7 D. z' U
systemctl restart openstack-cinder-api.service openstack-cinder-volume.service openstack-cinder-scheduler.service: o2 q2 U5 ?2 d8 v
3 ~* Q9 x8 L. b5 A5 {0 r9 f' ~+ R
8 ]- ]8 a$ A' _; J* B+ k
3. 验证配置确认 Cinder 可以正常使用纠删码池:1 ^$ ~6 ]2 N0 ?% F, s1 v
3 J# s% \: T9 p0 x8 R! |4 n& m, ?9 \$ m- K$ c+ p3 S. y) ]) g
/ i, F& l3 y! P+ m3 Q2 S( V- d _. \. u3 L
: ~- y- O1 [: T9 A/ w R9 R z1 P0 p3 P
' H- k( Z& M: y* I {" C
openstack volume create --image <image-id> --size 10 <volume-name>
% } C U1 I" r& }7 r; w9 D p3 S" o3 S6 U" j8 |. r' r- D
: N4 S2 V& k6 T( @: n' M* K) e# s# Q检查卷是否正确创建在 EC 池中:0 I& M5 R3 V( W3 b9 w* M
$ U2 p3 b0 l& |6 i0 T) g7 x% r" y6 H5 q+ S
# p% [. n! E+ D$ h
) h# t ?) `# w- Y
4 p9 `& ~: U6 i; `7 \! J0 N
" i. K$ d2 W/ E9 x8 H
; k' k1 O% H: v2 G) X
+ t/ [& W; p( C4 e2 M: y1 wrbd ls -p ec_pool --id cinder-user --keyfile=/etc/ceph/ceph.client.cinder-user.keyring | grep <volume-name>
6 \2 l0 i+ c5 \/ Z$ n8 g7 \1 S, K5 O+ q v
% F6 f1 P# X% A+ f: X
4. 在 Nova 中使用 Ceph 块存储(可选)如果需要在 Nova 中使用 Ceph 块存储,确保 Nova 的配置也指向正确的 Ceph 用户和密钥。这通常涉及到编辑 /etc/nova/nova.conf 并添加类似的 RBD 设置。
: R8 ?" u& h! R* x, J( U( ^: N5. 重启相关服务(如果需要)根据需要重启 Nova 服务:, F9 g; G& z4 a0 ^9 X% r8 p
! ~( S9 g" Y- P n8 `1 q+ ]7 b p. j& m: s
/ P/ o; \9 | h/ p, x
3 f3 I+ \. N; t# c+ v
4 K3 t- L0 i& A- f% V8 K
& o* b M% ]$ M8 _. t7 j4 o5 e0 l2 x/ O8 W: v/ l. w
systemctl restart openstack-nova-compute openstack-nova-api openstack-nova-scheduler openstack-nova-conductor
* ?& z* c# M' c" _1 f3 j+ E6 A8 ~' X& N9 \
' |- O9 ~2 d( {. |3 T9 Y$ O5 u9 y! T通过以上步骤,你应该能够在 OpenStack 中成功配置和使用 Ceph 的纠删码池" X' c6 H+ p2 Z$ u: n$ R- E0 s
1 B, \7 W1 ^- g. K. }: y配置完成。6 V! J$ M! A, `" I9 w
: f5 w" }. z4 r+ W" \, z |
|