И снова про CentOS Linux 7.2 и драйвер контроллера HP Smart Array P400i

imageУже после того, как ранее был описан способ использования драйвера cciss для контроллера HP Smart Array P400i в процессе установки CentOS 7.2, мне удалось выяснить немного больше информации по поводу поддержки старых моделей контроллеров Smart Array в RHEL/CentOS v7.  В заметках к выпуску 7.0 Release Notes компанией RedHat было объявлено о снятии с поддержки cciss-совместимых контроллеров. С этого момента поддержка контроллеров Smart Array обеспечивалась только драйвером hpsa.

Список снимаемых с поддержки контроллеров оказался таким:

  • Smart Array 5300
  • Smart Array 5i
  • Smart Array 532
  • Smart Array 5312
  • Smart Array 641
  • Smart Array 642
  • Smart Array 6400
  • Smart Array 6400 EM
  • Smart Array 6i
  • Smart Array P600
  • Smart Array P800
  • Smart Array P400
  • Smart Array P400i
  • Smart Array E200i
  • Smart Array E200
  • Smart Array E500
  • Smart Array P700M

В этом же документе можно найти информацию о том, что в драйвере hpsa, который пришёл в RHEL/CentOS v7 на замену cciss имеется поддержка дополнительного параметра hpsa_allow_any=1, который позволяет драйверу выполнять обнаружение старых контроллеров Smart Array.

When the hpsa_allow_any option is used, the hpsa driver allows the use of PCI IDs that are not listed in the driver's pci-id table. Thus, cards detected when this option is used, are not supported in Red Hat Enterprise Linux 7

image

Отталкиваясь от возможности использования этого параметра, приведу конкретный пример того, как не имея на руках драйвера cciss, но имея лишь поставляемый в составе CentOS 7 драйвер hpsa заставить увидеть в процессе установки ОС диски, подключенные к контроллеру HP Smart Array P400i.

В процессе начально загрузки инсталлятора ОС дождёмся появления загрузочного меню и нажмём любую клавишу, чтобы остановить автоматическую загрузку (например, можно нажать клавишу стрелок вправо/влево).

image

После того, как таймер внизу экрана остановится, выберем в меню пункт Install CentOS 7 и нажмём клавишу Tab. Внизу экрана появится строка параметров загрузки системы, в которую через пробел мы должны добавить текст: hpsa.hpsa_allow_any=1

image

После этого жмём Enter для продолжения загрузки системы, и когда программа установки CentOS 7 будет загружена, сможем убедиться в том, что теперь RAID-том с контроллера HP Smart Array P400i виден и на него можно установить ОС.

image

После того, как установка CentOS 7 будет выполнена нужно будет выполнить перезагрузку сервера. В процессе загрузки установленной системы нам снова потребуется передать требуемый параметр загружаемому драйверу hpsa, иначе установленная система попросту не загрузится. Для этого, во время загрузки, при появлении загрузочного меню, выберем основное загружаемое ядро и нажмём кнопку "e" для правки параметров загрузки 

image

Откроется экран редактирования записи загрузчика, переместимся в самый низ, найдём строку начинающуюся с linux16 /vmlinuz…, переместимся курсором до конца этой строки, сделаем пробел и допишем параметр загрузки hpsa.hpsa_allow_any=1.

image

После этого нажмём сочетание клавиш Ctrl + x и система успешно загрузится благодаря добавленному параметру.

Для того, чтобы загрузчик системы использовал вышеописанный параметр драйвера при каждой загрузке, добавим его в конец файла /etc/modprobe.d/modprobe.conf с последующей пересборкой образа initramfs

# Support old HP Smart Array controllers
options hpsa hpsa_allow_any=1

Пересобираем образ initramfs. Для этого сначала сделаем резервную копию текущего используемого образа, затем вызовем команду его сборки (с учётом добавленного нами файла modprobe.conf для текущей версии ядра):

# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# /sbin/dracut -v --force

После того, как последняя команда отработает, перезагружаем сервер и убеждаемся в том, что система успешно загружается с указанным нами параметром:

