|
|
在 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
|
|