Skip to content

Commit

Permalink
mon/osdmonitor: fix incorrect output of "osd df" due to osd out
Browse files Browse the repository at this point in the history
If an osd is automatically marked as out, the output of "osd df"
is not right, as follow:

-5 10.00999        -  5586G  2989G  2596G     0    0     host ceph192-9-9-8
11  0.90999  1.00000   931G   542G   388G 58.25 0.99         osd.11
14  0.90999  1.00000   931G   530G   400G 56.97 0.97         osd.14
20  0.90999  1.00000   931G   716G   214G 76.99 1.31         osd.20
22  0.90999  1.00000   931G   477G   453G 51.29 0.87         osd.22
26  0.90999        0      0      0      0     0    0         osd.26
28  0.90999  1.00000   931G   587G   343G 63.09 1.07         osd.28
30  0.90999  1.00000   931G   602G   328G 64.75 1.10         osd.30
16  0.90999  1.00000   931G   589G   341G 63.34 1.08         osd.16
18  0.90999  1.00000   931G   530G   400G 56.93 0.97         osd.18
24  0.90999  1.00000   931G   202G   728G 21.77 0.37         osd.24
32  0.90999  1.00000   931G   477G   454G 51.23 0.87         osd.32

Two problems are identified from the above output:

1. the total capacity(total, total used, total avial)
only includes osd.32, osd.24, osd.18, osd.16, osd.30, osd.28, and other
healthy osds such as osd.11, osd.14 etc. are excluded.

2. the average utilization/deviation are forced resetted.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
  • Loading branch information
xiexingguo committed Jul 18, 2016
1 parent 7197f4c commit fdadce8
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/mon/OSDMonitor.cc
Expand Up @@ -796,6 +796,15 @@ class OSDUtilizationDumper : public CrushTreeDumper::Dumper<F> {

bool get_osd_utilization(int id, int64_t* kb, int64_t* kb_used,
int64_t* kb_avail) const {
if (osdmap->is_out(id)) {
// return true if current OSD is marked as out,
// so we can continue to process other OSDs under this bucket.
*kb = 0;
*kb_used = 0;
*kb_avail = 0;
return true;
}

typedef ceph::unordered_map<int32_t,osd_stat_t> OsdStat;
OsdStat::const_iterator p = pgm->osd_stat.find(id);
if (p == pgm->osd_stat.end())
Expand Down

0 comments on commit fdadce8

Please sign in to comment.