[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 лесом).
лог винды:
лог пингвина:
Вариантов 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
Для 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
Ну с первого прочтения это я
Ну с первого прочтения это я не вкурил ... надо бы позабористее в следующий раз достать )))
И немного непонятно все таки с конфигурацией рейда, помоги объяснить:
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 и создания двух и более рейдов на общих винтах, но всё-же.
я уже понял, что вы ярый
как бы мой дефолт в инсталле:
Вы не находите, что прямое ? Ибо сделано было __неправильно__
вы, имхо, долго читали и писали в данный топик, но не попытались понять мою точку зрения. Она состоит в следующем:
а) юзать софтреид на данном девайсе - мера вынужденная , обусловлена необходимостью загрузки винды с данного рейда. Ок, ваш случай
б) в этом случае надо применять одну единственно рабочую конфигурацию - реид деваис бьётся на разделы, на один из них ставится винда.
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 ;)
о б-же, я же с вами не спорю,
о б-же, я же с вами не спорю, оставайтесь при своей точке зрения.
но определение, вероятно, будет в super-intel.c
не вижу вообще никакого отношения. что сделано _неправильно_? именование md-устройств? ок, тогда касательно этого я отвечу: дженту - не единственная nix-like ос, помимо неё у меня установлено ещё 2 других: федора и арч. так вот, сборка рейда осуществлялась в лив-сд федоры, методом "mdadm --examine --scan". что здесь неправильного? ах да, федора, давайте же скорее напишем что-нибудь умное по этому поводу.
а) да
б) при сборке ядра с поддержкой софтового рейда - виден. пакет dm-raid _не используется_, в /dev/mapper/ у меня _только_ lvm-тома, хотя я уже писал об этом.
ц) орлы? посмотрите листинг выше.
читал
п.с. очень за вас рад. но не могли бы вы подсказать всё-же, как решить проблему, описание которой в первом посте не ссылаясь на то, что у меня кривые руки, мозг, я использую неправильные средства, живу в неправильной стране на неправильной планете в неправильной галактике (хоть это всё и имеет место быть)?
п.п.с. ещё разок
http://www.opennet.ru/openforum/vsluhforumID3/55350.html
обрадую тебя, человече,
обрадую тебя, человече, возился я недавно с 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 рейдов в мдадм несколько опрометчиво. Ежели есть поддержка - Бубен должен висеть на стене. Всегда.