The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Как подружить Linux-ядро 3.x и утил..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Как подружить Linux-ядро 3.x и утил..."  +/
Сообщение от auto_tips (??) on 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.dev/tips/info/2667.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от Аноним (??) on 19-Фев-12, 23:24 
setarch --uname-2.6 для слабоков?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  –1 +/
Сообщение от Аноним (??) on 19-Фев-12, 23:28 
setarch: --uname-2.6: Unrecognized architecture
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от animechaos (ok) on 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]]

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

6. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от Michael Shigorin email(ok) on 20-Фев-12, 11:44 
> setarch: --uname-2.6: Unrecognized architecture

В 2.20.1 есть.

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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

10. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от Аноним (??) on 29-Фев-12, 17:21 
Просто нужно использовать правильные дистрибутивы. И никакого бубна не надо, всё уже сделано и работает.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от Michael Shigorin email(ok) on 02-Мрт-12, 13:46 
>> А parity на CPU считать? Ну-ну.
> - А где бензобак?

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

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

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от Дядя_Федор email on 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.

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

17. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от iCat (ok) on 04-Мрт-12, 11:24 
>...Годится в случаях выделенных сторадж-серверов...

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

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

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от Michael Shigorin email(ok) on 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 лет шесть тому (выкручивались двумя восьмипортовками и софтрейдом).  Как раз на выделенных сторадж-серверах, где вдобавок изобретали машинерию для автоприёма заменённого диска в массив.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

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

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от Аноним (??) on 07-Мрт-12, 09:49 
Это только в ваших фантазиях. Никуда железные рейды не денутся.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

21. "Как подружить Linux-ядро 3.x и утилиту LSI MegaCli "  +/
Сообщение от XoRe (ok) on 09-Мрт-12, 00:18 
> Ставил все из портеджей.

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

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


Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру