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...
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 的处理...
bool OSDMonitor::prepare_pool_op(MonOpRequestRef op) { case POOL_OP_CREATE_UNMANAGED_SNAP: { // 这个pp的数据类型是pg_pool_t,就是pool的内存结构 uint64_t snapid = pp.add_unmanaged_snap( osdmap.require_osd_release < ceph_release_t::octopus); encode(snapid, reply_data); changed = tr...
pg和pool的关系:pool也是一个逻辑存储概念,我们创建存储池pool的时候,都需要指定pg和pgp的数量,逻辑上来说pg是属于某个存储池的,就有点像object是属于某个pg的。 以下这个图表明了存储数据,object、pg、pool、osd、存储磁盘的关系 注:以上为引用文章【1】 ...
~]$ ceph osd pool create<poolname><pgnum><pgpnum>[type] pool name:存储池名称,必须唯一。 pg num:存储池中的pg数量。 pgp num:用于归置的pg数量,默认与pg数量相等。 type:指定存储池的类型,有replicated和erasure, 默认为replicated。 创建一个副本池如下。
用于CephFS的快照,在Ceph 16.x以后的版本中,CephFS默认情况下已经开启了快照功能的,但是由于CephFS的快照也是基于Pool Snapshot开发的因此在多文件系统的情况时,MDS的集群之间snapID相互独立,这个快照管理带来了极大的不便,此种情况下官方不推荐开启快照功能。
void OSDMap::_pg_to_raw_osds( const pg_pool_t& pool, pg_t pg, vector<int> *osds, ps_t *ppps) const { // map to osds[] ps_t pps = pool.raw_pg_to_pps(pg); // placement ps 到此就获取了 由 pgid + poolid 的hash值,可以唯一确定PG unsigned size = pool.get_size(); /...
ceph_stable_mod(ps, pgp_num, pgp_mask) :这一步是获取真实pg的id,而且这个函数也是ceph PG分裂和迁移非常核心的一部分; hash(pgid, pool_id) :这一步是将 pg 和poolid进行哈希得到唯一值 pps, 这个数值是作为选择osd的参数。 主要输入因子: obj,对象名字 pg -〉osds 映射 crush算法输入因子: x:hash...
osd: pg_pool_t::encode(): be compatible with Hammer <= 0.94.6 (issue#19508, pr#14392, Alexey Sheplyakov) osd: pre-jewel “osd rm” incrementals are misinterpreted (issue#19119, pr#13884, Ilya Dryomov) osd: preserve allocation hint attribute during recovery (issue#19083, pr#13647, ya...