ceph存储 pg归置组处于stuck以及degraded状态解决方案

本文档详细介绍了在Ceph存储中遇到的PG(Placement Group)异常状态,如unclean、degraded等,以及相应的解决办法。包括检查副本数、故障域、配置OSD crush chooseleaf类型、收集解决方案等。还提到了如何设置和管理归置组数量,获取PG统计信息,以及使用CRUSH图进行数据分布控制。通过理解这些概念和操作,有助于维护Ceph集群的稳定性和数据一致性。
摘要由CSDN通过智能技术生成

由于对ceph的兴趣,我们经常自己搭建ceph集群,可能是单节点,也可能是多节点,但是经常遇到pg归置组异常状态,下面是遇到的一些情况:

1、单节点的时候pg归置组unclean或者degraded

    这个时候应该检查,自己是几个osd,副本数是多少,副本的最小值是多少,还有故障域是不是osd

2、多个节点的时候pg归置组unclean或者degraded

    这个时候就麻烦了,需要查看log日志,以及osd的dump信息,看一个池子和mds是不是正常,以及对象是否有丢失,最重要就是根据报警信息解决问题

    可以使用ceph -s 以及 ceph -w 已经 ceph health detail 以及 ceph osd dump 等查看具体原因

3、当遇到是故障域导致的时候两个方案:

    3.1)设置配置文件osd crush chooseleaf type = 0 (默认为1,是host)

    3.2)重新编译crush map 找到 chooseleaf 出 然后修改为 osd

4、官方对pg状态总结如下:

http://ceph.com/docs/master/dev/placement-group/

Todo: 图的状态以及如何他们可以重叠

创建

      PG仍在创建


活跃

      到PG的请求将被处理


清理

      在PG的所有对象复制正确的次数


下载

      必要的数据是一个副本下来,所以PG是离线


重播

      PG正等待客户端的OSD坠毁后重放操作


分裂

      在PG分割成多个PG的(不是功能2012-02)


擦洗

       PG被检查不一致


降级

      在PG的一些对象没有足够的时间复制


不一致

      PG的副本并不一致(例如,对象是错误的大小,对象是从一个副本丢失恢复完成后,等)


peering

      在PG经历peering过程


修复

      正在检查的PG将被修复发现的任何不一致(如果可能的话)


恢复

      正在迁移/同步对象的复制品


恢复_等待

      PG正等待本地/远程恢复预订


回填

      一个特殊的恢复的情况下,在PG的全部内容进行扫描和同步,代替推断需要传送从PG最近的操作日志


回填_等待

      PG正排队等候,开始回填


backfill_toofull

     拒绝回填预订,OSD太满


残缺

      一个PG缺少必要的历史时期,从它的日志。如果您看到此状态下,报告错误,并尝试启动失败的OSD可能包含所需信息。


陈旧

      PG是在一个未知的状态 - 监视器没有收到更新,因为PG映射改变。


重新映射

      PG暂时从什么CRUSH指定映射到一组不同的OSD

 

5、收集的一些关于pg归置组的解决方案

Placement groups
A Placement Group (PG) aggregates a series of objects into a group, and maps the group to a series of OSDs.
Tracking object placement and object metadata on a per-object basis is computationally expensive–i.e., a
system with millions of objects cannot realistically track placement on a per-object basis. Placement groups
address this barrier to performance and scalability. Additionally, placement groups reduce the number of
processes and the amount of per-object metadata Ceph must track when storing and retrieving data.
一个归置组(PG)把一系列对象汇聚到一组,并且把这个组映射到一系列OSD。跟踪每个对象的位置和元数据
需要大量计算。 例如, 一个拥 有数百万对象的系统,不可能在每对象级追踪位置。 归置组可应 对这个影响 性能
和扩展性的问题,另 外, 归置组减小了ceph存储、检索数据时必须追踪的每对象元数据的处理量和尺寸。
Each placement group requires some amount of system resources:
每个归置组都需要一定量系统资源:
Directly: Each PG requires some amount of memory and CPU.
Indirectly: The total number of PGs increases the peering count.
Increasing the number of placement groups reduces the variance in per-OSD load across your cluster. We
recommend approximately 50-100 placement groups per OSD to balance out memory and CPU requirements
and per-OSD load. For a single pool of objects, you can use the following formula:
直接地:每个PG需要一些内存和CPU
间接地:PG总 量增加了连接建立数量;
增加PG数量能减小集群内每个OSD间的变迁,我们 推荐每个OSD大约50-100个归置组, 以均衡内存、CPU
需求、和每OSD负 载。 对于单存储池里的对象,你可用下面的公式:
              (OSDs * 100)
Total PGs = ------------
               Replicas
When using multiple data pools for storing objects, you need to ensure that you balance the number of
placement groups per pool with the number of placement groups per OSD so that you arrive at a reasonable
total number of placement groups that provides reasonably low variance per OSD without taxing system
resources or making the peering process too slow.
当 用 了多 个数据存储池来存储数据时,你得确保均衡每个存储池的 归置组数量、 且归置组数量分摊到每个
OSD, 这样才能达到较合理的归置组总 量,并因此使得每个 OSD无需耗费过多 系统资源或拖慢连接进程就能
实现较小变迁。
3.3.8.1设置归置组数量
SET THE NUMBER OF PLACEMENT GROUPS
To set the number of placement groups in a pool, you must specify the number of placement groups at the
time you create the pool.
你必须在创建存储池时设置一个存储池的归置组数量。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值