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 ab685f7
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/mon/OSDMonitor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -808,8 +808,18 @@ class OSDUtilizationDumper : public CrushTreeDumper::Dumper<F> {

bool get_bucket_utilization(int id, int64_t* kb, int64_t* kb_used,
int64_t* kb_avail) const {
if (id >= 0)
if (id >= 0) {
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;
}

return get_osd_utilization(id, kb, kb_used, kb_avail);
}

*kb = 0;
*kb_used = 0;
Expand Down

0 comments on commit ab685f7

Please sign in to comment.