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

results matching ""

    No results matching ""