LINUX.ORG.RU
ФорумAdmin

mdadm восстановить raid1

 , ,


0

2

Всем привет. Прошу помочь в непростой ситуации.

Был на сервере массив raid1 созданный через mdadm из 2х SATA дисков которые подключены к встроенному sata контролеру в режиме AHCI. На сервере пришлось поменять материнку. После этого массив развалился. При этом остальные сервисы на сервере стартанули и работают без проблем. Немного информации:

1@1:~$ sudo fdisk -l
[sudo] password for 1:
Disk /dev/sda: 372.1 GiB, 399532621824 bytes, 780337152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 07F1A242-C78C-4452-8563-44194004DA1C

Device     Start       End   Sectors   Size Type
/dev/sda1   2048      4095      2048     1M BIOS boot
/dev/sda2   4096 780335103 780331008 372.1G Linux filesystem


Disk /dev/sdb: 279 GiB, 299506860032 bytes, 584974336 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
Disklabel type: dos
Disk identifier: 0x2267c0b4

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 584974335 584972288  279G 83 Linux


Disk /dev/sdc: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdd: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

1@1:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: <none>
 

Зеркало было из дисков /dev/sdc и /dev/sdd. При этом файл /etc/mdadm/mdadm.conf не содержал какой-либо информации о ранее созданном массиве. Хотя системный диск подключили к точно такой же новой МП.

Еще немного инфы:

1@1:~$ sudo lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
NAME     SIZE FSTYPE          TYPE MOUNTPOINT
sda    372.1G                 disk
├─sda1     1M                 part
└─sda2 372.1G ext4            part /
sdb      279G                 disk
└─sdb1   279G ext4            part /backup
sdc      3.7T isw_raid_member disk
sdd      3.7T isw_raid_member disk

1@1:~$ sudo mdadm -E /dev/sdc
/dev/sdc:
          Magic : Intel Raid ISM Cfg Sig.
        Version : 1.3.00
    Orig Family : e91da232
         Family : e91da232
     Generation : 000ef811
     Attributes : All supported
           UUID : 5f1b7d06:53202ca3:93b7d167:152999d5
       Checksum : 1b716728 correct
    MPB Sectors : 1
          Disks : 2
   RAID Devices : 1

  Disk01 Serial : VBGJ587F
          State : active
             Id : 00000003
    Usable Size : 7814026766 (3726.02 GiB 4000.78 GB)

[Mirror]:
           UUID : e020cd0e:5c32b57a:48cf5c05:1b54bdec
     RAID Level : 1
        Members : 2
          Slots : [UU]
    Failed disk : none
      This Slot : 1
    Sector Size : 512
     Array Size : 7423324160 (3539.72 GiB 3800.74 GB)
   Per Dev Size : 7423326208 (3539.72 GiB 3800.74 GB)
  Sector Offset : 0
    Num Stripes : 28997360
     Chunk Size : 64 KiB
       Reserved : 0
  Migrate State : idle
      Map State : normal
    Dirty State : clean
     RWH Policy : off

  Disk00 Serial : VBGJ387F
          State : active
             Id : 00000002
    Usable Size : 7814026766 (3726.02 GiB 4000.78 GB)
1@1:~$ sudo mdadm -E /dev/sdd
/dev/sdd:
          Magic : Intel Raid ISM Cfg Sig.
        Version : 1.3.00
    Orig Family : e91da232
         Family : e91da232
     Generation : 000ef811
     Attributes : All supported
           UUID : 5f1b7d06:53202ca3:93b7d167:152999d5
       Checksum : 1b716728 correct
    MPB Sectors : 1
          Disks : 2
   RAID Devices : 1

  Disk00 Serial : VBGJ387F
          State : active
             Id : 00000002
    Usable Size : 7814026766 (3726.02 GiB 4000.78 GB)

