Bug 27063 - Неправильно определяется имеющийся soft-RAID
Summary: Неправильно определяется имеющийся soft-RAID
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd (show other bugs)
Version: unstable
Hardware: all Linux
: P3 blocker
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-03-12 16:04 MSK by serpiph
Modified: 2012-04-10 17:16 MSK (History)
5 users (show)

See Also:


Attachments
Отчет make-initrd (228.65 KB, application/x-bzip)
2012-03-14 11:07 MSK, serpiph
no flags Details
Рабочий образ от mkinitrd (1.12 MB, application/octet-stream)
2012-03-14 11:07 MSK, serpiph
no flags Details
Образ от make-initrd-0.7.2-alt1, номер 1 (2.66 MB, application/octet-stream)
2012-03-14 11:11 MSK, serpiph
no flags Details
Образ от make-initrd-0.6.2-alt1 (2.66 MB, application/octet-stream)
2012-03-14 11:14 MSK, serpiph
no flags Details
Образ от make-initrd-0.7.2-alt1, номер 2 (2.66 MB, application/octet-stream)
2012-03-14 11:16 MSK, serpiph
no flags Details
Отчет make-initrd-0.7.2-alt1 (233.17 KB, application/x-bzip)
2012-03-14 11:20 MSK, serpiph
no flags Details
Образ от make-initrd для std-def-3.2.10-alt1 (2.66 MB, application/octet-stream)
2012-03-20 11:10 MSK, serpiph
no flags Details
Образ от mkinitrd для 3.2.10-std-def-alt1 (1.12 MB, application/octet-stream)
2012-03-20 11:13 MSK, serpiph
no flags Details
Bug-report от Вашего тестового make-initrd (228.92 KB, application/x-bzip)
2012-03-20 11:14 MSK, serpiph
no flags Details
make-initrd без mdadm (2.43 MB, application/octet-stream)
2012-03-21 09:09 MSK, serpiph
no flags Details
Установлен только make-initrd (2.45 MB, application/octet-stream)
2012-03-22 08:49 MSK, serpiph
no flags Details
Новая сборка make-initrd (2.72 MB, application/octet-stream)
2012-04-05 10:43 MSK, serpiph
no flags Details
Новая сборка make-initrd без devmapper (2.72 MB, application/octet-stream)
2012-04-05 10:45 MSK, serpiph
no flags Details
Новая сборка make-initrd без devmapper с отключенным mdadm (2.51 MB, application/octet-stream)
2012-04-05 10:46 MSK, serpiph
no flags Details
Список пакетов на машине на момент создания initrd (65.08 KB, text/plain)
2012-04-05 10:47 MSK, serpiph
no flags Details
Список устройств (47.65 KB, application/octet-stream)
2012-04-05 10:50 MSK, serpiph
no flags Details
Список разделов (3.71 KB, text/plain)
2012-04-05 10:51 MSK, serpiph
no flags Details
Список модулей (2.74 KB, text/plain)
2012-04-05 10:55 MSK, serpiph
no flags Details
Вывод команды mdadm --misc --detail-platform (402 bytes, text/plain)
2012-04-05 10:56 MSK, serpiph
no flags Details
Выводы mdadm --misc --detail /dev/mdX (4.11 KB, text/plain)
2012-04-05 10:57 MSK, serpiph
no flags Details
cat /proc/mdstat (513 bytes, text/plain)
2012-04-05 10:57 MSK, serpiph
no flags Details
Рабочий образ с make-initrd (2.84 MB, application/octet-stream)
2012-04-10 17:09 MSK, serpiph
no flags Details
Отчет make-initrd-0.7.3-alt1.1 (227.45 KB, application/x-bzip)
2012-04-10 17:10 MSK, serpiph
no flags Details
Вывод команды make-initrd (924 bytes, text/plain)
2012-04-10 17:16 MSK, serpiph
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description serpiph 2012-03-12 16:04:42 MSK
Начиная с версии ядра 3.2.5, программа make-initrd неправильно определяет наличие и состав RAID на компьютере.

На компьютере имеется 2 винта, разбитых одинаково на несколько разделов. Каждый раздел одного винта связан с аналогичным разделом другого винта в soft-RAID1. Каждый физический раздел при просмотре через fsck помечен меткой raid-autodetect.

Таким образом, на машине имеется 6 независимых soft-RAID, в каждом рейде нет разбиения на разделы, файловая система создана непосредственно на рейде. В файле /etc/mdadm.conf так и настроено, это видно и в /proc/mdstat.

