Raid1 с активным и запасным разделом

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

Даниэль Барон
источник
Что показывает "cat / proc / mdstat"? Разве это не просто восстановление, и «запасные» просто исчезнут, когда восстановление будет закончено? Что показывает "mdadm --version"? Была старая ошибка ... см. Mail-archive.com/linux-raid@vger.kernel.org/msg09818.html .
Ремс
Нет, это проблема. Первый фрагмент в вопросе показывает вывод / proc / mdstat для массива. Устройство уже синхронизировано, но, как вы можете видеть после успешного процесса синхронизации, оно остается резервным и не превращается в активное.
Даниэль Барон
mdadm - v2.6.7.1
Даниэль Барон

Ответы:

1

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

cat / proc / mdstat

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

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

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

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

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

Rolnik
источник
Спасибо за вашу помощь, Ролник. Как вы можете видеть из моего первого фрагмента / proc / mdstat показывает оба устройства в массиве. Устройство уже было синхронизировано ранее (здесь не показано) без проблем. Но после завершения процесса повторной синхронизации устройства не были превращены в активное устройство. Удаление и добавление снова не изменило это поведение.
Даниэль Барон
1

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

mdadm --grow /dev/md3 -n 2

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

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

Пабло Монтепагано
источник
0

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

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

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

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

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

Алексис Уилке
источник