
# В процессе эксплуатации оборудования, для возможности конфигурирования и обслуживания RAID-массивов контроллеров Megaraid, LSI, Avago, Broadcom в среде ОС AstraLinux версий 1.6, 1.7, 1.8 (https://ru.wikipedia.org/wiki/Astra_Linux), возникла задача по развертыванию LSA LSI Storage Authority Software. Унификация ПО не требовалась
В моем случае использовалась учетная запись первого пользователя при установке ОС, по умолчанию наделенного sudo (если ваш пользователь не первый в системе, то решите этот вопрос отдельными мероприятиями).
Было выбрано два метода реализации, которые выполнялись параллельно:
1. Поиск совместимых deb пакетов и их установка на вышеперечисленных версиях ОС;
2. Поиск исходников пакетов на сайте Broadcom, их сборка и установка, опять же таки для каждой ОС по отдельности (при невозможности собрать в AstraLinux - сделать это в соответствующей версии Debian).

Рассматривая пакетную совместимость AstraLinux версий 1.6/1.7/1.8 = Debian 9/10/11, учитывая требования по glibc не менее, чем для устаревшей версии ОС, удалось выйти на 
версию ПО WebGUIRelease_Linux_8.004.010.000, которое по своим характеристикам удовлетворяет требованиям поставленной задачи.

# Однако, при установке пакетов возникла ошибка с сообщением о неподдерживаемом сжатии
В ходе выяснения причин отказа в распаковке файлов было найдено решение, которое объяснило природу происходящего и пути решения, без необходимости sysdig/ptrace отладки происходящего
(благодарю авторов постов за рассуждения, оставленные на просторах Интернет  «https://unix.stackexchange.com/questions/669004/zst-compression-not-supported-by-apt-dpkg», 
предельно ясно и не требует пояснений).

    If you are running Debian < 12 and need to install a .deb package that uses zstd, you can repack it:
    Extract files from the archive
        ar x some-package.deb
    Uncompress zstd files an re-compress them using xz
        zstd -d < control.tar.zst | xz > control.tar.xz
        zstd -d < data.tar.zst | xz > data.tar.xz
    Re-create the Debian package in /tmp/
        ar -m -c -a sdsd /tmp/some-package.deb debian-binary control.tar.xz data.tar.xz
    Clean up
        rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst
    You should now be able to install the newly generated package:
        apt-get install /tmp/some-package.deb

# Перейдем в каталог распакованного архива WebGUIRelease_Linux_8.004.010.000.zip (найти указанный релиз, перебирая их множество по ссылке https://www.broadcom.com/site-search?page=7&per_page=10&q=lsa) и выполним действия изложенные выше, задействуя в apt расширенный репозиторий:

    sudo apt update

    sudo apt install zstd

    ar x LSA_lib_utils-1.16-1_amd64.deb

    zstd -d < control.tar.zst | xz > control.tar.xz

    zstd -d < data.tar.zst | xz > data.tar.xz

    ar -m -c -a sdsd /tmp/LSA_lib_utils-1.16-1_amd64.deb debian-binary control.tar.xz data.tar.xz

    rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst

    ar x LSA_lib_utils2-9.00-1_amd64.deb

    zstd -d < control.tar.zst | xz > control.tar.xz

    zstd -d < data.tar.zst | xz > data.tar.xz

    ar -m -c -a sdsd /tmp/LSA_lib_utils2-9.00-1_amd64.deb debian-binary control.tar.xz data.tar.xz

    rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst

    Сделаем все файлы исполняемыми (или сделайте команду для файлов избирательно): 
        chmod +x *.*  

    Установим, уже перепакованное программное обеспечение (подробнее о ключах запуска смотрите в файле LSA_Linux_64_readme.txt):
       sudo ./install_deb.sh -s
        (при запросе на вопрос о согласии с лицензией ответим Y и нажмем Enter)

    Просмотрим состояние, установленной службы:
         sudo systemctl status LsiSASH.service
         Работает (*в ином случае необходимо разобрать причины происходящего)

    Зайдем в управление через браузер по адресу:
        localhost:2463 ( или http://localhost:2463) или 127.0.0.1:2463 (или  http://127.0.0.1:2463),
        либо используйте address или alieses присвоенные вашим сетевым адаптерам.

# Выше перечисленные действия можно произвести на разнообразии DEB подобных операционных систем, здесь нет ограничений, будь то Debian, Ubuntu и прочие. И тут второй сюрприз — при входе запрашиваются логин и пароль пользователя 
В нашем случае этот пользователь должен являться root (не путать с возможностями sudo пользователя), более того используется проверка через LDAP. Пользователь root в наших системах не активирован по причинам безопасности.

Задача была запуститься и управлять RAID. Принято решение настройку безопасности данных соединений выполнить отдельно по завершении тестирования механизмов, путем установки и настройки LDAP, настройки прав пользователя, ограничения через iptables, или настройки конфигурационного файла данной службы,  или вовсе помещения в песочницу (впрочем это другая история, не менее насыщенная, чем эта и требует отдельного рассмотрения).

    Остановим службу: 
        sudo systemctl stop LsiSASH.service
        (прошу заметить останавливается быстро, а запускается в течении секунд 15-20)

    Отключим аутификацию:
        sudo nano /opt/lsi/LSIStorageAuthority/conf/LSA.conf
           найдем строку
               # bypass authentication (use with caution)
               bypass_authentication = 0
           и заменим на 
               # bypass authentication (use with caution)
               bypass_authentication = 1      
           Нажмем ctrl+o и enter (сохраним конфиг)

    Запустим службу:

        sudo systemctl start LsiSASH.service

Зайдем в управление через браузер по адресу: 

    localhost:2463 ( или http://localhost:2463) или 127.0.0.1:2463 (или  http://127.0.0.1:2463),
    либо используйте address или alieses присвоенные вашим сетевым адаптерам.

В определенных случаях необходимо выбрать RAID-адаптер с которым работать, к примеру если их несколько. В оформлении, посередине экрана, можно заметить название контроллера на синем фоне, что в обычной среде кажется обычным заголовком встроенного окна, здесь же это работает как огромная прямоугольная кнопка с названием контроллера — нажимайте смело на названия и будут переходы по странице (см. файл "LSA LSI Storage Authority Software.png", да простят меня создатели данного интерфейса).

![alt text](https://github.com/UAR-2020/LSA_for_Megaraid-Lsi-Avago-Broadcom_on_AstraLinux/blob/main/LSA%20LSI%20Storage%20AuthoritySoftware%20(how%20to%20click)_Linux2.png?raw=true)

# Казалось бы, что еще нужно, наконец то получилось

В процессе эксплуатации, при оставлении без внимания нашей службы для управления ресурсами высоконагруженного операциями ввода/вывода контроллера, стали часто возникать ситуации со 100% ее нагрузкой на процессоры/ядра.

    Остановим службу: 

        sudo systemctl stop LsiSASH.service

    Дезактивируем автозапуск службы: 

        sudo systemctl disable LsiSASH.service

Природу происходящего еще предстоит изучить. Обнаружено, что воздействие 100% загрузкой CPU нашей службы происходит не сиюминутно, а через некоторый длительный период времени. Получается, просмотреть статус, заменить диск, перестроить RAID, т. е. передать необходимые команды контроллеру и отключиться через нужное время — есть возможность, однако службу нельзя оставлять в работе на постоянной основе, чтобы не загружать процессор на 100%.

# Создадим оснастку автоматического запуска нашей службы, управления массивами и остановки службы на серверах с рабочего места оператора через псевдоGUI в bash

Для этого установим необходимые пакеты:

    sudo apt install dialog sshpass firefox

    где:
    dialog — утилита для построения консольных интерфейсов; 
    sshpass — утилита для запуска ssh c использованием режима аутификации по паролю в неинтерактивном режиме;
    firefox — веб браузер.

# Создадим bash-скрипт "lsacontrol.sh", в котором:

     Проверяем, установлены ли необходимые вспомогательные утилиты

     Указываем список серверов с описаниями (измените по контексту на ваши IP и комментарии)

     Указываем пароль и имя пользователя (небезопасно, перепишите это место)

     Создадим функцию проверки статуса службы LSA

     Подготавливаем меню для dialog (# Диалог выбора сервера - поиграйте с параметрами "15 60 6", чтобы все вписалось)

     Инициируем диалог выбора сервера

     Проверяем выбор сервера

     Далее проверяем доступность сервера

     При его доступности запускаем на нем службу LSA

     Ожидаем запуск службы LSA (необходимо сделать отдельной функцией, писал ранее о долгом запуске службы)

     При успешном запуске службы LSA на выбранном сервере запускаем Firefox c IP адресом выбранного сервера и портом :2464

     Отслеживаем pid запущенного ранее окна Firefox 

     По завершению работы с контроллерами/массивами и закрытию окна Firefox отправляем команду серверу на остановку службы.

# Запуск управления через ”lsacontrol.sh”:

    admin@astra1$  sh ./lsacontrol.sh

![alt text](https://github.com/UAR-2020/LSA_for_Megaraid-Lsi-Avago-Broadcom_on_AstraLinux/blob/main/pseudogaraphics_GUI_dialog.png?raw=true)

**Отдельно необходимо обратить внимание на порт 9000. Он используется для внутреннего обмена службы LsiSASH. У нас на серверах на данном порту работало высокопроизводительное распределенное объектное хранилище данных MinIO (S3 compatibility). Помогла утилита ss, которая показывает не только порты, но и процесс которые их занял. Перенастроили MinIO на другой порт. Другие процессы могут также его использовать, примите меры. Прочитайте файл LSA_Linux_64_readme.txt - в нем указаны режимы установки и возможность изменить порты по умолчанию (раздел "Installation Instructions").

#Масштабирование отображение окна диалога.
Иногда меню диалога дублируется и отображается ниже. Для корректного отображения необходимо с помощью манипулятора типа «мышь» изменить размер окна или скроллом изменить размер шрифта в окне, в обоих случаях индивидуально увеличить или уменьшить их.

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

Создайте ярлык для удобного запуска нашего проекта.
(Обратите внимание на пути самого ярлыка /home/ВАШ_ПОЛЬЗОВАТЕЛЬ/Desktop/LSA.desktop, где необходимо указать ВАШЕГО пользователя рабочего стола,   и   /home/admin/LSA/lsacontrol.sh - путь к ВАШЕМУ скрипту. Эти пути индивидуальны и требуют настройки)

    nano /home/admin/Desktop/LSA.desktop

    [Desktop Entry]
    Name=LSA_control
    Comment=cortrol raids
    GenericName=Megaraid, Lsi, Avago, Broadcom, LSA, RAID
    Keywords=raids
    Exec=sh /home/admin/LSA/lsacontrol.sh
    Terminal=true
    Type=Application
    Icon=/usr/share/icons/fly-astra/256x256/devices/raid.png
    Path=
    Categories=
    NoDisplay=false

![alt text](https://github.com/UAR-2020/LSA_for_Megaraid-Lsi-Avago-Broadcom_on_AstraLinux/blob/main/start_control.png?raw=true)

# При всех внештатных ситуациях и неполадках необходимо вернуться в начальное положение службы «деактивировано» и «остановлено» на выбранном сервере:

    sudo systemctl disable LsiSASH.service
    sudo systemctl stop LsiSASH.service

Далее запустить управление через ”lsacontrol.sh” (необходимо наличие прав sudo на отдельные команды):

    admin@astra1$ sh ./lsacontrol.sh

Необходимость в сборке пакетов LSA из исходников, как второго метода решения задачи, будет теперь только в случае возникновения нерешаемых неисправностей в процессе эксплуатации. Данное решение по стечению обстоятельств, как унифицированное ПО, было протестировано и применено на ОС AstraLinux на версиях 1.6, 1.7, 1.8 с разнообразием ядер.

Для развертывания LSA в ОС AstraLinux выложены файл с инструкцией по установке ”howtoinst-ru.txt” и подготовленные перепакованные файлы.

# Данное решение можно применить к более новым версиям LSA (https://www.broadcom.com/site-search?page=7&per_page=10&q=lsa)

https://techdocs.broadcom.com/lsa-lsi-storage-authority-software  - рекомендую к чтению статьи данной базы знаний

Успешной интеграции и эксплуатации