При создании initrd для нового ядра make-initrd почему-то считает, что на компьютере не 6 отдельных рейдов, а один RAID1 и объединяет в RAID винты целиком. В результате:
1) после перезагрузки ядерный рейд-модуль вместо /dev/md{1..6} создает /dev/md127 и /dev/md127p{1,5,6,7,8,9} (что видно из загрузочных сообщений)
2) ядро не знает, что делать с разделами, помеченными как linux_raid_member и не может примонтировать корневой раздел на рейде
3) если загрузиться с флешки с созданным make-initrd разделом, то повторное создание образа невозможно (при заходе через chroot в смонтированный корень многострадальной системы), так как make-initrd затыкается на несуществующем модуле linux_raid_member.
4) монтирование этих разделов таки возможно, но только вручную с принудительным указанием типа файловой системы каждого раздела
5) перегенерация grub.conf с новыми разделами загрузке не помогает.

Однако mkinitrd создаёт правильный загрузочный образ на всех ядрах после 3.2.5.
Comment 1 Alexey Gladkov 2012-03-14 09:54:09 MSK
Приложите пожалуйста результат make-initrd bug-report на этой системе, образ созданный mkinitrd и образ созданный make-initrd.
Comment 2 serpiph 2012-03-14 11:07:03 MSK
Created attachment 5379 [details]
Отчет make-initrd
Comment 3 serpiph 2012-03-14 11:07:43 MSK
Created attachment 5380 [details]
Рабочий образ от mkinitrd
Comment 4 serpiph 2012-03-14 11:11:25 MSK
Created attachment 5381 [details]
Образ от make-initrd-0.7.2-alt1, номер 1

Данный образ создан make-initrd-0.7.2-alt1 в системе, загруженной при помощи mkinitrd. Висит на старте udevd. Ядро 3.2.9-std-def-alt1.1
Comment 5 serpiph 2012-03-14 11:14:59 MSK
Created attachment 5382 [details]
Образ от make-initrd-0.6.2-alt1

Нерабочий образ, создан в chroot после загрузки системы с флешки. При создании в chroot были проброшены /dev, /proc, /sys. Ядро 3.2.5-std-def-alt1 (на флешке не смог создать данный образ при 3.2.7-std-def-alt1 и 3.2.9-std-def-alt1.1 по причине неработоспособности make-initrd).
Comment 6 serpiph 2012-03-14 11:16:46 MSK
Created attachment 5383 [details]
Образ от make-initrd-0.7.2-alt1, номер 2

Нерабочий образ, создан в chroot после загрузки системы с флешки. При создании в chroot были проброшены /dev, /proc, /sys. Ядро 3.2.5-std-def-alt1 (на флешке не смог создать данный образ при 3.2.7-std-def-alt1 и 3.2.9-std-def-alt1.1 по причине неработоспособности make-initrd).
Comment 7 serpiph 2012-03-14 11:20:28 MSK
Created attachment 5384 [details]
Отчет make-initrd-0.7.2-alt1

Данный отчет сделан в системе, загруженной с флешки. Система 3.2.7-std-def-alt1. Работа make-initrd останавливается после безуспешной попытки найти модуль linux_raid_member
Comment 8 serpiph 2012-03-14 11:21:26 MSK
Всё генерилось для ядра 3.2.9-std-def-alt1.1.
Comment 9 Alexey Gladkov 2012-03-14 21:53:03 MSK
Мне кажется я знаю в чём дело.
Comment 10 Alexey Gladkov 2012-03-19 06:12:08 MSK
Вы не могли бы проверить версию из git ?

http://git.altlinux.org/people/legion/packages/make-initrd.git
Comment 11 serpiph 2012-03-19 17:26:48 MSK
Попробовал, останавливается на стадии

initrd: Starting udevd...
[    ] udevd[1068]: starting version 172
Comment 12 Alexey Gladkov 2012-03-19 19:33:36 MSK
Тогда приложите ещё раз полученный initrd.
Comment 13 serpiph 2012-03-20 11:10:58 MSK
Created attachment 5392 [details]
Образ от make-initrd для std-def-3.2.10-alt1

Данный образ собран при установленных пакетах (alt1.1 - это полностью Ваша сборка, я только изменил релиз, чтобы точно видеть что и как):
make-initrd-luks-0.7.2-alt1.1
make-initrd-0.7.2-alt1.1
make-initrd-mdadm-0.7.2-alt1.1
make-initrd-devmapper-0.7.2-alt1.1
make-initrd-nfs-0.7.2-alt1.1
make-initrd-multipath-0.7.2-alt1.1
make-initrd-lvm-0.7.2-alt1.1

