Восстановление данных на разделе raid5+lvm reiserfs после проблем с raid5

Восстановление данных на разделе raid5+lvm reiserfs после проблем с raid5

У меня есть сервер с 3 жесткими дисками sata. Каждый из них имеет 2 раздела: один маленький является частью /dev/md0, массива raid1 (/boot), остальные являются частью массива raid5 (/dev/md1), который является физическим томом lvm. Внутри него находятся 3 (IIRC) логических тома. Один из них — это reiserfs 3.6 fs, содержащий около 100 гигабайт данных.

Вчера этот сервер сломался. При включении питания SMART сообщил мне, что один из дисков мертв. Он действительно издавал очень неприятные звуки. Поэтому я удалил неисправный диск и попытался перезапустить систему на 2 оставшихся дисках. Но это не удалось.

С помощью live cd я запустил его и попытался перезапустить массив. К сожалению, mdadm отказался это сделать, потому что посчитал, что один из двух оставшихся дисков также вышел из строя.

Итак, следуя совету, найденному наКак восстановить аварийный массив Linux md RAID5?казалось, что это можно применить к моей ситуации, я сделал что-то, что, вероятно, было просто глупостью: я побежал

mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sd[ab]2 missing

Теперь я могу запустить этот массив, но инструменты lvm (vgscan, vgdisplay, pvck) не могут найти ничего, связанного с lvm на массиве, и я совершенно не могу получить доступ к своим данным. Я только что стер все метаданные lvm?

Мне кажется, что фактические данные все еще там, неповрежденные (кроме метаданных lvm). Есть ли шанс вернуть данные? Как?

ОБНОВЛЯТЬ:

Следуя совету psusi (ниже), я попробовал каждый из следующих способов воссоздания массива:

mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sda2 /dev/sdb2 missing
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sdb2 /dev/sda2 missing
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sda2 missing /dev/sdb2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sdb2 missing /dev/sda2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 missing /dev/sda2 /dev/sdb2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 missing /dev/sdb2 /dev/sda2

mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 /dev/sda2 /dev/sdb2 missing
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 /dev/sdb2 /dev/sda2 missing
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 /dev/sda2 missing /dev/sdb2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 /dev/sdb2 missing /dev/sda2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 missing /dev/sda2 /dev/sdb2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 missing /dev/sdb2 /dev/sda2

Что в принципе все возможные заказы, как с -c64, так и с -c512. После каждого теста я запускал vgscan. Ни один ничего не нашел. Может, мне не vgscan использовать, а какой-то другой инструмент?

ОБНОВЛЕНИЕ 2:

Я попробовал переподключить неисправный жесткий диск. И чудо, это, кажется, работает. По крайней мере, достаточно, чтобы осмотреть его:

root@debian:~# mdadm --examine /dev/sda2
/dev/sda2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 1f5462ab:6945560d:019b01a5:914dd464
  Creation Time : Fri Oct 17 12:40:40 2008
     Raid Level : raid5
  Used Dev Size : 160015360 (152.60 GiB 163.86 GB)
     Array Size : 320030720 (305.21 GiB 327.71 GB)
   Raid Devices : 3
  Total Devices : 3
Preferred Minor : 1

    Update Time : Tue Apr 12 08:15:03 2011
          State : active
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 64d514fb - correct
         Events : 137

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     0       8        2        0      active sync   /dev/sda2
   0     0       8        2        0      active sync   /dev/sda2
   1     1       8       18        1      active sync   /dev/sdb2
   2     2       8       34        2      active sync   /dev/sdc2

Итак, есть ли способ скопировать этот суперблок на два других устройства, чтобы я мог запустить массив «правильно»?

решение1

У меня похожая установка, и я могу порекомендовать иметь полный Linux на небольшом разделе каждого диска инетзеркалируйте эти небольшие разделы, но сделайте их по отдельности полностью загрузочными.

Вы можете syncнастроить, исключив несколько важных файлов ( /etc/fstabконфигурация grub). Это занимает больше места, чем просто, /bootно экономит много времени, когда возникают проблемы.

решение2

Вероятно, вы не собрали диски в том же порядке или не использовали тот же размер фрагмента, что и раньше. Вам нужно выяснить, какой был порядок раньше, и использовать тот же порядок при повторном создании массива. Другими словами, это мог быть не третий диск, который умер, а первый или второй, возможно, вы перепутали sda и sdb.

решение3

Как @псуси намекнулФормат метаданных — это, кажется, kye — теперь по умолчанию «1.2», а не «0.9». Жаль, но это может привести к потере данных, так как 1.2 использует смещение 4 KiB:

1, 1.0, 1.1, 1.2 по умолчанию Используйте новый формат суперблока версии 1. Он имеет меньше ограничений. Его можно легко перемещать между хостами с разным порядком байтов, а операцию восстановления можно контролировать и перезапускать. Различные подверсии хранят суперблок в разных местах на устройстве: в конце (для 1.0), в начале (для 1.1) или в 4 КБ от начала (для 1.2).

Совет (увы, запоздалый): никогда не спешите пересоздавать массив, не попробовав сделать это с помощью -B— build:

   -B, --build
          Build a legacy array without superblocks

ОБНОВЛЕНИЕ.: оказалось -Bотказывается строить RAID-5… :-/

Связанный контент