RAID. Краткий путеводитель по технологии

04.03.2023
Алина Семченко

Не клади все яйца в одну корзину

Народная мудрость

Теплая майская ночь N-е количество лет назад. Общага. Вскоре защита диплома и я, будучи прилежным раздолбаем, отчаянно пытался впихнуть доброе, светлое и вечное в не менее отчаянно сопротивляющийся мозг. Ничего не предвещало беды и по сей день покрыты мраком причинно-следственные связи того вечера, приведшие автора к щелчку левой кнопки мыши по манящей кнопке с надписью «Выполнить дефрагментацию…» в окне свойств локального диска. Лабораторные работы, книги, диплом, а самое главное – папка с картинками – все кануло в Лету.

К счастью дипломная работа была ранее скопирована на несколько носителей и защиту этот инцидент не сорвал, но должные выводы из сурового урока были вынесены. С той поры программы и документы не хранятся на разделе, где крутится система; все важные файлы и проекты дублируются на облачное хранилище. Таким образом на личном опыте и страданиях усвоилось правило — на любую защиту от дурака найдется свой лауреат Премии Дарвина.

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

Всё это  подводит к выводу о важности  ответственного отношения к построению системы хранения данных. Уже не одно десятилетие для решения данных задач незаменимым инструментом остаются RAID-массивы.

Что это за технология и как грамотно подойти к выбору подходящей под ваши нужды RAID-системы – постараемся вместе разобраться в этой статье.

В чем сила, RAID?

Чтоб ответить на этот вопрос, окунемся в 70-80е годы 20го века – время бурного развития микроэлектроники.

 Десятки компаний пытались выбить себе место под солнцем, ведя разработки над новыми архитектурными решениями (RISC, CISC, MISC), которые позволили бы повысить скорость обработки данных процессором. Однако было ясно одно – повышение производительности CPU бесполезно, если вся твоя система крутится на одном громоздком магнитном диске так называемом SLED (Single Large Expensive Disk) .

SLED модели IBM 3380

И если до 1979г SLED по емкости хранилища еще  успевал за первичной памятью, то по  быстродействию он начал ей уступать уже начиная с 1970г, когда стали коммерчески доступны первые чипы памяти с кэш, построенным на SRAM. В отличие от скорости кэш, которая возрастала ежегодно минимум на 40%, повышение эффективности работы SLED продвигалось ничтожно малыми темпами. Форм-фактор дисков­ также не стоял на месте, увеличение плотности записи поспособствовало появлению 8″, 5″ и уже более известных нам 3.5″ и 2.5″ решений – вместо устаревших 14″ (35,5 см). С уменьшением размера также был  урезан и объем памяти жесткого диска, который в первых моделях был, скажем мягко, невелик – 5 Мбайт. Однако впервые цена HDD составляла не десятки/сотни тысяч долларов, а укладывалась примерно в 1500$, что повысило его доступность для рядовых владельцев ПК того времени.

 Несмотря на то, что производительность новых дисков была ниже, чем у их старших братьев, массив, построенный на этих HDD, показывал результаты скорости I/O (запись/чтение), превосходящие любой существующий на тот момент SLED. Единственным недостатком такого хранилища была его наработка на отказ (Mean Time To Failure ‘MTTF’).

MTTF of a Disk Array = MTTF of Single Disk / Number of Disks in the Array

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

Концепция зеркалирования дисков (дублирования данных) с целью повышения отказоустойчивости  была впервые применена  компанией Tandem Computers в 1975 году при построении их первой транзакционной системы OLTP (Online Transaction Processing). Основатель компании Tandem Computers Джеймс Трейбиг заметил, что рынок онлайн переводов остро нуждается в системах, которые работали бы без сбоев и сохраняли целостность данных. Трейбиг сделал ставку на модульность, желая исключить единую точку отказа. Их первая разработка – Tandem/16 состояла из 16 процессоров, каждый из которых имел собственную память, собственную шину для подключения к контроллеру ввода/вывода и двойное подключения ко всем остальным процессорам по шине Dynabus. Источники питания, сетевые контроллеры и контроллеры дисков дублировались, каждый диск зеркалировался и в случае выхода из строя одного – все данные были доступны на его брате-близнеце.

Tandem/16 позже был переименован в NonStop I и дал начало целой линейке высоконадежных транзакционных устройств. В то время как  наработка на отказ подобных аппаратов той эпохи исчислялась несколькими днями, время безотказной работы систем от Tandem измерялось в годах.