Ядро, под которым собиралось: 3.2.10-std-def-alt1, загружен с образом от mkinitrd.
Comment 14 serpiph 2012-03-20 11:13:21 MSK
Created attachment 5393 [details]
Образ от mkinitrd для 3.2.10-std-def-alt1

С этим образом ядро 3.2.10-std-def-alt1 грузится.
Comment 15 serpiph 2012-03-20 11:14:40 MSK
Created attachment 5394 [details]
Bug-report от Вашего тестового make-initrd
Comment 16 Alexey Gladkov 2012-03-20 16:09:55 MSK
Ну сейчас у вас используется исключительно mdadm в initrd.
Попробуйте добавить:

DISABLE_FEATURES += mdadm

в /etc/initrd.mk и пересоздать образ.
Comment 17 serpiph 2012-03-21 08:58:42 MSK
Если стоит только пакет make-initrd, то полученный образ тоже неработоспособен, так как загрузка пишет, что запускается поиск raid, появляются все мои рейды на экране, после чего выпадает сообщение, что рейдов не найдено и поиск начинается снова. И так до бесконечности. Вариант сборки с установленным make-initrd-mdadm сейчас приложу.
Comment 18 serpiph 2012-03-21 09:09:41 MSK
Created attachment 5395 [details]
make-initrd без mdadm

Данная сборка с добавленной строкой в /etc/initrd.mk:
DISABLE_FEATURES += mdadm

Загрузка "висит" на запуске udevd (как и другие).
Comment 19 Alexey Gladkov 2012-03-21 17:56:38 MSK
Какой-то последний образ совсем нерабочий. Поддержки рейдов тут вообще нет.
Не могли бы вы показать образ, когда вы удалили make-initrd-mdadm вообще ?
Comment 20 serpiph 2012-03-22 08:49:42 MSK
Created attachment 5396 [details]
Установлен только make-initrd

Данный образ собран при наличии только пакета make-initrd-0.7.2-alt1.1 и без строки 

DISABLE_FEATURES += mdadm

в файле /etc/initrd.mk.
Comment 21 serpiph 2012-03-22 09:17:22 MSK
(В ответ на комментарий №19)
> Какой-то последний образ совсем нерабочий. Поддержки рейдов тут вообще нет.
> Не могли бы вы показать образ, когда вы удалили make-initrd-mdadm вообще ?

Так сработал параметр
DISABLE_FETURES += mdadm
:)

Сейчас попробовал собрать образ с помощью только make-initrd и make-initrd-mdadm (без других пакетов make-initrd.*) без отключения mdadm, чтобы исключить make-initrd-devmapper. Останов загрузки на этапе запуска udevd (как и всегда с make-initrd).
Comment 22 Alexey Gladkov 2012-03-22 09:37:18 MSK
(В ответ на комментарий №21)
> DISABLE_FETURES += mdadm

В make-initrd есть несколько механизмов сборки рейда. Одна через mdadm, другая как в mkinitrd через autodetect. У вас не работают обе, хотя autodetect должен работать.

> Останов загрузки на этапе запуска udevd (как и всегда с make-initrd).

Это не этап запуска udevd, а ожидание появления устройства похожего на рут.
Comment 23 Alexey Gladkov 2012-04-02 21:18:49 MSK
Собрал стенд в qemu с корнем на raid1, котором две партиции двух дисков. С версией make-initrd из git такая конфигурация грузится без проблем.
Comment 24 serpiph 2012-04-03 12:24:16 MSK
(В ответ на комментарий №23)
> Собрал стенд в qemu с корнем на raid1, котором две партиции двух дисков. С
> версией make-initrd из git такая конфигурация грузится без проблем.

У меня сервер на двух процессорах Xeon E5440. Этот компьютер ещё привередлив и к выбору ядра (ядро un-def на нём отказывается работать напрочь).

Или у Вас в git сейчас что-то обновилось в make-initrd по сравнению с последним сообщением? Может, конфигурация mdadm ему не нравится? Вот конфиг:

