Джастин Эллингвуд. Введение в терминологию и концепции RAID

Это перевод статьи Justin Ellingwood. An Introduction to RAID Terminology and Concepts.

Содержание

Введение

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

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

Что такое RAID?

RAID означает Redundant Arrays of Independent Disks - избыточные массивы независимых дисков. Сочетая накопители различным образом, администраторы могут достичь более выскокой производительности и избыточности, по сравнению с теми, которые накопители из набора могут предоставить сами по себе. RAID реализуется как промежуточный слой между слоем накопителей или разделов на них и слоем файловой системы.

Когда может пригодиться RAID?

Основные преимущества, которые может предоставить RAID - это увеличение избыточности и производительности.

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

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

Недостатки RAID заключаются в сложности управления, а часто и в уменьшении доступной ёмкости. Тот же объём полезного пространства обходится дороже. Дополнительная стоимость может появиться от использования специализированного оборудования, если массив реализуется не полностью программно.

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

Аппаратный RAID, Программный RAID, программный RAID с аппаратной поддержкой

Массивы RAID можно создавать и управлять ими с помощью нескольких разных технологий.

Аппаратный RAID

Специальное оборудование, называемое RAID-контроллерами или картами RAID, позволяет настраивать и управлять RAID независимо от операционной системы. Такое оборудование известно, как аппаратный RAID. Настоящие аппаратные RAID-контроллеры оснащены процессором для управления устройствами RAID.

У этой технологии есть ряд преимуществ:

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

  • Абстрагирование от сложности: Другое преимущество использования RAID-контроллеров заключается в том, что они абстрагируют нижележащую организацию накопителей от операционной системы. Аппаратный RAID может содержать целую группу накопителей, которая будет выступать в роли единого логического устройства хранения. Операционная система не имеет представления об организации RAID, а контроллер будет выступать в роли единого устройства, выполняя функцию интерфейса к массиву.

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

Аппаратный RAID также обладает и несколькими значительными недостатками.

  • Зависимость от поставщика: Поскольку RAID управляется фирменным программным обеспечением, прошитом в самом оборудовании, массив привязан к оборудованию, которое использовалось для его создания. Если RAID-контроллер выйдет из строя, то практически всегда его нужно будет заменить на идентичную или совместимую модель. Некоторые администраторы рекомендут покупать один или более запасных контроллеров, чтобы воспользоваться ими при проблемах с первым.

  • Высокая стоимость: Качественные аппаратные RAID-контроллеры как правило дорого стоят.

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

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

Некоторые преимущества программного RAID:

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

  • Открытые исходные тексты: Программная реализация RAID для операционных систем с открытыми исходными текстами, таких как Linux и FreeBSD, так же имеет открытые исходные тексты. Реализация RAID не скрыта и может быть легко прочитана и реализована на других системах. Например, массив RAID, созданный на компьютере Ubuntu, может быть впоследствии легко импортирован на сервере CentOS. Риск потери доступа к данным из-за отличий программного обеспечения низок.

  • Не стоит дополнительных денег: Программный RAID не требует специального оборудования, поэтому его использование не увеличивает полную стоимость сервера или рабочей станции.

Некоторые недостатки программного RAID:

  • Зависимость от реализации: Хотя программный RAID не привязан к определённому оборудованию, он привязан к определённой программной реализации RAID. Linux использует mdadm, FreeBSD использует RAID на основе GEOM, а Windows имеет собственную версию программного RAID. Хотя программная реализация в некоторых случаях может быть перенесена или прочитана, сам формат скорее всего не совместим с другими программными реализациями RAID.

  • Издержки производительности: Исторически, программный RAID критикуется за дполнительные издержки. Для управления массивом используется центральный процессор и оперативная память, которые могли бы пригодиться для других нужд. Однако, реализации mdadm во многом сводит на нет эти возражения на совеременном оборудовании. Издержки от использования центрального процессора минимальны и в большинстве случаев незначительны.

Программный RAID с аппаратной поддержкой (псевдо-RAID)

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

Преимущества программного RAID с аппаратной поддержкой:

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

Недостатки программного RAID с аппаратной поддержкой:

  • Ограниченная поддержка RAID: Обычно доступны только RAID 0 или RAID 1.

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

  • Издержки производительности: Как и в случае с программным RAID, для управления RAID нет специального процессора. Работа RAID будет отнимать ресурсы у операционной системы.

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

Терминология

