当前位置: 首页 > news >正文

二十一、PG管理

一、 PG异常状态说明

1、 PG状态介绍

可以通过ceph pg stat命令查看PG当前状态,健康状态为“active + clean”

[root@rbd01 ~]# ceph pg stat
192 pgs: 192 active+clean; 1.3 KiB data, 64 MiB used, 114 GiB / 120 GiB avail; 85 B/s rd, 0 op/s
2、pg常见状态
状态含义
activatingpeering即将完成,正在等待所有副本同步并固化peering结果(Info、log等)
active活跃。PG可以正常处理来自客户端的读写请求
backfilling正在后台填充态。 backfill是recovery的一种特殊场景,指peering完成后,如果基于当前权威日志无法对Up Set当中的某些PG实例实施增量同步(例如承载这些PG实例的OSD离线太久,或者是新的OSD加入集群导致的PG实例整体迁移) 则通过完全拷贝当前Primary所有对象的方式进行全量同步
backfill-toofull副本所在OSD空间不足,backfill流程被挂起
backfill-wait等待backfill资源预留完成
cleanPG当前不存在降级对象(待修复的对象),acting set和up set内容一致,并且大小等于存储池副本数
creatingPG正在被创建
deepPG正在或即将执行Deep-Scrub(对象一致性扫描)
degradedPG存在降级对象(peering完成后,PG检测到一个PG实例存在不一致),或者acting set规模小于存储池副本数(但是不小于存储池最小副本数)
downPeering过程中,PG检测到某个不能被跳过的Interval中,当前仍然存活的副本不足以完成数据恢复
incompletePeering过程中,由于无法选出权威日志或者选出的acting set不足以完成数据修复
inconsistentScurb过程中检测到某个或者某些对象在副本之间出现了不一致
peeredPeering已经完成,但是pg当前acting set规模小于存储池规定的最小副本数
peeringPeer正在进行
recoveringPG正在后台按照Peering结果,对降级对象(不一致对象)进行修复
recovering-wait等待Recovery资源预留完成
remappedPG活动集任何的一个改变,数据发生从老活动集到新活动集的迁移。在迁移期间还是用老的活动集中的主OSD处理客户端请求,一旦迁移完成新活动集中的主OSD开始处理
repair修复不一致对象
scrubbingPG正在执行Scrub
staleMonitor检测到当前Primary所在的OSD宕掉且后续没有发生切换,或者Primary超时未向Monitor上报PG相关的统计信息(例如出现临时性的网络拥塞)
undersized当前acting set中副本个数小于存储池副本数(但是不小于存储池最小副本数)
unactivePG不能处理读写请求
uncleanPG不能从上一个失败中恢复
3、pg常见异常状态
下面给出部分PG异常状态(需要人为修复)介绍。1>degraded:降级当客户端向主 OSD 写入数据时,由主 OSD 负责把数据副本写入其余副本 OSD 。主 OSD 把对象写入存储器后,在副本 OSD 创建完对象副本并报告给主 OSD 之前,主 OSD 会一直停留在 degraded 状态。归置组状态可以处于 active+degraded 状态,原因在于一 OSD 即使尚未持有所有对象也可以处于 active 状态。如果一 OSD 挂了, Ceph 会把分配到此 OSD 的归置组都标记为 degraded ;那个 OSD 重生后,它们必须重新互联。然而,客户端仍可以向处于 degraded 状态的归置组写入新对象,只要它还在 active 状态。如果一 OSD 挂了,且老是处于 degraded 状态, Ceph 会把 down 的 OSD 标记为在集群外( out )、并把那个 down 掉的 OSD 上的数据重映射到其它 OSD 。从标记为 down 到 out 的时间间隔由 mon osd down out interval 控制,默认是 300 秒。归置组也会被降级( degraded ),因为 Ceph 找不到本应存在于此归置组中的一或多个对象,这时,你不能读写找不到的对象,但仍能访问位于降级归置组中的其它对象。2>remapped:重映射
负责维护某一归置组的 Acting Set 变更时,数据要从旧集合迁移到新的。新的主 OSD 要花费一些时间才能提供服务,所以老的主 OSD 还要持续提供服务、直到归置组迁移完。数据迁移完后,运行图会包含新 acting set 里的主 OSD 。3>stale:陈旧默认, OSD 守护进程每半秒( 0.5 )会一次报告其归置组、出流量、引导和失败统计状态,此频率高于心跳阀值。如果一归置组的主 OSD 所在的 acting set 没能向监视器报告、或者其它监视器已经报告了那个主 OSD 已 down ,监视器们就会把此归置组标记为 stale 。启动集群时,会经常看到 stale 状态,直到互联完成。集群运行一阵后,如果还能看到有归置组位于 stale 状态,就说明那些归置组的主 OSD 挂了( down )、或没在向监视器报告统计信息。4>inconsistent:不一致PG通常存在多个副本,其所有副本的数据应当是完全一致的。但有时会由于OSD故障、网络阻塞等某些因素,导致副本上的数据发生不一致的现象,此时需要对不一致的PG惊醒修复

