Уголок СУ-11 на просторах вселенной

пятница, 3 апреля 2009 г.

Спасение RAID5 в Linux или восстановление mdadm на другой машине



взято от сюда http://uragana.ru/2009/04/rescue-raid-lvm думаю всем бдует полезно

Сегодня на работе сдох сервер. Без признаков жизни и включения. А на нем важная информация.
Не срочная, но важная. Главня проблема в том что нужные файлы были на рэйде (mdadm), да еще и на LVM.
Расскажу, как спасал информацию...

Отключаю диски, достаю, кладу на стол. Сервер отвожу в ремонт. И начинаю реанимировать диски.
А схема там такая - из 3-х 400 гигабайтных дисков собран RAID5 в mdadm,
поверх рэйда - LVM, на LVM - файловая система XFS.

Подключаю все диски к рабочему компьютеру, пытаюсь загрузиться со своего рабочего диска - не грузится.
Некогда разбираться - пробую грузится с live-cd с Ubuntu. Загрузилось!

Начинается самое интересное:

N.B. - все операции проводились под root, поэтому нужно в консоли сделать sudo su

1) Поскольку диски sata - открываем консоль и смотрим, что нашлось (ненужные строчки пропущены):

root@ubuntu:/home/ubuntu# dmesg | grep sd
[ 40.566532] sd 2:0:0:0: [sda] 488397168 512-byte hardware sectors (250059 MB)
[ 40.592220] sd 2:0:1:0: [sdb] 781422768 512-byte hardware sectors (400088 MB)
[ 40.611879] sd 3:0:0:0: [sdc] 781422768 512-byte hardware sectors (400088 MB)
[ 40.635162] sd 3:0:1:0: [sdd] 781422768 512-byte hardware sectors (400088 MB)
root@ubuntu:/home/ubuntu#

ага. есть 4 диска - 1 диск sda-250GB - это рабочий, остальные (sdb,sdc,sdd) - части рэйда.

2) В live-cd Ubuntu нет ни mdadm, ни lvm. Исправим это. Настраиваем сеть, и выполняем в терминале:

root@ubuntu:/home/ubuntu# apt-get update && apt-get install mdadm lvm2

Установилось. Хорошо, едем дальше.

3) Пытаемся пересобрать RAID в автоматическом режиме:

root@ubuntu:/home/ubuntu# mdadm --assemble --scan
mdadm: /dev/md0 has been started with 2 drives (out of 3) and 1 spare.

root@ubuntu:/home/ubuntu# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[0] sdd1[1]
781417472 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
unused devices:

Видим что массив нашелся, но сломанный - один диск отвалился.
Игнорируем, потому что рэйд пятого уровня - позволяет сохранить данные при поломке одного диска.
Массив нашелся, поднялся. Двигаемся дальше.

4) Поднимаем LVM:

Загружаем модуль

root@ubuntu:/home/ubuntu# modprobe dm-mod

Активируем LVM:

root@ubuntu:/home/ubuntu# vgchange -a y
1 logical volume(s) in volume group "files" now active

Проверяем какие logical volumes у нас есть:

root@ubuntu:/home/ubuntu# lvscan
ACTIVE '/dev/files/filesrv' [700,00 GB] inherit

видим один раздел - /dev/files/filesrv на 700 гигов.

Создаем точку монтирования и монтируем раздел:

root@ubuntu:/home/ubuntu# mkdir /files
root@ubuntu:/home/ubuntu# mount /dev/files/filesrv /files

Смотрим что получилось:

root@ubuntu:/home/ubuntu# ls -lh /files/
total 20K
drwxrwxrwx 79 root root 8,0K 2009-03-30 06:24 other
drwxrwxrwx 15 root root 4,0K 2008-12-08 05:55 public
drwxrwxrwt 7 1000 1000 76 2009-04-02 10:33 vmdata
drwxrwxrwx 5 1000 1000 47 2009-02-20 10:22 webfiles

Ура! Все файлы видны и доступны!
Теперь можно скопировать их на рабочий диск:

root@ubuntu:/home/ubuntu# mkdir /workhdd
root@ubuntu:/home/ubuntu# mount /dev/sda4 /workhdd
root@ubuntu:/home/ubuntu# cp -r /files/vmdata /workhdd/

или через ssh на другой сервер:

root@ubuntu:/home/ubuntu# scp -r /files/vmdata root@192.168.1.6:/files/

После того как все скопировалось - можно заняться восстановлением RAID. Проверяем еще раз статус:

root@ubuntu:/home/ubuntu# cp -r /files/vmdata/
root@ubuntu:/home/ubuntu# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[0] sdd1[1]
781417472 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
unused devices:

видим что в RAID сейчас два диска - sdc и sdd. Недостающий диск - sdb.
Добавим его:

root@ubuntu:/home/ubuntu# mdadm /dev/md0 --re-add /dev/sdb1
mdadm: re-added /dev/sdb1

Диск добавился. Следим за его пересборкой:

root@ubuntu:/home/ubuntu# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb1[3] sdc1[0] sdd1[1]
781417472 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
[>....................] recovery = 0.0% (95748/390708736) finish=3261.8min speed=1994K/sec

Прогрессбар движется, до окончания пересборки осталось 3261 минута, то есть больше 2 суток.
Это уже не нормально, да и диск начал слышно стучать. Понятно. Пора ему на свалку.

2 комментария:

petrov.pash комментирует...

привет! это моя статья, мне приятно что вы разместили ее у себя, но если не сложно - исправьте ссылку на оригинал - http://uragana.ru/2009/04/rescue-raid-lvm/ (как и на опеннете в конце статьи). спасибо

AbEd комментирует...

статья старая, но до сих пор описанное действенно - пошло восстановление RAID5 из 4 дисков.