spg_t pgid = info->pgid; int up_primary, acting_primary; vector<int> up, acting; startmap->pg_to_up_acting_osds(pgid.pgid, &up, &up_primary, &acting, &acting_primary); const pg_pool_t* pp = startmap->get_pg_pool(pgid.pool()); create_pg_collection(rctx.transaction, pgid...
创建存储池Pool时,是通过客户端给Monitor发送创建存储池Pool的命令,创建的存储池最终存入OSDMap,OSDMonitor监控到OSDMap发生变化,Monitor对该存储池Pool对应的主OSD发送创建PG的命令。 源码流程: } else if (prefix == "osd pool create") { (1)检查该存储池pool是否已经存在了:若已存在,就返回。 int64_t pool...
OSD::consume_map() 进行 PG 处理,包括删除 Pool 不存在的 PG; 更新 PG epoch(OSDmap epoch) 到磁盘(LevelDB); 产生 AdvMap 和 ActMap 事件,触发 PG 的状态机 state_machine 进行状态更新。 OSD::activate_map() 根据需要决定是否启动 recovery_tp 线程池进行 PG 恢复。 在OSD端,PG 负责 I/O 的处理...
OSD::consume_map() 进行 PG 处理,包括删除 Pool 不存在的 PG; 更新 PG epoch(OSDmap epoch) 到磁盘(LevelDB); 产生 AdvMap 和 ActMap 事件,触发 PG 的状态机 state_machine 进行状态更新。 OSD::activate_map() 根据需要决定是否启动 recovery_tp 线程池进行 PG 恢复。 在OSD端,PG 负责 I/O 的处理...
~]$ ceph osd pool create [type] pool name:存储池名称,必须唯一。 pg num:存储池中的pg数量。 pgp num:用于归置的pg数量,默认与pg数量相等。 type:指定存储池的类型,有replicated和erasure, 默认为replicated。 创建一个副本池如下。 ~]$ ceph osd pool create test01 64 ...
~]$ ceph osd pool create<poolname><pgnum><pgpnum>[type] pool name:存储池名称,必须唯一。 pg num:存储池中的pg数量。 pgp num:用于归置的pg数量,默认与pg数量相等。 type:指定存储池的类型,有replicated和erasure, 默认为replicated。 创建一个副本池如下。
1.说明 1.1介绍 pool是ceph存储数据时的逻辑分区,它起到namespace的作用。其他分布式存储系统,比如Mogilefs、Couchbase、Swift都有pool的概念,只是叫法不同。每个pool包含一定数量的PG,PG里的对象被映射到不同的OSD上,因此pool是分布到整个集群的。 2. 常用操作 2.1 查
ceph osd pool create pool_name 1024 三、ceph pg命令 1.ceph pg dump 打印所有 PG 的详细信息,包括 PG ID、状态、主副本位置、数据量等 # ceph pg dump dumped all version 33420 stamp 2024-08-16T09:56:59.472500+0800 last_osdmap_epoch 0 last_pg_scan 0 PG_STAT OBJECTS MISSING_ON_PRIMARY DEGR...
1.11 PG在触发Peering过程时机: 1. statechart状态机 Ceph在处理PG的状态转换时,使用了boost库提供的statechart状态机。因此先简单介绍一下statechart状态机的基本概念和涉及的相关知识,以便更好地理解Peering过程PG的状态机转换流程。下面例举时截取了PG状态机的部分代码。
pg 1.0 is active+undersized+degraded, acting [0,2] pg 1.1 is active+undersized+degraded, acting [2,0] d. 客户端IO操作 #写入对象 $ bin/rados -p test_pool put myobject ceph.conf #读取对象到文件 $ bin/rados -p test_pool get myobject.old ...