注意

本文档适用于 Ceph 开发版本。

Pools

池是逻辑分区,用于存储RADOS对象。

池提供:

  • 弹性: 可以规划可能并行发生故障的OSD数量,而不会导致数据不可用或丢失。如果您的集群使用复制池,则可以并行发生故障的OSD数量比副本数量少一个,而不会导致数据丢失的数量通常是两个。

    例如:典型配置存储每个RADOS对象(即:49542e: )三个副本,但您可以按池配置副本数量。对于size = 3), but you can configure the number of replicas on a per-pool basis. For 去重编码池,弹性定义为编码(也称为奇偶校验)块的数量(例如,m = 2在默认去重编码配置文件中)。

  • 放置组: The 自动扩展器设置池的放置组(PG)数量。在典型配置中,目标PG数量大约是每个OSD一百五十个PG。这提供了合理的平衡,而不会消耗过多的计算资源。在设置多个池时,为每个池和整个集群设置适当的PG数量。每个PG属于特定的池:当多个池使用相同的OSD时,请确保每个OSD的PG副本之和在所需的每个OSD的PG目标范围之内。有关如何手动设置每个池的放置组数量的说明,请参阅设置放置组数量(当不使用自动扩展器时,此过程才有效)。有关各种场景和池、副本以及每个OSD的目标PG副本数量的组合的计算器,请参阅PG 计算.

  • CRUSH规则:当数据存储在池中时,您的集群中PG和对象副本(在去重编码池的情况下为块/分片)的位置由CRUSH规则控制。如果默认规则不适合您的用例,则可以为池创建自定义CRUSH规则。

  • 快照:命令ceph osd pool mksnap创建池的快照。

池名称

.开头的池名称保留供Ceph的内部操作使用。不要创建或操作这些名称的池。

列出池

有多种方法可以列出您集群中的池。

要仅列出您集群的池名称(例如,在脚本中),请执行:

ceph osd pool ls
.rgw.root
default.rgw.log
default.rgw.control
default.rgw.meta

要列出您的集群的池及其池编号,请运行以下命令:

ceph osd lspools
1 .rgw.root
2 default.rgw.log
3 default.rgw.control
4 default.rgw.meta

要列出您的集群的池以及附加信息,请执行:

ceph osd pool ls detail
pool 1 '.rgw.root' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 32 pgp_num 32 autoscale_mode on last_change 19 flags hashpspool stripe_width 0 application rgw read_balance_score 4.00
pool 2 'default.rgw.log' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 32 pgp_num 32 autoscale_mode on last_change 21 flags hashpspool stripe_width 0 application rgw read_balance_score 4.00
pool 3 'default.rgw.control' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 32 pgp_num 32 autoscale_mode on last_change 23 flags hashpspool stripe_width 0 application rgw read_balance_score 4.00
pool 4 'default.rgw.meta' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode on last_change 25 flags hashpspool stripe_width 0 pg_autoscale_bias 4 application rgw read_balance_score 4.00

要检索更多信息,您可以使用带有--format (or -f)选项的此命令。json, json-pretty, xmlxml-pretty值如何,都会拒绝访问共享。

创建池

在创建池之前,请参阅池、PG 和 CRUSH 配置参考。 Ceph中央配置数据库包含一个默认设置osd_pool_default_pg_num,它确定了如果没有指定特定值,则分配给新池的PG数量。可以更改此值。有关设置每个池的PG数量的更多说明,请参阅设置放置组数量.

Note

在Luminous及更高版本中,每个池必须与应用程序关联,该应用程序将使用该池。有关更多信息,请参阅将池与应用程序关联 below.

要创建池,请运行以下命令之一:

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}

池中的PG总数。有关计算适当数量的详细信息,请参阅放置组。默认值不适用于大多数系统。

类型:

整数

必需:

是。

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

32

{pgp-num}

