Документация по ОС FreeBSD Среда, 08.05.2024, 23:18
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Работа с железом

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)

В портах подходящая утилита отсутствует. Но можно скачать с сайта производителя и установить готовый пакет.

(1) Создаем временную директорию
# mkdir RocketRAID && cd RocketRAID

2) Скачиваем архив
# wget \
http://www.highpoint-tech.com/BIOS_Driver/HRM/FreeBSD/CLI-FreeBSD-3.2-081224.tar.gz

(3) Распаковываем
# tar xf CLI-FreeBSD-3.2-081224.tar.gz && cd CLI-FreeBSD-3.2-081224

текущую директорию распаковываются 4 файла:
hptsvr-3.13-4.tbz ; hptraidconf-3.2-1.tbz ; HPT_CLI_Guide.pdf ; README.txt

(4) Устанавливаем серверную часть (демона)
# pkg_add hptsvr-3.13-4.tbz 

5) Устанавливаем клиентскую часть.
# pkg_add hptraidconf-3.2-1.tbz

6) Переносим на рабочую станцию файл HPT_CLI_Guide.pdf.  Документ содержит подробный перечень команд, в котором на первых порах тяжеловато разобраться.

После установки, демон запускается автоматически. Далее его можно останавливать и снова запускать как всякий обычный демон командами:
# /usr/local/etc/rc.d/hptdaemon.sh stop
# /usr/local/etc/rc.d/hptdaemon.sh start

вы, нет даже намека как сделать, чтобы этот демон запускался автоматически при старте системы.

Командная строка для всех команд будет начинаться одинаково:
# 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

этот момент вы должны увидеть подробную осмысленную информацию об имеющихся в наличии контроллерах данного типа.

Тогда продолжаем.

(6) Вносим изменения в конфигурационные файлы.

(6.1) Файл /etc/rc.conf. Добавить
linux_enable="YES"

6.2) Файл /etc/sysctl.conf. Добавить
# For MegaCLi
compat.linux.osrelease=2.6.12

6.3) Файл /etc/fstab. Добавить
# For MegaCLi
linproc /compat/linux/proc linprocfs rw 0 0
linsys /compat/linux/sys linsysfs rw 0 0


(7) А теперь перечень самых необходимых команд.

(7.1) Информация обо всех RAID контроллерах данного типа, присутствующих в системе:
# megacli -AdpAllInfo -aALL

7.2) Статус  всех логических дисков, присутствующих в системе. Все они должны быть в состоянии "optimal":
# megacli -LDInfo -LALL -aALL | grep "State"

7.3) Статус всех физических жестких дисков для всех адаптеров. Все они должны быть в состоянии "Online":
# megacli -PDList -aALL | grep "Firmware state"

7.4) Получить внутренний лог всех адаптеров:
# megacli -AdpEventLog -GetEvents -f events.log -aALL && cat events.lo



(8) список важнейших команд (только на английском) вы можете найти здесь.
http://tools.rapidsoft.de/perc/perc-cheat-sheet.html


6. Общий скрипт для контроля за состоянием всех типов RAID.

Создайте скрипт типа того, что приведен ниже. Я свой назвал raid-status.sh и раскопировал по всем серверам. Теперь на любом из моих серверов, команда
# ~/raid-status.sh

ообщает мне о состоянии моих RAID.

#!/bin/sh

# -- for gmirror
if [ -r /dev/mirror/gm0 ] ; then
echo gmirror
gmirror status

# -- for HighPoint RocketRAID 2310
elif [ -r /dev/hptrr ] ; then
echo "HighPoint RocketRAID 2310"
hptraidconf -u RAID -p hpt query arrays

# -- for AMCC 3ware 9650SE-4LP
elif [ -r /dev/twa0 ] ; then
echo "AMCC 3ware 9650SE"
tw_cli /c0 show

# -- For Dell PowerAge 1950 (Perc 5/i, Perc 6/i)
elif [ -r /dev/mfi0 ] ; then
echo "Dell PowerAge 1950 (Perc 5/i, Perc 6/i)"
echo RAID status:
megacli -LDInfo -LALL -aALL | grep "State"
echo DISKS status:
megacli -PDList -aALL | grep "Firmware state"
rm MegaSAS.log
else
echo "unnown RAID or doesn't present anyone"
fi



Источник: http://www.lissyara.su/?id=1925
Категория: Работа с железом | Добавил: oleg (18.04.2009) | Автор: mvalery
Просмотров: 1306 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024