Tandem/16 (NonStop I)

Затем компанией IBM в 1977 и 1986 годах были запатентованы новые схемы объединения дисков, которые позже стали известны под названиями RAID 4 и RAID 5. В 1983 Digital Equipment Corp. представила свой вариант построения системы хранения данных, которую теперь знают как RAID 1. Также в этом направлении велись разработки у Thinking Machines Corporation и Maxtor.

Не смотря на успех внедрения массивов из относительно дешевых и небольших дисковых носителях, в общую практику это все еще не было введено. Разрозненные источники информации, наработки и исследования требовалось объединить и структурировать, чтобы промышленность могла взять эту идею в оборот.

В 1987 году данную тему удалось полноценно осветить команде инженеров-энтузиастов из университета Беркли, занимавшихся разработкой RISC-процессоров (Дэвид Паттерсон, Гарт Гибсон, Ренди Катц) в своей статье «The Case for Redundant Arrays of Inexpensive Disks» («Аргумент в пользу избыточных массивов недорогих дисков»). В ней, отталкиваясь от собственных исследований по увеличению быстродействия CPU, а также исходя из расчетов Гордона Мура о темпах развития микроэлектроники, авторы приводили исчерпывающие доводы в пользу перехода от SLED к массивам из недорогих и компактных дисков при построении вычислительных систем. Работа имела ошеломительный успех на конференции по базам данных SIGMOD и смогла привлечь к себе внимание как сообщества домашних пользователей ПК, так и представителей крупных компания.

Первая группа по разработке RAID и собранный ими RAID 1 на базе Sun-4/280, 128 MB DRAM, 4 dual-string SCSI controllers, 28 5.25-дюймовых SCSI дисков с программным обеспечением зеркалирования

В статье впервые был введен в употребление акроним RAID (Redundant Arrays of Inexpensive Disks).  Было рассмотрено пять различных схем построения дисковых массивов, каждый из которых именовался RAID + порядковый номер (всего было выделено 5 уровней). Каждый  тип RAID обеспечивал различные соотношения быстродействия и отказоустойчивости.

Со временем авторы признали, что, возможно, распределение RAID по уровням было ошибочным, так как, к примеру, не во всех случаях RAID 5 являлся лучше RAID3. С годами цифровая градация RAID практически утратила первоначальный смысл, как и буква I в акрониме RAID перестала быть Inexpensive, а стала Independent, ведь цена массива дисков уж никак не могла быть «дешевой». Тем не менее ввод  общей таксономии и определение концептуальной структуры RAID массивов, позволило положить начало активному развитию производства в этой отрасли.

С чего начинается RAID?

Основные понятия

Избыточный массив независимых дисков, он же RAID – это структура хранения данных, которая подразумевает объединение  N-го количество физических дисков  в  единый логический блок (массив). Объединение в массив происходит по определенной схеме, от выбора которой зависит объем,  надежность и производительность будущего хранилища.

Введем некоторые ключевые понятия, которыми мы будем оперировать при дальнейшем рассмотрении RAID:

  • Host Bus Adapter (HBA) (хост-адаптер шины) – технология, позволяющая подключать к хост-системе устройства хранения информации.  Может быть:
    • интегрированной с материнскую плату хоста;
    • дискретной (в виде отдельной платы, подключающейся к материнке по шине PCI Express);
    • виртуальной (как режим работы RAID-контроллера).
  • Input/Output Operations Per Second (IOPs) – количество операций ввода/вывода в секунду;
  • RAID metadata – данные, хранящиеся на каждом диске RAID-массива, служащие для его корректной разметки. Зачастую содержат информацию типе массива, порядковом номере диска в массиве,  размере, месте расположения диска и тд. 
  • Latency (задержка) – время ожидание (в мс), затраченное на выполнение одной команды вводы/вывода;
  • Mirroring (зеркалирование) –  дублирование данных на дополнительные диски;
  • Stripping (чередование) – балансировка скорости передачи данных путем их распределение между N-количеством дисков по определенному алгоритму («уровень RAID»);
  • Fault Tolerance (отказоустойчивость) – способность продолжать работу системы в случае выхода из строя N-го количества компонентов массива (зависит от уровня RAID), а также восстановление данных благодаря избыточному хранению;
  • Parity (контроль четности) – запись информации на диски путем применения операции XOR (исключающее «ИЛИ»). Биты, записывающиеся на диски, складываются,  а результат сохраняется на отдельный носитель. В случае замены одного из дисков, потерянные данные можно восстановить благодаря оставшимся накопителям;
  • Write Through/ Write Back (прямая и отложенная запись) – способ записи данных на дисковый массив. В случае прямой записи (Write Through) контроллер сразу записывает данные на диски и потом подает сигнал OS об окончании операции. Отложенная запись (Write Back) подразумевает, что данные вначале будут записаны в кэш и уже потом (по мере заполнения кэша или в моменты минимальной нагрузки дисковой системы) из кэш на диски, при этом сигнал о завершении операции отправляется OS сразу после записи данных в кэш;
  • Degraded Mode (режим ограниченного функционирования) – режим в котором продолжает работать RAID массив в случае выхода из строя одного или нескольких дисков. В данном режиме общая производительность системы падает из-за потребности в восстановлении данных.
  • Hot Swap (горячая замена) –  возможность замены вышедшего из строя диска без выключения всей системы;
  • Hot Spare (горячее резервирование) – пожалуй, одно из важнейших  преимуществ использования RAID массивов. В случае выхода из строя диска RAID контроллер самостоятельно восстановит данные на имеющийся резервный диск (конечно при условии, что резервный диск «hotspare» был подключен заранее и имеет такой же объем, как и все остальные диски). ВАЖНО: все диски должны обязательно быть подключены к одному и тому же RAID контролеру.

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

Реализация RAID

Функции RAID так или иначе базируется на выполнении  программного кода. Отличием же является то, где именно выполняется код – в центральном процессоре компьютера или же на специализированном процессоре RAID-контроллера, в зависимости от этого принято выделять аппаратный(hardware) и программный(software) RAID.

Также существует FakeRAID (BIOS RAID/Host RAID), который пытается быть и умным, и красивым, но что-то как всегда пошло не так. Данный тип RAID представляет собой стандартный чип контроллера диска со специальной прошивкой и драйверами. Своё название Fake-RAID  заслужил благодаря тому, что вводил и по сей день вводит пользователей в заблуждение относительно принципа его работы, так как пусть и настраивается он через интерфейс своего BIOS до загрузки ядра ОС, что схоже с аппаратным RAID, но затем управление RAID массивом происходит посредством соответствующего драйвера, а все вычислительные задачи возлагаются на процессор и оперативную память хоста, что может оказаться неприятным сюрпризом для владельцев маломощных систем.

Чаще всего Fake-RAID используют в случае мультизагрузки — в среде где и Linux, и Windows должны иметь возможность читать и записывать в одни и те же разделы RAID.  Fake-RAID позволяет сэкономить на покупке аппаратного RAID-контроллера, если можно считать подобную экономию разумной .

Образцовым примером полусофтового RAID является INTEL Intel(R) Platform Controller Hub, который  совмещает в себе функционал южного моста и часть функций северного моста, которые не были переданы процессору. Intel PCH поддерживает два RAID-контроллера (AHCI и SCU). AHCI контроллер поддерживает диски SATA, а контроллер SCU поддерживает как SATA, так и SAS (контроллер SCU для PCH C602 поддерживает только SATA). Поддерживаемые конфигурации RAID лучше уточнять непосредственно в спецификациях.

В общем и целом главный совет по работе с Fake-RAID – не теряйте с ним бдительность.

Ниже на схеме рассмотрим вкратце достоинства и недостатки различных типов реализации RAID массивов.

Аппаратный RAID

Как видим, аппаратная реализация RAID подразумевает наличие специализированного RAID-контроллера.  По своей сути  данный контроллер является эволюционировавшей платой HBA, так как кроме функции подключения накопителей он также может в виртуализацию данных. Чтоб начать работать с аппаратным RAID достаточно подключить RAID-контроллер к материнке вашего сервера. В редких и дорогих случаях он может быть заранее в неё  интегрирован (НE путать с Fake-RAID). Далее к контроллеру либо напрямую, либо через экспандер подсоединить необходимое количество дисков и через BIOS контроллера непосредственно настроить RAID массив.

Единственным существенным минусом аппаратных контроллеров (кроме цены) является то, что у вас всегда должен быть в запасе такой-же контроллер, какой в данный момент подключен к системе. Это связано с тем, что на сегодняшний день не существует единого стандарта хранения RAID метаданных. Из-за чего используя при замене контроллеры от разных вендоров вы можете попросту потерять все ваши данные. RAID DDF (RAID Disk Data Format), разработанный SNIA(Storage Networking Industry Association) – одна из немногих попыток создания открытого стандарта, описывающего методы хранения метаданных, но, к сожалению, не все ему внемлют.

Среди основных производителей RAID-контроллеров можно выделить Microsemi Adaptec, LSI (Broadcom), Intel, Dell, IBM,  и Cisco.

Как RAID-контроллер подключается к материнской плате?

В качестве интерфейса подключения к шине материнской платы используется  интерфейс PCI Express 3.0/4.0/5.0. Также возможны проприетарные решения типа Supermicro Branded Interface (Supermicro Broadcom 3108 AOM-S3108M-H8 ) или HPE Branded Interface (HP Enterprise Smart Array P204i-b SR Gen10 804367-B21).

Какие накопители и в каком количестве можно подключать к RAID-контроллеру?

Большинство современных RAID-контроллеров без проблем поддерживают подключение SSD/HDD дисков, имеющих SAS или SATA-интерфейс. Для подключения накопителей в контроллерах предусмотрены специальные порты, которые делятся на:

  • внутренние (Mini SAS (SFF-8087) или SFF-8643 (mini SAS HD)) – служат для подключения накопителей, расположенных внутри хоста;
  • внешние (Mini SAS (SFF-8088) или SFF-8644 (mini SAS HD)) – для подключения внешних хранилищ.

Количество встроенных внутренних портов  зачастую варьируется от 4 до 8 штук, если на вашем контроллере их больше, вероятно в него встроен SAS Expander Chip. Если же вам не хватает встроенных портов –  масштабировать ваше хранилище поможет отдельная плата расширения SAS Expander (как пример Adaptec AEC-82885T/ Intel RAID Expander Card/ LSI SAS Expander и тд).

В случае необходимости подключения NVMe SSD возможны следующие варианты контроллеров:

  • Специальный NVMe RAID-контроллер c PCIe (NVMe) (Broadcom NVMe Switch Adapter P411W-32P);
  • Контроллер с SFFTA1001 – универсальное  решение для – SATA, SAS и NVMe (Broadcom SAS/SATA/NVMe RAID контроллер MegaRAID 94xx, Intel Tri-Mode RAID Controllers).

Для наиболее эффективного использования дискового пространства важно, чтоб все диски, которые вы собираетесь подключать к контроллеру, имели одинаковую емкость и желательно были от одного производителя. Если диски будут разные, то полезный используемый объем памяти будет равен объему наименьшего диска.

Есть ли различия в архитектуре RAID-контроллеров?

Ранее базовая структура RAID-контроллеров состояла из двух чипов – один отвечал за интерфейсную часть, второй за вычисления (пример Adaptec Ultra320 SCSI RAID). На данный момент широко применяется технология RAID-on-chip (ROC), когда на одной микросхеме уживаются RAID процессор, интерфейсы ввода-вывода, интерфейс хоста и контроллер памяти (пример LSI MegaRAID SAS 9361-8i). Такой подход позволил сэкономить энергопотребление и место на печатной плате, а также снизить цену готового изделия.

Что такое BBU?

BBU – Battery Backup Unit (BBU) (резервный модуль питания) – чаще всего представляет собой отдельный аккумулятор (суперконденсатор), обеспечивающий резервное питание для кэш-модуля RAID-контроллера. Наличие BBU является важным условием использования режима Write Back (кэширование с обратной записью), так как в случае аварийного отключения питания хоста,  BBU запитает энергозависимую память, пока данные из неё будут копироваться во FLASH, тем самым предотвратив их потерю.

Аппаратный RAID-контроллер LSI MegaRAID SAS 9361-8i на базе SAS3108 RAID-on Chip(ROC)и процесс его установки в материнскую плату сервера совместно с аккумулятором

Можно ли вместо RAID контроллера использовать HBA c RAID ПО?

Если коротко – да, но при следующих условиях:

  1. Ваш массив построен на HDD, вы не гонитесь за IOPSами и не планируете использовать RAID массивы выше 0/1/10;
  2. Ваш массив построен на SSD  и вы опять-таки не планируете строить RAID массивы выше 0/1/10;

Добавлю немного аргументации.

Важным преимуществом аппаратного RAID-контроллера является наличие у него собственного процессора и памяти, тем самым он никак не влияет на работу хост-системы. Тут бы автору статьи написать, что режим Write Back (кэширование с обратной записью) позволяет добиться космических высот в производительности контроллера и вообще является  его киллер-фичей в сравнении с программным RAID (как заявляют большинство ресурсов про RAID), но все не так однозначно…

Результаты тестов, с которыми вы можете ознакомиться в конце статьи, показали, что Write Back в некоторых случаях незначительно влиял на прирост производительности, а иногда (попрошу отойти от экранов особо впечатлительных) и вовсе…её снижал.

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

Контроллер Broadcom/LSI 9260-8i

В случае работы с HDD-накопителями мы имеем дело с движущимися магнитными головками, скорость перемещения которых во время записи/чтения задаёт некую планку эффективности работы хоста. За счет чего можно повысить производительность жесткого диска? Сам по себе напрашивается вариант группировки операций записи/чтения. Собрав N-e количество обращений к нескольким файлам и сохранив их временно в кэш, контроллер успевает оптимизировать маршрут прохождения головок, уменьшая количество их перемещений.  Специальное  ПО (эффективность которого в большей мере и влияет на стоимость  контролера) манипулирует с алгоритмами упреждающего чтения, распределением горячих/холодных данных и тд. с целью оптимизации вводы/вывода.

Популярным решением в качестве кэша для HDD-массивов, кроме встроенной  DRAM, является SSD-кэш (LSI CacheCade, Adaptec maxCache) – при котором отдельный SSD диск служит буфером для горячих данных.

SSD-кэш, подключенный к RAID-контроллеру

 В общем, кэш память была да и остается неким листом подорожника при работе с HDD, в то время как для SSD ситуация обстоит немного иначе.

 При переходе на SSD отпадает надобность в расчёте оптимальной траектории движения головок, более важной становится борьба с задержками (Latency) и в данном случае лишний уровень из дополнительных модулей памяти может повлиять на увеличение этого значения. В свое время некоторые производители даже любезно предлагали купить у них дополнительный софт, чтоб отключить функционал, заточенный под работу с HDD, да что уж там – и по сей день некоторые грешат подобным (горячий привет Intel c их VROC).

Таким образом, если ваш массив состоит из SSD и вы планируете использовать RAID 0/1/10, то покупать специальный RAID-контроллер вовсе не обязательно, достаточно будет HBA c расширенным RAID функционалом (это может сэкономить вам пару сотен долларов). Если все же планируется строить RAID 5/6, где для расчёта контрольных сумм важно наличие мощного процессора и памяти – без RAID контроллера не обойтись.

Начальная настройка аппаратного RAID

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

  1.  После установки RAID-контроллер в сервер нужно попасть в его BIOS Configuration Utility для настройки RAID-массива. Обычно, стоит дождаться стандартного окна загрузки контроллера, в котором прям на экране будет написано какая комбинация клавиш отвечает за переход в RAID BIOS. В случае с LSI MegaRAID SAS 9361-4i это CTRL+R

Если подобное окно не появилось, стоит проверить в BIOS системы, чтоб:

  • PCI слот, в который включен контролер находился в активном состоянии (enabled);
  • первым в порядке загрузки (boot order) стоял Hard disk;
  • был отключен (в случае наличия такового) встроенный RAID-контроллер.

2. Далее попадаем в меню управления RAID контроллером, в верхней части расположены вкладки настроек, внизу  — навигация. В разделе «Drive group» указаны уже существующие RAID-массивы, в разделе Unconfigured Drives — ненастроенные диски. При чем диски могут быть в состоянии Unconfigured Good — если они пригодны к использованию или же Unconfigured Bad  — если диски нуждаются в дополнительной диагностике (возможно они были непреднамеренно обесточены/отключены от массива). Перевести диск из режима Unconfigured Bad в Unconfigured Good можно только вручную. Делается это с целью предотвращения потери данных

  • Приступаем к созданию массива. Перемещаемся на верхнюю строку (в моем случае «MegaRAID 9361-4i») и нажимаем F2. В выпавшем меню выбираем пункт «Clear Configuration», чтоб стереть существующую конфигурацию. Далее выбираем пункт «Create Virtual Drive» и видим перед собой окно создания RAID массива, в котором из списка «RAID Level» выбирается нужный тип RAID, а в разделе «Drives» отмечаются необходимые диски.
  • Жмем Enter по кнопке Advanced  и переходим во вкладку «Create Virtual Drive-Advanced».

Разберем по пунктам:

1. Strip Size (Segment Size) — объем данных,  записываемый RAID контроллером на один диск в рамках одной полосы. Не путать со Stripe Size — суммарным объем данных, полученный путем умножения размера одного сегмента (Strip size) на ширину полосы (Stripe Width) — количество дисков, по которым распределены данные, без учета четности.

 Strip Size имеет диапазон от 64KB до 1MB. В случае работы с большими файлами предпочтительней выбирать более крупный размер Strip, а при  обработке большого количества легковесных данных — логичным будет выбрать размер Strip поменьше.

2. Read Policy — параметр, отвечающий за запуск упреждающего чтения. Может иметь значение:

Always — упреждающее чтение всегда будет выполняться;

Adaptive — при обнаружении команд на последовательно чтение контролер сам будет включать/выключать данную функцию;

Off — упреждающее чтение запрещается.

3. Write Policy —  параметр определяющий метод записи на диск. Может быть Write Through (прямая запись) или Write Back (отложенная запись).

4.  I/O Policy — политика ввода/вывода, связанная с тем, как контроллер будет обрабатывать операции чтение. Cache I/O — считанные данные будут записаны сначала в кэш, а оттуда перенесены уже на хост. Direct  I/O — считанные данные будут будут сразу отправляться на хост

5. Disk Cache Policy — политика кэша диска. Во включенном состоянии дополнительный кэш хранится на дисках, что снижает скорость записи, но положительно влияет на скорость чтения. За время работы с RAID мне так и не хватило отваги включить эту функцию , так как говорят, что это чревато потерей данных.

6. Initialize — процесс подготовки дисков к их использованию в массиве. Включает уничтожение мусорных метаданых, обнаружение скрытого повреждения данных (Silent Data Corruption). При быстрой инициализации данные затираются «нулями», при полной  — идет проверка и исправление целостности и чётности данных.

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

Программный RAID

Основным отличием программного RAID от аппаратного является то, что он для выполнения своих функций использует непосредственно ресурсы хост системы (CPU, RAM и тд.).

Программный RAID представляет собой приложение, для запуска которого не требуется подключать к серверу дополнительного оборудования. Функционал RAID становится доступным только после загрузки специального драйвера. Данный RAID оперирует накопителями, которые подключены непосредственно к материнской плате или к плате HBA. В наши дни софтовый RAID стал полноценным конкурентом для аппаратного RAID, так как мощность современных процессоров и объемы оперативной памяти без труда и особого ущерба в производительности могу переваривать RAID 0/1/10.

Важным преимуществом  программного  RAID является то, что для создания RAID массива он может использовать не целый диск, а его части (логические тома), в то время, как аппаратный RAID может создавать массив только из целого диска.

Базовое отличие аппаратного RAID от программного

Практически все современные операционные системы поддерживают программную  реализацию RAID. Программный RAID может быть организован как:

  1. Уровень, который абстрагирует несколько устройств, тем самым предоставляя одно виртуальное устройство (например, md ядра Linux и softraid Open BSD);

    MDADM(Multiple Disk and Device Management) – утилита, позволяющая создавать программные RAID массивы в Linux и управлять ими. MDADM взаимодействует с дисками и распределяет между ними данные на физическом уровне, не учитывая их логическую разметку. Если через MDADM собрать массив из нескольких дисков, то в ОС он будет отображаться как отдельный накопитель, работа с которым ничем не будет отличаться от работы с обычным диском.
  2. Диспетчер логических томов (имеется в большинстве операционных систем серверного класса, например, Veritas или LVM);

    Logical Volume Manager(LVM) – менеджер логических томов – инструмент управления логическим томами, предоставляющий возможности инкапсуляции и виртуализации хранилища.

    Структурно LVM состоит из:
    Physical volume (PV) – физический том – это физический диск, либо раздел на диске, который инициализирован командой /pvcreate/.
    Volume group (VG) – группа томов – логическая единица, образованная посредством объединения нескольких PV, представляет собой единое пространство для хранения данных.
    Logical  volume  (LV) – логический том – логический раздел, который создается поверх VG.

    При желании  с помощью LVM можно построить RAID, однако подобная реализация значительно снижает прозрачность управления массивом и при построении использует чаще всего всё тот же md, посылая ему определенные команды.
Реализация LVM RAID
  1. Компонент файловой системы (например, ZFS, GPFS или Btrfs);

    Zettabyte File System (ZFS) — одна из самых передовых файловых систем Linux, сочетающая в себе роли файловой системы и диспетчера томов. С ZFS файловая система знает о базовой структуре диска это позволяет автоматически расширять файловую систему при добавлении в пул дополнительных дисков. ZFS реализует RAID-Z (Z1/Z3) – вольная интерпретация на тему RAID-5, но с лучшим распределением четности, а также устраненной «дырой записи RAID-5», в которой данные и информация о четности становятся несогласованными в случае потери питания.

