LINUX.ORG.RU
ФорумAdmin

Рассыпался Soft-Raid. Как починить?

 


0

2

При сбое питания впервые за несколько лет рассыпался Soft-Raid так, что не восстанавливается. Raid собирался по статье http://coreit.ru/kb/centos_raid_install/

При старте системы возникают следующие сообщение:

Welcome....
Запускается udev ... OK
Устанавливается имя узла.....
Проверяются файловые системы
/dev/md2 contains a file system with errors, check forced.
Directrory inode 36177175, block #10, offset 200: directory corrupted

/dev/md2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
    (i.e., without -a or -p options)

Welcome....
Запускается udev ... OK
Устанавливается имя узла.....
Проверяются файловые системы
/dev/md2 contains a file system with errors, check forced.
Directrory inode 36177175, block #10, offset 200: directory corrupted

/dev/md2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
    (i.e., without -a or -p options)

fsck в этот раз не помогает, т.к. не видит файловые системы - ругается на отсутствие /etc/fstab

Как быть?

★★★★★

рассыпался Soft-Raid

Может быть, конечно, и так, если копнуть поглубже, но приведённые сообщения говорят о другом. Посыпалась ФС, а не RAID.

ругается на отсутствие /etc/fstab

Зачем это надо fsck ? Новости какие-то.

Грузись с LiveCD, смотри, на всякий случай, что с RAID, а, потом... Вот что потом, зависит от ценности данных. Если не особо надо, то можно fsck -y /dev/md2, вероятно, что, даже, поможет сразу. Но если важно ничего не потерять, предварительно следует сделать копию раздела, а, возможно, и всех. Потому как последствия от fsck могут оказаться и печальными. Если так и будет, то разбираться придётся более детально.

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

Ну а как сыпится Raid? Обычно изз-за повреждений ФС, имхо. Ладно, сейчас это столь не существенно.

Важнее то, что не могу починить ФС из-за того, что загрузившись с Rescue-диска, он не видит fstab, и поэтому fsck отказывается работать.

А первым делом как раз нужно починить ФС - как?

То есть ты мне советуешь запустить fsck -y /dev/md2, а я тебе отвечаю, что fsck не работает.

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

fsck не работает так:

fsck /dev/md2

fsck from util-linux-ng 2.17.2
WARNING: couldn't open /etc/fstab: No such file or directory
e2fsck 1.41.12 (17-May-2010)
fsck.ext2: No such file or directory while trying to open /dev/md2

The superblock could not be read or does not describe a correct ext2
filesystem. If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something eles), then the superblock
is corrut, and you might try running e2fsck with an alternate superblock:
  e2fsck -b 8193  <device>

Если запустить fsck /dev/md1, то ошибки те же.

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

Ну а как сыпится Raid? Обычно изз-за повреждений ФС

RAID - объединение дисков, а файловая система или более высокоуровневая прослойка идет уже выше.

Посмотри для начала /proc/mdstat (ну и покажи его тут).

Какая файловая система была на массиве?

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

/proc/mdstat выдает 'Permission denied'

А что ты с ним пытаешься делать?

ФС = ext4

Тогда и проверять лучше через fsck.ext4

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

cat /proc/mdsat выдает

...что нет у тебя RAID'а - значит, и проверять нечего. Тебе сначала необходимо собрать его.

Делал в точности по той статье?

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

Вот-вот, я хотел сказать примерно о том же.
Т.е., если я гружусь с лайва, то raid, понятное дело, не соберется, отсюда все попытки чекать диски и прочее обернутся неудачей.

Думается, надо загрузится как обычно - с харда, и тогда raid заработает, и можно запускать fsck, он увидит fstab и он почекает все ошибки.
Раньше всегда так и делал, и все получалось.

Но в данный раз засада в том, что когда загружаю систему, она сбивается на проверке ФС и просит ввести рутовский пароль -

Give root password for maintenance

- то этот пароль ввожу уже 220 раз и он ни хрена не подходит.
Раньше такого не было. Пароль абсолютно точен.

Делал в точности по той статье?

Думаю, да, лет 5 прошло, не меньше.

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

fsck не работает так:

Поверь, для fsck не нужен fstab.

Главная ошибка - No such file or directory while trying to open /dev/md2

Как уже написали, /dev/md2 не собран. Видимо, в этом LiveCD RAID не собирается автоматом. Надо собрать сначала.
mdadm --assemble <что собрать> <из чего собрать>

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

Думается, надо загрузится как обычно - с харда,

неправильно думаешь.