# cat /sys/module/hpsa/parameters/hpsa_allow_any
1

***

Теперь возникает резонный вопрос. Какой же драйвер правильней использовать? В интернете мне не удалось найти явных свидетельств за или против относительно использования cciss или hpsa для старых контроллеров Smart Array. Разве что только стоит упомянуть о короткой заметке Goodbye cciss, welcome hpsa!, где можно найти мнение о том, что в определённом сценарии новый драйвер hpsa работает стабильней. Правда в той заметке речь идёт о более новом контроллере P410, который нативно поддерживается hpsa, поэтому повышение стабильности в данном случае наверно показатель закономерный.

Стоит отметить то, что hpsa - это SCSI драйвер и создаваемые им в системе дисковые устройства именуются как /dev/sd[*], в то время как cciss – это блочный драйвер и в системе он создаёт блочные устройства /dev/cciss/c[*]d[*]. Более подобную информацию о технических различиях между драйверами cciss и hpsa можно найти в документе 'hpsa' – A SCSI-based Linux device driver for HP Smart Array Controllers, 2nd edition (c02677069.pdf).

В рамках одной системы могут сосуществовать оба драйвера (например когда в одном сервере используется и новый и старый контроллер Smart Array одновременно), но, возможно, при этом нужно будет учесть ряд нюансов, относительно правильной настройки параметров загрузки этих драйверов, о чём подробно расписано на страничке HP Smart Array CCISS driver.

На данный момент я пока остановился на той мысли, что для устаревших моделей контроллеров Smart Array, перечисленных в ранее обозначенном списке, всё же более правильным будет использование драйвера cciss, и переход на hpsa стоит выполнять только в том, случае если на это есть веские причины. Было бы интересно услышать аргументированные возражения по этому поводу. 

Дополнительные источники информации:

Всего комментариев: 13 Комментировать

  1. Pavel /

    Эту проблему решили давно и не мы. Ровновсю инфу по этому вопросу я нашел в открытых источниках уже давно. Скажи, плиз, зачем еще раз публиковать все это?

    1. andrei /

      хотя бы потому что человек проделал большую работу и не скопипастил чужую статью.
      а так же потому что возможно данную статью использовать как способ добавления драйверов не только для smart array и не только для hp.

  2. Sergei /

    После обновления ядра системы сервер запустится? Или опять надо будет прописывать драйвер?

    1. Алексей Максимов / Автор записи

      Насколько я понимаю, при обновлении ядра, и как следствие пересборке initramfs, должны учитываться указанные нами параметры в файле /etc/modprobe.d/modprobe.conf. Хотя это лучше проверить.

  3. Sergei /

    Проверил, все в порядке. Система грузится

    1. Алексей Максимов / Автор записи

      Хорошо. Спасибо.

  4. Denis /

    Огромное спасибо автору статьи, очень помогли.

  5. Jan /

    Привет, спасибо вам за эту публикацию, я вот новенький в этом деле, я не могу найти файл modprobe.conf в /etc/modprobe.d или мне самому нужно создать этот файл? Буду благодарен за ответ! Спасибо

    1. Алексей Максимов / Автор записи

      Создайте. Вообще заметка написана про конкретную версию ОС и в ней, насколько помню, этот файл по умолчанию есть. Как будет выглядеть порядок настройки для других дистрибутивов Linux, я говорить не возьмусь.

  6. Александр /

    Доброго дня.

    А вы на серверах НР никогда не пробовали под LINUX настраивать тиминг для сетевых адаптеров?
    Если собирали тиминг, можете поделится настройкой?
    Спасибо.

    1. Алексей Максимов / Автор записи

      Здравствуйте, Александр. Тиминг не заработал у меня так как хотелось в CentOS 7.2. Поэтому использую бондинг: Настройка Network Bonding с LACP между CentOS Linux 7.2 и коммутатором Cisco 3560G

  7. vanoc /

    Спасибо за статью, выручили.

  8. Обратная ссылка: «Я и Ubuntu» » Fedora 26 и HP Smart Array P400 /

Добавить комментарий