PG( placement group)是一个放置策略组,它是对象的集合,该集合里的所有对象都具有相同的放置策略;简单点说就是相同PG内的对象都会放到相同的硬盘上; PG是 ceph的核心概念, 服务端数据均衡和恢复的最小粒度就是PG,那么pg的状态有哪些:

常见的pg状态:

creating:创建中,当创建pool的时候,将会创建响应的pg;

peering:等待互联

1. 当pg处于peering状态时,ceph会将pg副本协定导入osd,当ceph完成peering,意味着osd同意当前pg状态,并允许写入;

2. pg处于peering过程中,peering由主osd发起的使得存放pg副本的所有osd就pg的所有对象和元素数据的状态达成一致的过程,peering过程完成后,主osd就可以接受客户端的写请求;

active:活跃态,当peering完成后pg就会变为active状态,意味着pg中的数据变的可用,主pg就可以进行读写操作;

clean:干净态,pg当前不存在待修复的对象,Acting Set 和 Up Set内容一致,并且大小等于存储池的副本数;

down:pg处于失效状态,pg处于离线状态,例如peering过程中,pg检测到某个不能被跳过的interval中(假如该interval期间,pg完成了peering),并且成功切换至Active状态,从而有可能正常处理了来自客户端的读写请求),当前剩余在线的osd不足以完成数据修复。

repair:修复的,pg正在被检查,被发现的任何不一致都将尽可能的被修复;

replay:重做,某个osd崩溃后,pg正在等待客户端重新发起操作;

degraded:降级状态

1. 当客户端写对象到主osd,主osd会把数据写复制到对应复制osd,在主osd把对象写入存储成功后,pg会显示为degraded状态,直到主osd从复制osd中接收到创建副本对象完成信息的消息;

2. pg处于active+degraded时是因为osd处于活跃状态,单并没有完成所有的对象副本写入,假设osd down,ceph标记每个pg分配到这个相关osd的状态为degaraded,当osd重新上线,osd会重新恢复;

3. pg被标记为的degraded,因为ceph中对应pg中无法找到一个或者多个相关对象,unfound对象不可以进行读写,但仍然可以访问标记为degraded pg的其他数据;

4. pg部分对象的副本数量未到达规定的数量;

5. 假如osd down 并且degraded状态持续,ceph会标记down osd,并会对集群迁移相关的osd数据,对应时间由mon osd down out interval参数决定;

recovering:恢复中,集群正在执行迁移或同步对象和它们的副本

1. ceph设备故障容忍在一定范围的软件与硬件问题,当osd变为down,那么包含该osd的pg就会有问题,当osd恢复,osd对应的pg将会更新,并反映出当前状态,在一段时间周期后,osd将会恢复recovering状态;

2. recovery并非永远都有效,因为硬件故障可能会导致多个osd故障,例如,网络交换机故障,可以导致集群中的多个主机及主机包含的osd故障,当网络恢复之后,每个osd都必须执行恢复;

3. pg正在迁移或者通过对象及其副本,一个OSD停止服务,其内容将会落后于与pg内的其他副本,这时pg将会进入recovering状态,该osd上的对象将从其他副本同步过来;

CEPH 提供一定数量的设定在新服务请求与恢复 PG 中数据对象时的资源平衡,

osd recovery delay start 设定允许 osd 重启, re-peer 并在启动 恢复之前处理一些回应请求,

osd recovery threads 设定了恢复过程中线程限制 (默认 1 )

osd recovery thread timeout 设定线程超时, 因为可能出现多个 osd 故障, 重启后在 re-peer 过程中可能出现污染

osd recovery max active 设定限制对一个 osd 从故障后, 恢复请求并发数量

osd recovery max chunk 限制恢复时的数据 chunk 大小, 预防网络堵塞

back filling:回填,当新的osd加入集群,crush将会为集群新添加的osd重新分配pg,并将一定数量的负载转移到新的osd中,back filling osd会在后台处理,当backfilling完成,新的osd完成后,将开始对请求进行服务。

在backfilling 过程中会看到很多状态:

backfill_wait:表示backfill操作挂起,但是backfill操作还没开始(pg正在等待开始回填操作)

backfill:表示backfill操作正在进行

backfill_too_full:表示在请求backfill操作,由于存储能力问题,暂不可以完成

ceph 提供设定管理装载重新分配 PG 关联到新的 OSD

osd_max_backfills 设定最大数量并发 backfills 到一个 OSD, 默认 10

osd backfill full ratio  当 osd 达到负载, 允许 OSD 拒绝 backfill 请求, 默认 85%,

假如 OSD 拒绝 backfill 请求,  osd backfill retry interval 将会生效, 默认 10 秒后重试

osd backfill scan min ,  osd backfill scan max 管理检测时间间隔

一个新 OSD 加入集群后, CRUSH 会把集群先有的一部分 PG 分配给他, 该过程称为回填, 回填进程完成后, 新 OSD 准备好了就可以对外提供服务

remapped:重新映射

当 pg 改变, 数据从旧的 osd 迁移到新的 osd, 新的主 osd 应该请求将会花费一段时间, 在这段时间内, 将会继续向旧主 osd 请求服务, 直到pg 迁移完成, 当数据迁移完成,  mapping 将会使用新的 osd响应主osd 服务

当 pg的 action set 变化后, 数据将会从旧 acting set 迁移到新 action set, 新主 osd 需要过一段时间后才能提供服务, 因此它会让老的主 osd继续提供服务, 直到pg迁移完成, 数据迁移完成后, pg map 将会使用新 acting set 中的主 osd

stale:旧状态

