二十一、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常见状态
| 状态 | 含义 |
|---|---|
| activating | peering即将完成,正在等待所有副本同步并固化peering结果(Info、log等) |
| active | 活跃。PG可以正常处理来自客户端的读写请求 |
| backfilling | 正在后台填充态。 backfill是recovery的一种特殊场景,指peering完成后,如果基于当前权威日志无法对Up Set当中的某些PG实例实施增量同步(例如承载这些PG实例的OSD离线太久,或者是新的OSD加入集群导致的PG实例整体迁移) 则通过完全拷贝当前Primary所有对象的方式进行全量同步 |
| backfill-toofull | 副本所在OSD空间不足,backfill流程被挂起 |
| backfill-wait | 等待backfill资源预留完成 |
| clean | PG当前不存在降级对象(待修复的对象),acting set和up set内容一致,并且大小等于存储池副本数 |
| creating | PG正在被创建 |
| deep | PG正在或即将执行Deep-Scrub(对象一致性扫描) |
| degraded | PG存在降级对象(peering完成后,PG检测到一个PG实例存在不一致),或者acting set规模小于存储池副本数(但是不小于存储池最小副本数) |
| down | Peering过程中,PG检测到某个不能被跳过的Interval中,当前仍然存活的副本不足以完成数据恢复 |
| incomplete | Peering过程中,由于无法选出权威日志或者选出的acting set不足以完成数据修复 |
| inconsistent | Scurb过程中检测到某个或者某些对象在副本之间出现了不一致 |
| peered | Peering已经完成,但是pg当前acting set规模小于存储池规定的最小副本数 |
| peering | Peer正在进行 |
| recovering | PG正在后台按照Peering结果,对降级对象(不一致对象)进行修复 |
| recovering-wait | 等待Recovery资源预留完成 |
| remapped | PG活动集任何的一个改变,数据发生从老活动集到新活动集的迁移。在迁移期间还是用老的活动集中的主OSD处理客户端请求,一旦迁移完成新活动集中的主OSD开始处理 |
| repair | 修复不一致对象 |
| scrubbing | PG正在执行Scrub |
| stale | Monitor检测到当前Primary所在的OSD宕掉且后续没有发生切换,或者Primary超时未向Monitor上报PG相关的统计信息(例如出现临时性的网络拥塞) |
| undersized | 当前acting set中副本个数小于存储池副本数(但是不小于存储池最小副本数) |
| unactive | PG不能处理读写请求 |
| unclean | PG不能从上一个失败中恢复 |
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相关文章:
二十一、PG管理
一、 PG异常状态说明 1、 PG状态介绍 可以通过ceph pg stat命令查看PG当前状态,健康状态为“active clean” [rootrbd01 ~]# ceph pg stat 192 pgs: 192 activeclean; 1.3 KiB data, 64 MiB used, 114 GiB / 120 GiB avail; 85 B/s rd, 0 op/s2、pg常见状态 状…...
SAPUI5开发01_01-Installing Eclipse
1.0 简要要求概述: 本节您将安装SAPUI 5,以及如何在Eclipse Juno中集成SAPUI 5工具。 1.1 安装JDK JDK 是一种用于构建在 Java 平台上发布的应用程序、Applet 和组件的开发环境,即编写 Java 程序必须使用 JDK,它提供了编译和运行 Java 程序的环境。 在安装 JDK 之前,首…...
Qt之高仿QQ系统设置界面
QQ或360安全卫士的设置界面都是非常有特点的,所有的配置项都在一个垂直的ScrollArea中,但是又能通过左侧的导航栏点击定位。这样做的好处是既方便查看指定配置项,又方便查看所有配置项。 一.效果 下面左边是当前最新版QQ的系统设置界面,右边是我的高仿版本,几乎一毛一样…...
JVM概览:内存空间与数据存储
核心的五个部分虚拟机栈:局部变量中基础类型数据、对象的引用存储的位置,线程独立的。堆:大量运行时对象都在这个区域存储,线程共享的。方法区:存储运行时代码、类变量、常量池、构造器等信息,线程共享。程…...
固态存储设备固件升级方案
1. 前言 随着数字化时代的发展,数字数据的量越来越大,相应的数据存储的需求也越来越大,存储设备产业也是蓬勃发展。存储设备产业中,发展最为迅猛的则是固态存储(Solid State Storage,SSS)。数字化时代,海量…...
Python交通标志识别基于卷积神经网络的保姆级教程(Tensorflow)
项目介绍 TensorFlow2.X 搭建卷积神经网络(CNN),实现交通标志识别。搭建的卷积神经网络是类似VGG的结构(卷积层与池化层反复堆叠,然后经过全连接层,最后用softmax映射为每个类别的概率,概率最大的即为识别…...
基于Selenium+Python的web自动化测试框架(附框架源码+项目实战)
目录 一、什么是Selenium? 二、自动化测试框架 三、自动化框架的设计和实现 四、需要改进的模块 五、总结 总结感谢每一个认真阅读我文章的人!!! 重点:配套学习资料和视频教学 一、什么是Selenium? …...
Python进阶-----高阶函数zip() 函数
目录 前言: zip() 函数简介 运作过程: 应用实例 1.有序序列结合 2.无序序列结合 3.长度不统一的情况 前言: 家人们,看到标题应该都不陌生了吧,我们都知道压缩包文件的后缀就是zip的,当然还有r…...
win10打印机拒绝访问解决方法
一直以来,在安装使用共享打印机打印一些文件的时候,会遇到错误提示:“无法访问.你可能没有权限使用网络资源。请与这台服务器的管理员联系”的问题,那为什么共享打印机拒绝访问呢?别着急,下面为大家带来相关的解决方法…...
深度学习训练营之数据增强
深度学习训练营学习内容原文链接环境介绍前置工作设置GPU加载数据创建测试集数据类型查看以及数据归一化数据增强操作使用嵌入model的方法进行数据增强模型训练结果可视化自定义数据增强查看数据增强后的图片学习内容 在深度学习当中,由于准备数据集本身是一件十分复杂的过程,…...
Tomcat安装及启动
日升时奋斗,日落时自省 目录 1、Tomcat下载 2、JDK安装及配置环境 3、Tomcat配置环境 4、启动Tomcat 5、部署演示 1、Tomcat下载 直接入主题,下载Tomcat 首先就是别下错了,直接找官方如何看是不是广告,或者造假 搜索Tomc…...
【专项训练】排序算法
排序算法 非比较类的排序,基本上就是放在一个数组里面,统计每个数出现的次序 最重要的排序是比较类排序! O(nlogn)的3个排序,必须要会!即:堆排序、快速排序、归并排序! 快速排序:分治 经典快排 def quickSort1(arr...
Android压测测试事件行为参数对照表
执行参数参数说明颗粒度指标基础参数--throttle <ms> 用于指定用户操作间的时延。 -s 随机数种子,用于指定伪随机数生成器的seed值,如果seed值相同,则产生的时间序列也相同。多用于重测、复现问题。 -v 指定输出日志的级别,…...
【观察】亚信科技:“飞轮效应”背后的数智化创新“延长线”
著名管理学家吉姆柯林斯在《从优秀到卓越》一书中提出“飞轮效应”,它指的是为了使静止的飞轮转动起来,一开始必须使很大的力气,每转一圈都很费力,但达到某一临界点后,飞轮的重力和冲力就会成为推动力的一部分…...
QT编程从入门到精通之十四:“第五章:Qt GUI应用程序设计”之“5.1 UI文件设计与运行机制”之“5.1.1 项目文件组成”
目录 第五章:Qt GUI应用程序设计 5.1 UI文件设计与运行机制 5.1.1 项目文件组成 第五章:Qt GUI应用程序设计...
(二分)730. 机器人跳跃问题
目录 题目链接 一些话 切入点 流程 套路 ac代码 题目链接 AcWing 730. 机器人跳跃问题 - AcWing 一些话 // 向上取整 mid的表示要写成l r 1 >> 1即可,向下取整 mid l r >> 1 // 这里我用了浮点二分,mid (l r) / 2,最…...
vue3使用nextTick
发现nextTick必须放在修改一个响应式数据之后,才会在onUpdated之后被调用,如果nextTick是放在所有对响应式数据修改之前,则nextTick里面的回调函数会在onBeforeUpdate方法执行前就被调用了。可是nextTick必须等到onUpdated执行完成之后执行&a…...
传统图像处理之颜色特征
博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的,…...
GPS问题调试—MobileLog中有关GPS关键LOG的释义
GPS问题调试—MobileLog中有关GPS关键LOG的释义 [DESCRIPTION] 在mobile log中,有很多GPS相关的log出现在main log和kernel log、properties文件中,他们的意思是什么,通过这篇文档进行总结,以便在处理GPS 问题时,能够根据这些log快速的收敛问题。 [SOLUTION] 特别先提醒…...
【企业管理】你真的理解向下管理吗?
导读:拜读陈老师一篇文章《不会向下负责,你凭什么做管理者?》,引发不少共鸣,“很多管理者有一种错误的观念,认为管理是向下管理,向上负责。其实应该反过来,是向上管理,向…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
