注意

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

池、PG 和 CRUSH 配置参考

CRUSH 算法分配给每个池的放置组(Placement Group,PG)数量由监视器集群中集中配置数据库中的变量值决定。

Ceph 的容器化部署(使用 cephadm 或 Rook 进行的部署)和非容器化部署都依赖于监视器集群中中央配置数据库中的值来为池分配放置组。

示例命令

要查看控制给定池中放置组数量的变量值,请运行以下形式的命令

ceph config get osd osd_pool_default_pg_num

要设置控制给定池中放置组数量的变量值,请运行以下形式的命令

ceph config set osd osd_pool_default_pg_num

手动调优

在某些情况下,建议覆盖某些默认值。例如,您可能认为设置池的副本大小并覆盖池中默认放置组数量是明智之举。您可以在运行 pool 命令时设置这些值。

另请参阅

请参阅 放置组自动伸缩

[global]

	# By default, Ceph makes three replicas of RADOS objects. If you want
	# to maintain four copies of an object the default value--a primary
	# copy and three replica copies--reset the default values as shown in
	# 'osd_pool_default_size'. If you want to allow Ceph to accept an I/O
	# operation to a degraded PG, set 'osd_pool_default_min_size' to a
	# number less than the 'osd_pool_default_size' value.

	osd_pool_default_size = 3  # Write an object three times.
	osd_pool_default_min_size = 2 # Accept an I/O operation to a PG that has two copies of an object.

	# Note: by default, PG autoscaling is enabled and this value is used only
	# in specific circumstances. It is however still recommend to set it.
	# Ensure you have a realistic number of placement groups. We recommend
	# approximately 100 per OSD. E.g., total number of OSDs multiplied by 100
	# divided by the number of replicas (i.e., 'osd_pool_default_size'). So for
	# 10 OSDs and 'osd_pool_default_size' = 4, we'd recommend approximately
	# (100 * 10) / 4 = 250.
	# Always use the nearest power of two.
	osd_pool_default_pg_num = 256
mon_max_pool_pg_num

每个池的最大放置组数量。

类型:

uint

默认值:

64Ki

mon_pg_stuck_threshold

PG 被视为停滞(stuck)所需的时间(秒)。

类型:

int

默认值:

1 分钟

mon_pg_warn_min_per_osd

如果每个 in OSD 的平均 PG 数量低于此值,则会触发 HEALTH_WARN 警告。非正数会禁用此功能。

类型:

uint

默认值:

0

mon_pg_warn_min_objects

如果集群中的 RADOS 对象总数低于此数字,则不发出警告

类型:

int

默认值:

10000

mon_pg_warn_min_pool_objects

对于 RADOS 对象数量低于此数字的池,不发出警告

类型:

int

默认值:

1000

mon_pg_check_down_all_threshold

down OSD 的百分比阈值,超过该阈值时我们会检查所有 PG 是否存在陈旧(stale)的 PG。

类型:

float

默认值:

0.5

mon_pg_warn_max_object_skew

如果任何池中每个 PG 的平均 RADOS 对象计数大于所有池中每个 PG 的平均 RADOS 对象计数的 mon_pg_warn_max_object_skew 倍,则触发 HEALTH_WARN 警告。零或非正数会禁用此功能。请注意,此选项适用于 ceph-mgr 守护进程。

类型:

float

默认值:

10.0

mon_delta_reset_interval

在重置 PG 增量为 0 之前的不活动时间(秒)。我们跟踪每个池已用空间的增量,以便更容易理解恢复进度或缓存层的性能。但是,如果某个池没有报告活动,我们会重置该池的增量历史记录。

类型:

float

默认值:

10.0

osd_crush_chooseleaf_type

用于 CRUSH 规则中 chooseleaf 的存储桶类型。使用序数而非名称。

类型:

int

默认值:

1

osd_crush_initial_weight

新添加 OSD 的初始 CRUSH 权重。此选项的默认值是 新添加 OSD 的大小(以 TB 为单位)。默认情况下,新添加 OSD 的初始 CRUSH 权重设置为其设备大小(以 TB 为单位)。有关详细信息,请参阅 设置存储桶项的权重

