PDF Печать E-mail

Програмный 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"

w # сохраняем изменения


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