From: Greg Farnum Date: Mon, 5 Jun 2017 19:27:46 +0000 (-0700) Subject: osdmap: do not automatically create an rbd pool on cluster creation; skip pool 0 X-Git-Tag: ses5-milestone8~1^2~21^2~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=51838305a24bb17f77817068677f8a621715c786;p=ceph.git osdmap: do not automatically create an rbd pool on cluster creation; skip pool 0 We don't use pool ID 0 any more because CephFS can't handle it. Update the user quick-start to include it, and add some links to support that process. Fix the tests to handle the new state of life. Signed-off-by: Greg Farnum --- diff --git a/doc/rados/operations/placement-groups.rst b/doc/rados/operations/placement-groups.rst index 98e13f8608b6..d822373dd168 100644 --- a/doc/rados/operations/placement-groups.rst +++ b/doc/rados/operations/placement-groups.rst @@ -296,6 +296,9 @@ resources. However, if 1,000 pools were created with 512 placement groups each, the OSDs will handle ~50,000 placement groups each and it would require significantly more resources and time for peering. +You may find the `PGCalc`_ tool helpful. + + .. _setting the number of placement groups: Set the Number of Placement Groups diff --git a/doc/start/quick-rbd.rst b/doc/start/quick-rbd.rst index 59c70cd12c29..eb489e76b8b8 100644 --- a/doc/start/quick-rbd.rst +++ b/doc/start/quick-rbd.rst @@ -47,6 +47,10 @@ Install Ceph directory. Ensure that the keyring file has appropriate read permissions (e.g., ``sudo chmod +r /etc/ceph/ceph.client.admin.keyring``). +Create an rbd pool +================== +#. On the admin node, use the ``ceph`` tool to `Create a Pool`_ + (we recommend the name 'rbd'). Configure a Block Device ======================== diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index aee8256e077d..c37ed79d0071 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -3231,8 +3231,7 @@ int OSDMap::build_simple(CephContext *cct, epoch_t e, uuid_d &fsid, int nosd, int pg_bits, int pgp_bits) { ldout(cct, 10) << "build_simple on " << num_osd - << " osds with " << pg_bits << " pg bits per osd, " - << dendl; + << " osds" << dendl; epoch = e; set_fsid(fsid); created = modified = ceph_clock_now(); @@ -3268,13 +3267,6 @@ int OSDMap::build_simple(CephContext *cct, epoch_t e, uuid_d &fsid, set_max_osd(maxosd + 1); } - // pgp_num <= pg_num - if (pgp_bits > pg_bits) - pgp_bits = pg_bits; - - vector pool_names; - pool_names.push_back("rbd"); - stringstream ss; int r; if (nosd >= 0) @@ -3283,35 +3275,6 @@ int OSDMap::build_simple(CephContext *cct, epoch_t e, uuid_d &fsid, r = build_simple_crush_map_from_conf(cct, *crush, &ss); assert(r == 0); - int poolbase = get_max_osd() ? get_max_osd() : 1; - - int const default_replicated_rule = - crush->get_osd_pool_default_crush_replicated_ruleset(cct); - assert(default_replicated_rule >= 0); - - for (auto &plname : pool_names) { - int64_t pool = ++pool_max; - pools[pool].type = pg_pool_t::TYPE_REPLICATED; - pools[pool].flags = cct->_conf->osd_pool_default_flags; - if (cct->_conf->osd_pool_default_flag_hashpspool) - pools[pool].set_flag(pg_pool_t::FLAG_HASHPSPOOL); - if (cct->_conf->osd_pool_default_flag_nodelete) - pools[pool].set_flag(pg_pool_t::FLAG_NODELETE); - if (cct->_conf->osd_pool_default_flag_nopgchange) - pools[pool].set_flag(pg_pool_t::FLAG_NOPGCHANGE); - if (cct->_conf->osd_pool_default_flag_nosizechange) - pools[pool].set_flag(pg_pool_t::FLAG_NOSIZECHANGE); - pools[pool].size = cct->_conf->osd_pool_default_size; - pools[pool].min_size = cct->_conf->get_osd_pool_default_min_size(); - pools[pool].crush_rule = default_replicated_rule; - pools[pool].object_hash = CEPH_STR_HASH_RJENKINS; - pools[pool].set_pg_num(poolbase << pg_bits); - pools[pool].set_pgp_num(poolbase << pgp_bits); - pools[pool].last_change = epoch; - pool_name[pool] = plname; - name_pool[plname] = pool; - } - for (int i=0; isize = 3; p->set_pg_num(64); @@ -73,6 +78,17 @@ public: p->type = pg_pool_t::TYPE_ERASURE; p->crush_rule = r; new_pool_inc.new_pool_names[pool_id] = "ec"; + // and a replicated pool + pool_id = ++new_pool_inc.new_pool_max; + assert(pool_id == my_rep_pool); + p = new_pool_inc.get_new_pool(pool_id, &empty); + p->size = 3; + p->set_pg_num(64); + p->set_pgp_num(64); + p->type = pg_pool_t::TYPE_REPLICATED; + p->crush_rule = 0; + p->set_flag(pg_pool_t::FLAG_HASHPSPOOL); + new_pool_inc.new_pool_names[pool_id] = "reppool"; osdmap.apply_incremental(new_pool_inc); } unsigned int get_num_osds() { return num_osds; } @@ -160,7 +176,8 @@ TEST_F(OSDMapTest, Features) { TEST_F(OSDMapTest, MapPG) { set_up_map(); - pg_t rawpg(0, 0, -1); + std::cerr << " osdmap.pool_max==" << osdmap.get_pool_max() << std::endl; + pg_t rawpg(0, my_rep_pool, -1); pg_t pgid = osdmap.raw_pg_to_pg(rawpg); vector up_osds, acting_osds; int up_primary, acting_primary; @@ -173,14 +190,13 @@ TEST_F(OSDMapTest, MapPG) { ASSERT_EQ(old_up_osds, up_osds); ASSERT_EQ(old_acting_osds, acting_osds); - ASSERT_EQ(osdmap.get_pg_pool(0)->get_size(), up_osds.size()); + ASSERT_EQ(osdmap.get_pg_pool(my_rep_pool)->get_size(), up_osds.size()); } TEST_F(OSDMapTest, MapFunctionsMatch) { // TODO: make sure pg_to_up_acting_osds and pg_to_acting_osds match set_up_map(); - - pg_t rawpg(0, 0, -1); + pg_t rawpg(0, my_rep_pool, -1); pg_t pgid = osdmap.raw_pg_to_pg(rawpg); vector up_osds, acting_osds; int up_primary, acting_primary; @@ -208,7 +224,7 @@ TEST_F(OSDMapTest, MapFunctionsMatch) { TEST_F(OSDMapTest, PrimaryIsFirst) { set_up_map(); - pg_t rawpg(0, 0, -1); + pg_t rawpg(0, my_rep_pool, -1); pg_t pgid = osdmap.raw_pg_to_pg(rawpg); vector up_osds, acting_osds; int up_primary, acting_primary; @@ -222,7 +238,7 @@ TEST_F(OSDMapTest, PrimaryIsFirst) { TEST_F(OSDMapTest, PGTempRespected) { set_up_map(); - pg_t rawpg(0, 0, -1); + pg_t rawpg(0, my_rep_pool, -1); pg_t pgid = osdmap.raw_pg_to_pg(rawpg); vector up_osds, acting_osds; int up_primary, acting_primary; @@ -250,7 +266,7 @@ TEST_F(OSDMapTest, PGTempRespected) { TEST_F(OSDMapTest, PrimaryTempRespected) { set_up_map(); - pg_t rawpg(0, 0, -1); + pg_t rawpg(0, my_rep_pool, -1); pg_t pgid = osdmap.raw_pg_to_pg(rawpg); vector up_osds; vector acting_osds; @@ -274,7 +290,7 @@ TEST_F(OSDMapTest, CleanTemps) { OSDMap::Incremental pgtemp_map(osdmap.get_epoch() + 1); OSDMap::Incremental pending_inc(osdmap.get_epoch() + 2); - pg_t pga = osdmap.raw_pg_to_pg(pg_t(0, 0)); + pg_t pga = osdmap.raw_pg_to_pg(pg_t(0, my_rep_pool)); { vector up_osds, acting_osds; int up_primary, acting_primary; @@ -284,7 +300,7 @@ TEST_F(OSDMapTest, CleanTemps) { up_osds.begin(), up_osds.end()); pgtemp_map.new_primary_temp[pga] = up_primary; } - pg_t pgb = osdmap.raw_pg_to_pg(pg_t(1, 0)); + pg_t pgb = osdmap.raw_pg_to_pg(pg_t(1, my_rep_pool)); { vector up_osds, acting_osds; int up_primary, acting_primary; @@ -310,7 +326,7 @@ TEST_F(OSDMapTest, CleanTemps) { TEST_F(OSDMapTest, KeepsNecessaryTemps) { set_up_map(); - pg_t rawpg(0, 0, -1); + pg_t rawpg(0, my_rep_pool, -1); pg_t pgid = osdmap.raw_pg_to_pg(rawpg); vector up_osds, acting_osds; int up_primary, acting_primary;