Дата написания: март 2018 г.
Автор: Graf
Работа с дисковым массивом HP |
---|
Установка
Используем Slackware Linux 14.2 64-bit без DE и всем, что с ними связанно, с обновлёнными пакетами при помощи slackpkg.
Скачиваем последнюю версию hpacucli. И так как это rpm-пакет, преобразовываем его в пакет Slackware и устанавливаем.
# wget https://mirror.nforce.com/pub/software/raidtools/hpacucli-tool/hpacucli-9.40-12.0.x86_64.rpm # rpm2txz ./hpacucli-9.40-12.0.x86_64.rpm # upgradepkg --install-new ./hpacucli-9.40-12.0.x86_64.txz
Скорее всего, после первого запуска hpacucli не обнаружит raid-контроллер. У меня не нашёл.
# hpacucli ctrl all show status Error: No controllers detected.
Это значит не загружен модуль SCSI драйвера (SCSI generic (sg) driver). Загрузим его и снова посмотрим на наш контроллер.
# modprobe sg # hpacucli ctrl all show status Smart Array P410 in Slot 0 Controller Status: OK Cache Status: Temporarily Disabled Battery/Capacitor Status: Failed (Replace Batteries/Capacitors)
Контроллер найден, можно продолжать с ним работать.
В дальнейшем, для автоматической загрузки модуля, можно в файле /etc/rc.d/rc.modules.local снять знак комментария со строки /sbin/modprobe sg или добавить её туда, при её отсутствии.
Использование в консоли
Для запуска консоли достаточно запустить hpacucli:
# hpacucli HP Array Configuration Utility CLI 9.40.12.0 Detecting Controllers...Done. Type "help" for a list of supported commands. Type "exit" to close the console. =>
далее вводим соответствующие команды и по завершении набираем exit для выхода из консоли. Полный список поддерживаемых команд можно получить набрав help в консоли hpacucli или непосредственно в терминале.
# hpacucli help
Ниже приведена, слегка переделанная, таблица, взятая ЗДЕСЬ, с некоторыми командами.
Сокращения | |
---|---|
Сокращения, которые можно использовать в командах | chassisname = ch controller = ctrl logicaldrive = ld physicaldrive = pd drivewritecache = dwc |
Управление контроллером дискового массива | |
Показать информацию (детально) | ctrl all show config ctrl all show config detail |
Статус контроллера | ctrl all show status |
Управление кэшированием | ctrl slot=0 modify dwc=disable ctrl slot=0 modify dwc=enable |
Пересканировать устройства, добавленные с момента последнего сканирования | rescandetects newly added devices since the last rescan |
Управление физическими дисками в массиве | |
Показать информацию (детально) | ctrl slot=0 pd all show ctrl slot=0 pd 2:3 show detail
Можно указать определенный слот |
Статус дисков | ctrl slot=0 pd all show status ctrl slot=0 pd 2:3 show status |
Очистака | ctrl slot=0 pd 2:3 modify erase |
Управление диодами на дисках | ctrl slot=0 pd 2:3 modify led=on ctrl slot=0 pd 2:3 modify led=off |
Управление логическими дисками | |
Показать информацию (детально) | ctrl slot=0 ld all show [detail] ctrl slot=0 ld 4 show [detail] |
Статус дисков | ctrl slot=0 ld all show status ctrl slot=0 ld 4 show status |
Управление диодами на дисках | ctrl slot=0 ld 4 modify led=on ctrl slot=0 ld 4 modify led=off |
Перезапустить «отказавшие» диски | ctrl slot=0 ld 4 modify reenable forced |
Создание дисков | логический дискctrl slot=0 create type=ld drives=1:12 raid=0
логический диск — чередование ctrl slot=0 create type=ld drives=1:13,1:14 size=300 raid=1
логический диск — raid 5 ctrl slot=0 create type=ld drives=1:13,1:14,1:15,1:16,1:17 raid=5
где: |
Удаление | ctrl slot=0 ld 4 delete |
Добавление дисков | ctrl slot=0 ld 4 add drives=2:3 |
Добавление дискового пространства (принудительно) | ctrl slot=0 ld 4 modify size=500 forced |
Добавление резервного диска spare | ctrl slot=0 array all add spares=1:5,1:7 |
Отправка сообщения на e-mail при сбое
Создадим скрипт который будет проверять состояние дисков в массиве каждый час и в случае выхода одного из строя слать сообщение на e-mail адрес.
Но перед этим установим и настроим ssmtp в замен стокового sendmail при помощи которого будем отсылать сообщение на e-mail.
# sbopkg -i ssmtp # /usr/sbin/generate_config /etc/ssmtp/ssmtp.conf Please enter the mail name of your system. This is the hostname portion of the address to be shown on outgoing news and mail messages headers. The default is srv1.mydom.lan, your system's host name. Mail name [srv1.mydom.lan]: localhost Please enter the SMTP port number [25]: 465 Please check the configuration file /etc/ssmtp/ssmtp.conf for correctness.
Переходим в каталог etc/ssmtp и заполним ssmtp.conf
# Пользователь, который получает всю почту для userids < 1000 root=postmaster # Полное имя машины hostname=localhost # Поле From: будет выставляться самим smtp переписывая значение вводимое скриптами FromLineOverride=YES # Пользователь на smtp-сервере (от кого шлем почту) AuthUser=fromserver@mydom.ru # Пароль входа на smtp-сервер для пользователя указанного в AuthUser AuthPass=passwordforlogin # Адрес и порт smtp-сервера mailhub=smtp.mailserver.ru:465 # Перезапись домена на свой (если используется сторонний сервер, например от yandex) rewriteDomain=mydom.ru # Использовать SSL/TLS для аутентификации на smtp-сервере UseTLS=YES
Тут же, в каталоге /etc/ssmtp изменим файл revaliases, если нет, то создадим.
# Некая защита от спама. # root:ОТ_КОГО:ЧЕРЕЗ_КАКОЙ_SMTP_СЕРВЕР:SMTP_ПОРТ root:fromserver@mydom.ru:smtp.mailserver.ru:465
Подменяем sendmail.
# mv /usr/sbin/sendmail /usr/sbin/sendmail.org # ln -s /usr/sbin/ssmtp /usr/sbin/sendmail
Проверим работу отправив тестовое письмо:
# echo test | mail -v -s "testing ssmtp" kakoyto-mail@yandex.ru [<-] 220 smtp.mailserver.ru ESMTP [->] EHLO localhost [<-] 250 HELP [->] AUTH LOGIN [<-] 334 VXNlcm7hbWU7 [->] ZnJvbXNlcnZlckBtaWcta5NiLnJ5 [<-] 334 UGFzc7dvciQ7 [<-] 235 Authentication succeeded [->] MAIL FROM:<fromserver@mydom.ru> [<-] 250 OK [->] RCPT TO:<kakoyto-mail@yandex.ru> [<-] 250 Accepted [->] DATA [<-] 354 Enter message, ending with "." on a line by itself [->] Received: by localhost (sSMTP sendmail emulation); Fri, 16 Mar 2018 12:58:41 +0300 [->] From: fromserver@mydom.ru [->] Date: Fri, 16 Mar 2018 12:58:41 +0300 [->] To: kakoyto-mail@yandex.ru [->] Subject: testing ssmtp [->] User-Agent: Heirloom mailx 12.5 7/5/10 [->] MIME-Version: 1.0 [->] Content-Type: text/plain; charset=us-ascii [->] Content-Transfer-Encoding: 7bit [->] [->] test [->] . [<-] 250 OK id=1ewm7I-0004QJ-2Y [->] QUIT
Работает.
Теперь напишем скрипт, допустим, в том же каталоге куда установился hpacucli, /opt/compaq/hpacucli/bld/hpacucli_send_mail
#!/bin/bash ### # Отправка сообщения на e-mail при сбое одного или нескольких дисков в массиве. ### # Кому отправляем MAILTO=kakoyto-mail@yandex.ru # Путь до hpacucli HPACUCLI=`which hpacucli` # Результат вывода HPACUCLI_TMP=/tmp/hpacucli.tmp # Проверяем, есть ли сбойные диски. Если есть, то шлем инфу на e-mail if [ `hpacucli ctrl slot=0 pd all show | grep -E "(Failed|Rebuilding)" -c` -gt 0 ] then msg="RAID Controller Errors" logger -p syslog.error -t RAID "$msg" $HPACUCLI ctrl slot=0 pd all show > $HPACUCLI_TMP mail -s "$HOSTNAME [ERROR] - $msg" "$MAILTO" < $HPACUCLI_TMP rm -f $HPACUCLI_TMP fi
и отдадим скрипт cron'у на запуск каждый час:
* */1 * * * /opt/compaq/hpacucli/bld/hpacucli_send_mail 1> /dev/null
Совпадения с реальными названиями, чистая случайность!