Linux Software RAID

Материал из Викиадмин
Перейти к навигации Перейти к поиску

Поднять программный рейд на сервере Linux с зеркалированием для более безопасного хранения данных.

Есть: сервер и 2 ssd диска.

Несмотря на то, что программный RAID будет работать медленнее аппаратного, у него есть и свои преимущества: не так дорог и не нужно менять аппаратное обеспечение. К тому же, если аппаратный контроллер прекратит свою работу, найти точно такой же через 3-4 года будет сложнее, что не сказать о программном. Создаём разделы для RAID

С помощью fdisk -l уточняем названия дисков. Предположим, диски sdc и sdd. С помощью cfdisk создаём на них одинаковые разделы с типом fd, которые в будущем будем зеркалировать.

Создание RAID (зеркалирование)

mdadm --create /dev/md0 --verbose -l 1 -n 2 /dev/sdc1 /dev/sdd1

где -l 1 означает зеркало (RAID-1), а n 2 - количество дисков. Можно использовать не RAID-1, а RAID-0. В таком случае размер дисков суммируется, скорость возрастет пропорционально количеству дисков. Однако если хотя бы один диск выйдет из строя, вы потеряете все.

Всё, теперь у вас есть /dev/md0, с которым вы можете работать как угодно, создавая разделы и так далее. Просмотр деталей RAID

mdadm --detail /dev/md0

Получим примерно такое

/dev/md0:
        Version : 0.90
  Creation Time : Mon Jun 28 15:30:46 2010
     Raid Level : raid1
     Array Size : 521984 (509.84 MiB 534.51 MB)
  Used Dev Size : 521984 (509.84 MiB 534.51 MB)
   Raid Devices : 2
  Total Devices : 2
  Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sun Oct 28 04:22:08 2012
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : b702e1ae:9a12f687:b29b51fd:2840a617
         Events : 0.256

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sdc1
       1       8       17        1      active sync   /dev/sdd1

Добавим данные в mdadm.conf

mdadm -D -s >> /etc/mdadm.conf

Ещё вариант просмотра данных

cat /proc/mdstat

Получаем

Personalities : [raid1]
md0 : active raid1 sdd1[1] sdc1[0]
     521984 blocks [2/2] [UU]


Подключение RAID на новой системе

Например, вы загрузили систему с LiveCD и вам нужно подключить массив. Делаем так:

mknod /dev/md0 b 9 1
mdadm --assemble /dev/md0 /dev/sdc1 /dev/sdd1

Запускаем все массивы

mdadm --assemble --scan

Массив внезапно перешёл в состояние inactive

Задаём cat /proc/mdstat и видем примерно это

md0 : inactive....

Решение

останавливаем массив

mdadm --stop /dev/md0

пересобираем

mdadm --assemble --scan --force

Следует напомнить, что массив просто так в неактив не свалится, проверяйте состояние компонентов!

Смотрим, насколько прошло зеркалирование

Итак, добавили диск и теперь у него статус spare rebuilding. Посмотреть, сколько осталось на это любоваться можно так:

cat /proc/mdstat

В итоге получим примерно это:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
 md1 : active raid1 sdb1[2] sdc1[1]</nowiki>
       15133184 blocks super 1.2 [2/1] [_U]
       [>....................]  recovery =  0.5% (82816/15133184) finish=442.1min speed=567K/sec

Второй вариант

mdadm --detail /dev/md1

И смотрим строчку

Rebuild Status : 2% complete

Если один из дисков решил уйти в мир иной…

Отключаем сбойный диск. Предположим, это sdd

mdadm --fail /dev/md0 /dev/sdd1
mdadm --remove /dev/md0 /dev/sdd1

Меняем диски и копируем данные c sdc на sdd

sfdisk -d /dev/sdc | sfdisk /dev/sdd 
mdadm --zero-superblock /dev/sdd

Подключаем (добавляем )диск:

mdadm --add /dev/md0 /dev/sdd1

Удаляем массив

Бывает и такое, что он больше не нужен. Удаляем:

mdadm /dev/md0 --fail --remove /dev/sda1 
mdadm /dev/md0 --fail --remove /dev/sdb1 
mdadm -S /dev/md0

Мониторим состояние RAID

Всегда есть шанс, что один из дисков выйдет из строя. Чтобы периодически проверять, все ли диски на месте, можно cron запускать периодически скрипт на проверку следующего содержания:

#!/bin/bash
POST_Q=`mdadm --detail /dev/md0 | grep Active`
DATA_Q=`echo $POST_Q | awk '{print $4 }' | tr -d %`
PNEED_Q='2'
# die Abfahrt der Post
if [ "$DATA_Q" -lt "$PNEED_Q" ]; then
 echo `date` | mail -s "RAID Alarm" mail@wikiadmin.net
fi

Здесь PNEED - ваше количество активных дисков, почту стоит заменить на свою. В тело письма будет добавляться дата.

Есть ещё вариант на странице Nagios

Медленно синхронизируется

Смотрим эти параметры и, в случае чего, увеличиваем

cat /proc/sys/dev/raid/speed_limit_max
cat /proc/sys/dev/raid/speed_limit_min

К тому же медленная синхронизация - повод проверить диск на состояние:

smartctl -a /dev/sda

Увидите такое:

  1 Raw_Read_Error_Rate     0x000b   057   057   016    Pre-fail  Always       -       996606719

данные срочно синхрить и диск на магнитики.