用于放置目的的PG总数。这应该等于的总数,除了在pg_num增加或减少时短暂地。请注意,在以Nautilus开头的版本中,通常不会直接更改pgp_num: Ceph将根据实际使用情况自动和增量地扩展pgp_num为给定池。当pg_num为该池已调整时,Ceph将为该池自动和增量地扩展pg_num的调整可能由PG自动扩展器执行,或者如果通过CLI或仪表板手动禁用了给定池的自动扩展器,则执行。

类型:

整数

必需:

是。如果在命令中未指定值,则使用默认值(除非在Ceph配置中设置了不同的值)。

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

32

{replicated|erasure}

池的数据保护策略。这可以是replicated(类似于RAID1和RAID10)erasure (a kind of `generalized parity RAID <../erasure-code>`_ strategy like RAID6 but more flexible).  A ``replicated池对于给定的原始存储容量产生的可用容量较低,但适用于所有Ceph组件和用例。erasure(EC)池对于给定的底层原始存储容量产生的可用容量通常高于复制,但仅适用于Ceph组件和用例的子集。根据工作负载和特定配置,EC通常需要比复制更多的故障域,并提供降低的性能,但可以容忍更多的重叠驱动器或主机故障。

类型:

字符串

必需:

否。

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

replicated

[crush-rule-name]

用于此池的CRUSH规则的名称。指定的规则必须已经存在,否则命令将失败。

类型:

字符串

必需:

否。

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

对于replicated池,默认情况下是osd_pool_default_crush_rule配置选项指定的规则。此规则必须存在。对于erasure池,如果使用erasure-code规则;如果不使用,则为default 去重编码配置文件,则为{pool-name}规则。如果不存在,则此规则将隐式创建。

[erasure-code-profile=profile]

对于erasure池。指示Ceph使用指定的去重编码配置文件。此配置文件必须是通过仪表板或调用osd erasure-code-profile set定义的有效配置文件。请注意,创建池后对EC配置文件进行的更改不会firefly 发布。Firefly 将延迟至少另一个冲刺,以便我们可以对新代码进行一些操作经验,并进行一些额外的测试,然后再承诺长期支持。生效。要更改现有池的EC配置文件,必须修改池以使用具有所需配置文件的不同的CRUSH规则。

类型:

字符串

必需:

否。

--autoscale-mode=<on,off,warn>
  • on: Ceph集群将根据实际使用情况自动调整池中PG数量的更改。

  • warn: Ceph集群将根据实际使用情况推荐池中PG数量的更改。

  • off: 参考fbd39f: 否。放置组 for more information.

类型:

字符串

必需:

否。

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

默认行为由osd_pool_default_pg_autoscale_mode option.

决定。

此池的预期RADOS对象数量。通过设置此值并

类型:

整数

必需:

否。

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

0,池创建时不会发生拆分。

将池与应用程序关联

每个池在使用之前必须与应用程序关联。打算与CephFS一起使用的池和由RGW自动创建的池将自动关联。打算与RBD一起使用的池应通过仪表板或rbdCLI工具初始化(有关更多信息,请参阅块设备命令)。

对于不常见的用例,您可以通过运行以下命令将自由形式的应用程序名称与池关联:

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

Note

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

设置池配额

要为每个池的最大字节数或每个池的最大RADOS对象数设置配额,请运行以下形式的命令:

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

例如:

ceph osd pool set-quota data max_objects 10000

要删除配额,请将其值设置为0。请注意,您只能为字节数或仅为您只能为RADOS对象设置配额,或者您可以同时设置两者。

删除池

要删除池,请运行以下形式的命令:

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

要删除池,您必须设置中央配置中的mon_allow_pool_delete标志传递给true,否则Ceph监视器将拒绝删除池。

更多信息,请参阅监视器配置.

如果有不再使用或不需要的自定义CRUSH规则,请考虑删除这些规则。

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}

重命名池

