LSI MegaRAID SAS 8208XLP в Debian
Достался мне контроллер LSI 8208XLP. А вместе с ним — задача заставить эту чудо-железку работать под Linux. Никаких встроенных RAID-функций от него не требовалось, достаточно было просто увидеть подключённые к нему диски. Далее в дело вступил бы горячо любимый мной mdadm или чуть менее любимый lvm. Казалось бы, чего проще? Поткнул контроллер, подключил диски — и вперёд. Железка довольно старая, Debian уже не первый год существует, и уж наверное имеет в комплекте нужный драйвер.
Ну, почти.
Проблемы
Начнём с того, что 8208XLP — это софт-рейд. То есть массив средствами имеющегося на нём BIOS собирается, но работать может только после установки драйверов. Однако, в отличие от того же softraid в чипсетах intel, где объёдинённые в массив диски без драйвера отображаются как обычные, в данном случае диски не отображаются вообще. То есть использовать его как «просто ещё 8 SATA-портов» просто так не получится. Даже для того, чтобы увидеть одиночный подключённый диск, без драйвера никак.
И тут возникает проблема №2: на официальном сайте LSI драйвера есть под Windows-системы, под Red Hat 4, 5 и SLES с 9 по 11. Более того, пакет с драйверами использует DKMS, и согласно приложенной инструкции не ставится. Вероятно, помимо бинарников собвственно DKMS, драйвера и исходников текущего ядра для сборки требуется ещё и исходник драйвера. Утверждать это не буду — это предположение основывается на копании в древних ветках различных форумах и сообщениях об ошибках при установке. В инструкции про это ни слова, переписка на эту тему с саппортом LSI всё ещё в процессе.
Что было сделано, но не помогло
Коротко опишу пройденный путь:
Попытка «просто поставить Debian» и увидеть диски, как я уже говорил, провалилась. Установщик дисков не видит, после установки системы на отдельный носитель они, разумеется, волшебным образом появляться отказались.
ls -la /dev/sd* выводил ожидаемый системный хард и более ничего.
Попытка поставить CentOS 6.5 — та же история. Плюс к этому — драйвер с сайта не поставился.
Попытка заставить эту (уже проклинаемую) железку работать на SLES11 SP3 также провалилась. Загрузчик драйвер на флешке не увидел, без него дисков установщик не видит, после установки на отдельный хард — дисков нет, драйвер не ставится, та же история с DKMS и исходниками.
Единственный успешный момент — попытка установки CentOS 5.4. Её установщик скушал драйвер с флешки (megasr-13.15.1218.2009-1-rhel50-u4-all.img) и диски нашёл. Однако оставаться на столь древнем ядре желания особого не было. Одно порадовало — проблема технически решаема, устройство рабочее, решил копать дальше.
Что в итоге помогло
В процессе раскопок не раз встречал упоминание о волшебно собранном megasr драйвере под Debian, но годы, прошедшие с момента обсуждения, ссылка успела умереть, и в том репозитории ничего подобного мне найти уже не удалось.
В процессе наткнулся на вот этот любопытный коммент в багтрекере hwraid: hwraid.le-vert.net/ticket/4#no2
Получается, что аналогичная карта (8208ELP) работает под драйвером mptsas, который есть в Debian. Осталось понять две вещи — «как это дело заставить работать» и «какой PCI ID у моего контроллера»?
Ответ на первый вопрос был найден в комментах вот тут: weeclemans.livejournal.com/12086.html?thread=310
Фактически достаточно добавить mptsas в /etc/modules и строку вида
echo "0x1000 0x. " >/sys/bus/pci/drivers/mptsas/new_id
в /etc/rc.local
Устанавливать ОС на диски, подключённые к этому контроллеру, я не планировал изначально, так что если они определятся уже после запуска системы — этот вариант меня вполне устроит.
Теперь осталось только найти PCI ID для моей карты. К сожалению, lspci такой информации не выдал, поэтому нужные значения были взяты отсюда: mirror.szepe.net/siv/pcidevs.txt
Для 8208XLP подошёл вариант 0x1000 0x0055.
После перезагрузки диски, подключённые к контроллеру, корректно определились, даже их SMART доступен.
Lsi megaraid drivers linux
Обновляем данные APT:
# apt-get clean all
# apt-get update
Устанавливаем нужное нам ПО:
# apt-get install build-essential kernel-package libncurses-dev libc6-dev zlib1g-dev linux-source-3.2 dkms debhelper bzip2 unzip linux-headers-3.2.0-4-amd64
Создаем временную рабочую папку:
# mkdir temp; cd temp
Скачиваем исходники драйвера со странички производителя (нам нужен файл Ubuntu_10.10_05.30.zip):
# wget http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/MR_Linux_Driver_6.600.18.00.tgz?source=1 -O MR_Linux_Driver_6.600.18.00.tgz
Распаковываем архив:
# tar xvf MR_Linux_Driver_6.600.18.00.tgz megaraid_sas-06.600.18.00-src.tar.gz
# tar xvf megaraid_sas-06.600.18.00-src.tar.gz
Копируем исходники драйвера:
# cp -va megaraid_sas-06.600.18.00 /usr/src/
# cd /usr/src/
# sed -i ‘/^PACKAGE\_VERSION/ ‘ megaraid_sas-06.600.18.00/dkms.conf
# cd megaraid_sas-06.600.18.00
# patch -p1 < patches/fc17.patch
Собираем пакет с драйвером:
# dkms add -m megaraid_sas -v 06.600.18.00
# dkms build -m megaraid_sas -v 06.600.18.00
# dkms mkdsc -m megaraid_sas -v 06.600.18.00 —source-only
# dkms mkdeb -m megaraid_sas -v 06.600.18.00 —source-only
# cp /var/lib/dkms/megaraid_sas/06.600.18.00/deb/megaraid-sas-dkms_06.600.18.00_all.deb ~/
# rm -rf /var/lib/dkms/megaraid_sas
Устанавливаем драйвер:
# dpkg -i ~/megaraid-sas-dkms_06.600.18.00_all.deb
Теперь перезагружаемся и смотрим, что у нас получилось в итоге:
# modinfo megaraid_sas
Lsi megaraid drivers linux
Утилита MegaRAID позволяет управлять рейд контроллером из операционной системы. В моем случае я приручаю и устанавливаю на CentOS 6.3. Это не пример но принцип один и для других Linux систем и железа от IBM.
В моем случае было железо производителя IBM:
IBM System x3650 M3 - 7945PAK
IBM ServeRAID M5015 SAS/SATA Controller - (LSI MegaRAID SAS 9262-8i)
В долгой переписке с поддержкой IBM, выдали письмо что они поддерживают не все операционные системы, а только Windows, Red Hat, VMware, SUSE Linux, что как раз и говорится в этой статье (http://www-03.ibm.com/systems/info/x86servers/serverproven/compat/us/nos/matrix.shtml). Пришлось обращаться к производителю чипсета, это компания LSI.
Драйвера для ServeRAID M5110, M5110e, M5120, M1115, M1000, M5014, M5015, M5016 M5025, MR10i, MR10ie, MR10il, MR10is, MR10k, MR10M можно скачать по данной ссылке https://www-947.ibm.com/support/entry/myportal/docdisplay?lndocid=MIGR-5073015 или написать запрос в IBM и вам предоставят драйвера. Для входа необходимо зарегистрироваться на сайте IBM.
На сайте производителя я нашел все необходимое ПО и драйвера под ServeRAID M5015 (MegaRAID SAS 9262-8i) под всевозможные операционные системы (Windows, Ubuntu, Sles, FreeBSD, RHEL, Debian, Citrix, CentOS, OEL, OVM).
Установка MegaRAID
Я загрузил полный пакет драйверов и распаковал:
Linux - MR 5.6
Description: Linux Drivers
Version: 6.506.00.00-2
Size: 215.7M
На сервер свой залил только то что пригодилось.
[root@server MegaRAID]# ls -lh
-rw-r--r--. 1 root root 308K Дек 12 19:07 kmod-megaraid_sas-debug-v06.506.00.00_centos6.3-2.x86_64.rpm
-rw-r--r--. 1 root root 303K Дек 12 19:07 kmod-megaraid_sas-v06.506.00.00_centos6.3-2.x86_64.rpm
-rw-r--r-- 1 root root 1,5M Дек 19 15:26 MegaCli-8.07.07-1.noarch.rpm
-rw-r--r--. 1 root root 188K Дек 12 19:07 megaraid_sas-v06.506.00.00_centos6.3-2.src.rpm
Далее установка. У меня встали только 2 пакета, драйвера и сама утилита MegaCli. Дебаг не понадобился.
# rpm -ivh ./kmod-megaraid_sas-v06.506.00.00_centos6.3-2.x86_64.rpm
Подготовка. ########################################### [100%]
1:kmod-megaraid_sas ########################################### [100%]
# rpm -ivh ./MegaCli-8.07.07-1.noarch.rpm
Подготовка. ########################################### [100%]
1:MegaCli ########################################### [100%]
Использование утилиты MegaCli
Переходим в каталог утилиты
Вывести всю информацию по Raid контроллеру
# ./MegaCli64 -AdpAllInfo -aAll
Вывести всю информацию по жестким дискам
Вывести информацию по массивам и дискам
Вывести информацию только по массивам
# ./MegaCli64 -LDInfo -LALL -aAll
Вывести всю информацию по состояние батареи
Более подробно в инструкции.
Для себя я сделал скрипт по мониторингу MegaRAID и поставил в выполнение крон.