21.03.2013 02:06, Lystopad Aleksandr пишет:
>  Hello, Eugene Grosbein!
> 
> On Thu, Mar 21, 2013 at 12:17:16AM +0700
> [email protected] wrote about "Re: [freebsd] bsnmpd and 
> hrStorageAllocationUnits":
> 
>> Пример-то вывода из таблички hrStorageTable для этой ZFS можно увидеть?
> 
> HOST-RESOURCES-MIB::hrStorageDescr.14 = STRING: /hosting, type: zfs, dev: 
> zdata
> HOST-RESOURCES-MIB::hrStorageUsed.14 = INTEGER: 107
> HOST-RESOURCES-MIB::hrStorageSize.14 = INTEGER: 2147483647
> HOST-RESOURCES-MIB::hrStorageAllocationUnits.14 = INTEGER: 512 Bytes
> 
> # zfs list /hosting
> NAME    USED  AVAIL  REFER  MOUNTPOINT
> zdata   177K  40.9T  53.5K  /hosting

В случае UFS в качестве hrStorageAllocationUnits отдаётся параметр
fragment size с файловой системы, а в качестве hrStorageSize параметр blocks,
например:

# df -k /backup
Filesystem  1024-blocks     Used    Avail Capacity  Mounted on
/dev/da1s1a    71078336 18127624 47264448    28%    /backup

# dumpfs /backup | egrep 'blocks|fsize'
ncg     24      size    8956617 blocks  8884792
fsize   8192    shift   13      mask    0xffffe000

Видим, что 8192*8884792/1024=71078336.

При этом в коде модуля hostres у bsnmpd нет различия между типами
файловых систем, что ядро отдало, то bsnmpd и показывает, обрезая лишь
переполнения 32-битных значений (потому что в стандартном MIB они 32 бита).

Это тут: /usr/src/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_storage_tbl.c
Функция storage_OS_get_fs() использует системный вызов getfsstat()
для получения этой информации из ядра. Выходит, само ядро рапортует такие 
значения.

Тут вопрос: имеет ли право SNMP-агент (bsnmpd) транслировать полученные от ядра
циферки, чтобы уложиться в 32-битное количество блоков? Сейчас никакой 
трансляции нет.


Ответить