ceph (luminous 版) pool 管理

本文详细介绍了如何在Ceph Luminous版本中管理pool,包括显示池信息、查看池使用率、创建及删除池,以及设置pg-num、pgp-num、pool size和pool rule等关键参数。此外,还涵盖了rbd文件的导入导出和池类型的设定,强调了配置mon_allow_pool_delete以允许删除pool的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标

ceph 下利用命令行对池管理

显示池

参考下面命令可以查询当前 ceph 中 pool 信息

[root@cephsvr-128040 ceph]# rados lspools
volumes
[root@cephsvr-128040 ceph]# ceph osd lspools
1 volumes,
[root@cephsvr-128040 ceph]# ceph osd pool ls
volumes
[root@cephsvr-128040 ceph]# ceph osd pool ls detail
pool 1 'volumes' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 2048 pgp_num 2048 last_change 161 flags hashpspool stripe_width 0 application rbd
				removed_snaps [1~3]

池使用率

参考下面命令

[root@cephsvr-128040 ceph]# rados df
POOL_NAME USED  OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD    WR_OPS WR
volumes   1496M     383      0   1149                  0       0        0  42762 1528M   2422 1485M

total_objects    383
total_used       8476M
total_avail      196T
total_space      196T
[root@cephsvr-128040 ceph]# ceph df
GLOBAL:
		SIZE     AVAIL     RAW USED     %RAW USED
		196T      196T        8476M             0
POOLS:
		NAME        ID     USED      %USED     MAX AVAIL     OBJECTS
		volumes     1      1496M         0          186T         383

创建池

格式

ceph osd pool create {pool-name} {pg-num} [{pgp-num}]

命令行

ceph osd pool create volumes 2048 2048 

pg-num 与 gpg-num

当前以 36 osd 只创

