Ceph蹚坑笔记 - (1)

【ceph】Ceph之PG状态详解--研读笔记 原文:分布式存储Ceph之PG状态详解 - 简书 1. PG介绍 继上次分享的《Ceph介绍及原理架构分享》,这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下: 在架构层次上,PG位于RADOS层的中间。 a. 往上负责接收和处理来自客户端的请求。 b. 往下负责将这些数据请求翻译为能够被本地对象存储所能理解的事务。 是组成存储池的基本单位,存储池中的很多特性,都是直接依托于PG实现的。 面向容灾域的备份策略使得一般而言的PG需要执行跨节点的分布式写 阅读详情

Ceph蹚坑笔记 - (1)

现象

由于设备调度的原因,运维的哥们需要把一台服务器上的OSD移除。他做了以下操作:
1. pkill ceph-osd关闭服务器上的所有OSD
2. 在集群把这些OSD标记成down后,用ceph osd rm <osd-id>删除对应的OSD ID
3. 期待与这些OSD有关的PG转移到其它OSD上,并由degraded状态转到active+clean状态
4. 等了很久,发现集群完全没有修复这些degraded PG的意思
5. 实在没办法,再执行ceph osd crush remove osd.<osd-id>,degraded PG终于逐渐转到active+clean状态

分析

OSD的状态发生变化触发OSD Map更新,所有活着的OSD都会基于新的OSD Map和根据CRUSH算法重新计算其所承载的PG的新归宿。如果发现PG的新归宿不是当前承载它的OSD集合,集群就会触发Peering动作(自己主导Peering或通知其他OSD发动Peering),进而进行必要的Recovery或Backfill。

OSD变为down后,相应的PG转入degraded状态是符合预期的。按常理说,在ceph osd rm <osd-id>之后集群应该注意到OSD的状态又发生了一些变化,并为degraded PG寻找新的归宿。

既然ceph osd rm <osd-id>没有触发Peering,很有可能是因为OSD不认为PG的归宿发生了变化。按照这个思路,查看了代码。OSDMap::_raw_to_up_osds()的如下代码确认了这个推测(环境中用的是ReplicatedPG)。这里!exists与is_down被认为是等价的,在OSD变为down后,集群的决策是:幸存下来的OSD继续承载degraded PG。ceph osd rm <osd-id>之后,OSDMap::_raw_to_up_osds()的结果和OSD变为down时结果是一样的,所以不认为degraded PG需要新的OSD来承载,也就没有触发Peering和相应的Recovery或Backfill。

    up->clear();
    for (unsigned i=0; i<raw.size(); i++) {
      if (!exists(raw[i]) || is_down(raw[i]))
    continue;
      up->push_back(raw[i]);
    }

后来,尝试了以下操作序列,就没有问题了
1. pkill ceph-osd关闭服务器上的所有OSD
2. 在集群把这些OSD标记成down后,用ceph osd out <osd-id>把对应OSD标记为out(也可以清除noout标志位,等待足够长的时间,让集群自动把OSD标记为out)
3. 用ceph osd rm <osd-id>删除对应的OSD ID
4. 相应的PG逐渐从degraded状态转到active+clean状态

本来以为ceph osd rm <osd-id>会隐含ceph osd out <osd-id>。从这次的观察看,这样的想当然是错误的。查看了一下OSDMonitor::prepare_command_impl()中的如下代码发现,原来out操作修改的是OSD ID的权值(OSDMap::osd_weight[id]在OSDMap::_pg_to_osds()被使用),而rm是修改OSD ID的状态信息(OSDMap::osd_state[id]在OSDMap::_raw_to_up_osds()中被间接使用)。

    } if (prefix == "osd out") {
      if (osdmap.is_out(osd)) {
        ss << "osd." << osd << " is already out. ";
      } else {
        pending_inc.new_weight[osd] = CEPH_OSD_OUT;
        ss << "marked out osd." << osd << ". ";
        any = true;
      }
    } 
    // ...
    } else if (prefix == "osd rm") {
      if (osdmap.is_up(osd)) {
        if (any)
          ss << ", ";
        ss << "osd." << osd << " is still up; must be down before removal. ";
        err = -EBUSY;
       } else {
         pending_inc.new_state[osd] = osdmap.get_state(osd);
         pending_inc.new_uuid[osd] = uuid_d();
         pending_metadata_rm.insert(osd);
         if (any) {
           ss << ", osd." << osd;
         } else {
           ss << "removed osd." << osd;
         }
         any = true;
      }
    }