[Mirror]:
           UUID : e020cd0e:5c32b57a:48cf5c05:1b54bdec
     RAID Level : 1
        Members : 2
          Slots : [UU]
    Failed disk : none
      This Slot : 0
    Sector Size : 512
     Array Size : 7423324160 (3539.72 GiB 3800.74 GB)
   Per Dev Size : 7423326208 (3539.72 GiB 3800.74 GB)
  Sector Offset : 0
    Num Stripes : 28997360
     Chunk Size : 64 KiB
       Reserved : 0
  Migrate State : idle
      Map State : normal
    Dirty State : clean
     RWH Policy : off

  Disk01 Serial : VBGJ587F
          State : active
             Id : 00000003
    Usable Size : 7814026766 (3726.02 GiB 4000.78 GB)
1@1:~$ sudo mdadm --assemble --scan --auto=yes --symlink=no
mdadm: No arrays found in config file or automatically

А дальше, похоже, была совершена ошибка:

1@1:~$ sudo mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
mdadm: /dev/sdc appears to contain an ext2fs file system
       size=3711662080K  mtime=Thu Nov 16 13:56:05 2023
mdadm: /dev/sdc appears to be part of a raid array:
       level=container devices=0 ctime=Thu Jan  1 03:00:00 1970
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: /dev/sdd appears to contain an ext2fs file system
       size=3711662080K  mtime=Thu Nov 16 13:56:05 2023
mdadm: /dev/sdd appears to be part of a raid array:
       level=container devices=0 ctime=Thu Jan  1 03:00:00 1970
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md127 started.
1@1:~$ sudo fdisk -l
Disk /dev/sda: 372.1 GiB, 399532621824 bytes, 780337152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 07F1A242-C78C-4452-8563-44194004DA1C

Device     Start       End   Sectors   Size Type
/dev/sda1   2048      4095      2048     1M BIOS boot
/dev/sda2   4096 780335103 780331008 372.1G Linux filesystem


Disk /dev/sdc: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdd: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdb: 279 GiB, 299506860032 bytes, 584974336 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
Disklabel type: dos
Disk identifier: 0x2267c0b4

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 584974335 584972288  279G 83 Linux


Disk /dev/md127: 3.7 TiB, 4000651739136 bytes, 7813772928 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
1@1:~$ sudo mdadm --detail --scan
ARRAY /dev/md/127 metadata=1.2 name=disk:127 UUID=e108adc3:72a41c9d:cc5a753c:4d1aaada
1@1:~$ sudo cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sdc[0] sdd[1]
      3906886464 blocks super 1.2 [2/2] [UU]
      [==>..................]  resync = 14.5% (568062016/3906886464) finish=278.9min speed=199486K/sec
      bitmap: 26/30 pages [104KB], 65536KB chunk

unused devices: <none>

Сейчас идет синхронизация массива. Каковы мои дальнейшие действия? Резервных копий данных нет.


Каковы мои дальнейшие действия?

Резервных копий данных нет.

Можешь начинать паниковать.

Как я понял, у тебя был массив на целых дисках (глупая затея, ну ладно). Там был формат метаданных с размещением в конце. Вместо того, чтобы просто собрать массив, ты запустил создание нового. Формат по умолчанию размещает МД уже в начале, и программа у тебя спросила, надо ли похерить суперблок файловой системы, который там оказался (не массива). Ты сказал, что да. То есть по окончании синхронизации у тебя будет чистый массив с убитой ФС.

Дождись окончания синхронизации, слей дамп с собранного массива на другой накопитель, можно в файл. На этой копии пробуй запустить fsck. Если починит, то можно сделать это уже на массиве. Если нет (а это вероятно, потому что нет первых нескольких килобайтов для суперблока), то нужно сдампить целый диск из массива, и запускать на нём.

anonymous
()

Сейчас идет синхронизация массива. Каковы мои дальнейшие действия? Резервных копий данных нет.

В данной ситуации лучше обновить резюме

У тебя был itel’овский рейд (нечто промежуточное между аппаратным и fake raid), с собственными метаданными. Насколько я понимаю, эти метаданные ты прибил