Знакомство с некоторыми общими концепциями поможет понять RAID лучше. Ниже приведены несколько распространённых терминов, с которыми можно встретиться:

  • Уровень RAID: Уровень массива RAID указывает на отношения устройств, являющихся компонентами хранилища. Накопители можно настроить множеством разных способов, что повлияет на избыточность данных и характеристики производительности. За подробностями обратитесь к разделу про уровни RAID.

  • Чередование: Чередование - это процесс деления записей в массиве на несколько нижележащих накопителей. Эта стратегия используется многими разными уровнями RAID (обратитесь к следующему разделу за дополнительными подробностями). Если данные в массиве чередуются, они делятся на фрагменты, а каждый фрагмент записывается по меньшей мере на одно нижележащее устройство.

  • Размер фрагмента: Когда данные чередуются, размер фрагмента определяет объём данных, который содержит каждый фрагмент. Настройка размера фрагмента для соответствия ожидаемому характеру ввода-вывода может улучшить производительность массива.

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

  • Деградировавшие массивы: Массивы, которые имеют избыточность, могут выдерживать различные типы сбоев накопителя без потери данных. Если массив теряет накопитель, но при этом остаётся исправным, то он находится в деградированном режиме. Деградировавшие массивы могут испытывать временное снижение производительности, но после замены неисправного накопителя могут быть перестроены до полностью исправного состояния.

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

  • Вложенные массивы: Группы массивов RAID можно объединять в более крупные массивы. Обычно таким образом можно достичь преимуществ двух или более разных уровней RAID. Обычно массивы с избыточностью (такие как RAID 1 и RAID 5) используются в качестве компонентов для создания массива RAID 0 для увеличения производительности.

  • Отрезок: К несчастью, при обсуждении массивов это слово может иметь разный смысл.

    • В некоторых случаях слово "отрезок" может означать объединение двух или более накопителей друг за другом, так что в итоге получается одно логическое устройство без улучшенной производительности или избыточности. В реализации mdadm из Linux такое объединение накопителей так же называют линейным порядком.

    • При обсуждении вложенных уровнй RAID, таких как RAID 10, слово "отрезок" может означать нижестоящую часть массивов, объединяемых на более высоком уровне.

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

Уровни RAID

Характеристики массива определяются конфигурацией и отношениями накопителей, которые так же известны как уровень RAID. Самые распространённые уровни RAID таковы:

RAID 0

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

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

RAID 1

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

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

RAID 5

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

У RAID 5 есть несколько важных преимуществ. Как и у других массивов с чередованием, производительность чтения увеличивается из-за возможности чтения с нескольких накопителей одновременно. Массивы RAID 5 могут справляться с потерей одного из накопителей, а блоки чётности в таких случаях позволяют полностью восстановить данные. Обычно данные о чётности распределены, но некоторые менее распространённые уровни RAID используют для хранения чётности выделенный накопитель. Если объём массива RAID 1 ограничен размерами одного накопителя (во всех накопителях имеется идентичная копия данных), то в случае RAID 5 избыточность достигается за счёт объёма лишь одного накопителя. Так, четыре накопителя объёмом 100 гигабайт в массиве RAID 5 дадут 300 гигабайт полезного места (оставшиеся 100 гигабайт будут заняты распределённой информацией о чётности).

Как и в случае с другими уровнями, у RAID 5 имеются несколько значительных недостатков, которые стоит принимать во внимание. Производительность системы может снижаться из-за расчётов чётности, которые могут влиять на каждую операцию записи. Если накопитель вышел из строя и массив перешёл в деградированное состояние, появится также значительное снижение скорости операций чтения (недостающие данные нужно посчитать из данных оставшихся накопителей). После замены неисправного накопителя начнётся восстановление массива, в процессе которого будут читаться данные с каждого накопителя, а для подсчёта и восстановления недостающих данных будет использоваться процессор. Иногда возрастание нагрузки при чтении со всех накопителей провоцирует возникновение дополнительных неисправностей, которые могут повлечь потерю всех данных.

RAID 6

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

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

RAID 10

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

Вложенный RAID 1+0

Обычно RAID 10 описывается как вложенный RAID, созданный сначала настройкой из двух и более зеркал RAID 1, а затем использующий их в качестве компонентов для сборки массива RAID 0 с чередованием данных между ними. Иногда его называют RAID 1+0, чтобы подчеркнуть отношения между компонентами. Из-за такой структуры для образования RAID 1+0 нужно минимум четыре накопителя (RAID 0, чередующий два массива RAID 1, каждый из которых состоит из двух накопителей).

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

Если количество требуемых накопителей не критично, то RAID 1+0 - неплохой вариант, поскольку предлагает одновременно избыточность и высокую производительность.

RAID 10 mdadm

mdadm из Linux предлагает собственный вариант RAID 10, который соответствует духу и достоинствам RAID 1+0, но реализует её более гибко и даёт дополнительные преимущества.

Как в случае с RAID 1+0, mdadm RAID 10 использует несколько копий и чередование данных. Однако, устройства не образуют зеркалируемые пары. Вместо этого администратор принимает решение о количестве копий, которое будет записано на массив. Данные делятся на фрагменты и записываются на массив как несколько копий, распределённых по разным физическим устройствам. В конечном итоге существует то же количество копий, но массив не содержит вложенных нижележащих уровней.

Эта концепция RAID 10 имеет некоторые заметные преимущества по сравнению со вложенным RAID 1+0. Поскольку в данном случае в качестве строительных блоков не используются массивы, становится возможно использовать нечётное количество накопителей и использовать меньшее минимальное количество накопителей (необходимо лишь 3 накопителя). Также возможна настройка количества копий. Управление массивом упрощается, поскольку есть только один массив и он может использовать запасные накопители для замены любого накопителя массива, а не только для одного из вложенных компонентов массива.

Заключение

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

За дполнительной информацией по использованию утилиты mdadm из Linux для настройки массивов RAID, обратитесь к руководству по созданию массивов с помощью mdadm в Ubuntu 22.04. Также для обучения управлению существующими массивами может оказаться полезным руководство по управлению массивами mdadm в Ubuntu 22.04.