MAILADDR root
PROGRAM /sbin/mdadm-syslog-events
DEVICE /dev/sda* /dev/sdb*
ARRAY /dev/md1 level=1 name=BOOT devices=/dev/sda1,/dev/sdb1
ARRAY /dev/md5 level=1 name=SWAP devices=/dev/sda1,/dev/sdb1
ARRAY /dev/md6 level=1 name=ROOT devices=/dev/sda1,/dev/sdb1
ARRAY /dev/md7 level=1 name=USR  devices=/dev/sda1,/dev/sdb1
ARRAY /dev/md8 level=1 name=VAR  devices=/dev/sda1,/dev/sdb1
ARRAY /dev/md9 level=1 name=HOME devices=/dev/sda1,/dev/sdb1
Comment 25 Alexey Gladkov 2012-04-03 13:44:41 MSK
Я забыл сказать, что завелось это у меня без mdadm на простом raid (autodetect).
Я не делал никаких изменений с коммента #23, но с #22 изменения были.
Comment 26 serpiph 2012-04-03 14:56:10 MSK
То есть можно взять из git и потестировать на проблемной машине?
Comment 27 Alexey Gladkov 2012-04-03 15:03:38 MSK
(В ответ на комментарий №26)
> То есть можно взять из git и потестировать на проблемной машине?

Угу.
Comment 28 serpiph 2012-04-05 10:43:24 MSK
Created attachment 5428 [details]
Новая сборка make-initrd

Ядро 3.2.10-std-def-alt1. Установлены пакеты:
make-initrd (от 04.04)
make-initrd-mdadm (от 04.04)
make-initrd-devmapper (от 04.04)

Параметра DISABLED_FEATURE += mdadm в настройках нет.
Comment 29 serpiph 2012-04-05 10:44:19 MSK
Забыл указать, что загрузка останавливается на этапе старта udevd
Comment 30 serpiph 2012-04-05 10:45:21 MSK
Created attachment 5429 [details]
Новая сборка make-initrd без devmapper

Ядро 3.2.10-std-def-alt1. Установлены пакеты:
make-initrd (от 04.04)
make-initrd-mdadm (от 04.04)

Параметра DISABLED_FEATURE += mdadm в настройках нет. Загрузка останавливается на этапе старта udevd.
Comment 31 serpiph 2012-04-05 10:46:57 MSK
Created attachment 5430 [details]
Новая сборка make-initrd без devmapper с отключенным mdadm

Ядро 3.2.10-std-def-alt1. Установлены пакеты:
make-initrd (от 04.04)
make-initrd-mdadm (от 04.04)
make-initrd-devmapper (от 04.04)

Параметр DISABLED_FEATURE += mdadm в настройках включён.
Загрузка не стопорится, но рейды не находит.
Comment 32 serpiph 2012-04-05 10:47:52 MSK
Created attachment 5431 [details]
Список пакетов на машине на момент создания initrd
Comment 33 serpiph 2012-04-05 10:50:49 MSK
Created attachment 5432 [details]
Список устройств
Comment 34 serpiph 2012-04-05 10:51:27 MSK
Created attachment 5433 [details]
Список разделов
Comment 35 serpiph 2012-04-05 10:55:38 MSK
Created attachment 5434 [details]
Список модулей
Comment 36 serpiph 2012-04-05 10:56:37 MSK
Created attachment 5435 [details]
Вывод команды mdadm --misc --detail-platform
Comment 37 serpiph 2012-04-05 10:57:14 MSK
Created attachment 5436 [details]
Выводы mdadm --misc --detail /dev/mdX
Comment 38 serpiph 2012-04-05 10:57:46 MSK
Created attachment 5437 [details]
cat /proc/mdstat
Comment 39 serpiph 2012-04-05 11:00:19 MSK
В общем, пока всё на месте стоит. Я привёл данные по системе для понимания, что имеется. Надеюсь, пригодятся.
Comment 40 Alexey Gladkov 2012-04-09 17:40:05 MSK
Про верьте пожалуйста ещё раз master.
Comment 41 serpiph 2012-04-10 17:09:23 MSK
Created attachment 5440 [details]
Рабочий образ с make-initrd

Сегодня скачал с git и проверил сборку make-initrd + make-initrd-mdadm. Заработало! Теперь модуль raid собрал разделы правильно, загрузка полностью выполнена. Ядро 3.2.14-std-def-alt1, текущий Сизиф. Следующим пришлю bug-report к нему, чтобы было с чем сравнивать.
Comment 42 serpiph 2012-04-10 17:10:51 MSK
Created attachment 5441 [details]
Отчет make-initrd-0.7.3-alt1.1

А это отчет make-initrd о системе, которую он сам же и загрузил.
Comment 43 serpiph 2012-04-10 17:12:12 MSK
Всё заработало, ошибку закрываю. Спасибо большое!
Comment 44 serpiph 2012-04-10 17:16:47 MSK
Created attachment 5442 [details]
Вывод команды make-initrd

Непонятно только, почему программа затолкала столько модулей в initrd, у меня нет ни raid6, ни raid10, только raid1.