要重命名池,请运行以下形式的命令:

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

如果您重命名了一个具有认证用户池级功能的池,则必须更新用户的权限(“caps”)以引用新的池名称。

显示池统计信息

要显示池的利用率统计信息,请运行以下命令:

rados df

要获取特定池或所有池的I/O信息,请运行以下形式的命令:

ceph osd pool stats [{pool-name}]

对池进行快照

要对池进行快照,请运行以下形式的命令:

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

删除池的快照

要删除池的快照,请运行以下形式的命令:

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

设置池值

要为池的配置属性分配值,请运行以下形式的命令:

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

您可以为以下键设置值:

compression_algorithm
描述:

设置在底层BlueStore后端存储数据时使用的内联压缩算法。此键的设置覆盖全局设置bluestore_compression_algorithm.

类型:

字符串

有效设置:

lz4, snappy, zlib, zstd

compression_mode
描述:

设置在底层BlueStore后端存储数据时内联压缩的策略。此键的设置覆盖全局设置bluestore_compression_mode.

类型:

字符串

有效设置:

none, passive, aggressive, force

compression_min_blob_size
描述:

设置块压缩的最小大小:即,小于此大小的块不会被压缩。此键的设置覆盖以下全局设置:

类型:

无符号整数

compression_max_blob_size
描述:

设置块的最大大小:即,大于此大小的块在执行压缩之前会被拆分成不超过此大小的较小块。

类型:

无符号整数

Note

压缩池统计信息使用ceph df detail显示。radosgw-admin.

size定位特定驱动器容量:
描述:

报告未压缩的桶大小。设置RADOS对象副本的数量。这只能用于replicated池。EC池将报告size等于K+M,但此值可能不能直接设置。

类型:

整数

min_size
描述:

设置PGs为活跃所需的最小活动副本(或分片)数,从而允许I/O操作进行。有关更多详细信息,请参阅设置RADOS对象副本的数量。对于去重编码池,应将其设置为大于K的值。如果仅使用K分片允许I/O,则将没有冗余,并且在发生额外的永久OSD故障时将丢失数据。有关更多信息,请参阅去重编码

类型:

整数

版本:

0.54及更高版本

pg_num
描述:

指定给定池的PG总数。请注意,如果为给定池启用了PG自动扩展器,则可能会覆盖手动分配的值。

类型:

整数

有效范围:

0tomon_max_pool_pg_num。如果设置为0不变,则使用来自中央配置的osd_pool_default_pg_num的值将使用。

pgp_num
描述:

设置计算数据放置时使用的有效PG数。在运行以Nautilus开头的Ceph版本时,管理员通常不会显式设置此值:Ceph会自动和增量地将其调整到匹配pg_num.

类型:

整数

有效范围:

之间1pg_num.

crush_rule
描述:

设置Ceph用于将池的RADOS对象映射到适当OSD的CRUSH规则。

类型:

字符串

allow_ec_overwrites
描述:

确定是否允许写入去重编码池仅更新RADOS对象的一部分。这允许CephFS和RBD使用EC(去重编码)池来存储用户数据(但不用于元数据)。有关更多详细信息,请参阅使用覆盖的纠删码.

类型:

布尔值

版本12.2.0中的新功能。

hashpspool
描述:

设置或取消设置给定池上的HASHPSPOOL标志。

类型:

整数

有效范围:

1设置标志,0取消设置标志

nodelete
描述:

设置或取消设置给定池上的NODELETE标志。

类型:

整数

有效范围:

1设置标志,0取消设置标志

版本:

版本FIXME

nopgchange
描述:

设置或取消设置给定池上的NOPGCHANGE标志。

类型:

整数

有效范围:

1设置标志,0取消设置标志

版本:

版本FIXME

nosizechange
描述:

设置或取消设置给定池上的NOSIZECHANGE标志。

类型:

整数

有效范围:

1设置标志,0取消设置标志