Желательно сделать посекторные копии дисков, и искать специалистов по восстановлению данных. В принципе можно попробовать testdisk (на копии дисков), на свой страх и риск

router ★★★★★
()
Ответ на: комментарий от router

Не было там интеловского рейда. Контроллер работал в режиме AHCI, что написано в начале поста(специально делал soft raid, что бы не было проблем. Ага, не тут то было).

Тогда поставим вопрос по другому. Если данным с 99% хана, то имеет смысл забить на этот рейд, тормознуть синхронизацию. Убить массив. Разметить диски и создать массив из двух разделов.

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

Эти данные актуальны ровно 2 месяца, потом надобность в них сама собой отпадает и они удаляются.

bredis
() автор топика
Ответ на: комментарий от router

Странно, самого смущает эта надпись, но не должен путать. Этот сервер делался 1,5 года назад мной лично. Там есть ещё железный sas контроллер, но эти два диска подключались и подключены через встроенный на матери sata контроллер.

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

bredis
() автор топика
Ответ на: комментарий от bredis

Если данным с 99% хана, то имеет смысл забить на этот рейд, тормознуть синхронизацию.

Метаданным хана. Данные возможно лежат на месте. По идее они могут даже пережить ребилд через mdamdm, т.к. он не забивает диски нулями, а лишь приводит их к одинаковому виду. Если imsm хранил одинаковые блоки с одним смещением (а это логично), то они не пострадают. Но не факт, что ты получишь к ним доступ после сборки рейда с другой версией метаданных - смещение раздела может поменяться.

как правильно создать массив, что бы не было проблем в будущем.

sudo mdadm –create /dev/md127 –level=1 –raid-devices=2 /dev/sdc /dev/sdd

твой вариант годится. IMSM тоже был нормальным вариантом, но нужно было собирать аккуратнее. Не работал с ним, вот тут есть немного информации:

router ★★★★★
()
Ответ на: комментарий от anonymous

IMSM это, или MD 0.9 — так ли важно?

Не работал с ним, и у меня нет информации, где и как он хранит метаданные. Судя по документации к mdadm, в случае imsm сначала создаётся контейнер, а уже в нём - логические тома с произвольным уровнем raid

router ★★★★★
()
Ответ на: комментарий от bredis

Тебе нужно будет сделать копию, а потом уже запускать что бы то ни было. Для начала можно без параметров, fsck для ext* сама дальше подскажет.

anonymous
()
Ответ на: комментарий от router

Судя по тому, что в начале оказался суперблок ФС — скорее в конце, но тут надо помнить и про выравнивание структур, которые располагаются в начале. Так что на месте автора темы я бы ещё взял в руки dd и hd, чтобы просто сориентироваться, где что физически лежит в первых двух мегабайтах диска.

anonymous
()
Ответ на: комментарий от anonymous

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

После этого я выключил массив и натравил e2fsck на диск /dev/sdd. Утилита исправила fs, диск примонтировался и я увидел свои данные.

В данный момент запущено копирование на удаленную машину.

После копирования хочу заново создать массив и скопировать на него.

Можете подсказать как теперь нужно правильно создать массив raid1, что бы потом не гулять по граблям.

bredis
() автор топика
Ответ на: комментарий от bredis

Можете подсказать как теперь нужно правильно создать массив raid1, что бы потом не гулять по граблям.

Можем. Создать разделы одинакового размера (лучше на несколько мегабайт меньше максимально возможного) на дисках, потом на них создавать массив. Это поможет избежать некоторых проблем. Каких-то других нюансов нет. У тебя тут изначально проблема была в попытке создать массив заново вместо сборки существующего. Хорошо, что починил, полезный опыт.

anonymous
()
Ответ на: комментарий от bredis

Место свободное в начале оставлять или в конце?

В начале по умолчанию, как fdisk/gdisk предложит. В конце место надо оставлять на случай замены диска — если модель будет не такая же, то ёмкость может оказаться чуть меньше, и раздел тупо не влезет.

С дисков нужно вычищать старую информацию о предыдущем массиве?

