ceph 存储池
创建池
池是用于存储对象的逻辑分区。
当您第一次部署集群而不创建池时,Ceph 使用默认池来存储数据。游泳池为您提供:
- 弹性:您可以设置允许多少 OSD 失败而不会丢失数据。对于复制池,它是对象的所需副本/副本数。典型配置存储一个对象和一个附加副本(即),但您可以确定副本/副本的数量。对于纠删码池,它是编码块的数量(即在纠删码配置文件中)
size = 2``m=2
- 归置组:您可以设置池的归置组数量。典型配置为每个 OSD 使用大约 100 个置放群组来提供最佳平衡,而不会消耗太多计算资源。设置多个池时,请注意确保为池和整个集群设置合理数量的归置组。
- CRUSH 规则:当您将数据存储在池中时,对象及其副本(或用于纠删码池的块)在集群中的放置由 CRUSH 规则控制。如果默认规则不适合您的用例,您可以为您的池创建自定义 CRUSH 规则。
- 快照:当您使用 来创建快照时,您可以有效地拍摄特定池的快照。
ceph osd pool mksnap
要将数据组织到池中,您可以列出、创建和删除池。您还可以查看每个池的利用率统计信息。
列出池
要列出集群的池,请执行:
ceph osd lspools
创建一个池
在创建池之前,请参阅池、PG 和 CRUSH 配置参考。理想情况下,您应该覆盖 Ceph 配置文件中归置组数量的默认值,因为默认值并不理想。有关归置组数量的详细信息,请参阅设置归置组数量
笔记
从 Luminous 开始,所有池都需要关联到使用池的应用程序。有关详细信息,请参阅下面的将池与应用程序关联。
例如:
osd pool default pg num = 100
osd pool default pgp num = 100
要创建池,请执行:
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}
描述
池的归置组总数。有关 计算合适数量的详细信息,请参阅置放群组。默认值
8
不适用于大多数系统。类型
整数
必需的
是的。
默认
8
{pgp-num}
描述
用于放置目的的放置组总数。这 应该等于归置组的总数,归置组拆分场景除外。
类型
整数
必需的
是的。如果未指定,则选择默认值或 Ceph 配置值。
默认
8
{replicated|erasure}
描述
池类型可以通过保留对象的多个副本来复制以从丢失的 OSD 中恢复,或者擦除以获得一种 通用的 RAID5功能。该复制池需要更多的原料存储,但实现所有头孢操作。该 擦除池需要较少的原料存储,但仅实现了可用操作的一个子集。
类型
细绳
必需的
不。
默认
复制的
[crush-rule-name]
描述
用于此池的 CRUSH 规则的名称。指定的规则必须存在。
类型
细绳
必需的
不。
默认
对于复制池,它是由config 变量指定的规则。这个规则必须存在。对于擦除池,是使用擦除代码配置文件还是其他方式。如果此规则尚不存在,则将隐式创建该规则。
osd pool default crush rule``erasure-code``default
{pool-name}
[erasure-code-profile=profile]
描述
仅适用于擦除池。使用纠删码配置文件。它必须是osderasure-code-profile set定义的现有配置 文件。
类型
细绳
必需的
不。
--autoscale-mode=<on,off,warn>
描述
自动缩放模式
类型
细绳
必需的
不。
默认
默认行为由选项控制。
osd pool default pg autoscale mode
如果将自动缩放模式设置为on
或warn
,则可以让系统根据实际使用情况自动调整或建议更改池中归置组的数量。如果您不使用它,那么您应该参考置放群组以获取更多信息。
[expected-num-objects]
描述
此池的预期对象数。通过设置此值(连同负的文件存储合并阈值),PG 文件夹拆分将在池创建时发生,以避免执行运行时文件夹拆分的延迟影响。
类型
整数
必需的
不。
默认
0,在池创建时不拆分。
将池关联到应用程序
池需要在使用前与应用程序相关联。将与 CephFS 一起使用的池或由 RGW 自动创建的池自动关联。用于 RBD 的池应使用该rbd
工具进行初始化(有关更多信息,请参阅块设备命令)。
对于其他情况,您可以手动将自由格式的应用程序名称关联到池。:
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
。
删除池
要删除池,请执行:
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]
要删除池,必须在监视器的配置中将 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}
重命名池
要重命名池,请执行:
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
描述
比这小的块永远不会被压缩。此设置将覆盖全局设置的。
bluestore compression min blob *
类型
无符号整数
compression_max_blob_size
描述
比这更大的块
compression_max_blob_size
在被压缩之前被分解成更小的 blob 大小 。类型
无符号整数
size
描述
设置池中对象的副本数。有关更多详细信息,请参阅设置对象副本数。仅限复制池。
类型
整数
min_size
描述
设置 I/O 所需的最小副本数。有关更多详细信息,请参阅设置对象副本数。在纠删码池的情况下,这应该设置为大于“k”的值,因为如果我们允许值“k”的 IO,则没有冗余,并且在永久 OSD 故障的情况下数据将丢失。有关更多信息,请参阅纠删码
类型
整数
版本
0.54
以上
pg_num
描述
计算数据放置时要使用的放置组的有效数量。
类型
整数
有效范围
优于
pg_num
当前值。
pgp_num
描述
计算数据放置时要使用的放置组的有效数量。
类型
整数
有效范围
等于或小于
pg_num
。
crush_rule
描述
用于映射集群中对象放置的规则。
类型
细绳
allow_ec_overwrites
描述
写入纠删码池是否可以更新对象的一部分,因此 cephfs 和 rbd 可以使用它。有关更多详细信息,请参阅 带有覆盖的擦除编码。
类型
布尔值
版本
12.2.0
以上
hashpspool
描述
在给定的池上设置/取消设置 HASHPSPOOL 标志。
类型
整数
有效范围
1 设置标志,0 取消设置标志
nodelete
描述
在给定的池上设置/取消设置 NODELETE 标志。
类型
整数
有效范围
1 设置标志,0 取消设置标志
版本
版本
FIXME
nopgchange
描述
在给定的池上设置/取消设置 NOPGCHANGE 标志。
类型
整数
有效范围
1 设置标志,0 取消设置标志
版本
版本
FIXME
nosizechange
描述
在给定的池上设置/取消设置 NOSIZECHANGE 标志。
类型
整数
有效范围
1 设置标志,0 取消设置标志
版本
版本
FIXME
write_fadvise_dontneed
描述
在给定池上设置/取消设置 WRITE_FADVISE_DONTNEED 标志。
类型
整数
有效范围
1 设置标志,0 取消设置标志
noscrub
描述
在给定的池上设置/取消设置 NOSCRUB 标志。
类型
整数
有效范围
1 设置标志,0 取消设置标志
nodeep-scrub
描述
在给定池上设置/取消设置 NODEEP_SCRUB 标志。
类型
整数
有效范围
1 设置标志,0 取消设置标志
hit_set_type
描述
为缓存池启用命中集跟踪。有关其他信息,请参阅布隆过滤器。
类型
细绳
有效设置
bloom
,explicit_hash
,explicit_object
默认
bloom
. 其他值用于测试。
hit_set_count
描述
为缓存池存储的命中集数。数字越大,
ceph-osd
守护进程消耗的 RAM 越多。类型
整数
有效范围
1
. 代理尚未处理 > 1。
hit_set_period
描述
缓存池的命中设置时间段的持续时间(以秒为单位)。数字越大,
ceph-osd
守护进程消耗的 RAM 越多 。类型
整数
例子
3600
1小时
hit_set_fpp
描述
bloom
命中集类型的误报概率。有关其他信息,请参阅布隆过滤器。类型
双倍的
有效范围
0.0 - 1.0
默认
0.05
cache_target_dirty_ratio
描述
在缓存分层代理将它们刷新到后备存储池之前,包含已修改(脏)对象的缓存池的百分比。
类型
双倍的
默认
.4
cache_target_dirty_high_ratio
描述
在缓存分层代理将它们以更高的速度刷新到后备存储池之前,包含已修改(脏)对象的缓存池的百分比。
类型
双倍的
默认
.6
cache_target_full_ratio
描述
在缓存分层代理将它们从缓存池中驱逐之前,包含未修改(干净)对象的缓存池的百分比。
类型
双倍的
默认
.8
target_max_bytes
描述
当
max_bytes
阈值被触发时,Ceph 将开始刷新或驱逐对象 。类型
整数
例子
1000000000000
#1-TB
target_max_objects
描述
当
max_objects
阈值被触发时,Ceph 将开始刷新或驱逐对象 。类型
整数
例子
1000000
#1M 对象
hit_set_grade_decay_rate
描述
两个连续的hit_sets之间的温度衰减率
类型
整数
有效范围
0 - 100
默认
20
hit_set_search_last_n
描述
在hit_sets中最多计数N次出现以进行温度计算
类型
整数
有效范围
0 - hit_set_count
默认
1
cache_min_flush_age
描述
缓存分层代理将对象从缓存池刷新到存储池之前的时间(以秒为单位)。
类型
整数
例子
600
10分钟
cache_min_evict_age
描述
缓存分层代理将从缓存池中驱逐对象之前的时间(以秒为单位)。
类型
整数
例子
1800
30分钟
fast_read
描述
在 Erasure Coding pool 上,如果打开这个标志,读请求将向所有分片发出子读,并等待直到它收到足够的分片来解码以服务于客户端。在 jerasure 和 isa 擦除插件的情况下,一旦前 K 个回复返回,客户端的请求将立即使用从这些回复解码的数据提供服务。这有助于权衡一些资源以获得更好的性能。目前此标志仅支持纠删码池。
类型
布尔值
默认值
0
scrub_min_interval
描述
负载低时池清理的最小间隔(以秒为单位)。如果为 0,则使用 config 中的值 osd_scrub_min_interval。
类型
双倍的
默认
0
scrub_max_interval
描述
无论集群负载如何,池清理的最大间隔(以秒为单位)。如果为 0,则使用配置中的 osd_scrub_max_interval 值。
类型
双倍的
默认
0
deep_scrub_interval
描述
池“深度”擦洗的时间间隔(以秒为单位)。如果为 0,则使用配置中的 osd_deep_scrub_interval 值。
类型
双倍的
默认
0
recovery_priority
描述
当设置一个值时,它将增加或减少计算的预留优先级。该值必须在 -10 到 10 的范围内。对不太重要的池使用负优先级,以便它们的优先级低于任何新池。
类型
整数
默认
0
recovery_op_priority
描述
指定此池的恢复操作优先级而不是
osd_recovery_op_priority
。类型
整数
默认
0
获取池值
要从池中获取值,请执行以下操作:
ceph osd pool get {pool-name} {key}
您可以获得以下键的值:
size
描述
看尺寸
类型
整数
min_size
描述
类型
整数
版本
0.54
以上
pg_num
描述
类型
整数
pgp_num
描述
类型
整数
有效范围
等于或小于
pg_num
。
crush_rule
描述
hit_set_type
描述
类型
细绳
有效设置
bloom
,explicit_hash
,explicit_object
hit_set_count
描述
类型
整数
hit_set_period
描述
类型
整数
hit_set_fpp
描述
类型
双倍的
cache_target_dirty_ratio
描述
类型
双倍的
cache_target_dirty_high_ratio
描述
类型
双倍的
cache_target_full_ratio
描述
类型
双倍的
target_max_bytes
描述
类型
整数
target_max_objects
描述
类型
整数
cache_min_flush_age
描述
类型
整数
cache_min_evict_age
描述
类型
整数
fast_read
描述
类型
布尔值
scrub_min_interval
描述
类型
双倍的
scrub_max_interval
描述
类型
双倍的
deep_scrub_interval
描述
类型
双倍的
allow_ec_overwrites
描述
类型
布尔值
recovery_priority
描述
类型
整数
recovery_op_priority
描述
类型
整数
设置对象副本数
要设置复制池上的对象副本数,请执行以下操作:
ceph osd pool set {poolname} size {num-replicas}
重要的
的{num-replicas}
包括所述对象本身。如果您想要对象和对象的两个副本作为对象的总共三个实例,请指定3
。
例如:
ceph osd pool set data size 3
您可以为每个池执行此命令。注意:对象可能会在降级模式下接受少于副本的I/O 。要设置 I/O 所需的最小副本数,您应该使用该设置。例如:pool size``min_size
ceph osd pool set data min_size 2
这确保数据池中的任何对象都不会接收少于min_size
副本的I/O 。
获取对象副本数
要获取对象副本的数量,请执行以下操作:
ceph osd dump | grep 'replicated size'
Ceph 将列出池,并突出显示属性。默认情况下,ceph 会创建一个对象的两个副本(共三个副本,或大小为 3)。replicated size