Bug 28951 - Ошибка запуска raid6 в установленной системе
: Ошибка запуска raid6 в установленной системе
Status: NEW
: ALT Linux Centaurus
(All bugs in ALT Linux Centaurus/Установка)
: 7.0
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2013-05-09 22:00 by
Modified: 2013-05-11 14:02 (History)


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


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2013-05-09 22:00:39
После установки системы с /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 From 2013-05-11 13:15:20 -------
С ядром 3.8.12-std-def-alt1 и udev-201-alt1 все рейды оказываются подняты
раньше, чем выполняется /etc/rc.d/scripts/raidstart, который всё равно
выполняется.
Возможны races, с вываливанием ошибки инициализации рейдов.
------- Comment #2 From 2013-05-11 13:44:57 -------
(В ответ на комментарий №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 From 2013-05-11 13:45:51 -------
Created an attachment (id=5820) [details]
скриншот долгой инициализации массива
------- Comment #4 From 2013-05-11 14:02:53 -------
милая особенность моей конфигурации: 4 из 8 дисков, входящих в массив,
контролируются модулем isci, который отличается долгой инициализацией.
Если его не включать в initrd, то нужно делать долгую паузу перед
инициализацией массива.
Если его включить в initrd, то всё долго тормозит там ("loop: Running md_run
handler"). и на ядре std-def-3.8.10 это даже приводило к аварийной консоли
из-за (initrd): Stage 'killall' failed