8

У меня возникла следующая проблема с программным 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 с резервного диска на активный диск? Мне все еще интересно узнать ответ.

3 ответа3

1

Довольно поздно, но выполнение этого просто включит запасной диск:

mdadm --grow /dev/md3 -n 2

Как написано на странице руководства:

Для создания, сборки или роста:-n, --raid-devices = Указать количество активных устройств в массиве. Это, плюс количество запасных устройств (см. Ниже), должно равняться количеству компонентных устройств (включая "отсутствующие" устройства), которые перечислены в командной строке для --create. Установка значения 1, вероятно, является ошибкой и поэтому требует, чтобы --force был указан первым. Значение 1 будет затем разрешено для линейного, многолучевого, RAID0 и RAID1. Это никогда не допускается для RAID4, RAID5 или RAID6. Этот номер можно изменить только с помощью параметра --grow для массивов RAID1, RAID4, RAID5 и RAID6 и только в тех ядрах, которые обеспечивают необходимую поддержку.

1

Даниэль: Сначала проверьте еще раз, интегрируется ли запасной в массив, выполнив:

cat /proc /mdstat

который должен сообщить, происходит ли процесс сборки, и сколько времени это займет.

Если здание не встречается, попробуйте следующее

mdadm /dev /md3 - удалить /dev /sdb5

mdadm /dev /md3 --add /dev /sdb5

И доложите, как это работает для вас. Смотрите http://linux.die.net/man/8/mdadm для более подробной информации.

0

Из того, что я помню, когда у меня была эта проблема (по другой причине), я должен был использовать --grow, чтобы заново добавить запасной диск "правильно" (также устраняя условие ошибки).

Примерно так (уточните у своей документации!):

mdadm --grow --level = неисправный --layout = flush /dev /sdb5

Затем вы можете добавить устройство, и оно должно быть распознано.

Проблема в том, что драйвер md сохраняет состояние каждого раздела в загрузочных данных дисков. Таким образом, даже после перезагрузки он знает статус и избегает разделов, помеченных как неисправные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .