RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
FreeBSD: Мониторинг RAID из командной строки (CLI) [2009]
0. Введение
Выложили деньги, поставили RAID. Теперь избыточность надежно защищает
ваши данные. И успокоились. Зря. Рано или поздно выйдет из строя
какой-то жесткий диск, но на поведении системы это никак не отразится.
Просто избыточность исчезнет и как результат, отказ очередного HDD
внезапно обвалит систему. Систему, которая возможно находится очень и
очень далеко от вас. По этому, необходимо постоянно наблюдать за
состоянием RAID, чтобы вовремя заметить вышедшие из строя накопители.
Задача статьи - помочь вам установить необходимую утилиту и убедиться,
что утилита работоспособна и что ваш RAID так же работоспособен. Далее
вы сможете по дополнительной документации найти какие-то необходимые
вам команды. Драйверы для всех упомянутых ниже типов RAID уже включены в систему. Ставим только соответствующие утилиты мониторинга.
Поразительно, что для такой важной компоненты сервера отсутствует
стандартизованный интерфейс командной строки. Для каждого типа RAID
приходится искать собственную программу мониторинга и если повезет
найти, то ломать голову как они ставятся и как управляется. Данная
статья отличная иллюстрация того, с каким "зверинцем" приходится иметь
дело.
1. Как определить тип используемого RAID
Для нашего случая оказалось достаточно просмотреть директорию /dev.
Это связано с тем, что в системе FreeBSD одинаковые имена получают устройства, идентичные с точки зрения управляемости.
Чаще всего единое имя получает группа устройств построенная на базе общего набора чипов.
Для простоты изложения, в большинстве случаев я полагаю, что в системе
установлен один RAID - контроллер. Наличие нескольких контроллеров
потребует вспомогательных ключей. Будет необходимо разбирательство -
каких именно.
И так, далее мы поговорим о следующих типах RAID:
/dev/mirror/gm0 - программный RAID gmirror
/dev/twa0 или /dev/twe0 - RAID контроллер компании AMCC 3ware (напр. 9650SE)
/dev/hptrr - RAID контроллер компании HighPoint (напр. RocketRAID 2310)
/dev/mfi0 - либо Dell Perc 5/i (чип LSI MegaRAID SAS 8408E) либо Dell PERC 6/i (чип LSI SAS1078)
Существует несколько других способов, позволяющие определить характеристики вашего железа.
В частности вы можете:
(1) просмотреть файл /var/run/dmesg.boot:
# less /var/run/dmesg.boot
2) воспользоваться утилитой dmidecode :
# dmidecode
3) или утилитой pciconf:
# pciconf -l -cv
опробуйте. Узнаете много интересного.
2. Программный RAID gmirror (/dev/mirror/gm0)
Программный RAID не нуждается в установке специальной утилиты. Чтобы убедиться, что RAID исправен даем команду:
# gmirror status
тот тип RAID отлично документирован. В многочисленной литературе вы найдете дополнительные команды управления.
Программный RAID использует компоненты сервера как аппаратную часть, а
компоненты операционной системы как программную часть. В связи с
большим количеством компонент, вовлеченных в функционирование
программного RAID, его наработка на отказ заметно ниже, чем у RAID
выполненного в виде в виде специализированного контроллера. У меня были
случаи, когда на нагруженных серверах программный RAID рассыпался через
2-3 месяца круглосуточной работы. Деньги, которые я сэкономил на
покупке железного RAID, были потрачены на первой же поездке к
провайдеру, где установлены сервера и на работах по восстановлению
файловой системы.
3. AMCC 3ware (/dev/twa0 или /dev/twe0)
Ставим утилиту мониторинга из портов:
# cd /usr/ports/sysutils/tw_cli/ && make install clean
оступны следующие команды:
(1) Статус RAID и отдельных дисков массива узнаем так:
# tw_cli /c0 show
2) Общие сведения о контроллере RAID
# tw_cli show
3) Лог аварийных сообщений
# tw_cli show alarms
4) Лог диагностических сообщений.
# tw_cli show diag
5) Развернутая информация о типах контроллеров, поддерживаемых утилитой и сведения о некоторых дополнительных командах.
# man tw_cli
4. HighPoint (/dev/hptrr)
В портах подходящая утилита отсутствует. Но можно скачать с сайта производителя и установить готовый пакет.
вы, нет даже намека как сделать, чтобы этот демон запускался автоматически при старте системы.
Командная строка для всех команд будет начинаться одинаково:
# hptraidconf -u RAID -p hpt <команда>
десь ключи "-u RAID -p hpt" это username и password соответственно. Вы не можете их менять.
(7) А теперь подробнее поговорим о командах:
(7.1) Получить список RAID - контроллеров :
# hptraidconf -u RAID -p hpt query controllers
ервая колонка - номера контроллера. Нумерация начинается с единицы.
(7.2) Получить статус всех RAID, построенных на этих контроллерах:
# hptraidconf -u RAID -p hpt query arrays
омер
RAID совпадает с номером контроллера, однако некоторые RAID -
составные. Например RAID10, состоящий из четырех дисков на первом
контроллере, имеет номер 1, а входящие в него зеркала, каждый из двух
дисков имеют номера 1-1 и 1-2 соответственно.
(7.3) Получить информацию о RAID по его номеру:
# hptraidconf -u RAID -p hpt query arrays 1
Получаем статус 1-го RAID)
Если же вас интересует дополнительная информация, о входящих в него RAID, тогда делаем так:
# hptraidconf -u RAID -p hpt query arrays 1-2
Получаем статус 2-го RAID, вложенного в 1-й RAID)
(7.4) Получить статус всех дисков:
# hptraidconf -u RAID -p hpt query devices
иски нумеруются через дробь в формате номер_контроллера/номер_диска. Например 1/3 - это 3-й диск на 1-м контроллере.
Соответственно, указав этот ID, вы можете получить еще более детальную информацию об этом диске:
# hptraidconf -u RAID -p hpt query devices 1/3
7.5) Контроллер ведет свой лог событий, который вам доступен по команде:
# hptraidconf -u RAID -p hpt events
7.6) Если вы заменили испорченный диск на новый, его необходимо инициировать:
# hptraidconf -u RAID -p hpt init 1/3
7.7) Добавить инициированный диск в RAID
# hptraidconf -u RAID -p hpt rebuild 1 1/3
добавить в 1-й RAID 3-й диск)
Далее читайте HPT_CLI_Guide.pdf. Документ довольно подробный и корректный.
5. Dell Perc 5/i (LSI MegaRAID SAS 8408E) и Dell PERC 6/i (LSI SAS1078) (/dev/mfi0)
Для этого типа RAID, в портах имеется утилита (ура!), но только под Linux (ну как же).
Значит разбираемся - установлена ли у нас поддержка Linux.
Если модуль linux.ko загружен, поддержка уже присутствует. Проверяем.
(1) Даем команду:
# kldstat | grep linux
равильный ответ - что-то вроде:
5 1 0xc6c88000 16000 linux.ko
(2) Если модуль linux.ko не подгружен, попытаемся его подгрузить:
# kldload linux
затем опять идем в п.1 и проверяем
(Вдумчивый читатель может возразить, что достаточно запросить
информацию о наличии установленного пакета, который называется
linux_base-fc:
# pkg_version -v -s"linux_base-fc"
будет почти прав. Если бы не одно НО: Эта команда ничего не покажет,
если поддержка Linux была включена в процессе инсталляции системы.)
Выполнение п.3 и 4 длится довольно долго. Убедитесь, что у вас достаточно времени, чтобы дождаться завершения.
(3) Если поддержка Linux уже установлена, переходите к п.4. Иначе ставим поддержку Linux:
# cd /usr/ports/emulators/linux_base-fc4/ && make install clean
4) Затем собственно утилиту мониторинга:
# cd /usr/ports/sysutils/linux-megacli2/ && make install clean
(5) Готовимся к первому запуску.
(5.1) Загружаем модуль совместимости с Linux:
# kldload linux
5.2) Выставляем системную переменную:
# sysctl compat.linux.osrelease=2.6.12
по умолчанию 2.4.2 )
(5.3) Монтируем соответствующие элементы файловой системы:
# mount -t linprocfs linproc /compat/linux/proc # mount -t linsysfs linsys /compat/linux/sys
5.4) Запускаем утилиту, чтобы убедиться, что все сделели правильно:
# megacli -AdpAllInfo -aALL
этот момент вы должны увидеть подробную осмысленную информацию об имеющихся в наличии контроллерах данного типа.