У меня возникла следующая проблема с программным 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 с резервного диска на активный диск? Мне все еще интересно узнать ответ.
Ответы:
Даниэль: Сначала проверьте еще раз, интегрируется ли запасной в массив, выполнив:
который должен сообщить, происходит ли процесс сборки, и сколько времени это займет.
Если здание не встречается, попробуйте следующее
И доложите, как это работает для вас. Смотрите http://linux.die.net/man/8/mdadm для более подробной информации.
источник
Довольно поздно, но выполнение этого просто включит запасной диск:
Как написано на странице руководства:
источник
Из того, что я помню, когда у меня возникла эта проблема (по другой причине), мне пришлось использовать --grow, чтобы заново «правильно» добавить запасной диск (также устраняя условие ошибки).
Примерно так (уточните у своей документации!):
mdadm --grow --level = неисправный --layout = flush / dev / sdb5
Затем вы можете добавить устройство, и оно должно быть распознано.
Проблема заключается в том, что драйвер md сохраняет состояние каждого раздела в загрузочных данных дисков. Таким образом, даже после перезагрузки он знает статус и избегает разделов, помеченных как неисправные.
источник