21.03.2013 14:04, Lystopad Aleksandr пишет: > On Thu, Mar 21, 2013 at 01:30:26PM +0700 > eu...@grosbein.net wrote about "Re: [freebsd] bsnmpd and > hrStorageAllocationUnits": > >> То есть, net-snmp таки делает трансляцию сам, причём по дефолту. >> Осталось всего ничего: дописать такую же трансляцию в код >> bsnmpd/modules/snmp_hostres > > Евгений, спасибо. > Хорошая раобта! > Я как это и подозревал, но думал, что есть способ решить это не > залезая в исходники.. :(
Патч получился достаточно тривиальный: http://www.grosbein.net/freebsd/patches/shift.diff Применять: cd /usr/src patch < shift.diff cd usr.sbin/bsnmpd make all install service bsnmpd restart Патч включает безусловную трансляцию значений для файловых систем, у которых размер больше чем INT_MAX блоков, 2^31*512 байт, 1 терабайт. Потестил у себя, работает: # truncate -s 3T f # делаем трехтерабайтный дырявый файл # mdconfig -af f md0 # newfs -O2 -b 4096 -f 512 -i $((1024*1024*1024)) /dev/md0 >/dev/null #файл разбухает до 18G # mount /dev/md0 /mnt/tmp # rmdir /mnt/tmp/.snap; dd if=/dev/zero bs=2048 count=1000 of=/mnt/tmp/f2 # df -k /mnt/tmp Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/md0 3217454200 2004 2960055860 0% /mnt/tmp snmpwalk теперь говорит: HOST-RESOURCES-MIB::hrStorageType.393 = OID: HOST-RESOURCES-TYPES::hrFSBerkeleyFFS HOST-RESOURCES-MIB::hrStorageDescr.393 = STRING: /mnt/tmp, type: ufs, dev: /dev/md0 HOST-RESOURCES-MIB::hrStorageAllocationUnits.393 = INTEGER: 2048 Bytes HOST-RESOURCES-MIB::hrStorageSize.393 = INTEGER: 1608727100 HOST-RESOURCES-MIB::hrStorageUsed.393 = INTEGER: 1002 2048*3294673100800=3217454200*1024, всё верно.