Провёл исследование по установке Ubuntu на программный RAID1 массив Intel RST, собранный на сервере Supermicro. Другие названия:
- Intel RST (Intel Rapid Storage Technology)
- Intel RSTe (Intel Rapid Enterprise)
- Intel VROC (Virtual RAID on CPU)
Если на вашей материнской плате стоит чип Intel, поддерживающий технологию Intel RST (Rapid Storage Technology), Intel RSTe (Intel Rapid Enterprise) или Intel VROC (Virtual RAID on CPU), то вы можете собрать RAID массив из жёстких дисков SATA или PCIe и обеспечить отказоустойчивость данных. Если из строй выйдет один диск, то вы продолжаете работать.
Собрал я такой массив RAID1 на сервере Supermicro и проверил, какие последние версии Ubuntu на него ставятся без проблем.
Версии Ubuntu 22 и Ubuntu 23 установиться смогли, но загрузиться — нет. Загружается только initramfs. Это означает, что ядро не может загрузить корневой раздел. Загруженная в этом режиме файловая система не имеет ничего общего с обычной операционной системой, это содержимое образа initramfs, которое содержит только самые необходимые компоненты, используемые ядром для загрузки.
Последняя версия Ubuntu Server или Ubuntu Desktop, которая нормально установилась на программный массив, это версия 20.04.6. А теперь ложка дёгтя. После установки обновлений и пакета mdadm сервер перезагрузился и снова попал в initramfs. RAID массивы видятся, но разделы не отображаются.
Поиски решения в Интернет не увенчались успехом. Что, никто не использует RST? Да ладно, у Supermicro программные массивы сплошь и рядом, на каждой материнке по два контроллера с поддержкой RAID массивов. Но решения не увидел.
Реанимируем.
Ubuntu 20
Продолжаем тестирование на Ubuntu Desktop 20.04.6. У нас всё загружено с нуля, ставим mdadm.
apt install mdadm
Перезагружаемся, и...
Система не грузится, диск не найден. Попадаем в initramfs.
cat /proc/mdstat
mdadm --detail /dev/md126
Получается, mdadm перехватил работу с массивами, создал их, но как-то криво.
cd /dev
ls
Диск есть, а разделов нет. Давайте смонтируем RAID массив не через mdadm, а через dmraid. Останавливаем массивы mdadm.
mdadm --stop /dev/md126
mdadm --stop /dev/md127
cat /proc/mdstat
Монтируем массивы через dmraid.
dmraid -ay -f isw
Проверяем.
cd /dev
ls
Ага, у нас появились разделы dm-1 и md-2.
cd /dev/mapper
ls
И в mapper тоже разделы видны. Пробуем продолжить загрузку: Ctrl + d.
Великолепно. Система загрузилась. Скорее сносим mdadm.
apt remove mdadm
apt purge mdadm
Ubuntu 20 полечили. По результатам работы с Ubuntu 20.04.6 была написана статья:
Ubuntu 20 на Intel RST не грузится после установки mdadm
А всё-таки? Как насчёт Ubuntu 22 и 23?
Меня терзают смутные сомнения насчёт более старших версий... Пробуем снова ставить Ubuntu 22.
Установка Ubuntu Desktop 22.04.3 LTS на сервер Supermicro
Загружаем сервер и получаем в бубен:
По умолчанию Ubuntu использует для определения программных массивов dmraid (Device-Mapper Software RAID support tool). Утилита dmraid обнаруживает, активирует, деактивирует и показывает свойства программных RAID массивов. Поддерживаются массивы:
dmraid -l
asr : Adaptec HostRAID ASR (0,1,10) ddf1 : SNIA DDF1 (0,1,4,5,linear) hpt37x : Highpoint HPT37X (S,0,1,10,01) hpt45x : Highpoint HPT45X (S,0,1,10) isw : Intel Software RAID (0,1,5,01) jmicron : JMicron ATARAID (S,0,1) lsi : LSI Logic MegaRAID (0,1,10) nvidia : NVidia RAID (S,0,1,10,5) pdc : Promise FastTrack (S,0,1,10) sil : Silicon Image(tm) Medley(tm) (0,1,10) via : VIA Software RAID (S,0,1,10) dos : DOS partitions on SW RAIDs
В нашем случае используется isw: Intel Software RAID (0,1,5,01).
Если заглянуть в папку /dev, то можно увидеть, что массив собрался, у нас имеется устройство dm-0.
А вот никаких разделов не найдено. Не видишь разделы? А они есть. Давайте просто вручную добавим разделы. Смотрим в /dev/mapper.
ls /dev/mapper
У нас имеется массив isw_dgdiggbfff_SYSTEM. Как раз при создании массива я указывал ему имя "SYSTEM". Добавляем все разделы массива.
kpartx -a /dev/mapper/isw_dgdiggbfff_SYSTEM
kpartx — инструмент на основе partx util-linux, который создаёт карту устройств (device map) для разделов блочного устройства.
Снова смотрим в /dev/mapper.
ls /dev/mapper
И у нас добавились два раздела isw_dgdiggbfff_SYSTEM1 и isw_dgdiggbfff_SYSTEM2.
Пробуем продолжить загрузку: Ctrl + d. Операционная система загрузилась нормально.
Теперь нам нужно автоматизировать этот процесс. Переходим в директорию, работаем под рутом.
cd /etc/initramfs-tools/scripts/local-top
Создаём свой скрипт.
touch forceraid
Содержимое скрипта:
#!/bin/sh PREREQS="" prereqs() { echo $PREREQS } case $1 in # get pre-requisites prereqs) prereqs exit 0 ;; esac /sbin/kpartx -a /dev/mapper/isw_dgdiggbfff_SYSTEM
Дадим право на исполнение.
chmod +x ./forceraid
Собираем initramfs.
update-initramfs -u -k all
Перезагружаемся и радуемся.
Я так понимаю, Ubuntu 23 лечится таким же образом. Расходимся.