注意
本文档适用于 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
如果每个
inOSD 的平均 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
downOSD 的百分比阈值,超过该阈值时我们会检查所有 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_pg_num
池的默认放置组数量。默认值与
mkpool命令中的pg_num相同。- 类型:
uint- 默认值:
32- 另请参阅:
- osd_pool_default_pgp_num
池的默认放置组数量(用于放置目的)。默认值与
mkpool命令中的pgp_num相同。PG 和 PGP 应该相等(目前是这样)。注意:除非禁用自动伸缩,否则不应设置此项。- 类型:
uint- 默认值:
0- 另请参阅:
- osd_pool_default_pg_autoscale_mode
当设置为“on”时,自动伸缩器会为新池分配 1 个 PG,除非用户指定了值。
- 类型:
str- 默认值:
on- 有效选项:
offwarnon
- 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