Определите диски на сервере SuperMicro, на котором работает FreeBSD
8
Я работаю на сервере SuperMicro 2U с 6 дисками в ZPool. Я хочу идентифицировать каждый отсек для дисков, используя индикатор Drive Carrier при запуске команды из инструмента во FreeBSD. Есть ли способ сделать это?
Я знаю, если бы диски работали поверх карты Raid, я мог бы использовать утилиту карты raid для идентификации каждого диска, но в моем случае аппаратного рейда нет.
Есть ли инструмент для этого во FreeBSD или Linux?
Для большинства моих решений ZFS лучше поспорить, что у меня есть таблица и набор меток, идентифицирующих диски по их частичной SAS WWN . Это функция используемых мной контроллеров LSI, которая выглядит следующим образом:
Есть несколько вариантов, чтобы заставить это работать. Одним из них является коммерческая утилита SanTools SMARTmon , доступная для OEM-производителей и интеграторов. Он использует функции SCSI Enclosure Services (SES) во внешних блоках JBOD, но имеет некоторое волшебство и для внутренних дисков.
У вас также может быть опция в зависимости от используемого контроллера. Вы просто используете контроллер материнской платы или специализированную SAS HBA без RAID?
Примечание: запись cXtYdZ только для Solaris. Большинство дистрибутивов Linux имеют каталог / dev / disk / by-id /, содержащий символические ссылки из WWN-содержащих имен на /dev/sdXстили. Понятия не имею, если во FreeBSD есть нечто подобное.
The Wabbit
Использование материнской платы, так как я сейчас использую только диски SATA. Может мигрировать в SAS в ближайшее время. Я также подумывал о том, чтобы делать именно то, что вы предлагаете, а именно маркировать отсеки наклейками. Похоже, что переход на выделенную SAS HBA без RAID - это путь в долгосрочной перспективе. Один с CLI API для * nix привел бы в обледенение торт;)
Тимоти К. Куинн
9
Средства идентификации бедного человека dd if=/dev/daX of=/dev/nullзаключаются в том, чтобы выпустить a и посмотреть, какой индикатор активности диска мигает наиболее быстро. Это, конечно, требует периода низкой активности для других дисков в системе, но это очень общий характер.
Если у вас есть (LSI) контроллер SAS, который будет работать, sas2ircuто вы можете использовать его, чтобы выполнить команду «display» для вывода списка доступных дисков и их серийных номеров, а затем запустить команду «LOCATE», чтобы мигать индикатор на корпусе.
Вместо «Низкая активность» лучше остановить все операции ввода-вывода, отключив диск и отключив патрульные задания.
Роман
1
sas2ircu FTW! Спасибо, ты спас меня. Между прочим, у меня есть LBA HBA с ИТ-микросхемой с объединительной платой Supermicro с 12 отсеками и одним mini-sas. Работает на supermicro mobo, e3-1230v3, 32 ГБ ecc. работает FreeNAS 9.3 последняя. Команда LOCATE мигает красным (ошибка) светодиодом, оставляя синий индикатор активности с нормальной функцией. Любопытно, что команда Display показывает, что контроллер LSI # 0, но корпус отображается как # 2 (вероятно, контроллеры mobo sata 2 и sata 3 - # 0 и # 1, но это предположение).
Он делает несколько предположений, я думаю, что главное состоит в том, что он подключен к контроллеру 0. Вы можете использовать его sas2ircu listдля определения номера контроллера.
Он проверит выбранный пул (через статус zpool). Если ошибок нет, он будет:
сохраните файл (в /root/.sas2ircu/drives) с отображением имен устройств в слоты корпуса
отключите любые светодиоды, ранее активированные этим сценарием (они хранятся в /root/.sas2ircu/locs)
Если есть ошибки, это будет:
отправить письмо с полным выводом статуса zpool
активируйте светодиоды любых неисправных дисков (и сохраните местоположения, которые активируются в /root/.sas2ircu locs, чтобы впоследствии их можно было деактивировать)
в любом случае вот сценарий. Я запускаю это как почасовую работу cron.
#! /usr/local/bin/bash
if [ ! "$1" ]; then
echo "Usage: zpscan.sh pool [email]"
echo "Scan a pool, send email notification and activate leds of failed drives"
exit
fi
if [ ! -d /root/.sas2ircu ]; then
mkdir /root/.sas2ircu
touch /root/.sas2ircu/drives
touch /root/.sas2ircu/locs
fi
if [ "$2" ]; then
email="$2"
else
email="root"
fi
condition=$(/sbin/zpool status $1 | egrep -i '(DEGRADED|FAULTED|OFFLINE|UNAVAIL|REMOVED|FAIL|DESTROYED|corrupt|cannot|unrecover)')
if [ "${condition}" ]; then
emailSubject="`hostname` - ZFS pool - HEALTH fault"
mailbody=$(zpool status $1)
echo "Sending email notification of degraded zpool $1"
echo "$mailbody" | mail -s "Degraded Zpool $1 on hostname" $email
drivelist=$(zpool status $1 | grep -E "(DEGRADED|FAULTED|OFFLINE|UNAVAIL|REMOVED|FAIL|DESTROYED)" | grep -vE "^\W+($1|NAME|mirror|logs|spares)" | sed -E $'s/.*was \/dev\/([0-9a-z]+)/\\1/;s/^[\t ]+([0-9a-z]+)[\t ]+.*$/\\1/')
echo "Locating failed drives."
for drive in $drivelist;
do
record=$(grep -E "^$drive" /root/.sas2ircu/drives)
location=$(echo $record | cut -f 3 -d " ")
echo Locating: $record
sas2ircu 0 locate $location ON
if [ ! "$(egrep $location /root/.sas2ircu/locs)" ]; then
echo $location >> /root/.sas2ircu/locs
fi
done
else
echo "Saving drive list."
drivelist=$(zpool status $1 | grep -E $'^\t ' | grep -vE "^\W+($1|NAME|mirror|logs|spares)" | sed -E $'s/^[\t ]+//;s/([a-z0-9]+).*/\\1/')
saslist=$(sas2ircu 0 display)
printf "" > /root/.sas2ircu/drives
for drive in $drivelist;
do
sasaddr=$(sg_vpd -i -q $drive 2>/dev/null | sed -E '2!d;s/,.*//;s/ 0x//;s/([0-9a-f]{7})([0-9a-f])([0-9a-f]{4})([0-9a-f]{4})/\1-\2-\3-\4/')
encaddr=$(echo "$saslist" | grep $sasaddr -B 2 | sed -E 'N;s/^.*: ([0-9]+)\n.*: ([0-9]+)/\1:\2/')
echo $drive $sasaddr $encaddr >> /root/.sas2ircu/drives
done
for loc in $(cat /root/.sas2ircu/locs);
do
sas2ircu 0 locate $loc OFF
done
printf "" > /root/.sas2ircu/locs
fi
for loc in $(cat /root/.sas2ircu/locs);
do
sas2ircu 0 locate $loc OFF
done
printf "" > /root/.sas2ircu/locs
fi
Я не знаю, что такое FreeBSD, но в Linux существует набор программного обеспечения от Intel, ledmon(8)и я использовал программу userpace, ledctl(8)чтобы мигать индикатор «locate» на определенном диске в моем SuperMicro SC847E26-RJBOD1, который управляет дисками, управляемыми HBA LSI SAS3008 (не MegaRAID):
$ sudo ledctl locate=/dev/sdce
Затем, как только я его нашел, я выключил светодиод «найти»:
$ sudo ledctl locate_off=/dev/sdce
sgpio(1) требуется для связи между HBA и объединительной платой.
Я знаю, что это старый вопрос, но для тех, кто ищет его, во FreeBSD> = 10.3 вы можете использовать его sesutil locate da2 onдля включения светодиода da2, если он находится в корпусе с устройством / dev / sesN.
Нет стандартного абстрактного программного интерфейса для подсветки индикатора Drive Carrier (не индикатора активности) - это зависит от аппаратного обеспечения. Это означает, что вам все еще нужны инструменты контроллера хранилища (утилиты raid-карт, о которых вы говорите) для отправки соответствующих команд контроллеру. То, как это программное обеспечение называется или реализуется, конечно, зависит от производителя / продавца контроллера хранилища.
(Неважно, что у вас есть SW raid на месте, поскольку вам, очевидно, все еще нужен контроллер хранилища, взаимодействующий с вашей объединительной платой, дисками и дисками.)
Если вы используете дисководы корпоративного класса с дешевым контроллером, то вам может не повезти.
/dev/sdX
стили. Понятия не имею, если во FreeBSD есть нечто подобное.Средства идентификации бедного человека
dd if=/dev/daX of=/dev/null
заключаются в том, чтобы выпустить a и посмотреть, какой индикатор активности диска мигает наиболее быстро. Это, конечно, требует периода низкой активности для других дисков в системе, но это очень общий характер.Если у вас есть (LSI) контроллер SAS, который будет работать,
sas2ircu
то вы можете использовать его, чтобы выполнить команду «display» для вывода списка доступных дисков и их серийных номеров, а затем запустить команду «LOCATE», чтобы мигать индикатор на корпусе.источник
Я знаю, что это старый вопрос, но он дал мне несколько кусочков, которые я собрал, и я подумал, что переверну сценарий, который придумал, так как это почти точное соответствие моей ситуации: для этого требуется sas2ircu. : http://www.avagotech.com/docs-and-downloads/host-bus-adapters/host-bus-adapters-common-files/sas_sata_6g_p20/SAS2IRCU_P20.zip и из портов, bash и sg3_utils
Он делает несколько предположений, я думаю, что главное состоит в том, что он подключен к контроллеру 0. Вы можете использовать его
sas2ircu list
для определения номера контроллера.Он проверит выбранный пул (через статус zpool). Если ошибок нет, он будет:
Если есть ошибки, это будет:
в любом случае вот сценарий. Я запускаю это как почасовую работу cron.
источник
Я не знаю, что такое FreeBSD, но в Linux существует набор программного обеспечения от Intel,
ledmon(8)
и я использовал программу userpace,ledctl(8)
чтобы мигать индикатор «locate» на определенном диске в моем SuperMicro SC847E26-RJBOD1, который управляет дисками, управляемыми HBA LSI SAS3008 (не MegaRAID):Затем, как только я его нашел, я выключил светодиод «найти»:
sgpio(1)
требуется для связи между HBA и объединительной платой.источник
Я знаю, что это старый вопрос, но для тех, кто ищет его, во FreeBSD> = 10.3 вы можете использовать его
sesutil locate da2 on
для включения светодиода da2, если он находится в корпусе с устройством / dev / sesN.источник
Нет стандартного абстрактного программного интерфейса для подсветки индикатора Drive Carrier (не индикатора активности) - это зависит от аппаратного обеспечения. Это означает, что вам все еще нужны инструменты контроллера хранилища (утилиты raid-карт, о которых вы говорите) для отправки соответствующих команд контроллеру. То, как это программное обеспечение называется или реализуется, конечно, зависит от производителя / продавца контроллера хранилища.
(Неважно, что у вас есть SW raid на месте, поскольку вам, очевидно, все еще нужен контроллер хранилища, взаимодействующий с вашей объединительной платой, дисками и дисками.)
Если вы используете дисководы корпоративного класса с дешевым контроллером, то вам может не повезти.
источник