и тогда raid заработает,

руками собирай, или выбери LiveCD, который это сам сделает.

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

понятное дело, не соберется

Не обязательно. Но если не хочет собираться сам - собери его руками.

Попробуй mdadm -A /dev/md1 /dev/sda1 /dev/sdb1

Если соберется - пробуй собрать второй - mdadm -A /dev/md2 /dev/sda2 /dev/sdb2

Если будут ошибки - пиши сюда. Если нет - вот тогда уже можно пробовать проверять ФС.

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

неправильно думаешь.

Может и так, только раньше этот способ всгда выручал.

руками собирай, или выбери LiveCD, который это сам сделает.

Думаешь, если я тупо собрал RAID по готовой статье, то смогу собрать его вручную? :)
Вряд ли. Еще запорю чего ненароком. Лучше поищу нормальный Live.

Кстати, не исключено, что вы правы. В нынешних Центос 6 оифициальных Live уже не делают, поэтому использовал режим Rescue установочного диска CentOS, а он RAID как вы предполагаете, не понимает. Ну тогда мудаки краснозадые - не снабдили ремонтный диск такой нужнейшей фичей.

Поищу Live от Дебиана. что ли.

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

Думаешь, если я тупо собрал RAID по готовой статье, то смогу собрать его вручную? :)

Конечно. :-) Все метаданные на HDD. YAR, вон, строчку подсказал. Правда это из предположения, что там зеркало именно из sda2 и sdb2. А вот так вот, к примеру, raid10 собирается:

mdadm --assemble /dev/md0 /dev/sd[abcd]3

Или, может, RAID5 из 3+1.

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

Ща испробую LiveCD 6.5

Можно это попробовать, если не выйдет:
http://www.altlinux.org/Rescue

По идее, должен сам собрать. А, и не обязательно, что автоматом будет именно /dev/md2, может оказаться хоть /dev/md123

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

Ща испробую LiveCD 6.5/i386

Испробовал - та же хрень, не видит /etc/fstab, а значит, и RAID тоже

Что уже перестаю понимать, где же эта хваленая отказоустойчивость RAID - полдня уже сижу, и никакого толку!

Это же не дело - столько времени восстанавливать RAID. Не будь его, давно бы уже восстановил ФС и работал бы. Какой тогда в нем смысл?

Да и хваленая ext4 - вместо того, чтобы самой починить вшивый блок, она вынуждает полдня скакать вокруг нее с бубном

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

Правда это из предположения, что там зеркало именно из sda2 и sdb2

Ну, я потому и спрашивал, точно ли по статье он делал. Там 2 зеркала.

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

Испробовал - та же хрень, не видит /etc/fstab, а значит, и RAID тоже

Забудь наконец-то про fstab. Ни raid'у, ни файловой системе он не нужен.

Что выдали команды для сборки raid'а?

Да и хваленая ext4 - вместо того, чтобы самой починить вшивый блок, она вынуждает полдня скакать вокруг нее с бубном

У тебя RAID не собран. Нет у тебя никакой файловой системы. Существование md2 у тебя в /dev - просто глюк.

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

Существование md2 у тебя в /dev - просто глюк.

Кстати, вероятно, что это попытка неудачной сборки раида на автомате.

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

Что выдали команды для сборки raid'а?

Ну я уже ответил на это - командами не собирал, не знаю как

У тебя RAID не собран. Нет у тебя никакой файловой системы.

А в самом начале AS сказал:

Посыпалась ФС, а не RAID.

Кому из вас верить? :)

Ладно, если это софтовый рейд, то по науке я имею право отключить «виновный» диск и работать без рейда.
Потом, когда убедюсь, что исправный диск работает без проблем, форматнуть «виновный» диск и снова его подключить к рейду - так вроде?

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

не видит /etc/fstab, а значит, и RAID тоже

Никакой связи. Когда ты нам поверишь ? :-)

Тебе, для начала, нужны fdisk и mdadm. fdisk - только список разделов посмотреть (fdisk -l). Далее - mdadm до момента получения рабочих /dev/mdX из нужных разделов. И только когда cat /proc/mdstat начнёт показывать вменяемую информацию, только тогда можно браться за fsck.

Примеры вменяемой информации:

$ cat /proc/mdstat 
Personalities : [raid1] 
md2 : active raid1 sdb2[1] sda2[0]
      487973824 blocks [2/2] [UU]
      
md1 : active raid1 sdb1[1] sda1[0]
      408512 blocks [2/2] [UU]
