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
данные срочно синхрить и диск на магнитики.