RAID массивы - основные уровни

RAID это прежде всего технологии - технологии объединения нескольких физических дисков в логический с целью увеличения надёжности и/или объёма. Впервые были представлены в 1987 и анонсировались как "redundant array of inexpensive disks" (избыточный массив недорогих дисков). Слово "недорогих" оказалось спорным и было заменено на "независимых" - "redundant array of independent disks" (избыточный массив независимых дисков). Это было ближе к истине, "ареалом" обитания данной технологии изначально были серверы, а это как известно дорогое оборудование состоящее из надёжных и недешёвых компонентов. Данная технология развивалась и совершенствовалась, в итоге существует несколько стандартов или уровней RAID массивов применяемых в различных целях. Любой RAID можно рассматривать как таблицу, в которой каждый диск это колонка, строки состоят из ячеек - блоков определённого и строго фиксированного размера. Блоки могут содержать как данные так и контрольные суммы. Каждый уровень это алгоритм распределения данных по выше упомянутой таблице таким образом, что бы добиться увеличения скорости работы и надёжности хранения данных. Как следует из определения, это достигается  избыточностью - скорость чтения и записи увеличивается за счёт распараллеливания потока данных, надёжность достигается дублированием блоков данных и контролем их целостности.

Прежде чем говорить об уровнях RAID массивов приведём некоторые важные понятия.

Порядок дисков - это последовательность в которой диски включены в массив, её ни в коем случае нельзя нарушать.

Strip (блок данных) - минимальное не делимое количество данных которое может быть записано/прочитано за один раз. Это те самые зоны (ячейки) таблицы из которых строится массив.

Strip Size (размер блока данных) - размер атомарного не делимого значения. Поясним, допустим для нашего массива установлен размер в 128 Кб. При чтении/записи данных объёмом 64 Кб все равно будет прочитано 128 Кб.

Start offset on the disks (начальное смещение на дисках) - это то растояние на котором находится блок данных от начала диска, измеряется в секторах или байтах.

Parity data (данные чётности или коды корректности) - используются некоторыми уровнями RAID для достижения избыточности. Если один из дисков выходит из строя, то применив к оставшимся данным и parity data функцию XOR (для RAID 6 XOR применяется совместно с алгоритмом Рида-Соломона (Reed-Solomon)), возможно восстановить недостающие блоки.

 

RAID - определение

Условно RAID массивы делят на аппаратные и программные. В первом случае подразумевается наличие специализированной платы расширения, на базе которой и реализован массив.  Во втором случае реализацией массива занимается программное обеспечение исполняемое средствами центрального процессора.  И в том и другом случае применяются схожие алгоритмы, вопрос лишь в том где они исполняются.

RAID 0

Минимальное количество дисков 1

Объем массива = Число дисков * Размер наименьшего диска

При записи данные разбиваются на блоки и поочередно пишутся на каждый диск массива, отсюда его называют striping — «чередование». Избыточность отсутствует, выход одного из дисков приводит к полной потери информации. Используется только для ускорения чтения/записи, применяется там где не важна надежность, а нужна скорость скорость и низкая стоимость. Например как массив для виртуальных машин. Считается, что рост производительности прямо пропорционален количеству дисков, хотя на практике картина несколько иная. Ни в коем случае не рекомендуется для хранения важных данных, так как надежность массива в целом ниже чем у отдельно взятого жесткого диска. При восстановление такого массива главное выстроить образы дисков в правильном порядке.

RAID-0

RAID 1

Минимальное количество дисков 2

Объем массива = Размер наименьшего диска

При записи данные пишутся на все диски входящие в массив, по содержанию все диски одинаковые. В подавляющем числе случаев строится на двух дисках, хотя нам встречались случаи когда в сетевой системе хранения данных (NAS) использовалось четыре диска, но это скорее исключение чем практика. Производительность данного уровня RAID при записи равна производительности самого медленного диска в массиве, а вот при чтении возможен выигрыш, читать можно одновременно со всех дисков. При всем при этом это самый дорогой вариант RAID массива, так как дисковое пространство используется крайне не эффективно.

RAID-1

RAID 2

В данной конфигурации надёжность достигается за счет применения кодов коррекции по  алгоритму У. Хэмминг (Richard W. Hamming), он позволяет обнаруживать и исправлять битовые ошибки на лету (Error Detection and Correction). Технология использующая коды коррекции известная как ECC (Error-Correcting Code) постепенно интегрировалась в сами накопители. Например успешно работает в буферной памяти и при переносе данных с сбойных секторов на резервные. Сам же массив второго уровня морально и технически устарел и по выше описанным причинам, не имеет практического значения.

RAID 5

Минимальное количество дисков 3
Объем массива = (Число дисков - 1) * Размер наименьшего диска


На дисках, такого массива, хранятся не только данные, а так же рассчитываются и записываются коды коррекции. Для них нет выделенного диска, за эту особенность его часто называют отказоустойчивым массивом дисков с распределённой чётностью. Наличие данных чётности, как уже говорилось ранее, повышает надёжность, но за все хорошее приходится платить и платой служат вычислительные ресурсы. В случае программного RAID эта задача ложиться на центральный процессор. При использовании аппаратного контроллера, эти расчёты становиться максимально изолированными и почти не используют прерываний центрального процессора. На подобных платах размещены специальные микросхемы XOR ASIC, на которых возложена задача по расчёту данных чётности.

Различают четыре типа RAID-5, в зависимости от того, где расположены блоки чётности и в каком порядке записываются блоки данных (на рисунке первый блок данных в каждой строке отмечен красным цветом):

RAID-5

Левосторонний или правосторонний массив определяется тем, как блоки чётности распределяются на дисках. Синхронность и асинхронность определяется порядком блоков данных.

RAID 6

Минимальное количество дисков 4
Объем массива = (Число дисков - 2) * Размер наименьшего диска

Это следующая ступень эволюции в сторону повышения надёжности - отказоустойчивый массив независимых дисков с двумя независимыми распределёнными схемами данных коррекции. Если так можно выразиться RAID-6 на два надёжнее RAID-5. Он переживает выход из строя двух дисков и хранит по два блока кодов коррекции на stripe(страйп), рассчитанные по двум алгоритмам XOR и алгоритм Рида-Соломона. Обратная сторона медали такой конфигурации, это увеличение количества дисков и повышение требования к вычислительной части контроллера. В равных условиях (при использовании одинаковых контроллеров), райд шестого уровня будет проигрывать в скорости записи пятёрке. Из-за своей излишней избыточности и потери производительности не получил широкого распространения и рекомендован к использованию только при повышенных требованиях к надёжности.