$ cat /proc/mdstat 
Personalities : [raid10] 
md0 : active raid10 sda3[0] sdd3[3] sdc3[2] sdb3[1]
      972282880 blocks 512K chunks 2 near-copies [4/4] [UUUU]

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

Да я вам верю, и благодарен за помощь и терпение!
Только вы не противоречьте друг другу, а то совсем запутаете :)

Диски я смотрел по всякому - и по fdisk -l, и с помощью parted - все замечательно, одинаково, никакой крамолы

Так что делать конретно с помощью mdadm?

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

Кому из вас верить? :)

Обоим. :-) У тебя посыпалась ФС, а не RAID. Но, когда ты грузишься с LiveCD, он не может сам собрать твой RAID. Почему - не знаю, но не потому, что RAID посыпался, а потому, что LiveCD такой. Может, там нужного модуля RAID нет, мало ли.

На то, что посыпался не RAID, намекает вот это:

Проверяются файловые системы
/dev/md2 contains a file system with errors, check forced.
То есть, когда у тебя система грузится с HDD, md2 вполне собирается, а ругань идёт именно на ФС.

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

Так что делать конретно с помощью mdadm ?

Если у тебя с --assemble в лоб не получается, надо понять, что именно за RAID там. Для этого надо посмотреть данные по разделам linux raid, которые тебе показал fdisk.

mdadm -Q /dev/sda2

и так для всех разделов linux raid. Глядя в результат, ты должен ощутить приход понимания, что указывать для -A (--assemble). :-) Кажется, ещё -D можно и для отдельного раздела.

Кстати, mdadm --assemble --scan, вроде бы, само собирает, если всё хорошо.

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

Что-то мне этот RAID мне нравится все меньше и меньше :(
Когда работал - то работал, реальной пользы от него не видел.
Зато ощутил, какой возник головняк, когда он сыпанулся.
Какой в нем смысл, если он только уйму проблем?

Лучше ответьте на уже заданный вопрос: как «расцепить» эти диски, чтобы работать с ними по-отдельности, без рейда?

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

Ведь RAID должен решат как миниум 2 задачи - спасать данные, если гавкнется диск, и ускорять восстановление. Первую задачу допустим, он решает, а вот вторую - фиг вам! Полдня угробил с лучшими гуру! :)

А раз так, то первую задачу я могу спокойно заменить кучей бекапов и не париться.

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

Какой в нем смысл, если он только уйму проблем?

Просто возможности утилиты mdadm надо изучать не когда всё случилось, а заранее. Вполне можно делать RAID из нескольких разделов одного HDD. Практической ценности в этом нет, но в учебных целях - вполне, чтобы несколько HDD не держать для опытов. Или хоть в виртуалке.

как «расцепить» эти диски, чтобы работать с ними по-отдельности, без рейда?

В общем случае - забакапиться, потом убрать RAID. Если там RAID1 (ориентируясь на статью), то, по идее, должно быть можно просто так с одним начать работать. Надо посмотреть, как раздел устроен у RAID1, и как надо таблицу разделов поправить - у меня такой задачи не стояло никогда.

а вот вторую - фиг вам!

И вторую решает.

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

Выдал команду:

mdadm --assemble --scan

она ответила:

mdadm: /dev/md/2_0 has been started with 2 drives.
mdadm: /dev/md/1_0 has been started with 2 drives.
mdadm: /dev/md/0_0 has been started with 2 drives.

Чтобы это значило - типа зеркало собралось?

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

спасать данные, если гавкнется диск

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

RAID полезен. «Бэкапом» оно не заменяется, RAID - это RAID, бэкап - это бэкап.

как «расцепить» эти диски, чтобы работать с ними по-отдельности, без рейда?

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

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

И как его убрать?

Изучать mdadm дальше. Там всё написано. :-)

Ну или универсальная команда для удаления всего (вместе с данными, разумеется):
dd if=/dev/zero of=/dev/sdX bs=1M
Где X - a,b,c и т.д.

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

Если ничего не напутал (набирал руками) - то вот:

cat /proc/mdstat

md125: active raid1 sda1[0] sdb1[1]
307136 blocks [2/2] [UU]

md126: active raid1 sda2[0] sdb2[1]
8388544 blocks [2/2] [UU]

md127: active raid1 sda3[0] sdb3[1]
968064960 blocks [2/2] [UU]

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

Ага, т.е., все же не совсем по мануалу тому. Тут у тебя 3 раздела на каждом диске и 3 зеркала. Ну, так или иначе, теперь у тебя есть с чем работать fsck. Только имена массивов - сам видишь, /dev/md125, /dev/md126 и так далее. Пробуй проверять.

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

