The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Спасение RAID5 в Linux или восстановление mdadm на другой машине
Сегодня на работе сдох сервер. Без признаков жизни и включения. А на нем важная информация. 
Не срочная, но важная. Главня проблема в том что нужные файлы были на рэйде
(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 суток. 
Это уже не нормально, да и диск начал слышно стучать. Понятно. Пора ему на свалку.

Дополнение: чтобы ребилд быстрее проходил, убираем лимит скорости фонового перестроения:

echo 200000 > /proc/sys/dev/raid/speed_limit_min
echo 200000 > /proc/sys/dev/raid/speed_limit_max

200000 - это пропускная спосбность в Кб, по умолчанию speed_limit_min = 1000
 
02.04.2009 , Автор: petrov.pash
Ключи: linux, repair, crash, raid, lvm, mdadm, raid5, disk / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Диски и файлы / RAID массивы

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, vitek (??), 18:12, 02/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    всё нормально... вот вместо sudo su лучше sudo -s
    просто коробит слегка. :-)
     
     
  • 2.10, aim (ok), 01:38, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    либо sudo -i
     

  • 1.2, Анонимус (?), 19:05, 02/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да, нормальнеее не бывает, не брать же настоящий дистрибутив в котором все есть для восстановления (Fedora например), а то пацаны не поймут. Особенно если и сетевуха подгорела, никак не обновиться а время капает, миллионы из за потери работоспособности сервера утекают. Убунта - все лучшее рядом! А если не все - ну и пофиг, она по любому лучшая. Потому что.
     
     
  • 2.5, petrov.pash (?), 20:43, 02/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ну это когда дистрибутив под рукой есть - то можно и взять специализированный, а когда времени на поиск/скачивание/запись нету - то тогда проще взять то что есть под рукой.
    под рукой оказалась ubuntu 8.04 desktop - считаю что он со своей задачей справился, что и требовалось доказать
     
  • 2.6, User294 (??), 20:49, 02/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Да, нормальнеее не бывает, не брать же настоящий дистрибутив в котором все
    >есть для восстановления (Fedora например)

    А что, федора где-то позиционируется как крутая энтерпрайзная ось на которой можно делать что-то ответственное?Ох уж эти фанаты :)

     
  • 2.9, vitek (??), 23:55, 02/04/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Fedora....  миллионы из за потери... настоящий дистрибутив...

    ну-ну.... уволить бы Вас.

     
  • 2.16, Аноним (-), 11:36, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Ох уже эти молодые линуксойды :)
     
     
  • 3.17, ozzman (?), 12:01, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Ох уже эти молодые линуксойды :)

    помню как восстанавливали RAID на винде после сбоя :)
    Винда не подключает винты потому, что они "не были размонтированы". Соответственно, чтобы размонтировать их надо сначала примонтировать :). Покупать мега-админские тулзы от Microsoft времени не было. А так как это был сервер местной газеты и дело было в субботу вечером(а утром надо уже выпускать газету в печать), и все редакторы бегают с безумными глазами - "где материалы???", то терять миллионы очень не хотелось.
    Самым простым и быстрым решением был поиск в инете программы восстановления файлов. Нашли какую-то, которая не обращает внимание на RAID и быстренько восстановили необходимые для печати файлы. Остальные потом админ сам там ковырял, но после этого виндовым RAID больше не пользовались :)

     

  • 1.3, iZEN (ok), 20:20, 02/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А из-за чего сервер сдох?
     
     
  • 2.4, petrov.pash (?), 20:41, 02/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    да кто его знает. тупо не включается. кнопка питания результата не дает.
    некогда да и не охота было разбираться - отвез в ремонт, посмотрим что скажут
     

  • 1.7, bill (??), 21:51, 02/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > А что, федора где-то позиционируется как крутая энтерпрайзная ось на которой можно делать что-то ответственное?Ох уж эти фанаты :)

    В федоре mdadm lvm2 и прочее есть изначально. Ничего скачивать и доставлять не надо.
      

     
     
  • 2.8, docent (??), 22:54, 02/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    я рад за федору
    кому что нравится, тот то и использует
    в статье описывается, как восстанавливать RAID, а не какой дстр круче

    P.S.
    я для восстановления использовал обычный инсталляционный диск от дебиана или убунту, можно даже для сетевой инсталяции, там все эти пакеты уже установлены

     
     
  • 3.11, 6APuH (?), 08:18, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    "в статье описывается, как восстанавливать RAID, а не какой дстр круче"

    вот вот ... у меня был случай под рукой оказался LiveCD drweb он меня и спас, искать-записывать или скачивать было не когда, неоткуда и нечем .... самое главное УМЕТЬ читать MAN, и адекватно рассуждать, остальное дело техники

     
  • 3.12, bill (??), 09:32, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Про крутость дистров рассуждать начали вы. Я про это не говорил.
     

  • 1.13, rm (??), 11:01, 03/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вопрос зачем копировать инфу на рабочий винт а потом повторно восстанавливать рейд? не проще сразу вставить винт и восстанавливать? не совсем понял ...
     
  • 1.14, Ivan (??), 11:19, 03/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Наверное, не
    cp -r /source /destination,

    а
    cp -rp /source /destination, чтоб права на файлы и прочие атрибуты сохранить ?

     
     
  • 2.15, Аноним (-), 11:35, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    лучше cp -a  /source /destination
     
     
  • 3.31, thealexis (?), 18:21, 06/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    или tar cvf - source | ( cd /destination && tar xvf - )


     

  • 1.18, rm (??), 12:15, 03/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    да не в этом вопрос нафига вообще копировать? на то он и рейд вставил винт в массив он все восстановил? разве нет?
     
     
  • 2.19, bogus (??), 13:28, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    и пока он востанавливался накрылся еще один винт, и... ?
     
     
  • 3.20, rm (??), 15:06, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    а почему он вдруг должен накрыться ? нет если копировать ради бекапа на совесем другой винт то да , вопрос снимается
     
     
  • 4.22, vitek (??), 19:24, 03/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    а почему вдруг должен появиться под рукой новый винт?
    его ещё купить надо. да ещё такой же как был раньше.
    а тут... заодно и резервную копию сделал.

    та же песня, что и про федору с убунтой выше.

     

  • 1.21, Аноним (-), 15:54, 03/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а чтобы ребилд быстрее проходил, добовляем в sysctl.conf

    dev.raid.speed_limit_min = 200000
    dev.raid.speed_limit_max = 200000

    ну или через /proc

     
  • 1.23, не скажу (?), 21:03, 03/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-то реально использует такой (программный) рейд для хранения важных данных? Жаль, очень жаль...
     
     
  • 2.25, vitek (??), 12:42, 04/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    и чего жаль?
    Вы так уверены в аппаратных рейдах?
    вот это действительно жаль.

    софтверные рейды под линухом, да и вообще под любым *nix, работают отлично. и их применения как раз для критических данных бывает более оправданным.

     
     
  • 3.26, docent (??), 18:22, 04/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    не просто отлично, а суперски
    у меня на софтовых рейдах кластер собран
    с помощью DRBD производится зеркалирование между компьютерами двух рейдов 1
    таким образом получается RAID 11
    средняя скорость синхронизации RAID 1 на локальном компьютере на SATAшых винтах около 95МБ/с, а между компьютерами - около 85Мб/с
    а главное, что аналогичное аппаратное решение от НР EVA4200 стоит всего навсего несколько лимонов!
     
     
  • 4.27, rstone (?), 21:16, 04/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    HP EVA 4200 стоит где то 40-50 килобаков
    И , кстати , не фонтан .


     
  • 2.28, анонимус (?), 15:08, 05/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    вы видимо не работали с несколькмими тысячами серверов в нескольких территориально распределённых дц, и не представляется что когда тушка сдохнет время простоя увеличится намного при поиске нужной тушки с нужным контроллером, а не банальное перетыкание хардов в новую машину.
    И наверно не в курсе что некотоыре контроллеры сума сходят видя мета дату от контроллеров других фирм, особенно офигенно смотрется оракловский сервак с повисшим контроллером
     
  • 2.32, User294 (??), 00:03, 07/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Кто-то реально использует такой (программный) рейд для хранения важных данных? Жаль, очень
    >жаль...

    Вспомнив про придуманные фидошниками аксиомы насчет CD-ROM (дисков и приводов) захотелось сказать то же самое про RAID :)

    Аксиома 1 - "дисковая": дохнут любые диски.Даже крутые и дорогие.
    Аксиома 2 - "рэйдовая": глючат и гробят данные любые рэйды.Даже очень крутые и дорогие.

    Следствие: сколько бы вы ни заплатили за железо, спокойный сон возможен только при наличии свежих работоспособных бэкапов :P

     
  • 2.36, alexxx (??), 22:37, 08/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Не поверите, но в случае проблем линуксовый рейд восстановить плевое дело, часто даже если сервак сгорит, то тупо на другую голову перенес и запустил - все работает. За 8 лет на множестве серверов НИ ОДНОГО сбоя приведшего к потере данных на софт рейдах под линуксом - простои были мизерные т.к. целые винты просто вставлялись в резервную железку. На аппаратниках (настоящих и дорогих) бывали случаи вылета и тока backup и спасал. В итоге простой больше чем на софт рейде, но железяки ставили на серваках с высокой интенсивностью загрузки дисковой подсистемы. Но бывало слава богу редко.
    Про всякие недософт рейды (ite, nvidia, promise, hpt) лучше и не говорите - практически гарантированные вылеты с полной потерей данных, которые восстановить целая история. Причем на ровном месте - после формата все работает. Так что если нужны проблемы используйте эти поделия. У жадных клиентов был целый зоопарк такого г...на - пока на бабки не попали несколько раз подряд, только тогда вмиг поставили нормальное железо. До этого все попытки навести на путь истинный пустые - "все ж работает".
     

  • 1.24, Alive (??), 22:07, 03/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Даже не знаю, что лучше в плане страха за сохранность данных - вот такой софтовый, или аппаратный, но со сгоревшим контроллером, и новый такой где взять - не известно.
     
     
  • 2.29, zettich (?), 10:33, 06/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Было один раз, Adaptec SATA RAID 21610SA слетел на очень важной машинке, машинка стояла в ДЦ в Москве, было это 9го января, запасного контроллера не было, все конторы, которые могли продать это в Москве пили до 12го. В нашей стране, где все 4го вышли на работу, такого контроллера тупо нигде не было.

    15 HDD были в рейде 1м попарно, тоесть 7 логических устройств + HotSpare.

    Решили попробывать купить 2 3ware SATA RAID 8 каналов. Купили. Купили билет на самолет до Москвы. Прилетели. Вставили, после танцов с бубном с прерываниями и ресурсами запустили. Образовалась проблема. Логическое устройство на 3ware меньше на 1 Гб, чем на Adaptec-е. Даже при создании логического устройства без RAID.

    Вобщем процент один информации тогда потеряли из-за сдуру запущенного fsck, который совсем офигел от такого расклада. В итоге дождались, пока Москва проснется от праздников, купили контроллер, вставили, запустили, оценили ущерб.

    Если бы там был 1 логический девайс на все винты можно было бы даже не пытаться подымать.

    Я к чему, контроллер может погореть, конкретной модели контроллера можно не найти (особенно, если последний снят с производства, либо редкий). Поэтому:
    - либо приобретать нормальные контроллеры;
    - либо делать софтверный рейд. благо он допиленный ИМХО.

     
  • 2.30, zettich (?), 10:37, 06/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Либо иметь запасной контроллер! Хотя это начинают понимать только тогда, когда с этим столкнутся, да и с потерей данных (соотв. потерей денег). Обычно после этого и деньги на контроллеры появляются, и на серверы для бэкапов.

    P.S: После таких вот случаев имею в парке 2 машинки, которые каждую ночь копируют на себя 1 Тб бэкапов с инкрементами, машинки в пике пишут данные со скоростью 250 Мб/сек и при этом на логическом устройстве наблюдается до 3000 TPS-ов.

     

  • 1.33, Аноним (-), 12:39, 08/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор, у меня RAID, 2 диска по 80 гигабайта видны как 1. Работает, но я повредил файловую систему. Восстанавливать буду из Linux, Windows только будет повреждать и портить данные, а пофиксить надо лишь таблицу разделов. Для Linux 2.6 драйвера ITE Raid нет, только для 2.4. Сразу после последнего байта первого диска идёт первый байт второго. Вопрос: как сделать dd этих устройств в 1 файл, одной командой, объединить? Чтобы dd продолжал писАть в тот же файл со второго устройства. Тогда стану восстанавливать...
     
     
  • 2.34, Аноним (-), 12:51, 08/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    В смысле, два по 80 гигабайт и видны как 1 в 160 гигаьайт, не помню как называется.
     
  • 2.35, alexxx (??), 15:13, 08/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Автор, у меня RAID, 2 диска по 80 гигабайта видны как 1.
    >Работает, но я повредил файловую систему. Восстанавливать буду из Linux, Windows
    >только будет повреждать и портить данные, а пофиксить надо лишь таблицу
    >разделов. Для Linux 2.6 драйвера ITE Raid нет, только для 2.4.
    >Сразу после последнего байта первого диска идёт первый байт второго. Вопрос:
    >как сделать dd этих устройств в 1 файл, одной командой, объединить?
    >Чтобы dd продолжал писАть в тот же файл со второго устройства.
    >Тогда стану восстанавливать...

    как то так:
    dd if=/dev/mdx of=<кудато>

     
     
  • 3.37, andyS (?), 12:52, 01/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Не пробовал под Линуксом, но когда надо было востановить виндозовский РАИД-5 пришлось лететь в Москву!

    А то наши рижские "спецы" из фирмы Jet взяли деньги за восстановление 3-го умершего винта, который все равно не восстановился как надо.

    А специальные программки для восстановление РАЙДА почемуто не собирали РАЙД по живым двум винтам как надо.

    Статья очень полезная, громадное спасибо автору.

     
     
  • 4.38, ktulhu (?), 14:56, 04/09/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вообще-то поломка у автора пустяковая, а если бы разрушилась структура raid? если есть возможность, ВСЕГДА нужно делать посекторные копии дисков и уже с копиями ставить опыты.


     

  • 1.39, Нубос (?), 17:16, 12/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    +1 к последнему высказыванию. Статья ни о чем.
     
  • 1.40, Denis Vodyakov (?), 10:50, 19/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Данная статья помогла спасти данные на хранилище Lenovo/EMC, т.к. там софт райд :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру