利用64bit的mibs计算Linux设备的存储大小
本文记录的是如何使用 64-bit 的mib计算Linux设备的存储大小。
为了解决snmp采集大容量(>2T)Linux设备时dskTotal越界的问题,
在snmp5.5+版本中引入了64bit的mibs, 包括
(UCD-SNMP-MIB::dskTotalLow,UCD-SNMP-MIB::dskTotalHigh)
,(UCD-SNMP-MIB::dskAvailLow,UCD-SNMP-MIB::dskAvailHigh)
,(UCD-SNMP-MIB::dskUsedLow,UCD-SNMP-MIB::dskUsedHigh)
,
那么如何利用64bit的mibs计算存储大小呢?
先看看dskTotalLow
的说明:
1 | CaryaLiu-MacBook-Pro:gitblog carya$ snmptranslate -On -Td UCD-SNMP-MIB::dskTotalLow |
从说明中可以看出,要计算Linux设备的存储大小,需要将dskTotalLow
的低32位与dskTotalHigh
的高32位组合起来,怎么处理呢,看下面的例子。
例如,采集到如下数据:
1 | UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 1071652864 |
低32位转换为十六进制为0x3FE0 2000
(=1,071,652,864),高32位转换为十六进制为0x0B
(=11),将它们组合起来就是0x0B 3FE0 2000
,
然后再将其转换为10进制就得到了设备的存储大小了。
使用Java处理如下:
1 | Long dskTotalLow = 1071652864L; |
控制台输出内容如下:
1 | the size of disk is 48316293120kBytes. |
参考: SNMP UCD dskTotalLow + dskTotalHigh
目前已转行教育行业,欢迎加微信交流:CaryaLiu