URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 83137
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Как подружить Linux-ядро 3.x и утил..."

Отправлено auto_tips , 19-Фев-12 23:24 
С переходом на ядро Linux 3.x.x владельцы LSI RAID могут столкнуться с неприятным явлением - утилита MegaCli или MegaCli64 перестаёт обнаруживать RAID-контроллер. Ядро правильно определяет и корректно работает, а утилита упорно показывает, что никакого RAID-контроллера нет. Не помогает исправить проблему и обновление MegaCli до последней версии - [[http://www.lsi.com/Pages/user/eula.aspx?file=http%3a�... 8.02.16]].

Если мониторинг состояния RAID построен на этой утилите, то ситуация становится совсем неприятной, так как. можно пропустить вышедший из строя жесткий диск или пришедшую в негодность батарейку кэша.

Попробуем разобраться в ситуации и найти временное решение, до выхода новой версии MegaCli.

Посмотрим версию ядра, наличие LSI MegaRAID и вывод утилиты MegaCli:

   [root@farm2:1 ~]# uname -a
   Linux farm2.localdomain 3.2.5-3.fc16.x86_64 #1 SMP Thu Feb 9 01:24:38 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
  
   [root@farm2:1 ~]# lspci | grep -i raid
   10:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)
  
   [root@farm2:1 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -adpCount
  
   Controller Count: 0.
  
   [root@farm2:1 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -v
  
   MegaCLI SAS RAID Management Tool Ver 8.02.16 July 01, 2011

   (c)Copyright 2011, LSI Corporation, All Rights Reserved.

Мы видим, что работаем под управлением linux-ядра 3.2.5, есть установленный LSI MegaRAID и  утилита MegaCli64 его не видит. До обновления использовалось ядро 2.6.39, и утилита MegaCli64 обнаруживала контроллер.

Для понимания разницы в поведении MegaCli на ядрах версий 2.6 и 3.х я использовал gdb и strace. Оказалось, что если загружено любое ядро с номером версии 2.6.x - используется актуальный набор системных вызовов, иначе используются устаревшие системные вызовы ядра 2.4.x и, соответственно, контроллер не находится. Первая мысль, которая приходит в голову: подменить системный вызов uname для утилиты MegaCli.  Воспользуемся помощью [[http://www.linuxjournal.com/article/7795 LD_PRELOAD]] и несколькими строчками кода на C:

   #define _GNU_SOURCE
   #include <unistd.h>
   #include <sys/utsname.h>
   #include <sys/syscall.h>
   #include <sys/types.h>
   #include <string.h>
  
   int uname(struct utsname *buf)
   {
      int ret = syscall(SYS_uname, buf);
      strcpy(buf->release, "2.6.40");
      return ret;
   }

Компилируем:

   mkdir fakeuname
   cd fakeuname
   wget http://supportex.net/files/fakeuname/fakeuname.c
   gcc -Wall -fPIC -c fakeuname.c
   gcc -Wall -shared -o libfakeuname.so fakeuname.o

Проверим, как будет работать утилита. При запуске будет сообщаться "фейковый" номер версии ядра - 2.6.40, вместо 3.2.5:

   [root@farm2:1 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -adpCount
  
   Controller Count: 1.
  
   [root@farm2:1 fakeuname]# LD_PRELOAD=./libfakeuname.so /opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL
  
   Adapter #0

   ================================
   Versions
   ================
   Product Name :
   Serial No : SV12345678
   FW Package Build: 12.12.0-0065
   ...

Небольшая победа - контроллер определился!
Теперь можно с ним работать, как и раньше. А libfakeuname.so скопировать в более удобное место (например /usr/local/lib64) и использовать в своих скриптах совместно с LD_PRELOAD=/usr/local/lib64/libfakeuname.so.

Ссылки:
    [[http://www.5dollarwhitebox.org/drupal/node/82 LSI MegaCLI Emergency Cheat Sheet]]
    [[http://www.lsi.com/search/pages/default.aspx LSI Documents and Downloads]]
    [[http://www.redhat.com/magazine/010aug05/features/strace/ Debugging code with strace]]
    [[http://sources.redhat.com/gdb/current/onlinedocs/gdb.html Debugging with gdb]]
    [[http://codingfreak.blogspot.com/2009/12/creating-and-using-s... Creating and using shared libraries in Linux]]
    [[http://www.linuxjournal.com/article/7795 Modifying a Dynamic Library Without Changing the Source Code]]

URL: http://supportex.net/ru/2012/02/how-to-make-friends-linux-ke.../
Обсуждается: http://www.opennet.me/tips/info/2667.shtml


Содержание

Сообщения в этом обсуждении
"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Аноним , 19-Фев-12 23:24 
setarch --uname-2.6 для слабоков?

"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Аноним , 19-Фев-12 23:28 
setarch: --uname-2.6: Unrecognized architecture

"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено animechaos , 20-Фев-12 02:43 
> setarch: --uname-2.6: Unrecognized architecture

setarch <arch> [options]      [program [program arguments]]
setarch x86_64 --uname-2.6 [program [program arguments]]


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Michael Shigorin , 20-Фев-12 11:44 
> setarch: --uname-2.6: Unrecognized architecture

В 2.20.1 есть.

Автору спасибо.


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено andysp , 20-Фев-12 07:19 
Не знал, что появился такой параметр.
Тогда все проще:

setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -adpCount


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Аноним , 29-Фев-12 17:21 
Просто нужно использовать правильные дистрибутивы. И никакого бубна не надо, всё уже сделано и работает.

"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Andrey Mitrofanov , 29-Фев-12 18:24 
> Просто нужно использовать правильные дистрибутивы. И никакого бубна не надо, всё уже
> сделано и работает.

А чё не "правильные RAID-контроллеры"?~~~


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено iCat , 01-Мрт-12 14:36 
>А чё не "правильные RAID-контроллеры"?

А потому, что сами по себе этии RAID-controllers - отживающее свой век явление.
Будущее - за системами, подобными LVM, ZFS и им подобными


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено muon , 02-Мрт-12 04:18 
>>А чё не "правильные RAID-контроллеры"?
> А потому, что сами по себе этии RAID-controllers - отживающее свой век
> явление.
> Будущее - за системами, подобными LVM, ZFS и им подобными

А parity на CPU считать? Ну-ну.


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено iCat , 02-Мрт-12 05:35 
>>>А чё не "правильные RAID-контроллеры"?
>> А потому, что сами по себе этии RAID-controllers - отживающее свой век явление.
>> Будущее - за системами, подобными LVM, ZFS и им подобными
> А parity на CPU считать? Ну-ну.

А вопрос тоже странный. Похоже не диалог:
- Вот это - будущеее автопрома. Электромобиль.
- А где бензобак?


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Michael Shigorin , 02-Мрт-12 13:46 
>> А parity на CPU считать? Ну-ну.
> - А где бензобак?

Как Вам сказать... одна каменотёсная компания на пять букв в своё время попыталась объявить курс на "считаем всё-всё на мощном центральном процессоре".  И села в лужу, поскольку он для всего-всего попросту неэффективен.

Гонять софтрейдные потоки через CPU, шину, память -- это убивать их производительность для чего бы то ни было ещё.  Годится в случаях выделенных сторадж-серверов, хотя некоторые и их пытаются припахивать для предварительной обработки данных поближе к местам их залегания.


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено iCat , 04-Мрт-12 11:24 
>...Годится в случаях выделенных сторадж-серверов...

Так и RAID на рабочей станции - явление весьма себе редкое.
А с точки зрения "денег", то тут тоже ещё не совсем понятно что окажется разумнее: отдельный i7 с 16GB RAM под выделенный "сторадж-сервер" или "настоящий RAID-controller" с набором "настоящих" HDD.

В первом случае имеем ещё и "фору" по части "взаимозаменяемости"


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Michael Shigorin , 04-Мрт-12 15:52 
>>...Годится в случаях выделенных сторадж-серверов...
> Так и RAID на рабочей станции - явление весьма себе редкое.

На десктопе -- да, на workstation встречались.  DAC960 как-то стоял :)

> А с точки зрения "денег", то тут тоже ещё не совсем понятно
> что окажется разумнее: отдельный i7 с 16GB RAM под выделенный "сторадж-сервер"
> или "настоящий RAID-controller" с набором "настоящих" HDD.
> В первом случае имеем ещё и "фору" по части "взаимозаменяемости"

Не могу полностью согласиться, поскольку несмотря на заведомо более чахлый процессор HWRAID -- получаем порты, куда можно воткнуть бэкплейн корзинки, и внимание фирмвари к состоянию дисков на несколько лучшем уровне, чем сейчас знаю как реализуемое разумными силами при участии софтрейда (в первую очередь по реакции на долгочитаемые).

Если что, для того же ftp.linux.kiev.ua специально нашёл материнку на nForce Pro с 8x SATA, но без hotswap плановые замены дисков приводят к довольно продолжительному даунтайму с пересборкой половины тушки: http://fly.osdn.org.ua/~mike/img/misc/Image0154.jpg

С другой стороны, наблюдали непрокачку через 16-портовые Areca даже JBOD лет шесть тому (выкручивались двумя восьмипортовками и софтрейдом).  Как раз на выделенных сторадж-серверах, где вдобавок изобретали машинерию для автоприёма заменённого диска в массив.


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено iCat , 05-Мрт-12 14:26 
Честно говоря, я надеюсь увидеть что-нибудь типа "ZFS-controller" или, там, "BTRFS-controller", или "PAROHOD-FS-on-chip".
То есть нечто "железо-независимое на железе".


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Аноним , 07-Мрт-12 09:49 
Это только в ваших фантазиях. Никуда железные рейды не денутся.

"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Дядя_Федор , 03-Мрт-12 11:48 
У меня почему-то никаких проблем не возникло. Gentoo. Ставил сервак недавно взамен умирающего. Обычно использую 3Ware, а тут пришлось на LSI построить зеркало с одним spare.
1. uname -a
Linux mail 3.2.1-gentoo-r2 #2 SMP Tue Feb 28 15:57:32 MSK 2012 i686 Intel(R) Xeon(R) CPU E5405 @ 2.00GHz GenuineIntel GNU/Linux
2. lspci | grep -i raid
03:00.0 RAID bus controller: LSI Logic / Symbios Logic LSI MegaSAS 9260 (rev 05)
3.  MegaCli -v


      MegaCLI SAS RAID Management Tool  Ver 8.02.16 July 01, 2011

    (c)Copyright 2011, LSI Corporation, All Rights Reserved.
4.  megacli -adpCount


Controller Count: 1.

Ставил все из портеджей. Хотя какая-то утилитка с офсайта лежит - пока ее не прилаживал.


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено XoRe , 09-Мрт-12 00:18 
> Ставил все из портеджей.

А вы посмотрите содержимое порта на предмет какого-нибудь патчика на тему 2.6)


"Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "
Отправлено Дядя_Федор , 12-Мрт-12 11:39 
> А вы посмотрите содержимое порта на предмет какого-нибудь патчика на тему 2.6)

Посмотрел. Нетути. :) Да и чтобы установить эту утилитку надо скачать бинарник с сайта LSI.com. Так что - если кто и патчил, то сами LSI.