OSD::consume_map() 进行 PG 处理,包括删除 Pool 不存在的 PG; 更新 PG epoch(OSDmap epoch) 到磁盘(LevelDB); 产生 AdvMap 和 ActMap 事件,触发 PG 的状态机 state_machine 进行状态更新。 OSD::activate_map() 根据需要决定是否启动 recovery_tp 线程
~]$ ceph osd pool create<poolname><pgnum><pgpnum>[type] pool name:存储池名称,必须唯一。 pg num:存储池中的pg数量。 pgp num:用于归置的pg数量,默认与pg数量相等。 type:指定存储池的类型,有replicated和erasure, 默认为replicated。 创建一个副本池如下。 ~]$ ceph osd poolcreatetest0164 查看 列出...
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 的处理...
通过实验总结: (1)PG是指定存储池存储对象的目录有多少个,PGP是存储池PG的OSD分布组合个数 (2)PG的增加会引起PG内的数据进行分裂,分裂相同的OSD上新生成的PG当中 (3)PGP的增加会引起部分PG的分布进行变化,但是不会引起PG内对象的变动 pg和pool的关系:pool也是一个逻辑存储概念,我们创建存储池pool的时候,都需要...
Pool由若干个PG组成,其属性包括:所有者和访问权限、Object副本数目、PG数目和CRUSH规则集合等。用户可以...
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...
客户端创建一个pool,需要为这个pool指定pg的数量。 创建pool/image rbd设备进行挂载。 用户写入的数据进行切块,每个块的大小默认为4M,并且每个块都有一个名字,名字就是object+序号。 将每个object通过pg进行副本位置的分配。 pg根据cursh算法会寻找3个osd,把这个object分别保存在这三个osd上。
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \ [crush-rule-name] [expected-num-objects] ceph osd pool create {pool-name} {pg-num} {pgp-num} erasure \ [erasure-code-profile] [crush-rule-name] [expected_num_objects] Where: {pool-name} Description The name...
5.Pool的创建,管理与使用 在创建pool之前,要了解两个概念 Pool和PG: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 Pool是一个抽象的存储池,它是PG之上的一层逻辑 它规定了数据冗余的类型以及对应的副本分布策略。目前实现了两种pool类型:replicated类型和Erasure Code类型。关系说明:(1)一个pool由多个PG构...
pg的计算规则如下: Total PGs = (Total_number_of_OSD * 100 / max_replication_count) / pool_count 因此按照该环境修改“pgnum”和“pgpnum”如下: ceph osd pool set fs_metadata pg_num 256 ceph osd pool set fs_metadata pgp_num 256 ceph osd pool set fs_data pg_num 2048 ceph osd pool se...