Если она будет мешать, её предложат удалить соответствующие программы. Но лучше сразу пройтись утилитой wipefs (с -a), чтобы оно потом не вылезло в нештатной ситуации, как этот вот IMSM не пойми откуда.

anonymous
()
Ответ на: комментарий от anonymous

Создал массив предварительно поработав утилитой wipefs. Сейчас это выглядит так:

1@1:~$ sudo mdadm --create --verbose /dev/md127 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 3850238976K
mdadm: automatically enabling write-intent bitmap on large array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md127 started.
1@1:~$ sudo cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sdd1[1] sdc1[0]
      3850238976 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.0% (1669376/3850238976) finish=307.3min speed=208672K/sec
      bitmap: 29/29 pages [116KB], 65536KB chunk

unused devices: <none>
1@1:~$ sudo mdadm -E /dev/sdc1 /dev/sdd1
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 4502e14e:8e428536:83506fe4:74c86066
           Name : 1:127  (local to host 1)
  Creation Time : Wed Nov 29 10:53:59 2023
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 7700477952 (3671.87 GiB 3942.64 GB)
     Array Size : 3850238976 (3671.87 GiB 3942.64 GB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=0 sectors
          State : active
    Device UUID : 39bf1c5e:271c9d7f:394e0ac7:c5fb90b8

Internal Bitmap : 8 sectors from superblock
    Update Time : Wed Nov 29 10:56:50 2023
  Bad Block Log : 512 entries available at offset 24 sectors
       Checksum : 458cb0e9 - correct
         Events : 34


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 4502e14e:8e428536:83506fe4:74c86066
           Name : 1:127  (local to host 1)
  Creation Time : Wed Nov 29 10:53:59 2023
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 7700477952 (3671.87 GiB 3942.64 GB)
     Array Size : 3850238976 (3671.87 GiB 3942.64 GB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=0 sectors
          State : active
    Device UUID : d9cd846c:dc1dbb2c:ba7c524e:a8cb3c85

Internal Bitmap : 8 sectors from superblock
    Update Time : Wed Nov 29 10:56:55 2023
  Bad Block Log : 512 entries available at offset 24 sectors
       Checksum : 5506bfa8 - correct
         Events : 35


   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
bredis
() автор топика
Последнее исправление: bredis (всего исправлений: 1)
Ответ на: комментарий от ox55ff

Про диски чуть-чуть не того размера и резервное место я уже написал. Разделы — это просто хорошая практика. Могут спасти как от своих ошибок, так и от чужих. Например, установщики дистрибутивов могут игнорировать любые метаданные ФС/LVM/MDRAID, которые помещены прямо в начало диска. Как минимум, раньше это было актуально для RHEL. Создаст он тебе таблицу разделов поверх суперблока, и привет.

anonymous
()
Ответ на: комментарий от bredis

Если не ошибаюсь, на практике это было реально нужно только если массив собирается не из initramfs/initrd, а напрямую ядром. Но для наглядности я бы всё равно задал тип, это удобно. Сделать можно и через gdisk/fdisk.

anonymous
()
Ответ на: комментарий от VKraft

LVM в некоторых случаях будет даже лучше, но mdadm на порядок проще

А на минусы забей, скорее всего эти люди до сих пор не в курсе, что lvm давно умеет в рейды

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

А ещё они не в курсе что LVM портировали в Linux а первоначально он был в IBM AIX. Крайний факт не говорит о том что дизайн и реализация безупречны но как по мне там всё достаточно эстетично.

VKraft ★★
()
Ответ на: комментарий от router

скорее всего эти люди до сих пор не в курсе, что lvm давно умеет в рейды

Если ничего не путаю, с некоторых пор там даже используется код MD RAID вместо своей реализации.

anonymous
()
Ответ на: комментарий от anonymous

Всем спасибо. Сервер восстановлен, данные не потеряны. Может кому-то это поможет в будущем.

p.s. какой командой нужно было восстановить raid массив?

bredis
() автор топика