版本:

版本FIXME

批量
描述:

设置或取消设置给定池上的BULK标志。

类型:

布尔值

有效范围:

true/1 sets flag, false/0取消设置标志

write_fadvise_dontneed
描述:

设置或取消设置给定池上的WRITE_FADVISE_DONTNEED标志。

类型:

整数

有效范围:

1 sets flag, 0取消设置标志

noscrub
描述:

设置或取消设置给定池上的NOSCRUB标志。

类型:

整数

有效范围:

1 sets flag, 0取消设置标志

nodeep-scrub
描述:

设置或取消设置给定池上的NODEEP_SCRUB标志。

类型:

整数

有效范围:

1 sets flag, 0取消设置标志

target_max_bytes
描述:

max_bytes阈值被触发并且使用已弃用的缓存层功能时,Ceph将开始刷新或驱逐对象。

类型:

整数

示例:

1000000000000#1-TB

target_max_objects
描述:

max_objects阈值被触发并且使用已弃用的缓存层功能时,Ceph将开始刷新或驱逐对象。

类型:

整数

示例:

1000000#1M对象

fast_read
描述:

对于去重编码池,如果此标志被设置为on,则读取请求会向所有分片发出“子读取”,然后等待收到足够多的分片以解码,然后再向客户端提供服务。如果jerasure去重插件正在使用,那么在第一个K回复返回后,客户端的请求将使用从这些回复中解码的数据立即提供服务。这种方法牺牲了资源以换取更好的性能。此标志仅支持去重编码池。

类型:

布尔值

Defaults:

0

scrub_min_interval
描述:

设置池的PGs之间连续浅(轻)扫描的最小间隔(以秒为单位)。如果此池属性与其默认值0不变,则使用来自中央配置的osd_scrub_min_interval的值。

类型:

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

0

scrub_max_interval
描述:

设置池的PGs之间连续浅(轻)扫描的最大间隔(以秒为单位)。影响在扫描调度器转储中出现的“过期”属性。如果与默认值0不变,则使用来自中央配置的osd_scrub_max_interval的值。

类型:

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

0

deep_scrub_interval
描述:

设置池的PGs连续深度扫描的间隔(以秒为单位)。如果与默认值0不变,则使用来自中央配置的osd_deep_scrub_interval的值。

类型:

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

0

recovery_priority
描述:

设置此值将调整池的计算保留优先级。此值必须在范围内-10to10。任何分配了负值的池都将比任何新池具有较低的优先级,因此用户应将负值分配给低优先级池。

类型:

整数

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

0

recovery_op_priority
描述:

设置特定池的PGs的恢复操作优先级。此设置覆盖由osd_recovery_op_priority.

类型:

整数

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

0

确定的通用优先级。

要获取给定池的键的值,请运行以下形式的命令:

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

您可以获取以下键的值:

size

描述:

请参阅size定位特定驱动器容量:.

类型:

整数

min_size

描述:

请参阅min_size.

类型:

整数

版本:

0.54及更高版本

pg_num

描述:

请参阅pg_num.

类型:

整数

pgp_num

描述:

请参阅pgp_num.

类型:

整数

有效范围:

小于或等于pg_num.

crush_rule

描述:

请参阅crush_rule.

target_max_bytes

描述:

请参阅target_max_bytes.

类型:

整数

target_max_objects

描述:

请参阅target_max_objects.

类型:

整数

fast_read

描述:

请参阅fast_read.

类型:

布尔值

scrub_min_interval

描述:

请参阅scrub_min_interval.

类型:

scrub_max_interval

描述:

请参阅scrub_max_interval.

类型:

deep_scrub_interval

描述:

请参阅deep_scrub_interval.

类型:

allow_ec_overwrites

描述:

请参阅allow_ec_overwrites.

类型:

布尔值

recovery_priority

描述:

请参阅recovery_priority.

类型:

整数