OSDMap::_pg_to_osds()被先调用,然后OSDMap::_raw_to_up_osds()基于OSDMap::_pg_to_osds()的结果做运算。out的OSD在OSDMap::_pg_to_osds()先被清理出局,down的或被rm的OSD在OSDMap::_raw_to_up_osds()才被清理出局。

假设两副本的PG X最先是由osd.1和osd.11承载的。然后,osd.1进入down状态而不是out。这时,OSDMap::_pg_to_osds()还是选出了osd.1和osd.11,然后OSDMap::_raw_to_up_osds()从中选出了osd.11。接着osd.1被执行ceph osd rm,由于is_down和!exists是等价的,OSDMap::_raw_to_up_osds()还是为PG X选择了osd.11。

假设两副本的PG X最先由osd.1,osd.11承载。但osd.1从down状态进入out状态之后才被执行ceph osd rm,OSDMap::_pg_to_osds()会把osd.1淘汰并为PG X选择osd.11和另一个存活的OSD(假设是osd.21),而OSDMap::_raw_to_up_osds()也在此基础上选出了存活的osd.11和osd.21。这样集群就知道PG X应该重新分布到osd.11和osd.21上了。

ceph osd crush remove之所以也能能够触发PG的重分布,也是因为它修改CRUSH Map(OSDMap.crush)而促使OSDMap::_pg_to_osds()为PG X选择osd.11和osd.21而不是osd.1和osd.11。

结论

  • 这里的ceph osd rm <osd-id>不是很有必要,除非永远都不想再使用这些OSD ID了
  • ceph osd rm <osd-id>与ceph osd out <osd-id>不同,ceph osd rm <osd-id>也不隐含ceph osd out <osd-id>
  • 在ceph osd rm <osd-id>之前最好等待对应的OSD变成out
基于 ceph-deploy 部署 Ceph 集群 超详细 ceph概述和ceph集群部署 阅读详情

相关推荐

基于ceph-deploy部署Ceph 集群

基于ceph-deploy部署Ceph 集群

m0_71593537的博客 1912

ceph修复osd为down的情况

尝试一、直接重新激活所有osd 1、查看osd树 root@ceph01:~# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.29279 root default -2 0.14639 host c...

weixin_33737134的博客 1255

Ceph-deploy搭建ceph集群

Ceph可用于为云平台提供Ceph对象存储、块存储、文件系统存储。所有Ceph存储集群部署都从设置每个Ceph节点开始,然后设置网络块存储RedismasterslavezookeeperMysqlmasterslavecephFS对象存储Ceph存储集群需要以下内容:至少一个和至少一个,以及至少与Ceph集群中存储的给定对象的副本一样多的Ceph对象存储守护进程(OSD)(例如,如果给定对象的三个副本存储在Ceph集群中,则该Ceph集群中必须至少存在三个OSD)

qq_31055683的博客 1925

ceph OSD状态及常用命令

1. OSD概念 OSD:Object Storage Device,主要负责响应客户端请求返回具体数据的守护进程,一般一个集群会有多个OSD,每一块盘都会对应一个OSD。 2. OSD 状态 [root@data1 ~]# ceph osd stat 4 osds: 3 up (since 23m), 3 in (since 13m); epoch: e345 OSD状态说明: a. 集群内(in) b. 集群外(out) c. 活着且在运行(up) d. 挂了且不再运行(down) .

Be_Nice的博客 1万+

【Ceph】基于ceph-deploy部署Ceph集群详解

我们相恋的季节,从夏天到冬天,记忆一页页翻阅,你却留下了思念。

陌上花开,静待绽放! 1414

用ceph-deploy安装ceph并部署集群

部署安装关于安装ceph整个过程中遇到的问题,以及靠谱的解决办法,个人亲测有效,不代表广大同行的观点。 我用的是服务器,所以没搞什么用户的问题。机器是centOS7.3。我安装的ceph版本是jewel,目前只用了3个节点。 节点IP 命名 角色 10.0.1.92 e1092 mon 10.0.1.93 e1093 mon,osd 10.0.1.94

Erdong_up的博客 1万+

ceph osd down修复

一、查看osd状态找到down状态的osd 二、删除对应osd 1、调整osd 的crush weight 2、停止osd进程 3、将节点状态标记为out 4、从crush中移除节点 5、删除节点 6、删除节点认证 三、准备并激活osd 1、格式化准备存放数据的磁盘 2、挂载指定磁盘 3、准备osd 4、激活osd 具体ID、FSID可通过/var/lib/ceph/osd/ceph-18路径下的whoami、fsid查看。激活之后查看若仍为down状态 通过以下命令查看对应osd状态,之后重启再观察...

WBW_WBW的博客 4466

第⑫讲:Ceph集群OSD扩缩容中Reblanceing数据的重分布

在实际生产环境中,如果PG中的数据量非常大,在触发Reblanceing机制时,会对集群的性能有所影响,如果一次性增加很多个OSD节点,那么就意味着会有大量的PG被移动,此时就会对集群的性能产生巨大的影响,因此建议,每次在扩容OSD时,只扩容一个OSD。在扩容前集群有两个OSD节点,这两个OSD中分布着十个PG,扩容后,集群中有三个OSD节点,此时就会触发Reblanceing数据重分布机制,将原有的两个OSD中的一部分PG移动到第三个OSD中,使的每个OSD中的PG数量均衡。

江晓龙的博客 1564

Ceph OSD为DOWN时修复

本文所使用Ceph版本为luminous(不同版本删除OSD基本操作相同),当出现Ceph OSD为down的情况时,可以通过以下方法解决(假设ceph-admin节点OSD.1 Down,该OSD对应磁盘为/dev/sdb): 1.首先尝试能否重启ceph-osd服务 近期在维护ceph集群时,发现一些新的情况: (1)ceph osd down掉之后(这里假设osd.1 down),去到...

夜雨狂歌如梦 2万+

ceph搭建及使用详解

第1章 ceph介绍 1.1 Ceph的主要特点 统一存储 无任何单点故障 数据多份冗余 存储容量可扩展 自动容错及故障自愈 1.2 Ceph三大角色组件及其作用 在Ceph存储集群中,包含了三大角色组件,他们在Ceph存储集群中表现为3个守护进程,分别是Ceph OSD、Monitor、MDS。当然还有其他的功能组件,但是最主要的是这三个。 Ceph OSD Ceph的OSD(Object Storage Device)守护进程。主要功能包括:存储数据、副本数据处理、数据恢复、数据回补、平衡数据分布,并将

weixin_40548182的博客 1万+

Ceph:关于Ceph 集群如何访问的一些笔记(3)

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》

山河已无恙 1703

Ceph蹚坑笔记 - (2)

Ceph RGW里的一些坑

JeegnChen的博客 4121

深入解析DDR5 SDRAM的ODT模式:时序图与状态表实战指南

本文深入解析了DDR5 SDRAM的ODT模式,详细阐述了其五种工作状态及其在读写操作中的动态切换逻辑。通过解读JESD79-5标准中的时序图与状态表,并结合模式寄存器配置实战,为硬件工程师和爱好者提供了优化信号完整性、提升系统稳定性的关键指南。

gpu4optimizer的博客 699

Ceph蹚坑笔记 - (3)

RGW的数据丢失和存储空间泄漏问题

JeegnChen的博客 3405

Kali Linux实战:5分钟复现永恒之蓝漏洞攻击(附Win7靶机配置指南)