当 ceph 使用 heartbeat 确认主机与进程是否运行,  ceph osd daemon 可能由于网络临时故障, 获得一个卡住状态 (stuck state) 没有得到心跳回应,默认, osd daemon 会每 0.5 秒报告 PG, up 状态, 启动与故障分析, 假如 PG 中主 OSD 因为故障没有回应 monitor 或者其他 OSD 报告 主 osd down, 那么 monitor 将会标记 PG stale, 当你重启集群, 通常会看到 stale 状态, 直到 peering 处理完成, 在集群运行一段时候, 看到 stale 状态, 表示主 osd PG DOWN 或者没有主 osd 没有报告 PG 信息到 monitor 中

PG 处于未知状态, monitors 在 PG map 改变后还没有收到过 PG 的更新, 启用一个集群后, 常常会看到主 peering 过程结束前 PG 处于该状态

为找出卡住的归置组,执行:

ceph pg dump_stuck [unclean|inactive|stale]

scrubbing: 清理中

pg通过scrub 在做一致性校验

inconsistent:pg不一致

pg通过scrub检测到某个或者某些对象在pg实例间出现了不一致

incomplete:peering过程中,由于a. 无非选出权威日志 b. 通过choose_acting选出的Acting Set后续不足以完成数据修复,导致peering不能正常完成。

常见操作:ceph集群在peering状态下,来回重启服务器,或者掉电

未完待续

Ceph pg状态总结相关推荐

  1. Ceph入门到精通-Ceph PG状态详细介绍(全)

    本文主要介绍PG的各个状态,以及ceph故障过程中PG状态的转变. Placement Group States(PG状态) creating Ceph is still creating the p ...

  2. ceph PG状态及部分故障(状态)模拟

    1. PG介绍 这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下: - 在架构层次上,PG位于RADOS层的中间. a. 往上负责接收和处理来自客户端的请求 ...

  3. 【ceph】Ceph之PG状态详解--研读笔记

    原文:分布式存储Ceph之PG状态详解 - 简书 Ceph中一些PG相关的状态说明和基本概念说明.故障模拟_pansaky的博客-CSDN博客 1. PG介绍 继上次分享的<Ceph介绍及原理架 ...

  4. Ceph 中的 PG 状态详解

    1. PG介绍 这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下: 在架构层次上,PG位于RADOS层的中间. a. 往上负责接收和处理来自客户端的请求. ...

  5. Ceph PG 归置组状态

    归置组状态 检查集群状态时(如运行 ceph -s 或 ceph -w ), Ceph 会报告归置组状态.一个归置组有一到多种状态,其最优状态为 active+clean . Creating Cep ...

  6. ceph PG和PGP调整经验

    PG和PGP调整经验 调整前准备 为了降低对业务的影响,需要调整以下参数 ceph tell osd.* injectargs '–osd-max-backfills 1' ceph tell osd ...

  7. ceph pg不一致问题

    今天在公司环境中出现了pg不一致问题,通过ceph health detail命令查看如下: pg 19.211 is active+clean+inconsistent, acting [88,16 ...

  8. 【ceph】ceph OSD状态及常用命令

    OSD进程的启动停止:https://blog.csdn.net/bandaoyu/article/details/119894927 1. OSD概念 OSD:Object Storage Devi ...

  9. ceph PG设计,状态机,peering,recovery 导图

最新文章

  1. ‘wmic‘ 不是内部或外部命令,也不是可运行的程序 解决方法
  2. error undefined reference to __android_log_print
  3. Java高并发编程(十):Java并发工具类
  4. 手机控制linux电脑,通过Amora用symbian手机控制linux系统的电脑
  5. 欧拉函数的相关应用 noj欧拉函数求和+noj 最大公约数求和
  6. 大牛书单 | 人工智能方向好书推荐
  7. 物理搬砖问题_搬砖姿势:风法
  8. MSN8.0经常出现连接错误,如何解决?
  9. 【牛客 - 1080B】tokitsukaze and Hash Table(STLset,并查集,Hash)
  10. ffmpeg实战教程(三)音频PCM采样为AAC,视频YUV编码为H264/HEVC
  11. SQL——后台分页(C#,mysql)
  12. python print tab_python print tab_Python 字符串 expandtabs() 方法
  13. 生物信息学常见1000个软件的安装代码
  14. 简述ip地址的abc类如何划分_ip地址的分类abc类的具体含义与分类方法
  15. js用函数找出1 - 1000 之间7的倍数和包含7的数字,放入数组内
  16. 喜大普奔!Maya 2022来了?!
  17. PHP自学笔记(基础语法篇)
  18. 免费视频教程:嵌入式stm32项目开发之心率检测仪的设计与实现
  19. java sdk和java api 的区别
  20. easy excel date 类型解析报错_两个日期相差多少天,你还在一天天的数吗?用Excel轻松完成计算...

热门文章

  1. 什么骨传导耳机比较好,好用的骨传导蓝牙耳机推荐
  2. python写一个笔记软件_程序员们都用什么记笔记软件?
  3. 【帮转】浙大未企2109届X计划创业实践开启——创燃花火,意点未来
  4. 淘宝新手设计快速提升一(思想片)
  5. 国内数学守旧派为何惧怕超实微积分?
  6. js中try、catch、finally 使用
  7. 度量衡计算工具_搴﹂噺琛″埗寮忔崲绠楀伐鍏�
  8. [ATF]-中断配置:SCR.FIQ/SCR.IRQ的配置详解
  9. 360真不靠谱,云盘不靠谱 字体不靠谱 安全卫士不靠谱
  10. 美图 AB Test 实践:Meepo系统