У меня возникла следующая проблема с программным RAID-разделом RAID1 в моей системе Ubuntu (10.04 LTS, 2.6.32-24-сервер на случай, если это имеет значение).
Один из моих дисков (sdb5) сообщил об ошибках ввода / вывода и поэтому был помечен как неисправный в массиве. Затем массив был разложен на одно активное устройство. Поэтому я заменил жесткий диск, клонировал таблицу разделов и добавил все новые разделы в мои raid-массивы. После синхронизации все разделы закончились нормально, имея 2 активных устройства - кроме одного из них. Однако раздел, который ранее сообщал о неисправном диске, не включал новый раздел в качестве активного устройства, а в качестве резервного диска:
md3 : active raid1 sdb5[2] sda5[1]
4881344 blocks [2/1] [_U]
Детальный взгляд показывает:
root@server:~# mdadm --detail /dev/md3
[...]
Number Major Minor RaidDevice State
2 8 21 0 spare rebuilding /dev/sdb5
1 8 5 1 active sync /dev/sda5
Итак, вот вопрос: как я могу сказать своему рейду превратить запасной диск в активный? И почему он был добавлен в качестве запасного устройства? Воссоздание или повторная сборка массива не вариант, потому что это мой корневой раздел. И я не могу найти никаких подсказок на эту тему в Software Raid HOWTO.
Любая помощь будет оценена.
Текущее решение
Я нашел решение своей проблемы, но я не уверен, что это реальный способ сделать это. Внимательно изучив мой рейд, я обнаружил, что sdb5 всегда указывался как запасное устройство:
mdadm --examine /dev/sdb5
[...]
Number Major Minor RaidDevice State
this 2 8 21 2 spare /dev/sdb5
0 0 0 0 0 removed
1 1 8 5 1 active sync /dev/sda5
2 2 8 21 2 spare /dev/sdb5
поэтому чтение устройства sdb5 в массив md3 всегда заканчивалось добавлением устройства как запасного.
Наконец я просто воссоздал массив
mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5
который работал.
Но вопрос остается открытым для меня: есть ли лучший способ манипулировать аннотациями в суперблоке и указывать массиву превратить sdb5 с резервного диска на активный диск? Мне все еще интересно узнать ответ.