Програмный RAID-массив


RAID  массивы позволяют с помощью нескольких винчестеров создать систему хранения данных, которая будет обладать нужной степенью отказоустойчивости. Например, в случае массива RAID-5 ваши данные останутся в целости при сгорании одного из винчестеров, RAID-6 позволяет обеспечить гарантированное сохранение данных при вылете уже двух винчестеров. Существуют три основных возможности: аппаратный RAID-массив, аппаратно-программный RAID-массив и программный RAID-массив. Первые два способа требуют наличия достаточно дорогих RAID-контроллеров, не всегда это возможно. Здесь описывается процесс создания программного RAID-массива.
 
Кратко о типах RAID-массивов:
 
RAID0 — распределение блоков на нескольких физических дисках для повышения скоростей записи и чтения, но без обеспечения отказоустойчивости;
RAID1 — зеркалирование, т.е. запись одних и тех же данных одновременно на несколько дисков, что обеспечивает отказоустойчивость при выходе из строя любого количества дисков, пока остаётся хотябы один работоспособный;
RAID2 - диски делятся на две группы — для данных и для кодов коррекции ошибок, причем если данные хранятся на n дисках, то для хранения кодов коррекции необходимо n − 1 дисков.
RAID3 - из n дисков данные разбиваются на куски размером 1 байт и распределяются по n − 1 дискам. Ещё один диск используется для хранения блоков чётности.
RAID4 — RAID 4 похож на RAID 3, но отличается от него тем, что данные разбиваются на блоки, а не на байты;
RAID5 — массив с обеспечением отказоустойчивости за счет минимальной избыточности (требуется минимум три диска). RAID5 получил широкое распространение, в первую очередь, благодаря своей экономичности. Объем дискового массива RAID5 рассчитывается по формуле (n-1)*hddsize, где n — число дисков в массиве, а hddsize — размер наименьшего диска. Например, для массива из 4-х дисков по 80 гигабайт общий объем будет (4 — 1) * 80 = 240 гигабайт.
RAID6 — похож на RAID 5, но имеет более высокую степень надежности — под контрольные суммы выделяется емкость 2-х дисков, рассчитываются 2 суммы по разным алгоритмам;
 
В примере будет использоваться raid1, нам понадобится два раздела одинакового обьема (работать с разделами в линукс можно при помощи программы fdisk, есть статья ). В принципе необязательно использовать разделы на двух разных дисках, можно сделать два раздела на одном hdd, но всеже это плохая идея. Имеем два диска: /dev/sdb,  /dev/sdd с созданными на них разделами одинакового размера.
Для начала нужно подготовить разделы, которые вы хотите включить в RAID, присвоив им тип fd (Linux RAID Autodetect).
 
sudo fdisk /dev/sdb
p # просмотр существующих разделов на этом диске
t # смена типа раздела
1 # выбираем нужный номер раздела
fd # выбираем тип fd, все возможные варианты можно посмотреть, введя "L"
# сохраняем изменения
 
sudo fdisk /dev/sdd
p # просмотр существующих разделов на этом диске
t # смена типа раздела
1 # выбираем нужный номер раздела
fd # выбираем тип fd, все возможные варианты можно посмотреть, введя "L"
w # сохраняем изменения
 
Далее ставим программу для создания raid-массивов:
 
sudo apt-get install mdadm
 
(Не знаю, так и должно быть или нет, но при ее установке зачем то поставился почтовый сервер postfix, какая связь между ними - для меня загадка)
 
Создаем raid-массив командой:
 
sudo mdadm --create --auto=md --verbose /dev/md/md404 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdd1
 
где /dev/md/md404 - имя создаваемого программой устройства, можно обозвать как удобней.
Смотрим активен ли созданный рейд:
cat /proc/mdstat
Видим что рейд активен и автоматом запустилась синхронизация дисков. Необходимо дождаться окончания, у меня диски 1,5TB синхронизировались около трех часов. 
Затем форматируем:
 
sudo mkfs.ext4 /dev/md/md404
 
Монтируем тоже аналогично простому разделу:
 
sudo mount /dev/md/md404 /mnt/md404
 
Теперь что бы после перезагрузки райд по прежнему был, нужно узнать его UUID командой:
 
 
mdadm --detail /dev/md/md404
 
И в /mdadm/mdadm.conf его добавляем, если это первый рейд на вашем компе, файл должен выглядеть примерно так:
 
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
 
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
 
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
 
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
 
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
 
# definitions of existing MD arrays
ARRAY /dev/md/md404 auto=md level=raid1 UUID=8118ce89:44991c23:27495b3c:90267476
# This file was auto-generated on Fri, 15 Oct 2010 10:04:02 +0400
# by mkconf $Id$
 
 
 
RAID-массив создан. Перезагружаемся и проверяем, все ли в порядке:
cat /proc/mdstat
 
Для автоматического монтирования рейда нужно добавить соответствующую запись в /etc/fstab .
 
Состояние всех компонент массива смотрим так:
 
sudo mdadm -E /dev/sdb1
 
sudo mdadm -E /dev/sdd1
 
Для остановки массива:
 
sudo mdadm -S /dev/md/md404
 
И очищаем суперблоки RAID на разделах, из которых собран массив, после его остановки:
 
sudo mdadm --zero-superblock /dev/sdb1
 
sudo mdadm --zero-superblock /dev/sdd1

Oct. 4, 2010