|
|
Ceph Pool操作总结一个ceph集群可以有多个pool,每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,比如Replica Size(副本数)、Placement Groups、CRUSH Rules、快照、所属者等。
, g) \4 v; s6 f9 B
- r( D0 A A2 W. \打印pool列表
* K D( F F! _, z0 ]! Z5 m. g
/ W5 L, z: A5 N1 fceph osd lspools
+ I: h, T! I+ Z0 J: _- f6 T; U" ?5 O- w0 z/ x
创建pool
+ ?' B$ `2 _. n" F+ x
$ l3 V S7 ]0 w通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:" Q S1 w9 g9 j1 r! b1 e+ b
7 }% ~# s4 g+ l若少于5个OSD, 设置pg_num为128。& o) ~) r; U% f" k8 B
9 o& g) _# o$ u9 ?* i8 _5~10个OSD,设置pg_num为512。- e- h3 f3 M5 u' n' w' Y' G$ c
* u7 p; }- f( W% n6 Q" I6 _10~50个OSD,设置pg_num为4096。
* n- ]# x( R7 O2 D% F
( u3 F0 {. Q, P- L9 j* o超过50个OSD,可以参考pgcalc计算。3 f( u6 E. b5 J7 [% f: W
1 ^$ s. Q6 u9 y2 z7 ?* |, }本文的测试环境只有2个OSD,因此设置pg_num为128。
/ g5 E6 ^4 L0 e$ a1 G) c2 m5 t/ F: p
osd pool default pg num = 128$ B. K+ G% L% q
4 C1 ?; c" l W% n5 M. a9 u1 o# o$ G
osd pool default pgp num = 128. O8 N* C5 u* W7 v5 u: g
; W6 W- n8 K$ D8 W. N创建pool语法:
$ j. m5 b- X3 h# Q1 [: L& C1 j
# z- e" s0 c" y! K, kceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \
+ Y6 x: X$ @, L6 `% K! J; F2 _
2 x0 `- a8 X3 n# ^[crush-ruleset-name] [expected-num-objects]
, L/ j, w0 t+ o6 T1 F! D' N3 d+ G0 d' J' m
ceph osd pool create {pool-name} {pg-num} {pgp-num} erasure \, X! v; o5 X" t# R2 H3 T' J8 d
u9 s1 ~2 C4 y6 p" Z1 ?[erasure-code-profile] [crush-ruleset-name] [expected_num_objects]
2 w: x6 _5 V; p
( ?% x8 s. m0 B) ]8 d创建一个test-pool,pg_num为128:
+ B8 a R8 a) H" \' ~) d, d! d1 @ _8 e# ]! t4 Z
ceph osd pool create test-pool 128
" l2 h% n* T# A% f2 }2 v% U8 ~( i" p i+ u a
设置pool配额7 f8 ? i8 M* ]/ C
& _ s& M$ w% u支持object个数配额以及容量大小配额。
4 X% e% o5 w0 G
' Q% v1 i/ \% _* h设置允许最大object数量为100:
w9 \, u g5 k* J$ F0 O6 c
; g! _, S( Q* X6 i& dceph osd pool set-quota test-pool max_objects 100
( ^9 z _1 u1 F* t2 ^8 f
( E$ @2 x T) A8 E& a# X设置允许容量限制为10GB:
$ c& D' a0 i$ ?9 S. ]9 I2 k+ |- L; N
ceph osd pool set-quota test-pool max_bytes $((10 * 1024 * 1024 * 1024))! M* D2 U: D3 q& i0 C
7 w+ p0 k$ p" D) ~$ V- _+ f# {取消配额限制只需要把对应值设为0即可。
4 m. F2 Q: U; [2 X0 k$ n
* l. e- E* A, Y" ^3 S( A! p1 `, n重命名pool, t6 P4 L0 X* K) c: V9 z I; @
3 ]. z: M! D# K( |1 W1 ?* \ceph osd poolrename test-pool test-pool-new
6 M! @: A. C; z. }2 N- ], R
) V3 T5 l) ~, J2 g: y删除pool
" M* d. M( X3 g/ v+ m* A
F2 g+ g9 A: m- S+ g/ b! l删除一个pool会同时清空pool的所有数据,因此非常危险。(和rm -rf /类似)。因此删除pool时ceph要求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。) P! Q3 C5 t0 \# G8 w5 {3 M
8 D8 E, ]3 E2 Q3 ?' F9 B" u
ceph osd pool delete test-pool test-pool --yes-i-really-really-mean-it
) J- z0 N; v5 T/ o' U9 z. G2 f! k O+ Y8 T$ Z& f
查看pool状态信息
# _5 K8 l3 p5 V0 Z) f N1 e3 Q( q o+ X. ` |: `4 \( U/ K2 g% X
rados df
- f4 s% C: X7 Z. d3 B- v( P4 R# i# q! M8 M+ w% O: c; a
创建快照
0 f# L' K) C, b, g0 {1 s1 D
9 C* R- X* z1 F$ N) _: Sceph支持对整个pool创建快照(和Openstack Cinder一致性组区别?),作用于这个pool的所有对象。但注意ceph有两种pool模式:7 j: Q* Q6 I3 h. c1 d L
( q! Q w( A' y5 uPool Snapshot,我们即将使用的模式。创建一个新的pool时,默认也是这种模式。
. K! `$ h. u, s8 I1 D& X( u6 b# { b7 w
Self Managed Snapsoht,用户管理的snapshot,这个用户指的是librbd,也就是说,如果在pool创建了rbd实例就自动转化为这种模式。
% Z( q& {* m0 K! {/ @) `3 C
% c- |6 u7 d4 y& m这两种模式是相互排斥,只能使用其中一个。因此,如果pool中曾经创建了rbd对象(即使当前删除了所有的image实例)就不能再对这个pool做快照了。反之,如果对一个pool做了快照,就不能创建rbd image了。9 k! ~! |- S' ~) n/ M; A6 R6 k& K( U
. z: V- I% i% u+ ^9 l6 wceph osd pool mksnap test-pool test-pool-snapshot
9 B; j1 y3 P" |3 l, [$ a8 J4 i0 O! K
删除快照3 O6 K, z+ M7 ~9 i
( @ l/ e& c5 O! bceph osd pool rmsnap test-pool test-pool-snapshot
; t5 I F7 _/ l R6 S! [8 H# x/ ]- a. L
设置pool
8 X J2 E# f* P% R; y, \
# J$ i' T+ z3 J* Z5 _# o通过以下语法设置pool的元数据:
, U/ ?( j5 Q* a) y* b, X) m* F3 |( N! p2 D
ceph osd pool set {pool-name} {key} {value}4 P# j/ I7 {0 Q
) w) t, Z) _/ Z, H3 s, M
比如设置pool的冗余副本数量为3:- B$ J4 K. F# Y! T: v/ K8 V2 Z, ^9 m
7 ~' @4 H' n6 G! j) B2 d R/ u5 Bceph osd pool set test-pool size 3
$ `5 Q! b# q+ }$ _, s/ T5 o
$ A- s B: Z6 _4 L, m3 X. n其他配置项参考文档。6 Q- ~# `7 s5 E, S2 f
* ?0 a V5 K% d8 a4 C" U通过get操作能够获取pool的配置值,比如获取当前pg_num:! x! w1 W' q5 X" J& m {6 `' E
3 j- C$ D8 G! R8 n$ J) Q6 ~ceph osd pool get test-pool pg_num
' J: X8 Y Z- G" W" e: m- b4 I- ^; Y! K9 i7 n: P; b- ^- T
获取当前副本数:
$ f. S; ~3 a a* V) R' G+ H) W; T1 b) C* a$ b) e6 O
ceph osd pool get test-pool size
1 e: B$ n+ N3 m9 d; g; J' f0 E! X
* e% a% p: a, ?1 B. [. ` |
|