找回密码
 注册
查看: 6184|回复: 0

Ceph Pool操作总结集

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-10-9 18:01:58 | 显示全部楼层 |阅读模式
Ceph Pool操作总结一个ceph集群可以有多个pool,每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,比如Replica Size(副本数)、Placement Groups、CRUSH Rules、快照、所属者等。: u* t  l' D+ d* {; X

7 E3 k4 f! F; _9 K& v4 R打印pool列表0 {! O' c! r) H  S3 F
- q4 F" S- I9 J! N$ V# |
ceph osd lspools
# V: Y: r2 j2 y# t
* S* B) ]) o! D. S  t0 l创建pool
8 m. m/ c& w9 G& W3 K6 n$ y" u7 N* s7 ^* f! ~: L# F5 J
通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:, i: ?9 q- H* A: N  q! {( \6 O" g
, l" v; w5 S! @+ i; z' Q
若少于5个OSD, 设置pg_num为128。
) x+ F7 m3 W/ G3 C. j- Z# Y" c' v. J% T( S, R# O: q
5~10个OSD,设置pg_num为512。
  A& ?1 z& X+ j# a% w
# }9 a: W9 l. ?( S10~50个OSD,设置pg_num为4096。
  |; ?( d8 i2 f  R& ~
' i2 ]# x- h: g. K3 |, E超过50个OSD,可以参考pgcalc计算。
+ }8 s5 r) q/ g. w7 |
$ Z1 c+ ^; K& n& t' d  `本文的测试环境只有2个OSD,因此设置pg_num为128。
6 x2 ^- w, |" t) S: G/ D- }' X$ h7 ~' I2 F
osd pool default pg num = 128
/ l3 i6 B9 z: R) D5 V' G* l8 t
) K2 p; R5 d, Y3 j" }- {osd pool default pgp num = 128; H0 r, K; z& `& `- ]- t

: x& {4 _! y4 i6 Q* q3 q8 o) I! G创建pool语法:
. S: I( i: e  h: e0 I0 X% t6 k7 k8 L
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \
  [/ \1 ~. ]3 e( c" e/ s* D! q- l6 Y' P0 [
[crush-ruleset-name] [expected-num-objects]
2 ^/ l! n+ }' C8 K& L$ L7 S% B, H! x2 i& p
ceph osd pool create {pool-name} {pg-num}  {pgp-num}  erasure \- K! k  R" c3 K9 F) Y1 J

' b$ @- F$ Z9 F) J7 {. t! A. y  @, f[erasure-code-profile] [crush-ruleset-name] [expected_num_objects]5 Q0 z3 S. j: I3 _; B. ]

3 M% W* v, w2 B0 N6 g2 A) _创建一个test-pool,pg_num为128:
$ X' y2 |. Q  ^5 h! \3 K
' E8 b! E3 g# t' yceph osd pool create test-pool 128# |" R/ x3 n7 D" c
0 R3 f: F7 R& R  p7 C/ p
设置pool配额
2 R# Q1 ~* {8 t
& G, y: i. T$ Y) }3 b* r+ a) n支持object个数配额以及容量大小配额。
* W& p4 a- d4 |) N+ U1 A6 Z/ c
7 j. C6 N; ~2 U6 l* T: t% ]设置允许最大object数量为100:/ U+ g3 t" L+ e4 [2 G  X/ q- V

