安装完ceph集群后默认会创建一个名字叫rbd的存储池,可自己创建存储池。
pool是ceph存储数据时的逻辑分区,它起到namespace的作用。 每个pool包含一定数量的PG,PG里的对象被映射到不同的OSD上,因此pool是分布到整个集群的。
有两种类型的pool,一种是副本(replicated pools),一种是纠删码(erasure code pools)。 副本池是我们最常用的类型。
pool也支持snapshot功能。可以运行ceph osd pool mksnap命令创建pool的快照,并且在必要的时候恢复它。 还可以设置pool的拥有者属性,从而进行访问控制。
下面记录一下和pool相关的命令
查询pool列表
创建pool
创建pool之前可更改两个pg默认配置:
1
2
|
osd pool default pg num = 100
osd pool default pgp num = 100
|
pg_num是指定创建的pg的个数,会有一组编号,然后pgp_num就是控制pg到osd的映射分布。一般最好将pgp_num设置成一样。
1
2
|
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-ruleset-name] [expected-num-objects]
ceph osd pool create testpool 128 128 replicated
|
删除存储池
1
|
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]
|
如果你单独为这个pool创建了crush_ruleset,那么最好也将这个也删了。
1
2
3
4
5
6
7
8
9
10
11
|
crush_ruleset=$(ceph osd pool get {pool-name} crush_ruleset)
pool_num=$(ceph osd dump | grep
"^pool" | grep
"crush_ruleset ${crush_ruleset} " | wc -l)
rule_name=$(ceph osd crush dump | grep -A1
'"rule_id": 123' | tail -n 1 | awk
'{print $2}' | awk -F\
" '{print $2}')
# 删除crush_ruleset
ceph osd crush rule rm $rule_name
# 查看crush map
ceph osd crush dump
z=/tmp/z && ceph osd getcrushmap -o $z && crushtool -d $z -o $z && cat $z && rm -f $z
|
重命名存储池
1
|
ceph osd pool rename {current-pool-name} {new-pool-name}
|
快照
1
2
3
4
5
6
7
8
9
10
11
12
13
|
ceph osd pool mksnap {pool-name} {snap-name}
ceph osd pool rmsnap {pool-name} {snap-name}
rbd -p <pool name> snap create {snap-name} Create a snapshot.
rbd -p <pool name> snap list Dump list of image snapshots.
rbd -p <pool name> snap protect {snap-name} Prevent a snapshot from being deleted.
rbd -p <pool name> snap purge Deletes all snapshots.
rbd -p <pool name> snap remove {snap-name} Deletes a snapshot.
rbd -p <pool name> snap rename {snap} {snap1} Rename a snapshot.
rbd -p <pool name> snap rollback {snap-name} Rollback image to snapshot.
rbd -p <pool name> snap unprotect {snap-name} Allow a snapshot to be deleted.
|
获取/设置存储池属性
1
2
|
ceph osd pool get {pool-name} {key}
ceph osd pool
set {pool-name} {key} {value}
|
列出一些比较常见的属性:
- size - 副本数
- pg_num - pg数量
- pgp_num - pg放置数量
- crush_ruleset - 规则id
获取pool的空间使用情况
1
2
3
4
5
6
7
8
9
|
[root@node001 ~]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
449G 449G 195M 0.04
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd 0 0 0 269G 0
sb 18 0 0 0 0
hb 19 250 0 92071M 3
|