[SOLVED] mdadm, imsm и вылет винта из raid 0

Произошла неприятная ситуация - отвалилось питание от винта, состоящего в Intel fake-raid массиве (raid0). Произошло это во время активного гамания в оффтопике.
Долго не думая, воткнул питание обратно, Intel Rapid Storage Manager матюкнулся и "проверил" raid0 массив. После проверки сказал, что всё ок и ntfs раздел на этом массиве стал снова доступен в системе, chkdsk никаких проблем на нём не нашёл.
Но основная проблема в том, что на этом же массиве лежит ext4, а при загрузке mdadm ругается на то, что массив failed, обозначая первый диск массива (от которого, собственно, и отвалился коннектор), как out-of-sync и показывая его в самом рейд-массиве, как removed.
Так вот, как заставить mdadm таки инициализировать этот массив без потерь данных? Он ведь вполне здоров, но интеловский манагер после проверки, очевидно, не стал делать изменений в метаданных массива и спокойно положил хер на то, что один диск out-of-sync.

Ты уж разберись, на чем у

Ты уж разберись, на чем у тебя реид собран - на mdadm или onBIOS fake raid.
Имхо, что то тут пахнет ССЗБ.

UP. покажи event лог с винды про раид и с Линукса дмесг и cat /proc/mdstat

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

собран он именно на BIOS fake

собран он именно на BIOS fake raid (ich10), но для работы с этим массивом испольую mdadm (dmraid лесом).

лог винды:

Имя журнала:   Application
Источник:      IAStorDataMgrSvc
Дата:          08.06.2010 0:56:45
Код события:   0
Категория задачи:Отсутствует
Уровень:       Сведения
Ключевые слова:Классический
Пользователь:  Н/Д
Компьютер:     Pandora
Описание:
Диск на порте 2: Диск удален.
Disk on port 2: Removed.
Xml события:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="IAStorDataMgrSvc" />
    <EventID Qualifiers="0">0</EventID>
    <Level>4</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-06-07T20:56:45.000000000Z" />
    <EventRecordID>3093</EventRecordID>
    <Channel>Application</Channel>
    <Computer>Pandora</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Диск на порте 2: Диск удален.
Disk on port 2: Removed.</Data>
  </EventData>
</Event>
Имя журнала:   Application
Источник:      IAStorDataMgrSvc
Дата:          08.06.2010 0:56:45
Код события:   0
Категория задачи:Отсутствует
Уровень:       Ошибка
Ключевые слова:Классический
Пользователь:  Н/Д
Компьютер:     Pandora
Описание:
Том StripeBig: ошибка. 
Volume StripeBig: Failed. 
Xml события:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="IAStorDataMgrSvc" />
    <EventID Qualifiers="0">0</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-06-07T20:56:45.000000000Z" />
    <EventRecordID>3094</EventRecordID>
    <Channel>Application</Channel>
    <Computer>Pandora</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Том StripeBig: ошибка. 
Volume StripeBig: Failed. </Data>
  </EventData>
</Event>
Имя журнала:   Application
Источник:      IAStorDataMgrSvc
Дата:          08.06.2010 0:57:51
Код события:   0
Категория задачи:Отсутствует
Уровень:       Сведения
Ключевые слова:Классический
Пользователь:  Н/Д
Компьютер:     Pandora
Описание:
Диск на порте 2: Диск обнаружен.
Disk on port 2: Detected.
Xml события:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="IAStorDataMgrSvc" />
    <EventID Qualifiers="0">0</EventID>
    <Level>4</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-06-07T20:57:51.000000000Z" />
    <EventRecordID>3095</EventRecordID>
    <Channel>Application</Channel>
    <Computer>Pandora</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Диск на порте 2: Диск обнаружен.
Disk on port 2: Detected.</Data>
  </EventData>
</Event>

лог пингвина:

$ cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md123 : inactive sdd[0]
      1465136256 blocks super external:/md127/0
       
md124 : active raid1 sdb[1] sda[0]
      524288000 blocks super external:/md126/0 [2/2] [UU]
      
md125 : active raid0 sdb[1] sda[0]
      1881691136 blocks super external:/md126/1 128k chunks
      
md126 : inactive sdb[1](S) sda[0](S)
      4514 blocks super external:imsm
       
md127 : inactive sdd[1](S) sdc[0](S)
      4514 blocks super external:imsm
       
unused devices: <none>
$ sudo mdadm -D /dev/md123
/dev/md123:
      Container : /dev/md/imsm_2, member 0
     Raid Level : raid0
     Array Size : 2930272256 (2794.53 GiB 3000.60 GB)
   Raid Devices : 2
  Total Devices : 1

          State : active, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 128K

  New Chunksize : 0K


           UUID : b24004ba:7a6ab21e:114739d0:886076ba
    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       0       8       48        1      active sync   /dev/sdd
$ sudo mdadm -D /dev/md127
/dev/md127:
        Version : imsm
     Raid Level : container
  Total Devices : 2

Working Devices : 2


           UUID : 2978a264:aa73b063:e0f4ce6c:66280aee
  Member Arrays :

    Number   Major   Minor   RaidDevice

       0       8       32        -        /dev/sdc
       1       8       48        -        /dev/sdd
$ sudo mdadm -E /dev/sdc /dev/sdd
/dev/sdc:
          Magic : Intel Raid ISM Cfg Sig.
        Version : 1.3.00
    Orig Family : b3109fba
         Family : b3109fba
     Generation : 000005d1
           UUID : 2978a264:aa73b063:e0f4ce6c:66280aee
       Checksum : 3c2963b3 correct
    MPB Sectors : 1
          Disks : 2
   RAID Devices : 1

  Disk00 Serial : 9VS3MLAK
          State : active
             Id : 00020000
    Usable Size : 2930272654 (1397.26 GiB 1500.30 GB)

[StripeBig]:
           UUID : b24004ba:7a6ab21e:114739d0:886076ba
     RAID Level : 0
        Members : 2
      This Slot : 0 (out-of-sync)
     Array Size : 5860544512 (2794.53 GiB 3000.60 GB)
   Per Dev Size : 2930272520 (1397.26 GiB 1500.30 GB)
  Sector Offset : 0
    Num Stripes : 11446376
     Chunk Size : 128 KiB
       Reserved : 0
  Migrate State : idle
      Map State : normal
    Dirty State : clean

  Disk01 Serial : 9VS3MB1Q
          State : active
             Id : 00030000
    Usable Size : 2930272654 (1397.26 GiB 1500.30 GB)
/dev/sdd:
          Magic : Intel Raid ISM Cfg Sig.
        Version : 1.3.00
    Orig Family : b3109fba
         Family : b3109fba
     Generation : 000005d1
           UUID : 2978a264:aa73b063:e0f4ce6c:66280aee
       Checksum : 3c2963b3 correct
    MPB Sectors : 1
          Disks : 2
   RAID Devices : 1

  Disk01 Serial : 9VS3MB1Q
          State : active
             Id : 00030000
    Usable Size : 2930272654 (1397.26 GiB 1500.30 GB)

[StripeBig]:
           UUID : b24004ba:7a6ab21e:114739d0:886076ba
     RAID Level : 0
        Members : 2
      This Slot : 1
     Array Size : 5860544512 (2794.53 GiB 3000.60 GB)
   Per Dev Size : 2930272520 (1397.26 GiB 1500.30 GB)
  Sector Offset : 0
    Num Stripes : 11446376
     Chunk Size : 128 KiB
       Reserved : 0
  Migrate State : idle
      Map State : normal
    Dirty State : clean

  Disk00 Serial : 9VS3MLAK
          State : active
             Id : 00020000
    Usable Size : 2930272654 (1397.26 GiB 1500.30 GB)

Вариантов 2:1) Я чего то не

Вариантов 2:
1) Я чего то не понял, пропустил и ступил, т.к mdraid начал поддерживать фейковые райды
2) Соответственно, наоборот.

Ткните в доку, что ли.

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

http://man-wiki.net/index.php

http://man-wiki.net/index.php/8:mdadm

Цитата:
mdadm - manage MD devices aka Linux Software Raid.

Для md-raid тебе не надо было