- u9 j; e: ]  Sceph osd pool set-quota test-pool max_objects 100
/ P) Q) W& E# v) m( X4 X5 F9 w# u( ]2 f4 ^" M9 l: [" s5 J
设置允许容量限制为10GB:: t4 H3 q! ?8 U# j" c
* q$ i7 E0 C) [3 m% {- i- {
ceph osd pool set-quota test-pool max_bytes $((10 * 1024 * 1024 * 1024))) [. T' l+ T1 {$ o( e  w" S/ @
) I( ?" l& K0 K7 \' c' c
取消配额限制只需要把对应值设为0即可。, M5 H4 |- c7 m$ z
$ e3 ?, z* s4 ^0 H# S9 G2 O
重命名pool
& G- d9 q0 Z, C, ]9 W
& ]4 [7 x3 e3 H) ], h/ bceph osd poolrename test-pool test-pool-new
; z) `* C8 e4 Y% J
( X( E7 ~, B, r1 h) r删除pool( a, n& f& Y" o0 Q
( i! w/ |0 J, Y+ M  K) Y9 X
删除一个pool会同时清空pool的所有数据,因此非常危险。(和rm -rf /类似)。因此删除pool时ceph要求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。8 i& ?5 K7 y5 T+ t' T

; r9 K- ^. P* v9 J2 {ceph osd pool delete test-pool test-pool --yes-i-really-really-mean-it
7 o2 G% X! r* s9 _9 A, _1 c9 I* `" W! B. Q( b: G! V
查看pool状态信息
$ K, M5 |3 q! ^, ^" |2 Q6 @8 l: w8 a* a, i
rados df) p/ g- p* D, N. u; A: [7 J

) K& E# M' A$ [6 w) C! u- A, j& Q- [创建快照- I/ S6 U3 X; n

  \- ?, s4 |+ [ceph支持对整个pool创建快照(和Openstack Cinder一致性组区别?),作用于这个pool的所有对象。但注意ceph有两种pool模式:
: S$ ?7 }( E# e& `3 J: i7 b- I. r
2 u; g4 I& |5 ]- Z+ gPool Snapshot,我们即将使用的模式。创建一个新的pool时,默认也是这种模式。
- @; }/ s3 V5 \) A
1 p$ Z/ [% n4 K/ N% F% y3 rSelf Managed Snapsoht,用户管理的snapshot,这个用户指的是librbd,也就是说,如果在pool创建了rbd实例就自动转化为这种模式。, \/ J& ?- `# {9 Y5 W
$ B! W7 t0 U8 j
这两种模式是相互排斥,只能使用其中一个。因此,如果pool中曾经创建了rbd对象(即使当前删除了所有的image实例)就不能再对这个pool做快照了。反之,如果对一个pool做了快照,就不能创建rbd image了。
+ J- G" u  P( N( |+ C4 l9 R
6 u4 _  U4 u( l& I/ w1 @3 Iceph osd pool mksnap test-pool test-pool-snapshot
5 r' {9 n4 m1 r+ }' k
5 [* L% P) W% V7 R2 F% k* O删除快照. |4 T# R( s. K8 A1 Z1 c% y

( P: H3 a$ j) A2 Y! g+ gceph osd pool rmsnap test-pool test-pool-snapshot4 y  F% Q$ i& B

2 m1 j2 b2 N7 N' U2 G4 y  z& i+ U设置pool; D6 r+ N1 `5 A# B
1 P1 t4 x  z8 h  @& T& t
通过以下语法设置pool的元数据:
/ n% W& ]+ a# M7 Q5 `" [) g' }2 Z" e" |4 W
ceph osd pool set {pool-name} {key} {value}$ f1 r' P% Y5 _6 t' V4 O$ y
) @7 x" i/ Z- q" R  ?$ @
比如设置pool的冗余副本数量为3:% q$ L* q- O' l5 M8 p: C1 Y

0 n- k+ O  u2 p5 n& A, @- ^# Rceph osd pool set test-pool size 31 u- H7 P0 V4 P

2 z4 I/ p2 j4 E  E1 p7 k) K其他配置项参考文档。$ g, D& h; _8 A9 s2 c5 d

% j6 W: Z4 L* Z. H3 U% F1 H4 d  B通过get操作能够获取pool的配置值,比如获取当前pg_num:
( x: C, p4 Y& G! b* I( W* f
$ l: `7 n6 h, `5 B8 q+ Q4 Xceph osd pool get test-pool pg_num
) w6 r; ]5 Z+ x; n( [9 B
9 F  r( h/ `) T0 e获取当前副本数:* \6 z  N7 F- o7 Z$ ?9 j  U4 U3 z" n

( w- I+ g8 \) R# ]  c# \* mceph osd pool get test-pool size
2 O' ~) F% e. \  v5 L( y- a7 {* Y) I% ?" {
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 03:22 , Processed in 0.016148 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表