На этом этапе у читателя (каким-то чудом дошедшего до этой части статьи) может возникнуть вполне резонное замечание: «Доколе ты будешь упоминать тут всякие RAID 0/1/5, так и не объяснив чем они вообще отличаются?». Исправляюсь.

Виды RAID массивов

Данные в RAID, как уже неоднократно упоминалось в статье, распределяются по дискам определенным способом, в соответствии с уровнем RAID (RAID 0, RAID 1, RAID 5, RAID 6, RAID 10 и т. д.). Каждый из уровней RAID будет наиболее эффективен в подходящих для него условиях.

JBOD

Начнем, пожалуй, с JBOD, что по сути не RAID-массив, а дополнительный режим работы RAID-контроллера. JBOD (Just a Bunch Of Disks – просто набор дисков) представляет собой архитектуру хранения,  позволяющую объединять физические диски в единый логический том, при этом процессор получает доступ к накопителям по отдельности.

Распределение данных в JBOD

Суммарный объем хранилища в режиме JBOD будет равен сумме всех подключенных к контроллеру дисков. Главным преимуществом конфигурации JBOD является легкость масштабирования, при этом не обязательно подключать диски с одинаковыми параметрами.

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

RAID 0

При работе с дисками RAID 0 использует чередование (Striping), равномерно распределяя данные по всем накопителям. Емкость хранилища будет равна сумме емкостей всех дисков в массиве.

Распределение данных в RAID 0

Хотя это самая быстрая конфигурация RAID,  но RAID 0 не обеспечивает избыточность или отказоустойчивость при сбоях, поэтому в случае отказа любого диска весь массив будет поврежден, и никакие данные нельзя будет восстановить.

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

Типичное применение:  Подходит для хранения некритичных данных, которые должны считываться/записываться с высокой скоростью, например, при монтаже видео/аудио, стримах и тд.

RAID 1

Запись данных идет по принципу зеркалирования (Mirroring), то есть все диски массива будут содержать идентичную информацию. Объем хранилища, сколько бы дисков там не стояло будет равен объему одного накопителя.

Распределение данных в RAID 1

Благодаря избыточности данная конфигурация считается одной из наиболее надежных, но и наименее производительной. RAID 1 полезен там, где скорость чтения важней скорости записи.

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

Типичное применение:  Критические среды хранения данных, где требуется высокая избыточность данных и надежность (доступность).

RAID 5

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

Распределение данных в RAID 5

По производительности RAID 5 уступает RAID 0, но повышенная защита от сбоев делает RAID 5 наиболее популярным среди пользователей. 

Минимально количество дисков: 3 диска.

Типичное применение:  Хранилище данных и серверы приложений, такие как электронная почта, общие серверы хранения, новостные серверы и т. д.

RAID 6

Подобен RAID 5, но с дополнительным преимуществом в виде двойного распределения четности. Подобно RAID 5, он чередует данные и контроль четности по  массиву дисков, за исключением того, что он вычисляет два набора контрольных сумм для каждого блока данных. RAID 6 может выдержать отказ двух дисков.

Распределение данных в RAID 6

Минимально количество дисков: 4 диска.

Типичное применение:  Финансовые и бухгалтерские приложения, серверы баз данных, онлайн-обслуживание клиентов и приложения, требующие очень высокой доступности. Кроме того, RAID 6 можно использовать для приложений с высокой частотой запросов на чтение, но меньшим количеством запросов на запись.

RAID 10 (RAID 1+0)

RAID 10 представляет собой комбинацию RAID 0 и RAID 1. То есть и зеркалирование, и чередование выполняются в одном массиве RAID. RAID 10 является вложенным и иногда называется RAID 1+0. Он обеспечивает как безопасность, так и производительность за счет зеркалирования и разделения данных на несколько дисков.

Распределение данных в RAID 10

Минимально количество дисков: 4 диска.

Типичное применение:  Этот уровень RAID идеально подходит для сред, требующих высокой производительности и высокой безопасности данных, таких как транзакционные базы данных с конфиденциальной информацией.

Кроме RAID 10 существуют еще такие виды гибридных массивов, как RAID 50, в котором должно быть не меньше шести дисков и RAID 60 – не меньше восьми дисков.

