Linux, RAID-1 восстановление после сбоя, замена жесткого диска

Сейчас хочется рассмотреть случай, когда 1 диск зеркального RAID массива отказывает и отдается на замену. Мы будем экспериментировать с двумя дисками: /dev/sda и /dev/sdb.

Проверим статус RAID массива:

    cat /proc/mdstat
    Personalities : [raid1] [raid10] [raid0] [raid6] [raid5] [raid4]
    md0 : active raid1 sdb1[1] sda1[0]
    4200896 blocks [2/2] [UU]

    md1 : active raid1 sdb2[1] sda2[0]
    2104448 blocks [2/2] [UU]

    md2 : active raid1 sdb3[1] sda3[0]
    286728000 blocks [2/2] [UU]

    unused devices:


Эмуляция отказа диска

Эмулировать будем отказ диска /dev/sda, это делается следующим образом:

    mdadm /dev/md0 --fail /dev/sda1
    mdadm /dev/md1 --fail /dev/sda2
    mdadm /dev/md2 --fail /dev/sda3


В итоге получаем ситуацию аналогичную выходу из строя диска /dev/sda:

    cat /proc/mdstat
    Personalities : [raid1] [raid10] [raid0] [raid6] [raid5] [raid4]
    md0 : active raid1 sdb1[1] sda1[2](F)
    4200896 blocks [2/1] [_U]

    md1 : active raid1 sdb2[1] sda2[2](F)
    2104448 blocks [2/1] [_U]

    md2 : active raid1 sdb3[1] sda3[2](F)
    286728000 blocks [2/1] [_U]

    unused devices:


После этого попробуем перезагрузиться для чистоты эксперимента (но в случае "вылета" /dev/sda лучше этого не делать, будет не с чего грузиться, если он реально отказал).

Замена диска

Продолжаем, теперь нам нужно заменить отказавший диск, возможности это сделать у нас нету, так что обойдемся форматированием диска.

После перезагрузки RAID принял следующий вид:

    cat /proc/mdstat
    Personalities : [raid1] [raid10] [raid0] [raid6] [raid5] [raid4]
    md0 : active raid1 sdb1[1]
    4200896 blocks [2/1] [_U]

    md1 : active raid1 sdb2[1]
    2104448 blocks [2/1] [_U]

    md2 : active raid1 sdb3[1]
    286728000 blocks [2/1] [_U]

    unused devices:


Внимание! Прочитайте следующий абзац прежде чем выполнять эти команды! Предварительно, необходимо /dev/sda выбросить из RAID а, это делается так:

    mdadm /dev/md0 --remove /dev/sda1
    mdadm /dev/md1 --remove /dev/sda2
    mdadm /dev/md2 --remove /dev/sda3


Если RAID откажется выбрасывать раздел, то стоит заюзать флаг -f:

        mdadm /dev/md0 --remove -f /dev/sda1
        mdadm /dev/md1 --remove -f /dev/sda2
        mdadm /dev/md2 --remove -f /dev/sda3


Но в моем случае, это не потребовалось, т.к. все упоминания о /dev/sda были выброшены автоматически после перезагрузки.

Форматирование диска для эмуляции "замены"

Теперь посредством fdisk отформатируем /dev/sda:

    fdisk /dev/sda


и далее последовательно командой d удаляем все разделы

В итоге получаем следующую картину:

    fdisk -l /dev/sda

    Disk /dev/sda: 300.0 GB, 300069052416 bytes
    255 heads, 63 sectors/track, 36481 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System


Все, еще раз перезагружаемся для честной симуляции процесса выемки диска из системного блока :)

Копируем таблицы разделов на новый диск

Теперь копируем таблицу разделов с /dev/sdb на /dev/sda:

    sfdisk -d /dev/sdb | sfdisk /dev/sda


В итоге получаем следующее:

    fdisk /dev/sda -l

    Disk /dev/sda: 300.0 GB, 300069052416 bytes
    255 heads, 63 sectors/track, 36481 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    /dev/sda1 1 523 4200966 fd Linux raid autodetect
    /dev/sda2 524 785 2104515 fd Linux raid autodetect
    /dev/sda3 786 36481 286728120 fd Linux raid autodetect


Ставим GRUB на новый диск

    grub-install /dev/sda

    Installation finished. No error reported.
    This is the contents of the device map /boot/grub/device.map.
    Check if this is correct or not. If any of the lines is incorrect,
    fix it and re-run the script `grub-install'.

    (hd0) /dev/sda
    (hd1) /dev/sdb


Либо если вариант выше не помог пробуем ставить GRUB вручную:

    grub /dev/sda
    grub>
    grub> root (hd0,0) # указать, где находится каталог /boot/grub на вторичном диске
    grub> setup (hd0) # установить GRUB-загрузчик в MBR вторичного диска
    grub> quit


Сборка RAID

Теперь дело за малым, снова добавить указанные разделы в RAID массив:

    mdadm /dev/md0 -a /dev/sda1
    mdadm /dev/md1 -a /dev/sda2
    mdadm /dev/md2 -a /dev/sda3


Следим за сборкой RAID массива

    cat /proc/mdstat
    Personalities : [raid1] [raid10] [raid0] [raid6] [raid5] [raid4]
    md0 : active raid1 sda1[0] sdb1[1]
    4200896 blocks [2/2] [UU]

    md1 : active raid1 sda2[0] sdb2[1]
    2104448 blocks [2/1] [_U]
    resync=DELAYED

    md2 : active raid1 sda3[2] sdb3[1]
    286728000 blocks [2/1] [_U]
    [>....................] recovery = 0.0% (150592/286728000) finish=95.1min speed=50197K/sec

    unused devices:


P.S. вообще, самый правильный путь следующий: сначала необходимо добавить в RAID раздел, на котором располагается /boot, дождаться, пока он соберется, после этого установить grub и уже самым последним шагом - собрать остальные разделы.



Просмотров: 1717
17.02.2015, 19:36 -

Категория: Статьи » Администрирование