使用SNMP抓取远程服务器磁盘容量信息有误

公司服务器硬盘是44T,使用snmpwalk抓出来才2T,见下面红色字体

[email protected]:# snmpwalk -v 2c -c ********  .1.3.6.1.4.1.2021.9.1.6

iso.3.6.1.4.1.2021.9.1.6.1 = INTEGER: 226311584

iso.3.6.1.4.1.2021.9.1.6.2 = INTEGER: 0

iso.3.6.1.4.1.2021.9.1.6.3 = INTEGER: 0

iso.3.6.1.4.1.2021.9.1.6.4 = INTEGER: 10240

iso.3.6.1.4.1.2021.9.1.6.5 = INTEGER: 0

iso.3.6.1.4.1.2021.9.1.6.6 = INTEGER: 6608132

iso.3.6.1.4.1.2021.9.1.6.7 = INTEGER: 5120

iso.3.6.1.4.1.2021.9.1.6.8 = INTEGER: 25716020

iso.3.6.1.4.1.2021.9.1.6.9 = INTEGER: 2147483647

使用df -Hl 查看如下:

Filesystem                           Size  Used Avail Use% Mounted on

/dev/sdb                             44T   13G   42T   1% /data

通过查询相关资料,当磁盘大于16T时候,会出现此问题。

snmp在制作MIB库时,表的索引项是Integer32类型的,这就造成了错误。

2147483647 = 2^31 (the maximum limit of a signed 32 bit integer (2147483647)),超出此值都会显示为 2147483647 ,SMI定义了一定数量的OID返回的数据类型。其中就有Integer整型,Signed 32bit Integer (values between -2147483648 and 2147483647). 有符号32位整数(值范围: -2147483648 - +2147483648)

此BUGRedhat已经有说明,参见:https://bugzilla.redhat.com/show_bug.cgi?id=654384

文中说的很详细:In new Net-SNMP release it does not wrap at 2^31 but sticks to it if the real value is higher, i.e. reports 2147483647 for all devices bigger than 2 billion of allocation unit (instead of reporting ‘size modulo 2^21‘).

Redhat已经修复此bug,如下:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/5.7_Technical_Notes/net-snmp.html#RHBA-2011-1076

描述如下:

BZ#654384

Previously, the snmpd daemon strictly implemented RFC 2780. However, this specification no longer scales well with modern big storage devices with small allocation units, and consequently, snmpd reported a wrong value of the HOST-RESOURCES-MIB::hrStorageSize object when working with a large file system (larger than 16TB), because the accurate value would not fit into Integer32 as specified in the RFC. To address this issue, this update adds a new option to the /etc/snmp/snmpd.conf configuration file, realStorageUnits. By changing the value of this option to 0, users can now enable recalculating all values in hrStorageTable to ensure that the multiplication of hrStorageSize and hrStorageAllocationUnits always produces an accurate device size. On the other hand, the values of hrStorageAllocationUnits are artificial and do not represent the real size of the allocation unit on the storage device.

时间: 2024-10-12 20:13:27

使用SNMP抓取远程服务器磁盘容量信息有误的相关文章

python之抓取远程服务器根目录

源码来源于python网络编程,但3.x系列再用会有problem #!/usr/local/bin/python3.5 #coding:utf-8 import socket, sys port = 70 host = sys.argv[1] filename = sys.argv[2] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) s.sendall((filename + '\r\

下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片

将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 #region 图片下载[使用流.WebRequest进行保存] 4 /// <summary> 5 /// 图片下载[使用流.WebRequest进行保存] 6 /// </summary> 7 /// <param name="fileUrl">图片URL地址(例如:http://img.baidu.com/video/img/video

php使用curl简单抓取远程url的方法

这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php使用curl抓取远程url的方法.分享给大家供大家参考.具体如下: cURL是一个非常有用的php库,可以用来连接不通类型的服务器和协议,下面是一个最基本的范例用来抓取远程网页 ? 1 2 3 4 5 6 <?php $c = curl_init('http://www.w3mentor.com/robots.txt'); curl_seto

百度UEditor编辑器关闭抓取远程图片功能(默认开启)

这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来了:今天在写百度UEditor编辑器的[取远程图片功能]时有碰到:该功能如何关闭了? 又花了15分钟左右的时间查阅了[官方文档]以及[官方论坛],都没有找到解决办法,那就查阅下源文件看看,是否有相关的判断呢(本人JS非常烂) 于是马上查阅:ueditor.all.js文件,发现如下代码 // plu

自动发送密码抓取远程日志用Shell脚本如何实现?

在linux系统中,如何用shell脚本抓取远程日志?分析线上的日志会有一个困境,机器太多,如果每台都登录上去看不太现实,但是下载下来更麻烦因为每台SCP都要求输入密码.于是我便写了一个自动抓取远程日志的脚本,实现在基本功能. 代码: #!/usr/bin/expect -f if { $argc !=1 && $argc !=2 } {send_user "没有输入远程日志文件名.\n"send_user "格式是:get.sh ${remote_log}

ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片

ASP.NET下载远程图片保存到本地的方法.保存抓取远程图片 2012-05-16 11:25:51     我来说两句      收藏    我要投稿 以下介绍两种方法:1.利用WebRequest,WebResponse 类WebRequest wreq=WebRequest.Create("http://up.2cto.com/2012/0516/20120516112717995.gif");    HttpWebResponse wresp=(HttpWebResponse)

抓取远程图片到本地,你会用什么函数?

方式有: <?php $img = file_get_contents('http://www.xfcodes.com/ img/baidu_logo.gif'); file_put_contents('1.gif',$img); echo '<img src="1.gif">'; 这段抓取远程图片至本地在运行中360极速.火狐.谷歌没有出现错误,可以正常运行. 另外还有: <?php $pagecontent = file_get_contents('http

批处理映射远程服务器磁盘

之前找了很多代码都没有生效,原来是忘记在服务器磁盘上加$了,在这里记录下,免得以后再忘了,听说这个利用的是一个叫做IPC的漏洞,代码如下, net use y: \\127.0.0.1\C$ "password" /user:"namename" y表示,映射成功之后,服务器的硬盘在本地的盘符为y盘,以防冲突,选择字母靠后一点的,127.0.0.1表示的是你的服务器地址,password表示你的服务器的密码,namename表示你用老登陆的用户名,C$表示要把服务器

使用Curl进行抓取远程内容时url中文编码问题 转载

PHP中对于URL进行编码,可以使用 urlencode() 或者 rawurlencode(),二者的区别是前者把空格编码为 '+',而后者把空格编码为 '%20',不过应该注意的是,在编码时应该只对部分URL编码,否则URL中的冒号和反斜杠也会被转义.下面是详细解释: string urlencode( string str) 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+). 例子 1 :urlencode函数与