Выше нами были рассмотрены варианты RAID массивов, которые чаще всего можно встретить в реальной жизни. Безусловно, существует еще множество экзотических вариантов (RAID 7, RAID 1E, RAID 5E и тд), но зачастую некоторые из них проприетарны или же применяются в крайне исключительных ситуациях, когда пользователь действительно уверен в их надобности.

Рубрика ЭЭЭксперименты

В интернете можно найти множество статей, где утверждается, что если выбрать какой-то определенный размер Strip при создании RAID или включить/выключить режим Write Back (кеширование на запись), то на выходе вы получите не массив дисков, а чуть ли не реактивную генераторную пушку. Собственно, автору захотелось проверить, так ли это на самом деле, существует ли какая-то линейная зависимость от размера Strip и как при этом будет сказываться на производительность массива активация режима Write Back.

Всё необходимое обеспечение для тестирования было предоставлено автору Отделом выделенных серверов дата-центра Miran.

Для тестирования были выбраны четыре типа дисков:

  1. SATA HDD – TOSHIBA DT01ACA300. Объем 3ТБ, скорость вращения 7200 rpm;
  2. SAS HDD – HGST HUC101830CSS204. Объем 300 ГБ, скорость вращения 10520 rpm;
  3. SATA SSD – Crucial MX500 CT500MX500SSD. Объем 500 ГБ;
  4. NVMe SSD – Intel DC P4510 SSDPE2KX020T801. Объем 2 TБ.

Характеристики базового стенда для SATA и SAS дисков:

  • Процессор – Intel(R) Xeon(R) Silver 4215R
  • Материнская плата –  SuperMicro MBD-X11DPH-I-O S-3647;
  • Оперативная память – 4 модуля MTA18ASF2G72PZ-3G2J3 16 GiB;
  • Аппаратный RAID – LSI MegaRAID SAS 9361-4i.

Характеристики базового стенда для NVMe SSD:

  • Процессор – Intel(R) Xeon(R) Silver 4114;
  • Материнская плата – SuperMicro MBD-X11DPH-I-O S-3647;
  • Оперативная память – 3 модуля Crucial CT32G4RFD4266 32 GiB;
  • Аппаратный RAID – LSI MegaRAID 9460-16i;

Тесты проводились при помощи утилиты CrystalDiskMark.

Для каждого типа дисков проводился ряд тестов (в общей сложности по 50 тестов на один тип диска):

  1. Выбирался тип RAID массива (0/1/5/6/10);
  2. Выбирался размер Strip (от 64KB до 1MB) это ось Х на графиках;
  3. Проводилось по два теста – один в режиме Write Back, второй в режиме Write Through.

Собранные данные формировались в графики, графики для удобства сводились в таблицы, которые вы можете видеть.

Для удобства таблицы стоит открывать в новых вкладках, так как, к сожалению, из-за большого объема данных не удалось сделать оптимальным размер шрифта, приношу извинения за неудобства.

В случае с NVMe SSD тестирование в режиме Write Back не проводилось, но было более интересно нагрузить эти диски чуть больше, чем предыдущие, поэтому в CrystalDiskMark было выбрано четыре разных потока с различной глубиной очереди.

Анализируя результаты полученных тестов, могу лишь сказать однозначно, что какой-то общий вывод сделать практически невозможно. К сожалению, нельзя сказать, что с увеличением размера Strip мы получаем линейный прирост в производительности или, что при включенном режиме Write Back показатели всегда будут выше. Иногда полученный результаты вводили в ступор и заставляли переделывать замеры по несколько раз, полностью собирая и разбирая RAID, так как интуитивно ожидались совершенно противоположные показатели.

Могу сказать с уверенностью, что настроить RAID под свои задачи это действительно филигранная работа и требует вдумчивого подхода.

Вывод?

Выбирая тип RAID-контроллера и RAID-массива, в первую очередь стоит ориентироваться на задачи, которыми вы планируете нагружать свою систему. Стоит учитывать:

  • тип нагрузки (чтение/запись) и их соотношение;
  • требования к пропускной способности, времени задержки;
  • потребность в будущем «горячей замены» или автоматической замены диска;
  • степень избыточности и отказоустойчивости;
  • экономическую обоснованность.

Тщательно и осознанно проработав базовые критерии и требования, вы сможете не просто построить RAID массив, а обезопасить свои нервы и кошелек от целого множества проблем в будущем.