The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как на лету восстановить SoftRAID1 в Линуксе?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Как на лету восстановить SoftRAID1 в Линуксе?"  +/
Сообщение от Ilya Evseev email on 03-Июл-09, 22:20 
Имеется RAID1, сделан через mdadm, рассыпался при сбое питания:

# mdadm -D /dev/md2
/dev/md2:
        Version : 00.90.03
  Creation Time : Mon Jun 30 15:30:22 2008
     Raid Level : raid1
     Array Size : 204796544 (195.31 GiB 209.71 GB)
  Used Dev Size : 204796544 (195.31 GiB 209.71 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 2
    Persistence : Superblock is persistent

    Update Time : Fri Jul  3 22:15:39 2009
          State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
  Spare Devices : 0

           UUID : ad1a23ec:d3e5f6c4:2bb9068d:214a3c20
         Events : 0.452106

    Number   Major   Minor   RaidDevice State
       0       8        4        0      active sync   /dev/sda4
       1       0        0        1      removed

       2       8       20        -      faulty spare   /dev/sdb4

Вопрос: как вернуть диск из состояния "faulty spare" в рабочее?

"mdadm /dev/md2 -r /dev/sdb4" отрабатывает,
но "mdadm /dev/md2 -a /dev/sdb4" или "--re-add" ругаются:
mdadm: add new device failed for /dev/sdb4 as 2: Invalid argument
По strace видно, что ошибка происходит при выполнении
ioctl(3, 0x40140921, 0x7fffe26586f0) на /dev/md2.

Помогает перезагрузка в single mode: добавление проходит,
начинается синхронизация, но после "telinit 3" диск снова оказывается "faulty spare".
Ждать сутки, пока в single mode закончится синхронизация, не привлекает.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как на лету восстановить SoftRAID1 в Линуксе?"  +/
Сообщение от ronin (??) on 04-Июл-09, 16:37 

>Вопрос: как вернуть диск из состояния "faulty spare" в рабочее?

mdadm --manage /dev/md2 --fail /dev/sdb4
mdadm --manage /dev/md2 --remove /dev/sdb4


После этого надо убедиться что /dev/sdb живой:
dd if=/dev/sdb of=/dev/null

Если споткнётся на считывании - надо заменить диск. Если всё пройдёт без проблем - тогда рекомендуется затереть ошмётки рейда на /dev/sdb4:

dd if=/dev/zero of=/dev/sdb4

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


После этого добавляем диск обратно в массив:

mdadm --manage /dev/md2 --add /dev/sdb4


>Помогает перезагрузка в single mode: добавление проходит,
>начинается синхронизация, но после "telinit 3" диск снова оказывается "faulty spare".
>Ждать сутки, пока в single mode закончится синхронизация, не привлекает.

А вот это очень интересно. И весьма непонятно. Рекомендую убрать автоматическое распознавание и сборку массива на старте системы (просто убив соответствующую запись в  /etc/mdadm.conf или /etc/mdadm/mdadm.conf - зависит от того какой у Вас Линух). И только после этого - telinit 3.

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

mdadm --examine --scan


Далее -- ручная сборка массива:

mdadm --assemble /dev/md2 /dev/sda4

Для начала рекомендую собирать только с 1 диском. Тем, который наверняка живой.

Ну, и контрольный в голову:

mdadm --query --detail /dev/md2

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


После успешного взлёта массива нужно попытаться добавить второй диск:

mdadm --manage /dev/md2 --add /dev/sdb4


И опять:

mdadm --query --detail /dev/md2


Если всё прошло нормально - массив должен начать ребилдаться.


Когда успешно закончит ребилдаться - обязательно:

fsck /dev/md2


После этого - для очистки совести:

mdadm --stop /dev/md2

и ребут системы (с отключенным автораспознаванием и сборкой массива!).


После ребута - ещё одна ручная сборка, чтоб убедиться что всё пучком, и только после этого
восстанавливать автосборку массива:

mdadm --examine --scan >> /etc/mdadm.conf (или /etc/mdadm/mdadm.conf)


Успехов!

respect,
ronin


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру