ceph——创建pg

bool OSD::ms_dispatch(Message *m)
|---如果是标记osd down的话,直接返回service.got_stop_ack(), return true
|---如果osd已经已经停止服务,则return true
|---do_waiters()      //list<OpRequestRef> finished 只保存pg创建的请求
    |---dispatch_op(next)
        |---handle_pg_create(op)   //处理新的请求的时候,需要等待创建pg的请求处理完成
|---_dispatch(m)
    |---handle_osd_map(static_cast<MOSDMap*>(m))    //CEPH_MSG_OSD_MAP 创建osd map
        |---
    |---handle_scrub(static_cast<MOSDScrub*>www.chaoyueyule.com/ (m));  //MSG_OSD_SCRUB
        |---
    |---handle_command(static_cast<MCommand*>(m))  //MSG_COMMAND
        |---
    |---osdmap    //MSG_OSD_PG_CREATE,如果是创建pg的前提是osdmap存在
        |---如果osdmap不存在,则waiting_for_osdmap.push_back(op),然后延时执行
    |---dispatch_op(op)    //只处理MSG_OSD_PG_CREATE
        |---handle_pg_create(op)
            |---

void OSD::handle_pg_create(OpRequestRef op)
|---require_mon_peer //如果不是由MON发过来的消息,则不能执行
|---require_same_or_newer_map  www.huayiyul.com //如果osdmap的epoch比消息中的epoch新,则不能执行
|---op->mark_started()   //www.taohuayuan178.com op www.yingka178.com is struct OpRequest : public TrackedOp
    |---OpRequest::mark_flag_point
|---for
    |---如果处于split(分裂)状态,则不用处理
    |---如果已经存在pool,则不用处理
    |---osdmap->pg_to_up_acting_osds(on, &up, www.00534.cn &up_primary, &acting, &acting_primary)  //OSDMap.h
        |---void OSDMap::_pg_to_up_acting_osds(
            |---acting_primary 获取主OSD的id
    |---role = osdmap->calc_pg_role   //OSDMap::calc_pg_role
        |---OSDMap::calc_pg_rank    //确定OSD的角色
    |---如果当前osd不是主osd(MON只给主OSD发消息),则不能处理
    |---history.same_primary_since > m->epoch  如果之前处理的最新的epoch比该消息中的epoch新,则不能处理
    |---enqueue_peering_evt
|---op_shardedwq.queue   //入队,等待process处理

原文地址:https://www.cnblogs.com/qwangxiao/p/9268912.html

时间: 2024-10-10 18:37:18

ceph——创建pg的相关文章

调整ceph的pg数(pg_num, pgp_num)

https://www.jianshu.com/p/ae96ee24ef6c 调整ceph的pg数 PG全称是placement groups,它是ceph的逻辑存储单元.在数据存储到cesh时,先打散成一系列对象,再结合基于对象名的哈希操作.复制级别.PG数量,产生目标PG号.根据复制级别的不同,每个PG在不同的OSD上进行复制和分发.可以把PG想象成存储了多个对象的逻辑容器,这个容器映射到多个具体的OSD.PG存在的意义是提高ceph存储系统的性能和扩展性. 如果没有PG,就难以管理和跟踪数

Ceph —— 均衡PG

Ceph —— 均衡PG 日常工作中,我们常常会发现PG不均衡,而集群中只要有一个OSD先达到full的状态,则整个集群都无法写入数据,所以为了尽可能的提高集群存储空间的利用率,我们都希望PG尽可能的均匀分布在OSD上. 出现PG不均衡最常见的背景情况: 刚刚安装部署Ceph集群完毕 集群扩容或是其他情况,进行了加盘的操作,OSD数量发生变化 为了节省日常工作的时间,针对PG均衡问题,写了个python脚本: version : ceph_luminous (12.2.2) 1 #!/usr/b

Ceph中PG和PGP的区别

http://www.zphj1987.com/2016/10/19/Ceph%E4%B8%ADPG%E5%92%8CPGP%E7%9A%84%E5%8C%BA%E5%88%AB/ 一.前言 首先来一段英文关于PG和PGP区别的解释: PG = Placement GroupPGP = Placement Group for Placement purpose pg_num = number of placement groups mapped to an OSD When pg_num is

ceph 创建和删除osd

1.概述 本次主要是使用ceph-deploy工具和使用ceph的相关命令实现在主机上指定磁盘创建和删除osd,本次以主机172.16.1.96(主机名hadoop96)为例,此主机系统盘为/dev/sda, 其他盘有/dev/sdb./dev/sdc和/dev/sdd,这几个盘都是裸磁盘,目的是使用这几个盘的组合创建osd. 磁盘情况如下图: 2.创建osd 使用ceph-deploy(工具安装在hadoop95上)创建osd,这里创建两个osd,其中一个数据和日志在同一个磁盘上,另外的osd

ceph修改pg inconsistent

异常情况 1.收到异常情况如下: HEALTH_ERR 37 scrub errors; Possible data damage: 1 pg inconsistent 2.查看详细信息 #ceph health detail HEALTH_ERR 37 scrub errors; Possible data damage: 1 pg inconsistent OSD_SCRUB_ERRORS 37 scrub errors PG_DAMAGED Possible data damage: 1

ceph集群常用命令

结合网络.官网.手动查询等多方渠道,整理ceph维护管理常用命令,并且梳理常规命令在使用过程中的逻辑顺序.另外整理期间发现ceph 集群的命令体系有点乱,详细情况各自体验. 一:ceph集群启动.重启.停止 1:ceph 命令的选项如下: 选项简写描述 --verbose-v详细的日志. --valgrindN/A(只适合开发者和质检人员)用 Valgrind 调试. --allhosts-a在 ceph.conf 里配置的所有主机上执行,否 则它只在本机执行. --restartN/A核心转储

ceph运维命令合集

一.集群 1.启动一个ceph进程 启动mon进程 [[email protected] ~]#203.109 service ceph start mon.ceph-mon1 启动msd进程 [[email protected] ~]#203.109 service ceph start mds.ceph-mds1 启动osd进程 [[email protected] ~]#203.109 service ceph start osd.0 2.查看机器的监控状态 [[email protect

Ceph架构及性能优化

对分布式存储系统的优化离不开以下几点: 1. 硬件层面 硬件规划 SSD选择 BIOS设置 2. 软件层面 Linux OS Ceph Configurations PG Number调整 CRUSH Map 其他因素 硬件层面 1.  CPU ceph-osd进程在运行过程中会消耗CPU资源,所以一般会为每一个ceph-osd进程绑定一个CPU核上. ceph-mon进程并不十分消耗CPU资源,所以不必为ceph-mon进程预留过多的CPU资源. ceph-msd也是非常消耗CPU资源的,所以

ceph运维常用指令

一.集群 1.启动一个ceph 进程 启动mon进程 service ceph start  mon.node1 启动msd进程 service ceph start mds.node1 启动osd进程 service ceph start osd.0 2.查看机器的监控状态 [root@client ~]# ceph health HEALTH_OK 3.查看ceph的实时运行状态 [root@client ~]# ceph -w cluster be1756f2-54f7-4d8f-8790