Для md-raid тебе не надо было выставить в биосе фейковый рейд, надо было поставить просто AHCI. Но раз поставил - не трогай. Фейковым рейдом заведует dm-raid! Потому у нас и не вяжется в голове что же ты все таки сделал ...

я всё вполне внятно расписал.

я всё вполне внятно расписал. есть винда, ей нужна поддержка рейда, есть пингвин, в нём рейд тоже нужен. сделано было через imsm (intel rapid storage technology), который по-сути - софтовый, но использует метаданные, с которыми работает "железный" контроллер и поддержка этих метаданных есть и в оффтопике, и в венике. и да, я уже написал, что dmraid не использую, в /dev/mapper/ у меня только тома lvm.

http://www.intel.com/support/chipsets/imsm/sb/cs-020663.htm

Цитата:
Beginning with Linux* kernel version 2.6.18*, the dmraid* utility 1.0.0-rc15 supports RAID 0, RAID 1, and RAID 10.

Beginning with Linux kernel version 2.6.27*, the mdadm* utility 3.0 supports RAID 0, RAID 1, RAID 10, and RAID 5.

The kernel provides the RAID level support. The utilities support the Intel® Matrix Storage Manager metadata format.

Ну с первого прочтения это я

Ну с первого прочтения это я не вкурил ... надо бы позабористее в следующий раз достать )))
И немного непонятно все таки с конфигурацией рейда, помоги объяснить:

Personalities : [raid0] [raid1]
md123 : inactive sdd[0]
1465136256 blocks super external:/md127/0

md124 : active raid1 sdb[1] sda[0]
524288000 blocks super external:/md126/0 [2/2] [UU]

md125 : active raid0 sdb[1] sda[0]
1881691136 blocks super external:/md126/1 128k chunks

md126 : inactive sdb[1](S) sda[0](S)
4514 blocks super external:imsm

md127 : inactive sdd[1](S) sdc[0](S)
4514 blocks super external:imsm

1) Уже сразу бросается в глаза active raid1 sdb[1] sda[0] - то есть ты вгонял целый диск а не партиции
2) непонятна изначально конфигурация рейда - помоги нам пожалуйста разобраться в этом ...

суть конфигурации первых двух

суть конфигурации первых двух рейдов (md124 и md125 с их метаданными md126) значения не имеет, но если интересно: это небольшое зеркало и большой страйп на двух дисках.
проблема именно во втором рейде (страйпе), который md123 и его метаданные md127, это один большой страйп из двух 1,5 тбайтных саташников. винда с этим рейдом работает нормально, при загрузке, после биоса интеловский ром кажет его, как нормальный, а вот mdadm так не думает.

Вопросы к топикстатеру

Вопросы к топикстатеру:
а) как по его мнению должно называтся устройсто в /dev представляющее данный раид ?
б) ты сам придумал все вышеизложенное или кто подсказал ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

а) так, как указано в

а) так, как указано в /etc/mdadm.conf или как взблагородилось придумать mdadm в процессе автозапуска массивов (mdadm -Ebs /dev/sda /dev/sdb выдаст условно-рандомный номер массиву, например), в мане об этом сказано.
б) т.е. придумал? захотелось сделать так и сделал. какое это отношение имеет к сути проблемы? я уже понял, что вы ярый противник imsm и создания двух и более рейдов на общих винтах, но всё-же.

я уже понял, что вы ярый

 я уже понял, что вы ярый противник imsm и создания двух и более рейдов на общих винтах

как бы мой дефолт в инсталле:

vds / # cat /proc/mdstat
Personalities : [raid0] [raid1]
md0 : active raid1 sda1[0] sdb1[1]
      104320 blocks [2/2] [UU]

md1 : active raid0 sdb2[1] sda2[0]
      1949214208 blocks 256k chunks

unused devices: <none>

б) т.е. придумал? захотелось сделать так и сделал. какое это отношение имеет к сути проблемы?

Вы не находите, что прямое ? Ибо сделано было __неправильно__