类型:

float

默认值:

-1.0

osd_pool_default_crush_rule

创建副本池时要使用的默认 CRUSH 规则。默认值 -1 表示“选择数字 ID 最低的规则并使用它”。这是为了确保在没有规则 0 的情况下池创建也能正常工作。

类型:

int

默认值:

-1

osd_pool_erasure_code_stripe_unit

设置纠删码池中对象条带的默认块大小(以字节为单位)。大小为 S 的每个对象将存储为 N 个条带,每个数据块接收 stripe unit 字节。大小为 N * stripe unit 字节的每个条带将单独编码/解码。值为 0 会导致代码选择 4KB 或 16KB 的 stripe_unit,具体取决于是否启用了 allow_ec_optimizations。如果启用,stripe unit 设置为 16KB,否则设置为 4KB。此选项可以被纠删码配置文件中的 stripe_unit 设置覆盖。

类型:

大小

默认值:

0B

osd_pool_default_size

设置池中对象的副本数量。默认值与 ceph osd pool set {pool-name} size {size} 相同。

类型:

uint

默认值:

3

允许范围:

[0, 10]

osd_pool_default_min_size

设置池中对象写入的最小副本数量,以便向客户端确认 I/O 操作。如果未达到最小值,Ceph 将不会向客户端确认 I/O,**这可能导致数据丢失**。此设置确保在以 degraded 模式运行时有最小副本数量。默认值为 0,表示没有特定的最小值。如果为 0,则最小值为 size - (size / 2)

类型:

uint

默认值:

0

允许范围:

[0, 255]

另请参阅:

osd_pool_default_size

osd_pool_default_pg_num

池的默认放置组数量。默认值与 mkpool 命令中的 pg_num 相同。

类型:

uint

默认值:

32

另请参阅:

osd_pool_default_pg_autoscale_mode

osd_pool_default_pgp_num

池的默认放置组数量(用于放置目的)。默认值与 mkpool 命令中的 pgp_num 相同。PG 和 PGP 应该相等(目前是这样)。注意:除非禁用自动伸缩,否则不应设置此项。

类型:

uint

默认值:

0

另请参阅:

osd_pool_default_pg_num, osd_pool_default_pg_autoscale_mode

osd_pool_default_pg_autoscale_mode

当设置为“on”时,自动伸缩器会为新池分配 1 个 PG,除非用户指定了值。

类型:

str

默认值:

on

有效选项:
  • off

  • warn

  • on

osd_pool_default_flags

新池的默认标志。

类型:

int

默认值:

0

osd_max_pgls

要列出的最大放置组数量。请求大量放置组的客户端可能会占用 Ceph OSD 守护进程。

类型:

uint

默认值:

1Ki

osd_min_pg_log_entries

修剪日志文件时要维护的最小放置组日志数量。

类型:

uint

默认值:

250

另请参阅:

osd_max_pg_log_entries, osd_pg_log_dups_tracked, osd_target_pg_log_entries_per_osd

osd_max_pg_log_entries

修剪日志文件时要维护的最大放置组日志数量。

类型:

uint

默认值:

10000

另请参阅:

osd_min_pg_log_entries, osd_pg_log_dups_tracked, osd_target_pg_log_entries_per_osd

osd_default_data_pool_replay_window

OSD 等待客户端重播请求的时间(秒)。

类型:

int

默认值:

45

osd_max_pg_per_osd_hard_ratio

集群允许的每个 OSD 的 PG 数量比例,超过此比例后 OSD 将拒绝创建新的 PG。如果它服务的 PG 数量超过 osd_max_pg_per_osd_hard_ratio * mon_max_pg_per_osd,OSD 将停止创建新的 PG。

类型:

float

默认值:

3.0

min:

1

另请参阅:

mon_max_pg_per_osd

osd_pool_default_flag_ec_optimizations

在新纠删码池上设置 allow_ec_optimizations 标志。

类型:

bool

默认值:

false

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入