<think>好的,用户现在问的是关于Ceph中的两个命令:ceph osd pool application enable 和 rbd pool init。我需要先回忆这两个命令的具体作用和区别,然后组织一个清晰的解释。 首先,用户之前的问题是关于创建缓存分层和RBD的,现在转向了存储池的应用启用和初始化,可能是因为他们在实际配置中遇到了问题,或者想更深入理解管理存储池的步骤。 ceph osd pool application enable 这个命令我记得是用来将存储池标记为特定应用程序使用的,比如RBD、RGW或CephFS。这样做的好处是让Ceph能够针对该应用优化和管理存储池,比如启用一些特定的功能或监控。而rbd pool init则是在RBD上下文中初始化存储池,创建必要的元数据对象,比如rbd_directory,这样RBD才能在这个池中管理镜像。 接下来需要确定这两个命令的使用场景和顺序。通常,在创建一个新的存储池用于RBD时,需要先创建池,然后用ceph osd pool application enable将池标记为RBD使用,之后再用rbd pool init来初始化。不过,有些资料提到rbd pool init可能已经隐式地启用了应用标记,但为了保险,最好显式执行这两个步骤。 用户可能想知道这两个命令的区别,以及什么时候需要使用它们。比如,是否每次创建池都需要执行这两个命令,或者在某些情况下可以省略其中一个。此外,用户可能遇到的问题是,如果忘记启用应用或初始化,会导致什么问题,比如RBD无法识别池,或者无法创建镜像。 还需要注意本差异,不同Ceph本中这些命令的行为是否有变化。例如,在较新的本中,rbd pool init是否自动处理了应用启用,或者是否需要手动执行。另外,解释命令的具体参数和示例,帮助用户更好地理解如何正确使用。 需要确保回答结构清晰,分点说明每个命令的功能、使用场景、注意事项,以及它们之间的联系和区别。同时,给出示例命令,让用户能够直接参考使用。最后,总结两者的关系和操作顺序,帮助用户形成完整的操作流程。</think>在Ceph存储管理中,`ceph osd pool application enable`与`rbd pool init`是两个关键但作用不同的命令,以下是它们的详细对比说明: --- ### **一、ceph osd pool application enable** #### 核心功能 $$ \text{存储池应用类型标记} $$ - **作用**:将存储池与特定Ceph应用(RBD/RGW/CephFS)建立关联 - **本质**:设置`application`元数据属性,激活Ceph对该池的针对性管理 - **触发机制**:显式声明池的用途,帮助Ceph: - 启用应用特有功能 - 优化后台操作(如自动scrub调度) - 生成正确的监控指标 #### 典型使用场景 ```bash # 创建新存储池后必须执行 ceph osd pool create my_rbd_pool 128 128 ceph osd pool application enable my_rbd_pool rbd # 查看已关联应用 ceph osd pool get my_rbd_pool application # 输出示例:application=rbd ``` #### 注意事项 1. **强制要求**:从Luminous本(12.2.x)开始,所有新建存储池必须显式关联应用 2. **兼容性影响**:未标记的池会产生集群健康告警(`POOL_APP_NOT_ENABLED`) 3. **多应用支持**:一个池可关联多个应用(不推荐) --- ### **二、rbd pool init** #### 核心功能 $$ \text{RBD元数据初始化} $$ - **作用**:在指定存储池中创建RBD专用元数据对象(如`rbd_directory`) - **本质**:构建RBD镜像管理的底层索引结构 - **触发机制**:仅需在**首次使用该池存储RBD镜像前**执行 #### 典型使用场景 ```bash # 初始化已关联rbd应用的存储池 rbd pool init my_rbd_pool # 验证初始化结果 rados -p my_rbd_pool ls | grep rbd_directory # 应输出:rbd_directory ``` #### 注意事项 1. **依赖前提**:必须已执行`ceph osd pool application enable <pool> rbd` 2. **一次性操作**:每个池仅需初始化一次,重复执行无副作用 3. **旧本差异**:在Jewel(10.2.x)及更早本中,该命令通过`rbd`工具隐式触发 --- ### **三、命令对比矩阵** | 特征 | ceph osd pool application enable | rbd pool init | |---------------------|------------------------------------------|-----------------------------| | **操作层级** | Ceph集群管理 | RBD应用初始化 | | **元数据变更** | 修改池属性`application` | 创建`rbd_directory`等对象 | | **执行频率** | 每个池一次 | 每个池一次 | | **本依赖** | Luminous+ 强制要求 | 所有支持RBD的本 | | **错误后果** | 产生健康告警,但RBD仍可使用 | RBD无法创建/管理镜像 | --- ### **四、联合使用流程示例** 为新建存储池`new_rbd_pool`启用RBD服务的完整操作: ```bash # 步骤1:创建存储池 ceph osd pool create new_rbd_pool 128 128 # 步骤2:关联RBD应用 ceph osd pool application enable new_rbd_pool rbd # 步骤3:初始化RBD元数据 rbd pool init new_rbd_pool # 步骤4:验证 rbd -p new_rbd_pool ls # 应无报错且返回空列表 ``` --- ### **五、排错指南** 1. **创建镜像报错`Pool does not have rbd application enabled`** - 原因:未执行`ceph osd pool application enable` - 修复: ```bash ceph osd pool application enable <poolname> rbd ``` 2. **执行`rbd ls`报错`rbd: listing images failed: (2) No such file or directory`** - 原因:未执行`rbd pool init` - 修复: ```bash rbd pool init <poolname> ``` --- ### **六、底层原理** 1. **application属性作用**: - 通过`ceph osd pool application enable`设置的属性存储在OSDMap中 - 控制守护进程行为,例如: $$ \text{RBD: 启用对象映射特性} $$ $$ \text{RGW: 激活桶索引分片} $$ 2. **rbd_directory对象**: - 本质是RADOS普通对象(非特殊类型) - 存储结构: ```json { "image1": "header_address", "image2": "header_address", ... } ``` - 每次执行`rbd create`时更新该对象的键值对 --- 通过理解这两个命令的分工协作,可以更安全地管理Ceph RBD存储池的生命周期。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值