The OpenNET Project / Index page

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

Как подружить Linux-ядро 3.x и утилиту LSI MegaCli
С переходом на ядро Linux 3.x.x владельцы LSI RAID могут столкнуться с
неприятным явлением - утилита MegaCli или MegaCli64 перестаёт обнаруживать
RAID-контроллер. Ядро правильно определяет и корректно работает, а утилита
упорно показывает, что никакого RAID-контроллера нет. Не помогает исправить
проблему и обновление MegaCli до последней версии - 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.  Воспользуемся помощью 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.

Ссылки:
    LSI MegaCLI Emergency Cheat Sheet
    LSI Documents and Downloads
    Debugging code with strace
    Debugging with gdb
    Creating and using shared libraries in Linux
    Modifying a Dynamic Library Without Changing the Source Code
 
18.02.2012 , Автор: Andrew Okhmat , Источник: http://supportex.net/ru/2012/02/how...
Ключи: linux, kernel, version, ld_preload
Раздел:    Корень / Администратору / Система / Поддержка аппаратного обеспечения

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (-), 23:24, 19/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    setarch --uname-2.6 для слабоков?
     
     
  • 2.2, Аноним (-), 23:28, 19/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    setarch: --uname-2.6: Unrecognized architecture
     
     
  • 3.3, animechaos (ok), 02:43, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > setarch: --uname-2.6: Unrecognized architecture

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

     
  • 3.6, Michael Shigorin (ok), 11:44, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > setarch: --uname-2.6: Unrecognized architecture

    В 2.20.1 есть.

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

     
  • 2.4, andysp (ok), 07:19, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Не знал, что появился такой параметр.
    Тогда все проще:

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

     

  • 1.10, Аноним (-), 17:21, 29/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Просто нужно использовать правильные дистрибутивы. И никакого бубна не надо, всё уже сделано и работает.
     
     
  • 2.11, Andrey Mitrofanov (?), 18:24, 29/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Просто нужно использовать правильные дистрибутивы. И никакого бубна не надо, всё уже
    > сделано и работает.

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

     
     
  • 3.12, iCat (ok), 14:36, 01/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >А чё не "правильные RAID-контроллеры"?

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

     
     
  • 4.13, muon (ok), 04:18, 02/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >>А чё не "правильные RAID-контроллеры"?
    > А потому, что сами по себе этии RAID-controllers - отживающее свой век
    > явление.
    > Будущее - за системами, подобными LVM, ZFS и им подобными

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

     
     
  • 5.14, iCat (ok), 05:35, 02/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >>>А чё не "правильные RAID-контроллеры"?
    >> А потому, что сами по себе этии RAID-controllers - отживающее свой век явление.
    >> Будущее - за системами, подобными LVM, ZFS и им подобными
    > А parity на CPU считать? Ну-ну.

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

     
     
  • 6.15, Michael Shigorin (ok), 13:46, 02/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> А parity на CPU считать? Ну-ну.
    > - А где бензобак?

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

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

     
     
  • 7.17, iCat (ok), 11:24, 04/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >...Годится в случаях выделенных сторадж-серверов...

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

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

     
     
  • 8.18, Michael Shigorin (ok), 15:52, 04/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    На десктопе -- да, на workstation встречались DAC960 как-то стоял Не могу п... текст свёрнут, показать
     
     
  • 9.19, iCat (ok), 14:26, 05/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Честно говоря, я надеюсь увидеть что-нибудь типа ZFS-controller или, там, BTR... текст свёрнут, показать
     
  • 4.20, Аноним (-), 09:49, 07/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Это только в ваших фантазиях. Никуда железные рейды не денутся.
     
  • 2.16, Дядя_Федор (?), 11:48, 03/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    У меня почему-то никаких проблем не возникло. 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.

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

     
     
  • 3.21, XoRe (ok), 00:18, 09/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ставил все из портеджей.

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

     
     
  • 4.22, Дядя_Федор (?), 11:39, 12/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > А вы посмотрите содержимое порта на предмет какого-нибудь патчика на тему 2.6)

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


     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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