Да не 2, а 125, 126 или 127. Я для чего написал? :)

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

Ну вот, какой-то из этих md и соответствует md2. Возможно, md126. Теперь думай, готов ли ты рискнуть сделать fsck -y /dev/md126 без бакапа.

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

Да уж не раз так делал, просто запуская fsck

Но - без страшного ключа 'y'

Ну вот, какой-то из этих md и соответствует md2.

Та что, чудная система «Linux» даже не может указать точно, кто кому соответствует??

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

Та что, чудная система «Linux» даже не может указать точно, кто кому соответствует??

Номера условны. В метаданных у тебя где-то записалось, что в родной системе оно md2. Вот тут при старте оно и пыталось собрать с таким именем, да что-то не вышло. А когда ты делал автосборку - оно выбрало другие имена, чтобы не конфликтовали со старыми. Да даже если были бы старые - ты лично можешь сказать, какой массив у тебя куда подключался? Я могу лишь предположить, исходя из размера, что первое - /boot, второе - корень. А ты это должен был сам знать.

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

Да уж не раз так делал, просто запуская fsck
Но - без страшного ключа 'y'

Это всего лишь «yes» писать на вопросы про «восстановить». Восстанавливало что-то ?

Та что, чудная система «Linux» даже не может указать точно, кто кому соответствует??

Умеет. Можешь вместо /dev/mdXXX написать /dev/disk/by-uuid/<uuid, который ты, конечно, помнишь>.

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

fsck /dev/md126 - снова сказала, что не может открыть /etc/fstab, потому что его нет, и обозвала этот диск свопом - это так и есть, - своп был на 8 Гиг

fsck /dev/md127 (это рутовский раздел на ~1 TB) - ответила, что
Directory inode 36177175, block #10, offset 200: directory corrupted
Salvage<y>?

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

Вот, уже ближе к теме. Ок, своп тогда не трогай, это ни к чему, а с корнем работай. Надеюсь, бэкапы у тебя есть. Фикси :)

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

fsck /dev/md127 (это рутовский раздел на ~1 TB) - ответила, что
Directory inode 36177175, block #10, offset 200: directory
corrupted
Salvage<y>?

Ну, значит, md2 этот был. Теперь думай, что с ним делать. Махнуть рукой и запустить с -y, или же смонтировать в r/o и сделать бакап какой-никакой. Или, вообще, dd if=/dev/md127 of=/файл/где-то/на/новом/диске. Про bs не забывай, а то медленно будет.

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

Пофиксил, кое-что ушло в отвал, но система загрузилась!!!

Правда, я все равно ни хрена не понял, что я делал, посколку весь тырнет забит мануалами, как сделать рейд, но не видел ни одного, что делать, если он разбился.
Но это мои проблемы, а тебе огромное спасибо за терпение и настоящую помощь! :)
Так что давай свой Я.Д., ты меня спас от разорения (веб-сервак с кучей сайтов), а я не привык долгу оставаться ;)

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

А уидов у меня нету - я их сразу переделываю на понятную без-уидовскую класссику ;)

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

но не видел ни одного мануала, что делать, если он разбился.

Он и не разбивался. В твоей живой системе он собирался, но система не грузилась из-за ошибки ФС. В твоем live-cd массив просто не собирался автоматом - ты собрал его руками, потом пофиксил ФС. Вот и все. А как его собирать руками - я уже показал выше. Ну или автоскан, но это может в каких-то случаях не сработать.

а тебе огромное спасибо за терпение и настоящую помощь! :)

Ну, тут не я один же помогал :)

А ты лучше изучай, как работает доверенны тебе сервер, чтобы таких ситуаций не возникало.

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

А md125 надо чекать?

Ну, тут не я один же помогал :)

Не один, но остальные разбежались, а ты оказался самым стойким и терпел до конца :)
Так что давай, сброшу тебе, а вы уж там делитесь

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

А md125 надо чекать?

Это /boot? Думаю, он целый, туда редко что-то пишется. Мог бы и проверить, в принципе. Вообще в fstab'e есть флаг для проверки файловых систем при загрузке. А в Debian (в других дистрах тоже должен быть аналог) есть опция и для автоматического фикса ошибок, вроде тех, из-за которых у тебя система не грузилась.

Так что давай, сброшу тебе, а вы уж там делитесь

Спасибо, но у меня все равно нет Я.Д. )

YAR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.