二、常见故障处理方式

1、 OSD Down导致pg故障

最常见的PG故障都是由于某个或者多个OSD对应的硬盘损坏导致进程挂掉出现的。一般更换硬盘可以解决, 多关注集群节点dmesg日志,查看关于磁盘坏道或者io/error相关报错,及时更换硬盘

2、pg数据不一致
PG状态为inconsistent时,说明PG中存在对象不一致的情况。有可能时某个OSD磁盘损坏,或者磁盘上的数据发生静默错误。

一般手动修复损坏的PG即可, 使用ceph pg repair {pgid}
尝试手动构造一个PG数据损坏的例子,并修复它

1>关闭1个osd
systemctl stop ceph-osd@4.service2>使用ceph-objectstore-tool 挂载 /var/lib/ceph/osd/ceph-4 到 /mnt/ceph-osd@4
[root@rbd05 ~]# mkdir /mnt/ceph-4
[root@rbd05 ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-4/ --op fuse --mountpoint /mnt/ceph-4
mounting fuse at /mnt/ceph-4 ...3>另开一个窗口,查看osd内内容,以及pg目录结构
[root@rbd05 ~]# cd /mnt/ceph-4/
[root@rbd05 ceph-4]# ls
1.10_head  1.1a_head  1.6_head  2.10_head  2.18_head  2.23_head  2.2b_head  2.32_head  2.3f_head  2.c_head   3.12_head  3.1c_head  3.9_head  4.10_head  4.19_head  4.2_head  4.9_head  5.0_head   5.17_head  5.1_head  5.a_head
1.11_head  1.1b_head  1.7_head  2.12_head  2.1b_head  2.24_head  2.2c_head  2.34_head  2.3_head   2.d_head   3.13_head  3.1d_head  3.b_head  4.11_head  4.1a_head  4.3_head  4.a_head  5.12_head  5.18_head  5.3_head  5.b_head
1.12_head  1.1c_head  1.8_head  2.13_head  2.1c_head  2.25_head  2.2d_head  2.36_head  2.4_head   2.e_head   3.14_head  3.1f_head  3.c_head  4.12_head  4.1b_head  4.5_head  4.b_head  5.13_head  5.19_head  5.5_head  5.e_head
1.13_head  1.1f_head  1.9_head  2.14_head  2.20_head  2.28_head  2.2e_head  2.3a_head  2.7_head   2.f_head   3.15_head  3.1_head   3.d_head  4.14_head  4.1c_head  4.6_head  4.d_head  5.14_head  5.1a_head  5.7_head  5.f_head
1.15_head  1.1_head   1.b_head  2.15_head  2.21_head  2.29_head  2.2_head   2.3b_head  2.9_head   3.0_head   3.17_head  3.5_head   3.f_head  4.16_head  4.1d_head  4.7_head  4.e_head  5.15_head  5.1b_head  5.8_head  meta
1.18_head  1.2_head   1.e_head  2.17_head  2.22_head  2.2a_head  2.30_head  2.3e_head  2.b_head   3.10_head  3.19_head  3.6_head   4.0_head  4.17_head  4.1_head   4.8_head  4.f_head  5.16_head  5.1f_head  5.9_head  type[root@rbd06 ceph-5]# cd 1.10_head/
[root@rbd06 1.10_head]# 
[root@rbd06 1.10_head]# tree ./
./
├── all
│   ├── #1:08000000::::head#
│   │   ├── attr
│   │   ├── bitwise_hash
│   │   ├── data
│   │   ├── omap
│   │   │   ├── 0000000017.00000000000000000001
│   │   │   ├── 0000000067.00000000000000000002
│   │   │   ├── _biginfo
│   │   │   ├── _epoch
│   │   │   ├── _info
│   │   │   ├── _infover
│   │   │   └── may_include_deletes_in_missing
│   │   └── omap_header
│   └── #1:0ec1d93a:::zone_info.fa15c50d-1027-4f2c-b2e6-972a058506a5:head#
│       ├── attr
│       │   ├── _
│       │   └── snapset
│       ├── bitwise_hash
│       ├── data
│       ├── omap
│       └── omap_header
├── bitwise_hash_bits
├── bitwise_hash_end
├── bitwise_hash_start
├── by_bitwise_hash
└── pgmeta├── attr├── bitwise_hash├── data├── omap│   ├── 0000000017.00000000000000000001│   ├── 0000000067.00000000000000000002│   ├── _biginfo│   ├── _epoch│   ├── _info│   ├── _infover│   └── may_include_deletes_in_missing└── omap_header11 directories, 28 files

3、模拟故障

1>选取pg 1.10模拟故障,模拟故障环境,使用ceph-objectstore-tool,删除三副本中两个副本上的同一个对象。
[root@rbd01 ~]# ceph pg ls|grep 1.10 
1.10       1        0         0       0   805           0          0    2 active+clean    2m     67'2  140:278 [1,2,3]p1 [1,2,3]p1 2023-03-11 09:10:17.550546 2023-03-11 09:10:17.5505462> 使用ceph-objectstore-tool前,需要停掉该osd服务,使用systemctl stop ceph-osd@{id}
systemctl stop ceph-osd2
systemctl stop ceph-osd@3
http://www.lryc.cn/news/37942.html

相关文章:

  • SAPUI5开发01_01-Installing Eclipse
  • Qt之高仿QQ系统设置界面
  • JVM概览:内存空间与数据存储
  • 固态存储设备固件升级方案
  • Python交通标志识别基于卷积神经网络的保姆级教程(Tensorflow)
  • 基于Selenium+Python的web自动化测试框架(附框架源码+项目实战)
  • Python进阶-----高阶函数zip() 函数
  • win10打印机拒绝访问解决方法
  • 深度学习训练营之数据增强
  • Tomcat安装及启动
  • 【专项训练】排序算法
  • Android压测测试事件行为参数对照表
  • 【观察】亚信科技:“飞轮效应”背后的数智化创新“延长线”
  • QT编程从入门到精通之十四:“第五章:Qt GUI应用程序设计”之“5.1 UI文件设计与运行机制”之“5.1.1 项目文件组成”
  • (二分)730. 机器人跳跃问题
  • vue3使用nextTick
  • 传统图像处理之颜色特征
  • GPS问题调试—MobileLog中有关GPS关键LOG的释义
  • 【企业管理】你真的理解向下管理吗?
  • Centos7 硬盘挂载流程
  • 认识vite_vue3 初始化项目到打包
  • 【Go】cron时间格式
  • leetcode 55. 跳跃游戏
  • Linux:文件流指针 与 文件描述符
  • 基于FPGA实现正弦插值算法
  • JavaWeb_会话技术
  • Reactor响应式流的核心机制——背压机制
  • [数据结构]栈的深入学习-java实现
  • 网络编程基础
  • 华为OD机试题 - 数列还原(JavaScript)| 机考必刷