вы, имхо, долго читали и писали в данный топик, но не попытались понять мою точку зрения. Она состоит в следующем:
а) юзать софтреид на данном девайсе - мера вынужденная , обусловлена необходимостью загрузки винды с данного рейда. Ок, ваш случай
б) в этом случае надо применять одну единственно рабочую конфигурацию - реид деваис бьётся на разделы, на один из них ставится винда.
raid деваис по дефолту не виден в линуксе ( и в винде тоже - только после установки дров по F6).
для того, что бы его увидеть, используется пакет dm-raid, после запуска которого у вас в /dev/mapper/ появится некий девайс, который и будет рейдовским диском от биосного райда
ц) mdadm знать нифига не знает, не знал, и знать не будет про данный тип райда.

если вы считаете, что я не прав - покажите определение метаднных онбоард биос райд в исходниках мдадм.
Так же рекомендую к прочтению доки dmraid и гентушную wiki ( старую).

П.С первый свой факе райд я заводил на 2.4, там же заводил и raidtools - преубедите меня, если считаете, что я неправ

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

о б-же, я же с вами не спорю,

о б-же, я же с вами не спорю, оставайтесь при своей точке зрения.

[AmiGO@pandorabox mdadm-3.1.2]# grep imsm `find`
./mdadm.8:.IP imsm
./config.c:	 * any other array (imsm, 1.x) if and only if it is identified
./super-intel.c:struct imsm_disk {
./super-intel.c:struct imsm_map {
./super-intel.c:struct imsm_vol {
./super-intel.c:	struct imsm_map map[1];
./super-intel.c:struct imsm_dev {
./super-intel.c:	struct imsm_vol vol;
./super-intel.c:struct imsm_super {
./super-intel.c:	struct imsm_disk disk[1];	/* 0xD8 diskTbl[numDisks] */
./util.c:struct superswitch *superlist[] = { &super0, &super1, &super_ddf, &super_imsm, NULL };

evadim:тут был огромный листинг кода, но его выпилили злобные модераторы.
сотрим как постить большие куси кода тут - http://www.gentoo.ru/content/mne-neobhodimo-vylozhit-bolshoy-kusok-loga-ili-konfiguracionnogo-fayla-kak-postupit

но определение, вероятно, будет в super-intel.c
не вижу вообще никакого отношения. что сделано _неправильно_? именование md-устройств? ок, тогда касательно этого я отвечу: дженту - не единственная nix-like ос, помимо неё у меня установлено ещё 2 других: федора и арч. так вот, сборка рейда осуществлялась в лив-сд федоры, методом "mdadm --examine --scan". что здесь неправильного? ах да, федора, давайте же скорее напишем что-нибудь умное по этому поводу.

а) да
б) при сборке ядра с поддержкой софтового рейда - виден. пакет dm-raid _не используется_, в /dev/mapper/ у меня _только_ lvm-тома, хотя я уже писал об этом.
ц) орлы? посмотрите листинг выше.

читал

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

п.п.с. ещё разок
http://www.opennet.ru/openforum/vsluhforumID3/55350.html

Цитата:
Вышла (http://markmail.org/message/szknz37yf7qg7mr2) новая версия пакета mdadm 3.0 (http://neil.brown.name/blog/mdadm), предназначенного для управления программными RAID массивами в Linux. По сравнению с веткой 2.6, объем кодовой базы новой версии вырос примерно на 40%. Главное новшество новой ветки - поддержка управления мета-данными на уровне пользователя, что позволяет обеспечить работу с форматами мета-данных не поддерживаемых Linux ядром. Два из таких формата присутствуют в mdadm 3.0: DDF (Disk Data Format), определенный в стандарте SNIA (http://www.snia.org/standards/home) (Storage Networking Industry Association), и формат imsm (Intel Matrix), используемый в новых контроллерах Intel ICH. Добавление данных форматов, позволит использовать утилиту mdadm для управления широким спектром Fake-RAID контроллеров, не прибегая к установке проприетарных утилит или модуля dmraid (http://people.redhat.com/~heinzm/sw/dmraid/readme).

обрадую тебя, человече,

обрадую тебя, человече, возился я недавно с Intel Software RAID(isw в терминологии dmraid) на том самом dmraid. Результат - отстой, mdadm заруливает dmraid по всем понятиям в ЭТОМ конкретном случае. в твоем же случае ты юзаешь mdadm... ну что ж... я НЕ ЗНАЮ насколько хороша поддержка метаданных Intel Matrix Storage, но судя по возникшим у тебя проблемам она явно не идеальна... Так что у тебя два пути - или перегнать винду на "динамические диски"(виндовый софтовый рейд) и вырубить Storage Engine нахрен, или перегнать Linux на dmraid(не советую, ибо производительность будет скачкообразно превращаться в нулевую). Тебе решать...

Intel Software RAID в

Intel Software RAID в терминологии dmraid = imsm в любой другой терминологии.
с dmraid наигрался, с imsm он не умеет ничего кроме сборки 100% целостных и функционирующих массивов с метаданными imsm, иначе проблемы проблемы проблемы.
самый правильный всё-таки путь - это хардварный raid =)

[SOLVED]

всё, проблема решена.

собственно, чтобы не закрывать тред без самого солюшена, опишу весь, так сказать, процесс.
первое, что пришло мне в голову - это попытаться отредактировать метаданные hex-редактором. в самом imsm-контейнере вылетевший винт отображался нормально, но если же попытаться посмотреть детальную информацию самого raid0-массива (который был единственный в контейнере), то винт отображался, как removed - об этом было написано выше.
документации по метаданным я не нашёл, поэтому решил покопать исходники mdadm, в итоге нашёл внутри полную структуру, но загвоздкой стала контрольная сумма. т.е. я взял суперблок (последний мегабайт) с обоих винтов (он, разумеется, на обоих совпадал), этот мегабайт представляет из себя error-log imsm-контейнера и мета-описание, которое следует после error-log'а (хотя из формата мета-данных понятно, что журнал ошибок может размещаться в любом другом месте). простое изменение статусного бита вылетевшего винта приводило к ошибке из-за контрольной суммы, алгоритм же её вычисления основывается на всех данных imsm-контейнера, поэтому после непродолжительных совокуплений, решил просто пересоздать массив (mdadm --create --assume-clean), но тут тоже возникла загвоздка: размер области под imsm-массивы, который отводился в создаваемых метаданных не соответствовал тому, что был в выделен при создании метаданных из встроенного в биос рейд-админа, указание размера вручную, опять же, не привело к требуемому результату (размер всегда отличался в большую или меньшую сторону).
в качестве финальной меры я просто убил суперблок с метаданными на обоих дисках из рейд-админа (который вызывается по ctrl+i при старте компа) - пункт "reset disk to non-raid" и создал на "освободившемся" месте массив заново, перед этим скопировав первые 10 гб с обоих дисков и старые суперблоки "на всякий пожарный". в итоге рейд-админ похерил только mbr на обоих дисках (это и есть весь ужас надписи "all data will be destroyed"), который я благополучно восстановил из бекапа, хотя можно было просто testdisk'ом.
после проделанных операций массив собрался и запустился без проблем как под оффтопиком, так и под линуксом.

выводы из истории?
mdadm либо виндовые интеловские дрова нуждаются в доработке. почему mdadm? потому, что с его помощью я не смог удалить и заново добавить диск в массив, в данный момен это возможно только для самого imsm-контейнера, условный же resync выполнить для него невозможно, хотя это и понятно, если учесть, что это raid нулевого уровня. почему интеловские дрова? потому, что после сбоя они не поленились исправить один бит и пересчитать контрольную сумму, вручную же их заставить это сделать невозможно (либо об этом не сказано в документации, как всегда).

p.s. товарищам, которые лезут советовать, не разобравшись в сути и не зная принципа (о, ужас, мдадм поддерживат фейк-рейды, как так?!) отдельный анреспект, лишь убил время, пытаясь докопаться до сути в дискуссии.

>>о, ужас, мдадм поддерживат

>>о, ужас, мдадм поддерживат фейк-рейды, как так?

Можешь, однако. Только утверждать наличие поддержки f<Вырезано цензурой>k рейдов в мдадм несколько опрометчиво. Ежели есть поддержка - Бубен должен висеть на стене. Всегда.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".