本文提供了一份详细的Kali Linux实战指南,指导读者在5分钟内于隔离的虚拟环境中复现经典的永恒之蓝漏洞攻击。内容涵盖从Windows 7靶机配置、网络设置,到使用Nmap进行服务发现、利用Metasploit框架进行漏洞扫描与利用的全过程,并演示了基础的Meterpreter后渗透操作,旨在帮助网络安全学习者通过亲手实践深入理解SMB协议漏洞的攻防原理。

weixin_29313547的博客 196

Linux-ftrace-双nop机制的实现

linux-ftrace内核追踪-双nop机制的实现原理

qq_43707773的博客 1072

Ceph蹚坑笔记 - (4)

使用radosgw-agent过程中见到的一些问题

JeegnChen的博客 1345

7.26华为OD机试真题 新系统 - 炸弹人的雷区数量 (Java/Py/C/C++/Js/Go)

7.26华为OD机试真题 新系统 - 炸弹人的雷区数量 (Java/Py/C/C++/Js/Go)

算法大师! 792

【Ceph】Ceph介绍、原理、架构

Ceph技术栈/学习图谱

我的笔记本 1万+

大数据开发工程师必备面试题与解答

大数据开发岗位一直是互联网行业的热门方向,面试过程中既考察基础知识,也关注实际项目经验和问题解决能力。本文整理了等核心组件相关的高频面试题及参考解答,帮助大家高效准备面试。大数据面试不仅考察基础理论,更看重项目经验与问题解决能力。本文涵盖了等核心知识点及调优思路,希望能帮助你在面试中游刃有余。

X2829352498的博客 302

arcgis计算栅格平均值

打开FC栅格数据和非水体矢量数据 利用矢量数据提取对应栅格的非水体部分 2.1打开空间分析工具à提取分析à按掩膜提取 输入对应栅格数据和矢量数据 2.2提取结果如下 进行计算FC平均值 3.1打开空间分析工具à多元分析à波段集统计 输入对应栅格和输出路径 3.2统计结果如下 ...

Z_W_H_的博客 5371

Ceph集群部署(基于ceph-deploy)

一个集群自动化部署工具,使用较久,成熟稳定,被很多自动化工具所集成,可用于生产部署。3.admin管理节点配置ssh免密登录node节点。部署Ceph实验(基于ceph-deploy)2.安装ceph-deploy部署工具。10.解决HEALTH_WARN问题。7.使其它节点可以管理Ceph群集。1.创建一个Ceph工作目录。6.配置Ceph yum源。3.手动安装Ceph软件包。部署Ceph集群的方法。部署Ceph集群的方法。8.部署osd存储节点。Ceph生产环境推荐。三、部署Ceph集群。

2401_83784772的博客 4579

【WRF-UCM】BEP+BEM 模拟:README

【WRF-UCM】BEP+BEM 模拟:README

WW、forever的博客 223

Ceph-ansible 部署Ceph

简介:Ceph-ansible 部署Ceph 1、安装notario yum install -y python-pip pip install notario 这个包用yum装的版本是不符合要求的,需要使用pip进行安装 2、下载ceph-ansible的代码到本地 git clone https://github Ceph-ansible部署Ceph 1、安装notario [root@node1 ~]# yum install -y python-pip [root@n...

会哭的雨@的博客 2688

sec_uid

webcast_uid转sec_uid,webcast_uid转uid,webcast_uid转dy号

m0_56967679的博客 4420

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ceph 笔记

Ceph是一个开源的分布式存储系统,具有以下优势和特点:可扩展性:Ceph可以轻松地扩展到大规模的存储集群,支持数百或数千个节点,并能够处理PB级别的数据。弹性和高可用性:Ceph采用了复制和纠删码等机制来保证数据的弹性和高可用性。它在集群中自动复制数据副本,并且能够容忍多个故障或节点失效。统一的存储系统:Ceph提供了统一的接口和命名空间,使用户可以以各种方式访问数据,包括对象存储、文件系统和块设备。这简化了应用程序与存储交互的复杂性。自我管理:Ceph具有自动管理和自恢复的功能。

怨行客 966

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

下一篇: Ceph蹚坑笔记 - (2)
静夜恒辰
博客等级 码龄12年 8粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值