5.1 列出存储池
要列出集群的存储池,命令如下:
ceph osd lspools
在新安装好的集群上,默认只有一个 rbd 存储池。
5.2 创建存储池
创建存储池前可以先看看存储池、PG 和 CRUSH 配置参考。你最好在配置文件里重置默认 PG 数量,因为默认值并不理想。
例如:
osd pool default pg num = 100
osd pool default pgp num = 100
要创建一个存储池,执行:
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \
[crush-ruleset-name] [expected-num-objects]
ceph osd pool create {pool-name} {pg-num} {pgp-num} erasure \
[erasure-code-profile] [crush-ruleset-name] [expected_num_objects]
各参数含义如下:
{pool-name}
:存储池名称,必须唯一。{pg_num}
: 存储池的 PG 数目。{pgp_num}
: 存储池的 PGP 数目,此值应该和 PG 数目相等。{replicated|erasure}
:存储池类型,可以是副本池(保存多份对象副本,以便从丢失的 OSD 恢复)或纠删池(获得类似 RAID5 的功能)。多副本存储池需更多原始存储空间,但已实现所有 Ceph 操作;纠删存储池所需原始存储空间较少,但目前仅实现了部分 Ceph 操作。[crush-ruleset-name]
:此存储池所用的 CRUSH 规则集名字。指定的规则集必须存在。对于多副本(replicated)存储池来说,其默认规则集由osd pool default crush replicated ruleset
配置决定,此规则集必须存在。 对于用erasure-code
编码的纠删码( erasure )存储池来说,不同的{pool-name}
所使用的默认(default
)纠删码配置是不同的,如果它不存在的话,会显式地创建它。[erasure-code-profile=profile]
:仅用于纠删存储池。指定纠删码配置文件,此配置必须已由osd erasure-code-profile set
定义。[expected-num-objects]
:为这个存储池预估的对象数。设置此值(要同时把 filestore merge threshold 设置为负数)后,在创建存储池时就会拆分 PG 文件夹,以免运行时拆分文件夹导致延时增大。
关于如何计算合适的 pg_num
值,可以使用 Ceph 官方提供的一个计算工具 pgcalc。
5.3 重命名存储池
要重命名一个存储池,执行:
ceph osd pool rename {current-pool-name} {new-pool-name}
如果重命名了一个存储池,且认证用户对每个存储池都有访问权限,那你必须用新存储池名字更新用户的能力(即 caps )。
5.4 删除存储池
要删除一存储池,执行:
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]
如果你给自建的存储池创建了定制的规则集,你不需要存储池时最好也删除规则集。
ceph osd pool get {pool-name} crush_ruleset
加入规则集是 “123”,可以这样选择存储池:
ceph osd dump | grep "^pool" | grep "crush_ruleset 123"
如果你曾严格地创建了用户及其权限给一个存储池,但存储池已不存在,最好也删除那些用户。
ceph auth list | grep -C 5 {pool-name}
ceph auth del {user}
5.5 查看存储池统计信息
要查看某存储池的使用统计信息,执行命令:
rados df