Как и все задачи в линуксе, создание программных рейд массивов имеет несколько вариантов решения. В данной статье я останавливюсь на использовании утилиты mdadm.
1. Теория
RAID (англ. redundant array of independent/inexpensive disks) — избыточный массив независимых дисков. Служит для повышения надёжности хранения данных (RAID 1) и/или для повышения скорости чтения/записи информации (RAID 0).
Аббревиатура RAID изначально расшифровывалась как «Redundant Arrays of Inexpensive Disks» («избыточный (резервный) массив недорогих дисков», так как они были гораздо дешевле RAM). Именно так был представлен RAID его создателями Петтерсоном (David A. Patterson), Гибсоном (Garth A. Gibson) и Катцом (Randy H. Katz) в 1987 году. Со временем RAID стали расшифровывать как «Redundant Array of Independent Disks» («избыточный (резервный) массив независимых дисков»), потому, как для массивов приходилось использовать и дорогое оборудование (под недорогими дисками подразумевались диски для ПЭВМ).
Калифорнийский университет в Беркли представил следующие уровни RAID, которые были приняты как стандарт де-факто:
RAID 0 представлен как неотказоустойчивый дисковый массив.
RAID 1 определён как зеркальный дисковый массив.
RAID 2 зарезервирован для массивов, которые применяют код Хемминга.
RAID 3, 4, 5 используют чётность для защиты данных от одиночных неисправностей.
RAID 6 используют чётность для защиты данных от двойных неисправностей
Более подробно о Рейдах читайте в Википедии.
Сразу следует предупредить что программная реализация рейд массива не принесет прироста быстродействия, но с ее помощью можно обеспечить большую надежность хранения данных (Raid1, Raid5) а так же можно будет объединять несколько физических дисков в один логический.
2. Подготовка дисков
На своем домашнем ПК у меня нашелся один ненужный жесткий диск на котором я и провожу эксперименты. В отличии от аппаратных рейд массивов в программных можно использовать разделы диска (стоит отметить что использование двух разделов одного жесткого диска для raid1 по сути бессмысленно, ибо при выходе из строя накопителя теряются оба экземпляра данных).
Итак, свой жесткий диск я разбил на 4 основных раздела по 10Гб каждый (/dev/sda1-sda4).
3. mdadm
Установим в систему mdadm для управления программными рейд массивами.
apt-get install mdadm
4. Создание массива
Линейный массив позволяет нам склеить несколько логических или физических дисков/разделов в один логический диск.
Слепим 4 диска в один логический (напомню что я использовал разделы одного диска, но аналогично можно поступать скажем с четырьмя терабайтными жёсткими дисками для создания одного 4-х терабайтного =)):
mdadm --create /dev/md0 --level=linear --raid-devices=4 /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
Mdadm с ключем —create создает на разделах /dev/sda* суперблоки которые указывают на то что эти разделы/диски входят в состав массива и при последующей перезагрузке они автоматически включаются в массив.
В случае создания зеркального массива или страйпа следует указать соответствующий —level (0 — stripe, 1- mirror).
После этой команды демон mdadm начнёт в фоне организовывать рейд массив, хотя линейное склеивание проходим вроде как мгновенно. Проверить статус выполнения можно проверив /proc/mdstat:
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active linear sda4[3] sda3[2] sda2[1] sda1[0]
39101888 blocks 64k rounding
В результате у нас образуется новый диск /dev/md0. После создания на нем раздела fdisk-ом примонтируем его
mount /dev/md/0 /mnt/storage
Проверим скорость работы линейно склеенного диска в сравнении с отдельными:
# hdparm -tT /dev/sda1
/dev/sda1:
Timing cached reads: 2016 MB in 2.00 seconds = 1007.99 MB/sec
Timing buffered disk reads: 236 MB in 3.00 seconds = 78.60 MB/sec
root@boffin-desktop:/root# hdparm -tT /dev/md/0
# hdparm -tT /dev/md/0
/dev/md/0:
Timing cached reads: 2034 MB in 2.00 seconds = 1016.73 MB/sec
Timing buffered disk reads: 240 MB in 3.00 seconds = 79.88 MB/sec
Как видим скорость не изменилась.

Эта статья самая короткая и самая содержательная из многих, найденных мной в сети. Содержательность статьи заключается в том, что она дает мгновенный ответ на вопрос о необходимости установки LINUX на RAID. Действительно применение прграммного RAID 0 не приносит увеличения производительности, а применение RAID 1 на одном физическом диске абсолютно бессмысленно. В сети весьма много народа дебатирует на эти темы и многие приходят к этим же выводам путем многосуточных бдений, споров и испытаний на собственном опыте(ваш покорный слуга тоже). Эта статья помогла бы многим начинающим линуксоидам сохранить время и нервы, ну так кто же в России читает хорошие статьи?
Автору респект, однозначно!
Автору респект за лаконичность и содержательность. Хотя, путем размышлений можно было бы прийти к тому же выводу без полевого испытания)
Честно говоря, до этой статьи у меня и мысли не возникало создать RAID-массив из разделов на одном HDD, автор расширил мой кругозор. Спасибо)
А теперь по делу:
Как сказано в статье, «RAID (англ. redundant array of independent/inexpensive disks) — избыточный массив независимых дисков».
Ключевое слово «дисков», а не «разделов».
Разделы использовать то можно, но зачем? Используя разделы, автор два раза протестировал скорость чтения одного и того же, «единственного», HDD.
Статья будет не полной, если автор не протестирует скорость программного RAID-массива из двух «независимых дисков»…