Коротко о Soft RAID

Опубликовано ivul - ср, 25.11.2009 - 10:50

Подборка заметок о Soft RAID с opennet.ru.

  • Добавление программного RAID 1 раздела на Linux сервер.

    Имеем два дополнительных диска:
    /dev/hdb (/dev/hdb1 - 40 GB)
    /dev/hdc (/dev/hdc1 - 40 GB)

    Создаем RAID 1:
    mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hdb1 /dev/hdc1

    Смотрим статус:
    cat /proc/mdstat

    Создаем файловую систему на RAID разделе:
    mkfs.ext3 /dev/md0

    Настраиваем монтирование при загрузке (в /etc/fstab):
    /dev/md0 /data2 ext3 defaults 0 0

  • Как заменить сбойный диск в программном RAID1 в Linux
    Программный RAID1 /dev/md0 включает в себя разделы /dev/sda1 и /dev/sdb1.
    Задача заменить диск /dev/sdb.

     

    Диагностику смотрим через (если вместо [UU] видим [U_], то целостность одного из дисков нарушена):
    cat /proc/mdstat

    Помечаем раздел как сбойный:
    mdadm --manage /dev/md0 --fail /dev/sdb1

    Отключаем раздел (удаляем из RAID1)
    mdadm --manage /dev/md0 --remove /dev/sdb1

    Выключаем машину, меняем диск.

    Создаем через fdisk идентичные разделы, или копируем структуру первого диска /dev/sda:
    sfdisk -d /dev/sda | sfdisk /dev/sdb

    Добавляем раздел в RAID1 массив:
    mdadm --manage /dev/md0 --add /dev/sdb1

  • Как перенеси существующую Linux систему на RAID1 добавив второй диск

    /dev/sda - диск с установленной ОС
    /dev/sdb - новый диск для зеркала

    Клонируем информацию о разделах на новый диск:
    sfdisk -d /dev/sda | sfdisk /dev/sdb

    Создаем RAID1, но первый диск пока не трогаем, пометив его отсутствующим:
    mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/sdb1
    mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/sdb2

    и т.д. для всех существующих разделов.

    Создаем ФС:
    mkfs.ext3 /dev/md0
    mkfs.ext3 /dev/md1
    ...

    Монтируем и копируем данные в RAID:
    mount /dev/md0 /mnt
    cp -dpRx / /mnt
    mount /dev/md1 /mnt/var
    cp -dpRx /var /mnt
    ...

    Меняем устройство для загрузки, для Grub в /mnt/boot/grub/menu.lst:
    title Custom Kernel 2.6.11.7
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.11.7 root=/dev/md0 md=0,/dev/sda1,/dev/sdb1 ro
    boot

    title Custom Kernel 2.6.11.7 (RAID Recovery)
    root (hd1,0)
    kernel /boot/vmlinuz-2.6.11.7 root=/dev/md0 md=0,/dev/sdb1 ro
    boot

    Устанавливаем Grub на второй диск:
    grub-install /dev/sda

    Если при установке выдается ошибка:
    /dev/sda does not have any corresponding BIOS drive.

    Нужно выполнить
    grub-install --recheck /dev/sda

    Или установить вручную:
    grub
    grub: device (hd0) /dev/sdb
    grub: root (hd0,0)
    grub: setup (hd0)
    grub: quit

    cp -dp /mnt/etc/fstab /etc/fstab
    cp -dp /mnt/boot/grub/menu.lst /boot/grub

    Перезагружаемся (второй диск) и проверяем все ли работает, если да - подключаем старый диск в RAID:

    mdadm --add /dev/md0 /dev/sda1
    mdadm --add /dev/md1 /dev/sda2
    ...

    cat /proc/mdstat

  • Мониторинг и восстановление программного RAID в Linux

    Управление программными RAID1-массивами в RHEL

    Мониторинг состояния

    Информация о всех RAID-массивах:
    # more /proc/mdstat
    или
    # cat /proc/mdstat
    или
    # watch -n .1 cat /proc/mdstat

    Информация о конкретном дисковом разделе:
    # mdadm -E /dev/sd<1-10>
    например:
    # mdadm -E /dev/sdb2

    Восстановление функционирования

    Восстановление функционирования (rebuild) разделов диска по одному после
    однократного "несмертельного" сбоя:
    # mdadm -a /dev/md<0-6> /dev/sd<1-10>
    например:
    # mdadm -a /dev/md0 /dev/sdb1
    Нужно быть аккуратным с номерами разделов
    В случае ошибки, удалить компонент из RAID командой:
    # mdadm -r /dev/md0 /dev/sdb1
    получается не всегда - устройство может быть занято.

    Замена диска

    1. Выключить компьютер и заменить диск

    2. Включить компьютер и определить имеющиеся на обоих дисках разделы:
    # fdisk /dev/sd -l

    3. С помощью fdisk создать на новом диске разделы, идентичные оригиналу
    Необходимо пометить нужный раздел нового диска (sda1 или sdb1) как загрузочный
    до включения в зеркало.
    Swap-разделы не подлежат зеркалированию в программном RAID

    4. Выполнить Мониторинг состояния и Восстановление функционирования

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

    Мониторинг выполняется с помощью crond ежечасно.
    В папку /etc/cron.haurly помещен файл mdRAIDmon, содержащий команду:
    # mdadm --monitor --scan -1 --mail=postmaster@domain.name.ru

    Для проверки рассылки сообщения добавляется ключ --test:
    # mdadm --monitor --scan -1 --mail=postmaster@domain.name.ru --test

    Помещая файл задания в папку, необходимо установить права доступа на выполнение
    Если нужно чаще, самое простое, добавьте в /etc/crontab строку, используя нотацию с "/", например:
    */5 * * * * root run-parts /etc/cron.my5min

    Конечно, можно попробовать и другие варианты планирования заданий с atd или batch.

    Создайте папку /etc/cron.my5min и поместите туда файл mdRAIDmon
    C имитацией отказа диска мне было проще - сервер SR1425BK1 - с корзиной HotSwap