mdadm — управляет MD устройствами программного RAID в ОС Linux. На текущий момент поддерживаются следующие типы MD устройств:
- LINEAR — расширение размера логического диска за счет нескольких физических дисков;
- RAID0 (striping) — чередование, дисковый массив из 2 или более жёстких дисков с отсутствием избыточности и, как следствие, без обеспечения отказоустойчивости. Информация разбивается на блоки данных и записывается на диски одновременно, количество дисков прямопропорционально росту скорости. При выходе из строя одного из участников теряется информация всего массива. Надежность равна произведению вероятностей нормальной работы всех входящих участников.
- RAID1 (mirroring) — зеркалирование, запись одних и тех же данных одновременно на разделы участники, что обеспечивает отказоустойчивость при отказе одного из дисков. Содержимое на каждом участнике массива идентично. Для организации RAID1 массива необходимо 2 или более разделов участников.
- RAID4 — массив из n дисков, данные в котором разбиваются на блоки и распределяются по n − 1 дискам, используется выделенный диск для хранения блоков четности, при вычислении используется код Хемминга. Обеспечивает отказоустойчивость при отказе одного из дисков. Для организации RAID4 необходимо 3 или более разделов участников.
- RAID5 — массив с обеспечением отказоустойчивости за счет минимальной избыточности. Блоки данных и контрольные суммы циклически записываются на все диски массива, нет асимметричности конфигурации дисков. Обеспечивает отказоустойчивость при отказе одного из дисков. Объем дискового массива RAID5 равен (n-1) разделов. Для организации RAID5 массива необходимо 3 или более разделов участников.;
- RAID6 — похож на RAID5, но имеет более высокую степень надежности — под контрольные суммы выделяется емкость 2-х дисков, рассчитываются контрольные суммы по 2 различным алгоритмам; Обеспечивает работоспособность после выхода из строя двух дисков. Для организации массива требуется минимум 5 дисков. Использование RAID6 вызывает как правило 10-15 % падение производительности, по сравнению с аналогичными показателями RAID5, что связано с увеличением количества операций необходимых для обеспечиения расчета и записи 2 контрольных сумм в отличие от одной.
- MULTIPATH — не использует технологию программного RAID, предоставляет несколько логических устройств, каждое из которых представляет собой путь к одному физическому устройству хранения;
- FAULTY — псевдо RAID-массив, состоит только из одного физического раздела.
Создание разделов
Для создания программного RAID-массива необходимо, использовать существующие разделы на физическом носителе. Тип разделов, которые будут входить в RAID-массив предпочтительно использовать FD (Linux RAID autodetect). Все операции по созданию, удалению и изменению разделов можно выполнить с помощью fdisk. Просмотреть таблицу разделов
# fdisk -l /dev/sda
Disk /dev/sda: 73.4 GB, 73407868928 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1912 15358108+ fd Linux raid autodetect
/dev/sda2 1913 4462 20482875 fd Linux raid autodetect
/dev/sda3 4463 4717 2048287+ fd Linux raid autodetect
/dev/sda4 4718 8924 33792727+ fd Linux raid autodetect
При использовании ранее задействованных разделов, необходимо размонтировать их.
Клонировать таблицу разделов с одного физического диска на другой можно выполнить следующей коммандой:
# sfdisk -d /dev/sda | sfdisk /dev/sdb
Создание RAID массива.
Указываем имя логического устройства, тип RAID, количество физических разделов, перечисляем участников. Допускается использование сокращенной записи
# mdadm --create /dev/md3 --level=0 --raid-devices=2 /dev/sda3 /dev/sdb3
# mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
# mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sd[cde]1
Добавление в RAID
# mdadm /dev/md1 --add /dev/sdb1
Конфигурационный файл mdadm.conf
Информация о участниках RAID массивов используемая при запуске системы должна находится в конфигурационном файле mdadm.conf. Строки, которые следует добавить в этот файл, можно получить при помощи команды:
# mdadm --detail --scan
В случае если необходимо провести операции с существующим RAID0, при его статусе inactive, как например, удаление, в mdadm.conf необходимо закомменитровать(удалить) записи соответствующие данному разделу и перезапустить систему. Данные на разделе при этом теряются.
Наблюдение за состоянием програмного RAID
# cat /proc/mdstat
Дает нечто похожее на нижеследующий вывод.
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4]
md1 : active raid1 sdb1[1] sda1[0]
15358016 blocks [2/2] [UU]
md2 : active raid1 sdb2[1] sda2[0]
20482752 blocks [2/2] [UU]
md3 : active raid0 sdb3[1] sda3[0]
4096384 blocks 64k chunks
md4 : active raid0 sdb4[1] sda4[0]
67585280 blocks 64k chunks
md5 : active raid5 sde1[1] sdd1[0] sdc1[2]
1953519872 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
md6 : active raid1 sdg1[1] sdf1[0]
488383936 blocks [2/2] [UU]
unused devices: <none>
Указывается имя логического устройства, состояние active/inactive, тип RAID массива, разделы участники, объем в блоках, и последнее поле [UUU] или подобное, отражает что все разделы участники в норме, если же вместо «U», присутствует «_» подчеркивание, то это означает, что массив рассыпался, и необходимо проводить безотлагательные мероприятия по его восстановлению.
Форматирование разделов
# mkfs.ext3 /dev/md3