Linux - dmraid (или mdadm) - пересобрать RAID 10
Некоторое время назад у меня был дерьмовый конфиг raid10, и сейчас я просто пытаюсь спасти массив, чтобы я мог восстановить и продолжить свою жизнь. В основном сбой диска в каждом подмножестве, что означает (в теории), я могу восстановить. Если я потерял два диска в одном и том же подмножестве, восстановление невозможно.
Я удалил два плохих диска и добавил два новых диска в систему. Для карты контроллера рейда система использует обещание fasttrak 4310. Когда я загрузил систему, я запрыгнул в биос карты контроллера рейда и заметил, что все 4 диска были найдены, но два новых (очевидно) не были назначены на рейд конфигурации. К сожалению, я не могу удалить два старых диска и добавить два новых диска из конфигурации через BIOS. Promise предоставляет установщик WebPAM, но он старый (6 лет) и не будет устанавливаться на CentOS 6.4.
Поэтому я немного покопался и наткнулся на "dmraid". dmraid выглядит многообещающе, так как он возвращал информацию о моем raid config, основываясь на том, что я знаю об этом:
root@service1 ~ # -> dmraid -s -s
ERROR: pdc: wrong # of devices in RAID set "pdc_fbdbhaai-0" [1/2] on /dev/sdb
ERROR: pdc: wrong # of devices in RAID set "pdc_fbdbhaai-1" [1/2] on /dev/sde
ERROR: pdc: wrong # of devices in RAID set "pdc_fbdbhaai-0" [1/2] on /dev/sdb
ERROR: pdc: wrong # of devices in RAID set "pdc_fbdbhaai-1" [1/2] on /dev/sde
*** Superset
name : pdc_fbdbhaai
size : 976642080
stride : 32
type : raid10
status : ok
subsets: 2
devs : 2
spares : 0
--> Subset
name : pdc_fbdbhaai-0
size : 976642080
stride : 32
type : stripe
status : broken
subsets: 0
devs : 1
spares : 0
--> Subset
name : pdc_fbdbhaai-1
size : 976642080
stride : 32
type : stripe
status : broken
subsets: 0
devs : 1
spares : 0
root@service1 ~ # -> dmraid -r
/dev/sde: pdc, "pdc_fbdbhaai-1", stripe, ok, 976642080 sectors, data@ 0
/dev/sdb: pdc, "pdc_fbdbhaai-0", stripe, ok, 976642080 sectors, data@ 0
На данный момент, похоже, все, что мне нужно сделать, это обновить метаданные raid, чтобы игнорировать старые диски, и добавить новые диски. Тогда (надеюсь) я могу выполнить команду перестроения, и теоретически рейд спасет себя с двумя оставшимися дисками.
Я читал "man dmraid", но хотел быть абсолютно уверенным, что команды, которые я выдаю, выполнят то, что я пытаюсь сделать. К сожалению, я не смог найти в Интернете хороших документов о том, как добавлять / удалять диски из метаданных raid с помощью dmraid.
Мой предложенный набор команд будет выглядеть так:
root@service1 ~ # -> dmraid --remove pdc_fbdbhaai-0 /dev/sda1
root@service1 ~ # -> dmraid --remove pdc_fbdbhaai-1 /dev/sda2
Когда старые диски удалены, пора добавить новые:
root@service1 ~ # -> dmraid -R pdc_fbdbhaai-0 /dev/sdc
root@service1 ~ # -> dmraid -R pdc_fbdbhaai-1 /dev/sdd
Кто-нибудь с опытом работы с dmraid может подтвердить эти шаги? Или я должен пойти другим путем?
1 ответ
Святое дерьмо. Был в состоянии понять это. После еще одного исследования я наткнулся на несколько постов, в которых говорилось, что dmraid больше не поддерживается, и вместо этого использовал mdadm. Итак, я начал работать с mdadm и выяснил команды для восстановления рейда и, надеюсь, снова в сети. Вот что я сделал:
Согласно документации mdadm, при выполнении команды сборки будет создан логический том из двух физических дисков, ЕСЛИ у них есть информация о суперблоке, поэтому давайте добавим два диска, которые не были неисправны:
$ -> mdadm --assemble /dev/md0 /dev/sdb /dev/sde
mdadm: /dev/md0 assembled from 2 drives - need all 4 to start it (use --run to insist).
Достаточно просто, давайте добавим два новых диска в логический том:
$ -> mdadm --add /dev/md0 /dev/sdc /dev/sdd
mdadm: cannot get array info for /dev/md0
В этот момент я немного погуглил, чтобы узнать, на что указывает это сообщение. Было множество различных ситуаций, которые могут вызвать данный ответ, поэтому я снова обдумал команду сборки. Ключом к повторному рассмотрению команды сборки во второй раз было выданное сообщение; msgstr "использовать --run, чтобы настаивать". Понял, почему бы не дать ему шанс:
$ -> mdadm --run /dev/md0
mdadm: started /dev/md0
Хорошо, пока хорошо, теперь я могу добавить два новых диска?
$ -> mdadm --add /dev/md0 /dev/sdc
mdadm: added /dev/sdc
$ -> mdadm --add /dev/md0 /dev/sdd
mdadm: added /dev/sdd
Вау круто! Давайте проверим статус:
$ -> cat /prod/mdstat
Personalities : [raid10]
md0 : active raid10 sdd[4](S) sdc[5] sdb[1] sde[2]
976772992 blocks 64K chunks 2 near-copies [4/2] [_UU_]
[>....................] recovery = 2.2% (10762688/488386496) finish=131.5min speed=60498K/sec
unused devices: <none>
Да, черт возьми! Согласно статусу, рейд восстанавливается из двух дисков, которые не разбились и не сгорели.
-- РЕДАКТИРОВАТЬ --
Чтобы убедиться, что конфигурация рейда сохраняется между перезагрузками / выключениями, мне пришлось сделать следующее:
$ -> mdadm --detail --scan >> /etc/mdadm.conf