Ceph pool创建关键参数有哪些?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 参数 正文

创建 Pool 的基本命令是:

ceph pool 创建 参数
(图片来源网络,侵删)
ceph osd pool create <pool_name> <pg_num> [pgp_num] [--allhosts|--nohost] [--pool-erasure-code-profile <profile_name>] [--size <size>] [--min-size <min-size>] [--pg_num_min <pg_num_min>] [--pgp_num_min <pgp_num_min>] [--force]

下面我们逐一分解这些参数。


核心必需参数

<pool_name>

  • 描述: Pool 的名称,这是一个逻辑上的命名空间,用于组织你的数据。
  • 要求: 必须是唯一的,且名称中不能有空格。
  • 示例: rbd, cephfs_data, my_app_pool

<pg_num>

  • 描述: Placement Group (PG) 的数量,PG 是 Ceph 数据管理的基本单元,它将数据映射到具体的 OSD (Object Storage Daemon) 上。
  • 重要性: 这是最重要的调优参数之一
    • 太少: 数据分布不均,某些 OSD 负载过高,导致热点和性能瓶颈。
    • 太多: 会增加 Ceph Monitor 的负担(需要维护更多的 PG 状态),并可能轻微增加网络和 CPU 开销。
  • 如何设置:
    • 初始值: 一个常用的经验法则是 (Total OSDs * 100) / Pool Size,这里的 Pool Size 指的是副本数(如 3)或 EC 编码的 k+m 中的 k(数据块数)。
    • Ceph 官方推荐工具: 使用 ceph osd pool default pg num 的值,或者使用 ceph osd pool create ... --pg-num-min ... 让 Ceph 自动计算。
    • 简单估算:
      • 对于小集群(如 12 个 OSD 的副本池),可以从 128256 开始。
      • 对于大集群(如 50+ 个 OSD),可以从 1024 或更高开始。
  • 示例: ceph osd pool create mypool 256

[pgp_num]

  • 描述: Placement Group for Placement 的数量,它与 pg_num 相关,但功能不同。
    • pg_num: 控制数据如何分布到 OSD 上。
    • pgp_num: 控制 Placement Group 本身如何分布到 OSD 上(主要影响数据的读写操作)。
  • 最佳实践: pgp_num 应该等于 pg_num,除非你有非常特殊的调优需求,否则保持它们一致是最简单、最安全的选择。
  • 示例: ceph osd pool create mypool 256 256

关键功能参数

这些参数决定了 Pool 的数据保护策略。

--size <size>

  • 描述: 定义数据需要写入多少个 OSD 才算成功,这决定了 Pool 的副本数
  • 默认值: 通常继承自 osd pool default size 配置项,默认为 3
  • 选项:
    • 1: 单副本,无冗余,性能最高,但数据丢失风险极大,仅适用于可完全重建的数据。
    • 2: 双副本,提供基本的冗余,但容忍一个 OSD 故障的能力较弱。
    • 3: 三副本,最常用的配置,提供高可靠性,可以容忍最多 2 个 OSD 同时故障。
  • 与 Erasure Code 的关系: 如果你使用纠删码(Erasure Code),这个参数通常设置为 k(数据块的数量)。
  • 示例: ceph osd pool create mypool 256 --size 2

--min-size <min-size>

  • 描述: 定义在集群 OSD 不足时,允许的最小副本数,这是一个安全机制,用于防止数据不可用。
  • 默认值: 通常继承自 osd pool default min size 配置项,默认为 2(对于 size=3 的池)。
  • 工作原理: 当集群中可用的 OSD 数量导致无法满足 --size 的要求时,如果满足 --min-size,Ceph 仍然会允许读写操作,但会标记 Pool 为 undersized(容量不足),这保证了业务的可用性,但牺牲了数据冗余。
  • 示例: ceph osd pool create mypool 256 --size 3 --min-size 2

--erasure-code-profile <profile_name> (与 --size 互斥)

  • 描述: 指定一个纠删码配置文件的名称,将 Pool 创建为纠删码池
  • 工作原理: 纠删码通过将数据分块并计算校验块,用更少的存储空间提供与副本相当的冗余。k=4 m=2 表示将数据分成 4 块,计算 2 个校验块,总共需要 6 个 OSD,可以容忍最多 2 个 OSD 故障,但存储开销仅为 6/4 = 1.5 倍。
  • 如何创建 Profile:
      # 创建一个名为 my_ec_profile 的配置
      ceph osd erasure-code-profile set my_ec_profile k=4 m=2 algorithm=lrc
  • 适用场景: 对存储成本敏感但对性能要求不高的场景,如冷数据、备份、归档等。
  • 示例: ceph osd pool create my_ec_pool 64 --erasure-code-profile my_ec_profile

高级与调优参数

--pg_num_min <pg_num_min>--pgp_num_min <pgp_num_min>

  • 描述: 定义 Pool 的 PG 数量的下限,这是 Ceph Luminous 及以后版本推荐的自动 PG 扩容机制的一部分。
  • 工作原理: 当你通过 ceph osd pool set <pool_name> pg_num <new_num> 增加 PG 数量时,如果新的数量低于 pg_num_min,Ceph 会自动将数量设置为 pg_num_min,这可以防止 PG 数量被意外调低。
  • 最佳实践: 在创建 Pool 时就设置一个合理的 --pg_num_min128,为未来的扩容留出空间。
  • 示例: ceph osd pool create mypool 256 --pg_num_min 128

--allhosts / --nohost

  • 描述: 控制 Ceph 是否在所有主机上创建 Pool 的客户端认证信息(keyring)。
  • 默认值: --nohost,即默认只在执行命令的节点上创建。
  • 用途: 在自动化部署或需要所有节点都能访问该 Pool 的环境中非常有用。

--force

  • 描述: 强制执行操作,忽略一些警告或安全检查。
  • 用途: 在 Pool 已经存在但你想重新创建时(会清空所有数据!),或者在集群状态不健康时创建 Pool。使用此参数需格外小心!

完整示例

示例 1:创建一个高性能的三副本 RBD Pool

假设集群有 15 个 OSD,我们为块存储创建一个高性能池。

# 计算初始 PG 数量: (15 * 100) / 3 = 500,我们取 512。
# 设置 pg_num_min 为 256,为未来扩容做准备。
ceph osd pool create rbd_pool 512 512 --pg_num_min 256 --size 3 --min-size 2

示例 2:创建一个用于归档的纠删码 Pool

假设我们想用更低的成本存储备份数据。

ceph pool 创建 参数
(图片来源网络,侵删)
# 1. 首先创建一个纠删码配置
ceph osd erasure-code-profile set archive_profile k=8 m=2 algorithm=jerasure
# 2. 然后使用该配置创建 Pool
# PG 数量计算: (15 * 100) / 8 = 187.5,我们取 192。
ceph osd pool create archive_pool 192 --erasure-code-profile archive_profile --pg_num_min 128

创建后的常用操作

创建完 Pool 后,通常还需要进行以下配置:

设置 Quota (限制容量)

防止某个 Pool 占用整个集群的空间。

# 设置 rbd_pool 的最大容量为 10TB
ceph osd pool quota rbd_pool max_bytes 10995116277760

为 CephFS 创建 Pool

CephFS 需要至少两个 Pool:一个用于数据,一个用于元数据。

ceph osd pool create cephfs_data 512 512 --pg_num_min 256 --size 3
ceph osd pool create cephfs_metadata 128 128 --pg_num_min 64 --size 3

然后创建新的 CephFS 文件系统:

ceph fs new myfs cephfs_metadata cephfs_data

查看和修改 Pool

# 查看 Pool 列表
ceph osd pool ls
# 查看 Pool 详情
ceph osd pool stats <pool_name>
# 修改 PG 数量(扩容)
ceph osd pool set <pool_name> pg_num 1024
参数类别 参数名 描述 关键点
核心 <pool_name> Pool 名称 必须唯一
<pg_num> PG 数量(数据分布) 最重要的调优参数,影响数据均衡和性能
[pgp_num] PG 数量(操作分布) 通常等于 pg_num
功能 --size 副本数 决定冗余级别,默认为 3
--min-size 最小副本数 安全机制,防止数据不可用
--erasure-code-profile 纠删码配置 用于降低存储成本,与 --size 互斥
高级 --pg_num_min PG 数量下限 推荐使用,为自动扩容留空间
--force 强制执行 谨慎使用

在创建 Pool 之前,请务必规划好它的用途(是高性能、高可靠还是低成本),并据此选择合适的参数组合,特别是 pg_num 的选择,对集群长期稳定运行至关重要。

-- 展开阅读全文 --
头像
Vostro 15-3546拆机步骤有哪些?
« 上一篇 今天
MacBook Pro拆机工具有哪些必备款?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]