]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: warn about misplaced objects, just like degraded
authorSage Weil <sage@redhat.com>
Sat, 21 Jun 2014 00:56:25 +0000 (17:56 -0700)
committerSage Weil <sage@redhat.com>
Sat, 16 Aug 2014 20:18:53 +0000 (13:18 -0700)
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/Monitor.cc
src/mon/Monitor.h
src/mon/PGMap.cc
src/mon/PGMonitor.cc

index 5323e1f90832c8b60b00ff05e5b57fcfd9c83692..1c75c74268c0d8747ef636926628f64b1c27a6a6 100644 (file)
@@ -472,6 +472,7 @@ int Monitor::preinit()
     pcb.add_u64(l_cluster_num_pg_peering, "num_pg_peering");
     pcb.add_u64(l_cluster_num_object, "num_object");
     pcb.add_u64(l_cluster_num_object_degraded, "num_object_degraded");
+    pcb.add_u64(l_cluster_num_object_misplaced, "num_object_misplaced");
     pcb.add_u64(l_cluster_num_object_unfound, "num_object_unfound");
     pcb.add_u64(l_cluster_num_bytes, "num_bytes");
     pcb.add_u64(l_cluster_num_mds_up, "num_mds_up");
index c08e307fa7059810eee75bff243eaec92223a952..5c8671c465b9adc3859d4c6faa6c6b2bd3b4eeff 100644 (file)
@@ -76,6 +76,7 @@ enum {
   l_cluster_num_pg_peering,
   l_cluster_num_object,
   l_cluster_num_object_degraded,
+  l_cluster_num_object_misplaced,
   l_cluster_num_object_unfound,
   l_cluster_num_bytes,
   l_cluster_num_mds_up,
index 4c5c6ba3c592311f691c8b82af840c49f27092ae..b458df550ad081cf6201ec021f7f1d2cd50ba110 100644 (file)
@@ -677,7 +677,7 @@ void PGMap::dump_osd_stats(Formatter *f) const
 void PGMap::dump_pg_stats_plain(ostream& ss,
                                const ceph::unordered_map<pg_t, pg_stat_t>& pg_stats) const
 {
-  ss << "pg_stat\tobjects\tmip\tdegr\tunf\tbytes\tlog\tdisklog\tstate\tstate_stamp\tv\treported\tup\tup_primary\tacting\tacting_primary\tlast_scrub\tscrub_stamp\tlast_deep_scrub\tdeep_scrub_stamp" << std::endl;
+  ss << "pg_stat\tobjects\tmip\tdegr\tmisp\tunf\tbytes\tlog\tdisklog\tstate\tstate_stamp\tv\treported\tup\tup_primary\tacting\tacting_primary\tlast_scrub\tscrub_stamp\tlast_deep_scrub\tdeep_scrub_stamp" << std::endl;
   for (ceph::unordered_map<pg_t, pg_stat_t>::const_iterator i = pg_stats.begin();
        i != pg_stats.end(); ++i) {
     const pg_stat_t &st(i->second);
@@ -686,6 +686,7 @@ void PGMap::dump_pg_stats_plain(ostream& ss,
       //<< "\t" << st.num_object_copies
        << "\t" << st.stats.sum.num_objects_missing_on_primary
        << "\t" << st.stats.sum.num_objects_degraded
+       << "\t" << st.stats.sum.num_objects_misplaced
        << "\t" << st.stats.sum.num_objects_unfound
        << "\t" << st.stats.sum.num_bytes
        << "\t" << st.log_size
@@ -890,6 +891,23 @@ void PGMap::recovery_summary(Formatter *f, ostream *out,
     }
     first = false;
   }
+  if (delta_sum.stats.sum.num_objects_misplaced) {
+    double pc = (double)delta_sum.stats.sum.num_objects_misplaced /
+      (double)delta_sum.stats.sum.num_object_copies * (double)100.0;
+    char b[20];
+    snprintf(b, sizeof(b), "%.3lf", pc);
+    if (f) {
+      f->dump_unsigned("misplaced_objects", delta_sum.stats.sum.num_objects_misplaced);
+      f->dump_unsigned("misplaced_total", delta_sum.stats.sum.num_object_copies);
+      f->dump_string("misplaced_ratio", b);
+    } else {
+      if (!first)
+       *out << "; ";
+      *out << delta_sum.stats.sum.num_objects_misplaced
+          << "/" << delta_sum.stats.sum.num_object_copies << " objects misplaced (" << b << "%)";
+    }
+    first = false;
+  }
   if (delta_sum.stats.sum.num_objects_unfound) {
     double pc = (double)delta_sum.stats.sum.num_objects_unfound /
       (double)delta_sum.stats.sum.num_objects * (double)100.0;
index 807a93d3800a093f8b563d48f7ed520f39aa0d64..48365518a398d8ed7a8657928abce30e9c33cce5 100644 (file)
@@ -114,6 +114,7 @@ void PGMonitor::update_logger()
 
   mon->cluster_logger->set(l_cluster_num_object, pg_map.pg_sum.stats.sum.num_objects);
   mon->cluster_logger->set(l_cluster_num_object_degraded, pg_map.pg_sum.stats.sum.num_objects_degraded);
+  mon->cluster_logger->set(l_cluster_num_object_misplaced, pg_map.pg_sum.stats.sum.num_objects_misplaced);
   mon->cluster_logger->set(l_cluster_num_object_unfound, pg_map.pg_sum.stats.sum.num_objects_unfound);
   mon->cluster_logger->set(l_cluster_num_bytes, pg_map.pg_sum.stats.sum.num_bytes);
 }