9 июля 2009 г. 14:05 пользователь Maxim Tyurin ([email protected]) написал: > Maksym Tiurin writes: > >> Загружаюсь с rescue cd и пытаюсь восстановить рейд на последних трех >> работающих дисках. Не восстанавливается >> >> mdadm --assemble --force /dev/md0 --force /dev/sdb /dev/sde /dev/sdd >> mdadm: /dev/md0 assembled from 2 drives and 1 spare - not enough to >> start the array. >> >> mdadm считает что sdd - hot spare >> >> cat /proc/mdstat >> Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] >> md0 : inactive sdb[0](S) sdd[4](S) sde[3](S) >> 1465159488 blocks >> >> unused devices: <none> >> >> >> cat /sys/block/md0/md/array_state >> inactive > > \skip > > >> В суперблоке sdd и записано что он spare. >> >> Два диска видно что активные > > \skip > > Рассказываю как восстановил (пусть для истории будет). > > Для восстановления нужно знать какой был рейд, его уровень, количество > дисков и какой диск в каком слоте был. > Ну и порядок их вылета тоже совсем не помешает. > > У меня был raid5 из 4-х дисков с таким раскладом по слотам > HDD slot > sdb 0 > sdc 1 > sdd 2 > sde 3 > > Сначала вылетел sdc, потом sdd > > Зная это восстановить просто: > # mdadm --create --verbose /dev/md0 --assume-clean --level=raid5 > --raid-devices=4 --spare-devices=0 /dev/sdb /dev/sdc /dev/sdd /dev/sde
Тут надо подчеркнуть самый важный момент: диски нужно перечислять в соответствии с их номерами (порядковый номер в массиве естественно), при последней активации. Можно посмотреть в логах. Порядок в принципе может поменяться если до этого уже бы сбой. Также не стоит добавлять в массив первый вылетевший. вместо него нужно указать missing. Если неизвестно какие номера были у дисков, можно попробовать собирать методом тыка, меняя порядок перечисления дисков, попутно запуская проверку файловой системы на целостность (обязательно в режиме ro !!!!!! ). Пересборка массива не повреждает данные (ИМХО :) ) При правильной комбинации fs будет читаться. Но она может начать читаться и при неверной комбинации, так что нужно постараться проверить максимальное количество комбинаций. > mdadm: layout defaults to left-symmetric > mdadm: chunk size defaults to 64K > mdadm: /dev/sdb appears to be part of a raid array: > level=raid5 devices=4 ctime=Wed Apr 16 19:31:35 2008 > mdadm: /dev/sdd appears to be part of a raid array: > level=raid5 devices=4 ctime=Wed Apr 16 19:31:35 2008 > mdadm: /dev/sde appears to be part of a raid array: > level=raid5 devices=4 ctime=Wed Apr 16 19:31:35 2008 > mdadm: size set to 488386496K > Continue creating array? y > mdadm: array /dev/md0 started. > > Рейд запустился > # cat /proc/mdstat > Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] > md0 : active raid5 sde[3] sdd[2] sdc[1] sdb[0] > 1465159488 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU] > > unused devices: <none> > > # cat /sys/block/md0/md/array_state > clean > > После этого для минимизации количества сбойных файлов переподключаю > первый вылетевший диск > # mdadm /dev/md0 --fail /dev/sdc && mdadm /dev/md0 --remove /dev/sdc && mdadm > /dev/md0 --add /dev/sdc > > Подождал пока рейд синхронизируется, обновил описание рейда в > mdadm.conf (mdadm --create создает новый рейд с другим UUID). > > После чего запустил LVM который был на рейде и fsck на все файловые > системы. > > Вот в принципе и вся success story ;) > > -- > > With Best Regards, Maxim Tyurin > JID: [email protected] > >

