MDADM Superblock Recovery

6

После силового цикла я обнаружил, что мой массив RAID 5 больше не работает. Я пробовал различные методы для сборки массива, но до сих пор ничего не работало. Я считаю, что мне нужно как-то воссоздать суперблоки и UUID , но не захотелось вдаваться в что-то, чтобы не потерять кучу данных. Спасибо за чтение.

cat /etc/mdadm/mdadm.conf :

DEVICE partitions
ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 UUID=fd522a0f:2de72d76:f2afdfe9:5e3c9df1
MAILADDR root

Это нормально. Он должен иметь диски 4x2000GB (sda, sdc, sde, sdd).

cat /proc/mdstat :

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : inactive sdd[1](S)
  1953514496 blocks

unused devices: <none>

Это проблема. Он показывает только один диск в массиве, и он также неактивен. Массив должен иметь также sda, sdc и sde. Когда я делаю mdadm --examine /dev/sdd , все выглядит хорошо. На других дисках проверьте, что нет суперблока RAID на / dev / sdX .

mdadm --examine --scan :

ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 UUID=fd522a0f:2de72d76:f2afdfe9:5e3c9df1

Нет помощи.

mdadm --assemble --scan -v :

mdadm: looking for devices for /dev/md0
mdadm: no RAID superblock on /dev/sde
mdadm: /dev/sde has wrong uuid.
mdadm: cannot open device /dev/sdd: Device or resource busy
mdadm: /dev/sdd has wrong uuid.
mdadm: no RAID superblock on /dev/sdc
mdadm: /dev/sdc has wrong uuid.
mdadm: cannot open device /dev/sdb5: Device or resource busy
mdadm: /dev/sdb5 has wrong uuid.
mdadm: no RAID superblock on /dev/sdb2
mdadm: /dev/sdb2 has wrong uuid.
mdadm: cannot open device /dev/sdb1: Device or resource busy
mdadm: /dev/sdb1 has wrong uuid.
mdadm: cannot open device /dev/sdb: Device or resource busy
mdadm: /dev/sdb has wrong uuid.
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sda has wrong uuid.

Из этого видно, что у меня нет UUID и нет суперблоков для sda, sdc и sde.

sudo fdisk -l

Disk /dev/sda: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sda doesn't contain a valid partition table

Disk /dev/sdb: 250.1 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488395055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x353cf669

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   476327249   238163593+  83  Linux
/dev/sdb2       476327250   488392064     6032407+   5  Extended
/dev/sdb5       476327313   488392064     6032376   82  Linux swap / Solaris

Disk /dev/sdc: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdd: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn't contain a valid partition table

Disk /dev/sde: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sde doesn't contain a valid partition table

Таким образом, похоже, что ни один из моих RAID-дисков не имеет таблицы разделов или UUID. Самое близкое, что я обнаружил к моей проблеме, это этот поток , в котором предлагается запустить mdadm --create /dev/md0 -v -l 5 -n 4 /dev/sda /dev/sdc /dev/sde /dev/sdd и проверка правильной файловой системы с fsck -fn /dev/md0 . Однако первая команда выплюнула mdadm: no raid-devices specified. Я повторил команду с помощью sda1, sdc1 и т. Д., Но потом я получаю следующее:

mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: super1.x cannot open /dev/sda1: No such file or directory
mdadm: ddf: Cannot open /dev/sda1: No such file or directory
mdadm: Cannot open /dev/sda1: No such file or directory
mdadm: device /dev/sda1 not suitable for any style of array

Если я создаю и оставляю sda1 как «отсутствующую» переменную в команде, тогда она просто говорит то же самое для sdc1.

Я уверен, что делаю это более сложным, чем нужно. Может ли кто-нибудь с опытом, пожалуйста, помогите мне? Спасибо за ваше время заранее.

* изменить * Когда я запускаю dumpe2fs /dev/sda , я получаю:

dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          bbe6fb91-d37c-414a-8c2b-c76a30b9b5c5
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype     needs_recovery sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              366288896
Block count:              1465135872
Reserved block count:     73256793
Free blocks:              568552005
Free inodes:              366066972
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      674
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Wed Oct 28 12:23:09 2009
Last mount time:          Tue Oct 18 13:59:36 2011
Last write time:          Tue Oct 18 13:59:36 2011
Mount count:              17
Maximum mount count:      26
Last checked:             Fri Oct 14 17:04:16 2011
Check interval:           15552000 (6 months)
Next check after:         Wed Apr 11 17:04:16 2012
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      17e784d8-012e-4a29-9bbd-c312de282588
Journal backup:           inode blocks
Journal superblock magic number invalid!

Итак, все еще есть. Еще исследование ...

    
задан Teque5 19.10.2011 в 06:12
источник

3 ответа

4

Хлоп! Какой рассол. давайте посмотрим, можем ли мы вас отсортировать. Начиная с описания ваших дисков и таблиц разделов:

sda - no partition table
sdb - sdb1 [Linux] sdb2 [Linux extended] sdb5 [swap]
sdc - no partition table
sdd - no partition table
sde - no partition table
  1. Ни один из них не отмечен fd Linux raid autodetect , который по умолчанию является
  2. Вы не используете разделы для организации дискового пространства [0]
  3. Кажется, что весь диск, отформатированный для ext2 / 3 и , использует весь диск как часть рейда

Последний пункт - это то, где я думаю, что вы стали отменить. Вероятно, initscripts полагал, что вам причитается fsck, здравомыслие проверило тома и уничтожило суперблок MD в этом процессе. dumpe2fs не должно возвращать ничего для томов в массиве RAID .

Возьмите мой RAID, например:

[email protected]:/tmp/etc/udev# fdisk -l /dev/sda

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000ffc4

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  1240233983   620115968   fd  Linux raid autodetect

[email protected]:/tmp/etc/udev# dumpe2fs /dev/sda1
dumpe2fs 1.41.14 (22-Dec-2010)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda
Couldn't find valid filesystem superblock.

То, что вам удалось воссоздать RAID-массив вообще, очень повезло, но это не меняет основных недостатков вашего развертывания. Это снова повторится .

Я бы порекомендовал:

  1. Резервное копирование всего в этом наборе рейдов
  2. Уничтожьте массив и сотрите суперблок md с каждого устройства (man mdadm)
  3. Извлеките эти диски: dd if=/dev/zero of=/dev/sdX bs=1M count=100
  4. Создание разделов на sda, sdc, sdd и amp; sdf, которые охватывают 99% диска [0]
  5. Отметьте эти разделы как type fd linux-raid wiki
  6. никогда не форматировать эти разделы с любой файловой системой
  7. Создайте новый RAID 5: mdadm --create / dev / md0 -v -f -l 5 -n 4 / dev / sda1 / dev / sdc1 / dev / sdd1 / dev / sde1
  8. Обновить новый UUID в файле /etc/mdadm.conf
  9. Жить долго и счастливо

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

[0] Я столкнулся с очень неприятной ошибкой на SATA-дисках, где было много плохих блоков. После использования инструмента поставщика для восстановления диска. Мой один и тот же набор дисков теперь был уникальным, у плохого диска теперь было несколько блоков меньше, чем до начала низкоуровневого формата, что, конечно же, испортило мою таблицу разделов и помешало подключить диск к набору MD RAID.

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

Поэтому я больше не использую весь диск при создании набора RAID и вместо этого использую где угодно 95-99% свободного места при создании раздела, который обычно охватывает весь диск. Это также дает вам дополнительную гибкость при замене неудавшихся членов. Например, не все диски на 250 ГБ имеют одинаковое количество свободных блоков, поэтому, если вы снижаете максимальный размер с помощью удобного поля, тогда вы можете использовать почти любой бренд диска для замены отказавшего элемента.

    
ответ дан ppetraki 29.11.2011 в 14:26
источник
1

У меня была такая же проблема раньше, и я не документировал ее (и был недавно).

Я вспоминаю кое-что об использовании e2fsck -b <superblockSector> /dev/sdX и пытается резервных суперблоковых секторах

вы также можете посмотреть TestDisk

    
ответ дан Thermionix 19.10.2011 в 09:00
1

Прошло некоторое время с вашего поста, но я напишу следующее:

"mdadm: невозможно открыть устройство / dev / sdb1: занято устройство или ресурс

хорошо проверить

cat / proc / mdstat

Я думаю, что ваш диск привязан к некоторому рейду ex. / DEV / md126

Если да, остановите рейд

mdadm --stop / dev / md125

, а затем попробуйте собрать raid / dev / md0

mdadm -assemble -verbose -update summary / dev / md0 / dev / sda3 / dev / sdb3 / dev / sdc3 / dev / sdd3

НО: Более важная проблема:

НЕ ИСПОЛЬЗУЙТЕ RAID 5 С ДИСКОМ БОЛЬШЕ ЧЕМ 1,5 ТБ !!!

Частота неиспользуемых битовых ошибок

Это скорость, с которой диск не сможет восстановить данные после применения кодов циклической избыточности (CRC) и повторных попыток. Скорость UBE (скорость невосстанавливаемой битовой ошибки) обычно указывается в 1 бит в 10 ^ 15 для дисков корпоративного класса (SCSI, FC, SAS) и 1 бит в 10 ^ 14 для дисков класса рабочего стола (IDE / ATA / PATA, SATA) , (так что каждый ~ 1,7 ТБ)

Итак, если один из ваших дисков терпит неудачу, вероятность того, что он не будет восстанавливаться , равен ~ 55% (для UBE 10 ^ -14) Удачи ...

здесь: Ссылка

    
ответ дан sirkubax 18.06.2012 в 12:24