Подборка заметок о 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
boottitle 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: quitcp -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 -l3. С помощью fdisk создать на новом диске разделы, идентичные оригиналу
Необходимо пометить нужный раздел нового диска (sda1 или sdb1) как загрузочный
до включения в зеркало.
Swap-разделы не подлежат зеркалированию в программном RAID4. Выполнить Мониторинг состояния и Восстановление функционирования
Настройка оповещения
Мониторинг выполняется с помощью 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