许吉友 - 运维

Pool 管理

官方文档:https://ceph.readthedocs.io/en/latest/rados/operations/pools/

Pool 是用于存储对象的逻辑分区。

当首次部署群集而不创建 Pool 时,Ceph使用默认 Pool 来存储数据。Pool 为提供:

要将数据组织到池中,可以列出,创建和删除池。您还可以查看每个池的利用率统计信息。

列出 Pool

$ ceph osd lspools

创建 Pool

Pool 中默认的 PG 数量配置如下:

osd pool default pg num = 100
osd pool default pgp num = 100

要创建 Pool,需执行:

$ ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]] [replicated] \
     [crush-rule-name] [expected-num-objects]
$ ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]]   erasure \
     [erasure-code-profile] [crush-rule-name] [expected_num_objects] [--autoscale-mode=<on,off,warn>]

{pool-name}

{pg-num}

{pgp-num}

{replicated|erasure}

[crush-rule-name]

[erasure-code-profile=profile]

--autoscale-mode=<on,off,warn>

If you set the autoscale mode to on or warn, you can let the system autotune or recommend changes to the number of placement groups in your pool based on actual usage. If you leave it off, then you should refer to Placement Groups for more information.

[expected-num-objects]

将 Pool 关联到应用程序

池在使用前需要与应用程序关联。将与CephFS一起使用的池或RGW自动创建的池自动关联。打算与RBD一起使用的池应该使用rbd工具进行初始化(有关更多信息,请参见Block Device Commands )。

对于其他情况,您可以手动将自由格式的应用程序名称与池关联:

$ ceph osd pool application enable {pool-name} {application-name}

CephFS使用应用程序名称cephfs,RBD使用应用程序名称rbd,而RGW使用应用程序名称rgw。

设置配额

可以将池配额设置为每个池的最大字节数和/或最大对象数:

ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}]

例如:

$ ceph osd pool set-quota data max_objects 10000

要删除配额,请将其值设置为0。

删除 Pool

$ ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]

要删除池,必须在Monitor的配置中将 mon_allow_pool_delete 标志设置为 true 。否则,他们将拒绝删除池。

如果您为自己创建的池创建了自己的规则,则在不再需要池时应考虑删除它们:

$ ceph osd pool get {pool-name} crush_rule

例如,如果规则是“ 123”,则可以像这样检查其他池:

$ ceph osd dump | grep "^pool" | grep "crush_rule 123"

如果没有其他池使用该自定义规则,则可以从群集中删除该规则。

如果创建的用户严格地具有不再存在的池的权限,则也应考虑删除这些用户:

$ ceph auth ls | grep -C 5 {pool-name}
$ ceph auth del {user}

重命名 Pool

$ ceph osd pool rename {current-pool-name} {new-pool-name}

如果您重命名池,并且具有已通过身份验证的用户的每个池功能,则必须使用新的池名称更新该用户的功能(即 caps)

获取 Pool 的统计信息

$ rados df

此外,要获取特定池或全部池的 I/O 信息,请执行以下操作:

$ ceph osd pool stats [{pool-name}]

制作 Pool 快照

$ ceph osd pool mksnap {pool-name} {snap-name}

删除快照

$ ceph osd pool rmsnap {pool-name} {snap-name}

配置 Pool

$ ceph osd pool set {pool-name} {key} {value}

关于 key 和 value 请看:https://ceph.readthedocs.io/en/latest/rados/operations/pools/#set-pool-values

获取 Pool 配置

$ ceph osd pool get {pool-name} {key}

关于 key 和 value 请看:https://ceph.readthedocs.io/en/latest/rados/operations/pools/#get-pool-values

设置复制数

$ ceph osd pool set {poolname} size {num-replicas}

{num-replicas}包含对象本身。如果要使用该对象和该对象的两个副本(总共三个对象),请指定3。

例如:

$ ceph osd pool set data size 3

您可以为每个池执行此命令。注意:对象可能在降级模式下接受的 I/O 数量少于池大小的副本。要为 I/O 设置最小数量的必需副本,应使用min_size设置。例如:

$ ceph osd pool set data min_size 2

这样可以确保数据池中的任何对象都不会收到少于min_size个副本的I / O。

获取对象的副本数

$ ceph osd dump | grep 'replicated size'