Bug 28951 - Ошибка запуска raid6 в установленной системе
Summary: Ошибка запуска raid6 в установленной системе
Status: NEW
Alias: None
Product: ALT Linux Centaurus
Classification: Distributions
Component: Установка (show other bugs)
Version: 7.0
Hardware: all Linux
: P3 normal
Assignee: Anton V. Boyarshinov
QA Contact: QA p6
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-05-09 22:00 MSK by Michael A. Kangin
Modified: 2013-05-11 14:02 MSK (History)
0 users

See Also:


Attachments
скриншот долгой инициализации массива (10.16 KB, image/png)
2013-05-11 13:45 MSK, Michael A. Kangin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Michael A. Kangin 2013-05-09 22:00:39 MSK
После установки системы с /usr на lvm на raid6, при первом запуске raid6 не поднялся. Массив был в состоянии active not running, он не поднимался по mdadm --assemble --scan с кодом возврата 2, даже после принудительной загрузки незагруженного модуля raid456, однако поднимался как mdadm --run /dev/sdb.

Проблему решило перегенерация initrd, туда включился модуль raid456.

инсталлятор почему-то это не сделал.
с другой стороны, вроде он для /usr не особо нужен в initrd, может, какие-нибудь заморочки с udev c передачей устройств из initrd.

Это был старый добрый sysV-init.
Comment 1 Michael A. Kangin 2013-05-11 13:15:20 MSK
С ядром 3.8.12-std-def-alt1 и udev-201-alt1 все рейды оказываются подняты раньше, чем выполняется /etc/rc.d/scripts/raidstart, который всё равно выполняется.
Возможны races, с вываливанием ошибки инициализации рейдов.
Comment 2 Michael A. Kangin 2013-05-11 13:44:57 MSK
(В ответ на комментарий №1)
> Возможны races, с вываливанием ошибки инициализации рейдов.

точнее массив не успевает до конца инициализироваться, он поднят, но в состоянии inactive.
И натравливание на него mdadm -As в таком состоянии ведёт к ошибке (кажется, 2), и невозможности дальнейшего поднятия массива через --run. 
А у этого свои побочные эффекты - не подцепляются внешние bitmaps.

Если в raidstart в функцию start_raid_using_mdadm добавить диагностику с значительной паузой:
        if [ -x "$f" ]; then
                echo -n "(using mdadm) "
                echo "debug"
                cat /proc/mdstat
                echo ---------
                sleep 10s
                cat /proc/mdstat
                echo ---------
                "$f" --assemble --scan
                return $?
        fi
то мы увидим картину, как в приложенном скриншоте
Comment 3 Michael A. Kangin 2013-05-11 13:45:51 MSK
Created attachment 5820 [details]
скриншот долгой инициализации массива
Comment 4 Michael A. Kangin 2013-05-11 14:02:53 MSK
милая особенность моей конфигурации: 4 из 8 дисков, входящих в массив, контролируются модулем isci, который отличается долгой инициализацией.
Если его не включать в initrd, то нужно делать долгую паузу перед инициализацией массива.
Если его включить в initrd, то всё долго тормозит там ("loop: Running md_run handler"). и на ядре std-def-3.8.10 это даже приводило к аварийной консоли из-за (initrd): Stage 'killall' failed