Моя ОС:
Distributor ID: Debian
Description: Debian GNU/Linux 8.9 (jessie)
Release: 8.9
Codename: jessie
Мне удалось установить MegaRaid Storage Manager, и я могу использовать StorCli.
# dpkg --install lib-utils2_1.00-9_all.deb without errors
# dpkg --install megaraid-storage-manager_17.05.00-3_all.deb without errors
# ./storcli64 /c0 /vall show
Controller = 0
Status = Success
Description = None
Virtual Drives :
==============
---------------------------------------------------------------
DG/VD TYPE State Access Consist Cache Cac sCC Size Name
---------------------------------------------------------------
0/0 RAID1 Optl RW Yes RWBD - ON 278.464 GB OS
1/1 RAID5 Optl RW Yes RWBD - ON 8.180 TB DATA
---------------------------------------------------------------
Но теперь я бы установил агент snmp своего RAID-контроллера. Я использовал rpm и конвертировал его в deb с помощью alien:
# dpkg -i sas-snmp_17.05-3_amd64.deb
(Lecture de la base de données... 54953 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de sas-snmp_17.05-3_amd64.deb ...
Dépaquetage de sas-snmp (17.05-3) ...
Paramétrage de sas-snmp (17.05-3) ...
Starting snmpd
/etc/lsi_mrdsnmp/sas/install: 182: [: 0: unexpected operator
[ ok ] Restarting snmpd (via systemctl): snmpd.service.
Starting LSI SNMP Agent
/etc/lsi_mrdsnmp/sas/install: 210: [: 0: unexpected operator
Starting LSI SNMP Agent:
/etc/init.d/lsi_mrdsnmpd: 153: /etc/init.d/lsi_mrdsnmpd: daemon: not found
Я редактировал /etc/init.d/lsi_mrdsnmpd
чтобы решить проблему с командой демона, заменив ее на:
....
${agent} -c ${SNMPDCONF}
#daemon ${agent} -c ${SNMPDCONF}
....
Более того, я добавил символьную ссылку для решения проблемы библиотеки:
/usr/lib/libsas_objects.so -> /usr/lib64/libsas_objects.so.1
Но теперь, когда я пытаюсь запустить службу:
# ./lsi_mrdsnmpd start
Starting LSI SNMP Agent:
LSI MegaRAID SNMP Agent Ver 3.18.0.5 (Oct 30th, 2012) Started
У меня ничего нет в команде ps. И если я проверю журнал системного журнала, у меня будет:
Oct 16 16:43:45 Server1 MegaRAID SNMP AGENT: Error in getting Shared Memory(lsi_mrdsnmpmain)
Если я попытаюсь выполнить вручную команду:
# ./lsi_mrdsnmpagent -c /etc/snmp/snmpd.conf
LSI MegaRAID SNMP Agent Ver 3.18.0.5 (Oct 30th, 2012) Started
Тот же результат в системном журнале.
Я пытался strace
начало службы: Вот конец строки:
16:46:54 fstat(3, {st_dev=makedev(8, 1), st_ino=8128118, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=2945, st_atime=2017/10/16-09:39:01, st_mtime=2017/05/02-08:24:20, st_ctime=2017/05/02-08:24:20}) = 0
16:46:54 fstat(3, {st_dev=makedev(8, 1), st_ino=8128118, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=2945, st_atime=2017/10/16-09:39:01, st_mtime=2017/05/02-08:24:20, st_ctime=2017/05/02-08:24:20}) = 0
16:46:54 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f712d916000
16:46:54 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\f\0\0\0\0\0\..., 4096) = 2945
16:46:54 lseek(3, -1863, SEEK_CUR) = 1082
16:46:54 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\0\0\0\0\270\0\0\0\r\0\0\0\37\377\377\377\377k\310J\213\377\377\377\377\221`P\213\377\377\377\377\233Gx\360\377\377\377\377\233\327,p\377\377\377\377\234\274\221p\377\377\377\377\235\300H\360\377\377\377\377\236\211\376p\377\377\377\377\2..."..., 4096) = 1863
16:46:54 close(3) = 0
16:46:54 munmap(0x7f712d916000, 4096) = 0
16:46:54 socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3
16:46:54 connect(3, {sa_family=AF_LOCAL, sun_path="/dev/log"}, 110) = 0
16:46:54 sendto(3, "<30>Oct 16 16:46:54 LSI MegaRAID SNMP Agent: Agent Ver 3.18.0.5 (Oct 30th, 2012) Started\n", 89, MSG_NOSIGNAL, NULL, 0) = 89
16:46:54 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f712d90ba10) = 4715
16:46:54 exit_group(0) = ?
16:46:54 +++ exited with 0 +++
Но теперь я заблокирован, и я не знаю, как решить эту проблему, вы знаете об этом?
Что ж, сегодня сервис запущен:
root 16777 1 0 16:35 ? 00:00:00 /etc/lsi_mrdsnmp/lsi_mrdsnmpagent -c /etc/snmp/snmpd.conf
root 16778 16777 0 16:35 ? 00:00:00 /etc/lsi_mrdsnmp/lsi_mrdsnmpagent -c /etc/snmp/snmpd.conf
youpi !!!
Но ... когда я пытаюсь передать OID агенту через lsi_mrdsnmpmain, он ничего не возвращает, а код результата равен 1:
# /usr/sbin/lsi_mrdsnmpmain -g .1.3.6.1.4.1.3582.5.1.1.0
# echo $?
1
Я использую службу lsi_mrdsnmpagent и могу читать это каждый раз, когда пробую lsi_mrdsnmpmain:
futex(0x7f61f938e000, FUTEX_WAIT, 0, NULL) = 0
write(1, "####INSIDE GET#####\n", 20) = -1 EBADF (Bad file descriptor)
futex(0x7f61f938e020, FUTEX_WAKE, 1) = 1
futex(0x7f61f938e000, FUTEX_WAIT, 0, NULL) = 0
write(1, "####INSIDE GET#####\n", 20) = -1 EBADF (Bad file descriptor)
futex(0x7f61f938e020, FUTEX_WAKE, 1) = 1
futex(0x7f61f938e000, FUTEX_WAIT, 0, NULL) = 0
write(1, "####INSIDE GET#####\n", 20) = -1 EBADF (Bad file descriptor)
futex(0x7f61f938e020, FUTEX_WAKE, 1) = 1
futex(0x7f61f938e000, FUTEX_WAIT, 0, NULL
И если я использую lsi_mrdsnmpmain, я получаю:
15:41:36 rt_sigaction(SIGRT_1, {0x7fe5257a8a40, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fe5257b1890}, NULL, 8) = 0
15:41:36 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
15:41:36 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
15:41:36 shmget(0x884b9, 1024, 0600) = 131072
15:41:36 shmat(131072, 0, 0) = 0x7fe525bdc000
15:41:36 futex(0x7fe525bdc000, FUTEX_WAKE, 1) = 1
15:41:36 futex(0x7fe525bdc020, FUTEX_WAIT, 0, NULL) = 0
15:41:36 shmdt(0x7fe525bdc000) = 0
15:41:36 exit_group(1) = ?
15:41:36 +++ exited with 1 +++
Если у вас есть идеи о EBADF (плохой дескриптор файла) или идеи для доступа к mib ...
Спасибо !
Хорошо!! Теперь работает отлично. Чтобы ответить на мой вопрос, ошибка lsimrdsnmpmain исходила от пользователя, запустившего процесс snmpd. В моей конфигурации демон snmpd запускался от имени пользователя snmp, а демон lsimrdsnmpagent запускался от имени пользователя root. Я изменил пользователю демон snmpd в /etc/defaults/snmpd.conf, и теперь эти два процесса могут очень хорошо взаимодействовать друг с другом.
Я надеюсь, что этот ответ поможет другим людям, которые хотят запускать инструменты lsi megaraid sas на debian.