【ceph的通用解决方案】-ceph双副本如何保证宕机数据的安全性

本文深入探讨Ceph存储系统的优化策略,涵盖SSD与HDD混合使用技巧,以及Rack级隔离确保双副本数据安全的方法。通过实例演示,读者将学会如何在不同存储介质间平衡性能与成本,同时掌握在资源受限场景下,通过Rack级Bucket实现数据分布,保障数据安全性的具体步骤。

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

作者:【吴业亮】
博客:https://wuyeliang.blog.youkuaiyun.com/

开篇:
目前企业的业务场景多种多样,并非所有Ceph存储解决方案都是相同的,了解工作负载和容量要求对于设Ceph解决方案至关重要。Ceph可帮助企业通过统一的分布式集群提供对象存储、块存储或文件系统存储。在设计流程中,这些集群解决方案针对每项要求都进行了优化。该设计流程的首要因素包括 IOPS 或带宽要求、存储容量需求以及架构和组件选择,确保这些因素的合理性有助于完美平衡性能和成本。不同类型的工作负载需要不同的存储基础设施方案。

在这里插入图片描述
下面将从以下6个方面介绍ceph的通用解决方案

  • 性能方面:

1、如何ssd作为Ceph-osd的日志盘使用
2、如何同一个Ceph集群分别创建ssd和hdd池
3、如何将ssd作为hdd的缓存池
4、如何指定ssd盘为主osd,hdd为从osd

  • 稳定及数据安全性方面:

5、Ceph双副本如何保证宕机数据的安全性
6、Ceph纠删码理论与实践

注意:该文章同时在华云数据官方公众号上发布过

智汇华云 | Ceph的正确玩法之Ceph双副本如何保证宕机数据的安全性

下面我们开始专题:Ceph双副本如何保证宕机数据的安全性

场景一:

生产环境一般都是三副本存储,但一些场景为了节省资源,将副本调整为2副本。两副本要求将数据分布在不同的机器上,防止集群故障时数据丢失。

我们为此添加Rack级的Bucket,分别包含两个存储节点(以Host的Bucket),然后以Rack为隔离域,保证两个副本分别落在不同的Rack上。

示意图如下:
在这里插入图片描述

1、修改操作

修改前数据备份,以防万一。crushmap备份

# ceph osd getcrushmap  -o backup.txt

恢复:

# ceph osd setcrushmap  -i backup.txt

2、理论与实践相结合

1)、创建机柜

ceph osd crush add-bucket rack1 rack

ceph osd crush add-bucket rack2 rack

2)、将rack移动到root下

# ceph osd crush move rack1 root=default

# ceph osd crush move rack2 root=default

3)、将主机移动到机柜中

# ceph osd crush move node1   rack=rack1

# ceph osd crush move node2   rack=rack2

4)、创建rule

# ceph osd crush rule create-simpletestrule default rack firstn

5)、修改已经创建pool的rule

luminus 以后版本设置pool规则的语法是

# ceph osd pool set demo crush_ruletestrule

luminus以前版本设置pool规则的语法是

查看rule的ID

# ceph osd crush rule dump | grep testrule

# ceph osd pool set demo crush_ruleset 1

此处1是指在rule里rule_ id设置的值

6)、创建pool

# ceph osd pool create demo 64 64replicated testrule

7)、在ceph.conf中加入防止集群重启crush map被重置

osd crush update on start = false
<think>好的,用户现在问的是“ceph_pg_total - ceph_pg_active > 0”,需要解释这个指标的含义以及如何处理。首先,我需要回忆一下Ceph中的PG相关知识。PG是Placement Group,用于分布数据的重要概念。用户提到的这个指标是总PG数减去活跃PG数,如果差值大于0,说明有部分PG不处于活跃状态。 接下来,我得先解释这个指标的基本含义。用户可能是运维人员或者开发人员,遇到了集群健康问题,需要诊断为什么有些PG不活跃。需要明确PG的状态,比如active、peering、recoverying等等。当PG不活跃时,可能影响数据的读写,所以用户需要知道如何处理。 然后,要分析可能的原因。可能的原因包括OSD故障、网络问题、数据不一致需要恢复,或者是新创建的PG还没完全激活。需要逐个解释这些原因,并给出对应的排查步骤。例如,检查OSD状态,查看集群日志,确认网络连通性等等。 用户可能已经检查过ceph health,或者通过监控系统发现了这个指标异常,需要进一步的指导。所以需要给出具体的命令,比如ceph pg stat,ceph pg dump_stuck,以及如何查看特定PG的详细信息。 解决方案部分,需要针对不同原因给出不同的处理方法。如果是OSD下线,可能需要重启服务或更换硬件;如果是数据恢复,需要等待或调整恢复参数;如果是网络问题,需要检查配置和连通性。 还需要考虑预防措施,比如监控配置、定期维护、硬件冗余等。用户可能不仅想解决当前问题,还想避免未来再次发生。 需要确保回答清晰,步骤明确,命令正确,并且用中文口语化表达,避免术语过于晦涩。同时,用户可能希望得到直接的解决方案,所以结构要分明,分点列出原因、排查步骤和解决方法,便于用户快速执行。 最后,提醒用户如果问题依然存在,需要提供更多日志或输出来进一步诊断。这有助于用户在遇到复杂问题时,知道如何收集必要的信息寻求帮助。</think>你提到的 **`ceph_pg_total - ceph_pg_active > 0`** 是 Ceph 存储集群中的一个重要监控指标,表示当前集群中存在 **非活跃状态的 PG(Placement Group,放置组)**。以下是详细解释及应对方法: --- ### **1. 术语解释** - **PG(Placement Group)**: Ceph数据划分为多个 PG,每个 PG 是数据分布的最小逻辑单元,负责将数据映射到具体的 OSD(Object Storage Daemon)。 - **`ceph_pg_total`**:集群中所有 PG 的总数。 - **`ceph_pg_active`**:处于 **`active`** 状态的 PG 数量(即正常提供读写服务的 PG)。 - **指标含义**: `ceph_pg_total - ceph_pg_active > 0` 表示有部分 PG 处于非活跃状态(如 `peering`、`recovering`、`incomplete` 等),可能导致数据暂时不可访问或性能下降。 --- ### **2. 常见原因** #### **(1) OSD 故障或下线** - 某个 OSD 宕机或网络中断,导致 PG 的副本数不足。 - 触发 PG 进入 `peering` 状态(正在协商副本一致性)。 #### **(2) 数据恢复或回填** - 新增/移除 OSD 或调整 CRUSH Map 后,PG 正在执行数据迁移(`backfilling`、`recovering`)。 - 此时 PG 处于临时非活跃状态。 #### **(3) PG 状态异常** - PG 因数据不一致进入 `incomplete` 状态(无法选举出权威副本)。 - 集群配置错误(如 `pg_num` 设置不合理)。 #### **(4) 资源不足** - OSD 负载过高(CPU、磁盘 IO 或网络带宽耗尽),导致 PG 无法及时激活。 --- ### **3. 排查步骤** #### **(1) 查看集群健康状态** ```bash ceph health detail # 检查具体告警信息 ceph pg stat # 查看 PG 统计(active、peering、recovering 数量) ceph pg dump_stuck # 列出“卡住”的 PG(如 inactive 超过阈值) ``` #### **(2) 检查 PG 详细状态** ```bash # 查看所有 PG 的状态分布 ceph pg stat # 检查具体 PG 的状态(替换 <pg-id>) ceph pg <pg-id> query # 显示 PG 的详细状态、OSD 映射和事件历史 ``` #### **(3) 关联 OSD 状态** ```bash ceph osd tree # 检查 OSD 是否在线(`up`)和容量 ceph osd perf # 查看 OSD 的延迟和负载 ``` #### **(4) 检查日志** ```bash # 查看 Ceph 集群日志(通常位于 /var/log/ceph/) tail -f /var/log/ceph/ceph.log | grep -i pg_stat ``` --- ### **4. 解决方案** #### **(1) 处理 OSD 故障** - 重启故障 OSD: ```bash systemctl restart ceph-osd@<osd-id> ``` - 若 OSD 无法恢复,替换硬件后重新加入集群。 #### **(2) 等待数据恢复完成** - 如果是临时迁移或恢复操作,监控进度: ```bash ceph -w # 实时观察 PG 恢复状态 ceph pg dump | grep recovering ``` - 调整恢复速度(若需加快): ```bash ceph tell osd.* injectargs '--osd-max-backfills=4' # 增加并发恢复数 ``` #### **(3) 修复异常 PG** - 若 PG 卡在 `incomplete` 或 `stale` 状态,尝试修复: ```bash ceph pg repair <pg-id> # 触发 PG 修复(谨慎操作!) ``` - 若修复无效,可能需要手动干预(如重置 PG),建议联系社区或专业支持。 #### **(4) 优化 PG 分布** - 调整 PG 数量(需谨慎,避免数据震荡): ```bash ceph osd pool set <pool-name> pg_num <new-pg-num> ``` - 确保 `pg_num` 和 `pgp_num` 设置合理(参考 [Ceph PG 计算器](https://ceph.io/pgcalc/))。 --- ### **5. 预防措施** - **监控告警**:配置 PG 状态监控(如 `active+clean` 比例)。 - **容量规划**:避免 OSD 过载,预留足够的 PG 数量。 - **定期维护**:升级 Ceph 版本、检查硬件状态、优化 CRUSH Map。 --- 如果需要进一步分析,请提供以下信息: - `ceph pg stat` 的输出 - `ceph health detail` 的告警详情 - 相关 PG 的查询结果(`ceph pg <pg-id> query`)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值