|
|
Ceph Pool操作总结一个ceph集群可以有多个pool,每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,比如Replica Size(副本数)、Placement Groups、CRUSH Rules、快照、所属者等。$ L$ ^' Q7 h5 p6 |8 V" C: i
# {! K" Q: [' {7 _& T, g! }& h
打印pool列表$ n& D9 L4 V- |( ?
( i3 l+ ?$ u" F$ E, k3 a
ceph osd lspools
# E0 r+ u4 [8 g& A7 Q2 F
% K: u; f7 ]" o% k0 V' t创建pool
( Y- X7 Z$ C6 q# d1 T) m4 `2 w( l6 V( D2 ]5 I2 b5 \$ I
通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:% u, p2 w, }. q* z+ ^% c
9 S- l# L- C# B7 a0 e若少于5个OSD, 设置pg_num为128。 G2 Q: O/ U& O8 h0 R
9 S; `; W3 h, W5~10个OSD,设置pg_num为512。( `5 k/ b( z5 C5 p/ d
: c4 {' C! I7 d+ E" d
10~50个OSD,设置pg_num为4096。. T, P% b9 d: m
c6 @& o; ^2 R: Z* y0 R
超过50个OSD,可以参考pgcalc计算。2 e; f4 d6 ^% `0 M' O0 \8 D. ]
5 q2 r4 U E* |! ]/ o" _3 {3 E# D4 Q
本文的测试环境只有2个OSD,因此设置pg_num为128。7 F% p; X) S- w7 W
( y# ~( b6 B% h* p1 w( C# mosd pool default pg num = 128
& q' `/ x5 m% e# ?9 v; d5 t2 I1 S+ t) e5 P$ c
osd pool default pgp num = 1285 Q) c; h L' I, P
' J3 u6 {1 ]5 O* j创建pool语法:
- \, G' e" S1 C J# R6 \$ h7 }; _/ S. C% {& ~; Z4 I
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \, T8 ?* z3 E1 Q4 T: _6 y% F+ A8 A
; u2 D8 q2 |; T4 t
[crush-ruleset-name] [expected-num-objects]
2 l) f) d! {. {: R& V% r! K% e
& u& X- R7 G8 }* b/ Cceph osd pool create {pool-name} {pg-num} {pgp-num} erasure \
8 x4 `/ J+ q L
0 {: C) V" |- t[erasure-code-profile] [crush-ruleset-name] [expected_num_objects]: t% ^% Q& h* c3 k
% X% j* b$ Q6 m- \' {% z. S* R创建一个test-pool,pg_num为128:
, U. j* ~& v: N, ?5 s' r* J: B* t" w0 }0 {; b6 p
ceph osd pool create test-pool 128
4 c3 ^1 F; H) r8 c3 o) g5 t+ h2 ]% E* E* S0 A
设置pool配额
( [ k, l; j9 m' e/ [" r* A1 X" }
( Q. N0 W: ]2 \1 _' t6 X支持object个数配额以及容量大小配额。
8 y! k5 |; C7 R$ O1 V+ N$ J2 r
' ^/ ^( [- U; K+ d. v设置允许最大object数量为100: Z) W& W% e* S* H0 Z- f5 u
@( H# g2 y/ \! Z* N: W
ceph osd pool set-quota test-pool max_objects 100
( A2 q8 Y9 U" t2 ~4 ?9 B8 c
% [( R; ~: l2 b4 A设置允许容量限制为10GB:
5 k% o& P0 R8 H* \# {
: R$ g; _/ s- u0 r, v8 ?ceph osd pool set-quota test-pool max_bytes $((10 * 1024 * 1024 * 1024))
( E6 l7 w% S$ z% N J4 N. q
6 d2 g4 K0 t8 [) i! v1 c* _) z取消配额限制只需要把对应值设为0即可。
& C& t) C% s7 ]5 m7 G# \
5 I2 `5 l* e. \/ H |4 Z1 q# b重命名pool, `/ Z. v1 D0 {
8 n' |" [, m7 V/ E1 {ceph osd poolrename test-pool test-pool-new
. a/ R8 |/ y g t
z# t* W4 @: p2 A+ J+ G删除pool
2 u" _, q! u: l6 f# e3 d
; @" j! O V- ^1 C- ?. w8 s删除一个pool会同时清空pool的所有数据,因此非常危险。(和rm -rf /类似)。因此删除pool时ceph要求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。* {8 [5 D4 b6 f: _3 W9 t1 ], k+ T
/ D$ l( A9 r* I R
ceph osd pool delete test-pool test-pool --yes-i-really-really-mean-it
: o8 D3 t1 z# U+ g+ _) e6 i8 g2 o: o" y% ?( N$ g' `
查看pool状态信息
1 R W& V; U/ U( J4 k0 U8 K! V7 M8 W- I z% ` h6 ?3 L
rados df6 a% B0 f: L! |/ ^9 v) m6 W
. |% `! n6 n$ m" o8 @- t3 u# }创建快照
2 {8 a9 N! |& K' q6 {* M8 ~' f1 P% @( _/ w$ D3 d; e2 ^0 s1 Q
ceph支持对整个pool创建快照(和Openstack Cinder一致性组区别?),作用于这个pool的所有对象。但注意ceph有两种pool模式:
! q( N6 A" m9 a% d% p) |
' V% c8 z0 m- h. uPool Snapshot,我们即将使用的模式。创建一个新的pool时,默认也是这种模式。# `" [& t% ^4 n; f
. K' t/ f/ S& u
Self Managed Snapsoht,用户管理的snapshot,这个用户指的是librbd,也就是说,如果在pool创建了rbd实例就自动转化为这种模式。2 q9 E2 B! ?! c L9 t; E* j* s1 ?
2 O2 A7 Q _( B2 }% u1 o$ P这两种模式是相互排斥,只能使用其中一个。因此,如果pool中曾经创建了rbd对象(即使当前删除了所有的image实例)就不能再对这个pool做快照了。反之,如果对一个pool做了快照,就不能创建rbd image了。% [; b: k6 |# ]$ F) {* } s
, }+ O3 f5 u/ t5 Z5 H& r- z+ cceph osd pool mksnap test-pool test-pool-snapshot! \7 o" }9 F( b' i* n3 ~1 n0 u; O
; ]8 L) P9 F- t" i- ^
删除快照4 E0 t n/ L W) u- N
; I6 F7 ~6 t2 T2 mceph osd pool rmsnap test-pool test-pool-snapshot
0 D9 Z$ I) ]* y2 I( t R" y
2 _" U" p3 ~$ H. b( z设置pool
/ F% j; N* ]3 h& e
- Y1 C- H: y4 Q( L# Z通过以下语法设置pool的元数据:0 \( \; @$ R- ?3 A5 T
. l& }" I/ ~" o
ceph osd pool set {pool-name} {key} {value}! i/ l; r3 p8 m
5 N9 X! v% m$ K3 W比如设置pool的冗余副本数量为3:; y* s- s# X% a( Q( A
( V" [8 l0 h3 m- ?ceph osd pool set test-pool size 3
6 A3 _, Q; D" H' n8 w
5 F" f1 I0 U. r, A' N; u0 K* X9 a1 H其他配置项参考文档。5 w4 `: U5 Z7 ?. g- _! S! O9 f
/ W h6 O+ M( A通过get操作能够获取pool的配置值,比如获取当前pg_num:
( [3 ^( ^& c' y3 h. I+ }9 l" D E2 j3 n1 X$ p% B( _
ceph osd pool get test-pool pg_num4 e* t* H3 b) v
; u, _$ S* H2 z, E1 k' I
获取当前副本数:1 K# m4 Q8 ?" H) W
* ~7 }9 O* o# [
ceph osd pool get test-pool size
2 U, p5 B& F) H0 \& n; p
# U) i2 P$ d! h( j/ C* c |
|