recovery_op_priority

描述:

请参阅recovery_op_priority.

类型:

整数

设置RADOS对象副本的数量

要为给定复制池维护的数据副本数量设置命令,请运行以下形式的命令:

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

重要

The {num-replicas}参数包括主对象本身。例如,如果您希望除了原始对象外还有两个副本(总共三个对象实例)指定3:

ceph osd pool set data size 3

您可以独立地为每个所需的池运行上述命令。

Note

PG可能会在副本少于pool size的情况下以降级模式接受I/O。要设置I/O所需的最小副本数,您应该使用min_size设置。例如,您可能会运行以下命令:

ceph osd pool set data min_size 2

此命令确保数据池中的任何对象都不会在副本少于min_size(在这种情况下,两个)的情况下接收I/O。请注意,在生产环境中设置sizeto2min_sizeto1风险数据丢失,并且只能在某些紧急情况下,然后只能暂时进行。

获取对象副本的数量

要获取对象副本的数量,请运行以下命令:

ceph osd dump | grep 'replicated size'

Ceph将列出池并突出显示replicated size属性。默认情况下,Ceph维护三个副本或副本,大小为3).

管理标记为--bulk

请参阅管理带有批量标记的池.

为扩展池设置值

要为扩展池设置值,请运行以下形式的命令:

ceph osd pool stretch set {pool-name} {peering_crush_bucket_count} {peering_crush_bucket_target} {peering_crush_bucket_barrier} {crush_rule} {size} {min_size} [--yes-i-really-mean-it]

以下是参数的分解:

{pool-name}

池的名称。它必须是现有的池:此命令不会创建新池。

类型:

字符串

必需:

是。

{peering_crush_bucket_count}

此值与peering_crush_bucket_barrier一起使用,以根据所选行动集中存在的不同桶的数量,确定行动集中的OSDs是否可以相互对等。

类型:

整数

必需:

是。

{peering_crush_bucket_target}

此值与peering_crush_bucket_barriersize一起使用,以计算限制同一桶中选择为PG行动集的OSD数量的bucket_max值。

类型:

整数

必需:

是。

{peering_crush_bucket_barrier}

池的PGs分布的CRUSH桶类型,例如,rack, rowdatacenter.

类型:

字符串

必需:

是。

{crush_rule}

用于池的CRUSH规则。池的类型必须与CRUSH规则replicatederasure).

类型:

字符串

必需:

是。

{size}

池中RADOS对象(因此PG)的副本数量。

类型:

整数

必需:

是。

{min_size}

必须处于活动状态的最小副本数,才能为IO操作提供服务。

类型:

整数

必需:

是。

{--yes-i-really-mean-it}

此标志是确认您确实想要绕过安全检查并为池设置值的必需标志,例如,当您尝试将peering_crush_bucket_countpeering_crush_bucket_target设置为比crush map中的桶数量更多的值时。

类型:

标志

必需:

否。

为扩展池取消设置值

要将池恢复为非扩展状态,请运行以下形式的命令:

ceph osd pool stretch unset {pool-name} {crush_rule} {size} {min_size}

以下是参数的分解:

{pool-name}

池的名称。它必须是现有的已扩展池,即使用命令ceph osd pool stretch set 设置过。.

类型:

字符串

必需:

是。

{crush_rule}

退出扩展池后使用的crush规则。池的类型必须与

类型:

字符串

必需:

是。

{size}

退出扩展池后对象的数量。

类型:

整数

必需:

是。

{min_size}

退出扩展池后为IO所需的最小副本数。

类型:

整数

必需:

是。

显示扩展池的值

要显示扩展池的值,请运行以下形式的命令:

ceph osd pool stretch show {pool-name}

以下是参数的分解:

{pool-name}

池的名称。它必须是现有的已扩展池,即它已经使用命令ceph osd pool stretch set 设置过。.

类型:

字符串

必需:

是。

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.