(выделил из bug #27229) > > > > добавляются модули для всех уровней RAID, хотя достаточно одного. > > > [...] пока не придумал способа правильно детектить нужный модуль. > > /sys/block/md$THIS/md/level устроит? :) > Так было раньше и меня это не устраивает :) А чем не устроило, или что есть правильно?
Тем что, неправильно отождествлять уровень рейда с именем ядерного модуля: All md devices contain: level a text file indicating the 'raid level'. e.g. raid0, raid1, raid5, linear, multipath, faulty. If no raid level has been set yet (array is still being assembled), the value will reflect whatever has been written to it, which may be a name like the above, or may be a number such as '0', '5', etc. В некоторых случаях это будет работать, а в некоторых нет.
Как ты представляешь себе /boot, находящийся на raid неопределённого уровня? :) Сделал эксперимент с server-mini.iso -- вот на момент установки загрузчика: ==> mdstat <== Personalities : [raid1] md0 : active raid1 dm-1[1] dm-0[0] 1047488 blocks [2/2] [UU] [=>...................] resync = 6.3% (66176/1047488) finish=15.8min speed=1034K/sec unused devices: <none> ==> md/level <== raid1 Досинкалось оно уже после загрузки установленного (правда, слишком быстро на tmpfs -- заметить в процессе ещё успел, а скопировать уже нет). Давай спросим vsu@, можно ли закладываться на данные sysfs в этом вопросе.
(В ответ на комментарий №2) > Как ты представляешь себе /boot, находящийся на raid неопределённого уровня? :) Миш, причём тут /boot? Эти рейдовые модули нужны для монтирования корня. Давай простой случай: в md/level будет raid5. Какой модуль класть ?
(In reply to comment #3) > Миш, причём тут /boot? Эти рейдовые модули нужны для монтирования корня. Всё тормозил с утра -- изначально подумал именно про корень. > Давай простой случай: в md/level будет raid5. Какой модуль класть ? raid456 с зависимостями -- посмотрел, поискал и пока не могу предложить ничего лучше маппинга raid[456] в raid456...
Вот и я пока не придумал. Поэтому пока кладу все.
На самом деле там есть алиасы, причём достаточно давно: # grep ' md-' /lib/modules/2.6.32-el-smp-alt33/modules.alias alias md-level--1 linear alias md-linear linear alias md-personality-1 linear alias md-level-0 raid0 alias md-raid0 raid0 alias md-personality-2 raid0 alias md-level-1 raid1 alias md-raid1 raid1 alias md-personality-3 raid1 alias md-level-10 raid10 alias md-raid10 raid10 alias md-personality-9 raid10 alias md-level-6 raid456 alias md-raid6 raid456 alias md-personality-8 raid456 alias md-level-4 raid456 alias md-level-5 raid456 alias md-raid4 raid456 alias md-raid5 raid456 alias md-personality-4 raid456 alias md-level--5 faulty alias md-faulty faulty alias md-personality-10 faulty
Т.е. получается, что делать наоборот ничего не нужно. Модуль сам вытянется по modalias.
(В ответ на комментарий №6) > На самом деле там есть алиасы, причём достаточно давно: > > # grep ' md-' /lib/modules/2.6.32-el-smp-alt33/modules.alias Хм. Я в /sys/devices/virtual/block/md6 и выше никаких modalias не вижу. А где эти алиасы найти в /sys ?
$ read level < /sys/devices/virtual/block/md0/md/level $ depinfo "md-$level"
make-initrd-0.7.6-alt1 -> sisyphus: * Sun May 06 2012 Alexey Gladkov <legion@altlinux> 0.7.6-alt1 - Rewrite put-file. - Add support for libkmod >= 8. - Add autodetection for raid modules (ALT#27248). - Better handle builtin modules.