RAID и RAID-контроллеры

Как выбрать RAID 0, 1, 5, 6 или 10: ёмкость и отказоустойчивость

Сравнение RAID 0, 1, 5, 6 и 10 по полезной ёмкости, допустимым отказам и производительности для сервера, NAS, БД и виртуальных машин.

10 минут
Средний
абстрактная иллюстрация выбора конфигурации хранения данных
RAID 0 выбирают только если потеря всего массива допустима; RAID 1 — для простой защиты на двух дисках. RAID 5 выгоден по ёмкости при преобладании чтения, RAID 6 переживает отказ любых двух дисков, а классический RAID 10 часто выбирают для баз данных и виртуальных машин с интенсивной случайной записью. Реальный выбор зависит от профиля нагрузки, допустимой задержки, времени восстановления, реализации RAID и характеристик дисков.

Расчёт для N дисков одинакового размера S и классического RAID 10: чередование по зеркальным парам. Ёмкость указана до форматирования, метаданных RAID и прочих накладных расходов.

УровеньМинимум дисковПолезная ёмкостьДопустимые отказыЧтение и записьТипичные задачи
RAID 02N × S0: отказ любого диска разрушает массивЧтение и запись могут масштабироваться с числом дисков; избыточности нетВременные данные, кэш, воспроизводимые данные
RAID 1 из двух дисков2S1 дискЧтение может выполняться с обеих копий; каждая запись идёт на обе копииЗагрузочный том, небольшое хранилище
RAID 53(N − 1) × S1 дискЧтение обычно хорошее; небольшие случайные записи могут быть заметно медленнее RAID 10NAS и файловые массивы с преобладанием чтения
RAID 64(N − 2) × SЛюбые 2 дискаЧтение обычно хорошее; запись требует расчёта двойной чётностиЁмкие массивы, где важна защита во время восстановления
RAID 104, чётное N(N / 2) × SОдин диск гарантированно; несколько — только если в каждой паре остаётся исправный дискОбычно хорошо подходит для интенсивных случайных чтений и записейБазы данных, виртуальные машины, транзакционные сервисы

Как читать формулы ёмкости и отказоустойчивости

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

Чередование распределяет блоки данных между дисками и распараллеливает ввод-вывод, но само по себе не создаёт защиты. Зеркалирование хранит копии данных на нескольких дисках. В RAID 5 и RAID 6 часть пространства занимает чётность: контрольные данные для восстановления соответственно одного или двух отказавших дисков.

RAID 0 vs RAID 1: скорость без защиты или простое зеркало

На одинаковых дисках расчётная полезная ёмкость RAID 0 равна N × S: избыточности данных нет, а пространство всех участников используется для хранения данных. Такой массив допустим для данных, которые можно быстро получить заново: временных файлов обработки, кэша, рабочих копий из другого защищённого хранилища. Отказ одного участника делает логический том недоступным.

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

RAID 5, RAID 6 и RAID 10 для БД и виртуальных машин

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

В упрощённой модели небольшая случайная запись RAID 5, не покрывающая всю полосу, выполняется через чтение-модификацию-запись: два чтения и две записи, то есть условно 4 внутренних I/O. Для RAID 6 аналогичная оценка — 6 I/O из-за двух блоков чётности. Это иллюстрация штрафа записи RAID, а не универсальный результат: запросы могут объединяться, контроллер и ОС — кэшировать данные, а полная полосовая запись работает иначе.

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

  • RAID 10 — обычный выбор, если БД или ВМ интенсивно выполняют случайные записи, чувствительны к задержкам и потеря половины сырой ёмкости приемлема.
  • RAID 5 — вариант для преимущественно читаемой нагрузки, когда важна полезная ёмкость, а требования к задержке записи и восстановлению умеренные.
  • RAID 6 — вариант, когда нужно пережить отказ любых двух дисков и допустима меньшая полезная ёмкость вместе с более тяжёлой записью.
  • Для конкретной БД решение стоит сверять с её фактическими метриками: долей чтения и записи, размером запросов, очередью, задержками и временем, которое сервис может работать в деградированном состоянии.

Когда RAID 5 подходит для NAS, а когда нужен RAID 6

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

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

Почему RAID 10 не переживает любые два отказа

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

Раскладка RAID 10 имеет значение

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

Деградированный режим и rebuild: что заложить до покупки дисков

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

В RAID 10 данные для заменённого диска обычно читаются с оставшегося участника его зеркальной пары. Однако rebuild всё равно использует ресурсы контроллера или программного RAID, шины и накопителей, поэтому способен влиять на весь массив и прикладную нагрузку. В RAID 5 и RAID 6 недостающие данные восстанавливаются по оставшимся дискам и чётности.

Не планируйте время rebuild по одной цифре

Продолжительность восстановления нельзя надёжно определить только по ёмкости диска. Нужны как минимум модель и ёмкость накопителей, объём фактически восстанавливаемой области, последовательная скорость, текущая нагрузка, ограничения контроллера или mdadm и заданный приоритет rebuild. Некоторые реализации восстанавливают весь компонент, другие могут учитывать используемые или отмеченные области; заполненность файловой системы сама по себе не является универсальным показателем.
  • Выберите уровень RAID до покупки дисков: классический RAID 10 из зеркальных пар требует чётного числа дисков и предоставляет примерно половину сырой ёмкости, RAID 5 резервирует эквивалент одного диска, RAID 6 — двух.
  • Проверьте, переживает ли сервис ухудшение задержек и производительности во время замены диска и rebuild.
  • Определите допустимый срок работы с одним отказавшим диском: это влияет на выбор между RAID 5 и RAID 6, наличие запаса дисков и процессы обслуживания.
  • Учитывайте, что контроллер, программная реализация, тип накопителей HDD или SSD, кэш и размер запросов могут изменить практический результат.

RAID не заменяет резервные копии

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

Термины в статье

Изолированная вычислительная среда с виртуальными процессорами, памятью, дисками и сетевыми адаптерами, в которой под управлением гипервизора работает гостевая ОС.
Состояние отказоустойчивого RAID-массива, потерявшего один или несколько участников, но сохраняющего доступ, пока число отказов не превышает допустимое для RAID-уровня.
Зеркалирование — поддержание одинаковых копий данных на двух и более накопителях или узлах хранения. В RAID оно обеспечивает избыточность и лежит в основе RAID 1 и RAID 10.
Избыточность данных — хранение дополнительных копий или контрольной информации, позволяющее восстановить данные при отказе носителя, блока или другого компонента.
Запись в RAID с чётностью, заменяющая все блоки данных одной полосы. Новая чётность вычисляется по поступившим данным, поэтому старые данные и чётность читать не требуется.
RAID, реализованный ОС или другим программным стеком хоста без отдельного аппаратного RAID-контроллера. Использует вычислительные ресурсы сервера.
Распределение последовательных блоков данных между дисками или группами дисков RAID. Позволяет распараллеливать ввод-вывод, но само по себе не создаёт избыточности.
Избыточные контрольные данные, вычисляемые из блоков одной полосы RAID. Один блок чётности защищает от отказа одного диска, два независимых блока RAID 6 — от отказа двух.
Чтение-модификация-запись — цикл частичной записи RAID-полосы: контроллер читает прежние данные и контрольную информацию, пересчитывает их и записывает обновление.
Штраф записи RAID — условное число внутренних дисковых операций на одну небольшую логическую запись, обусловленное зеркалированием или обновлением чётности.
Failed — статус физического накопителя, который RAID-контроллер признал отказавшим и перестал использовать для штатного ввода-вывода в составе массива.
IOPS — число завершённых операций ввода-вывода в секунду, которое накопитель, RAID-массив или СХД обеспечивает при заданном профиле нагрузки.
Утилита командной строки Linux для создания, сборки, мониторинга и изменения программных RAID-массивов подсистемы MD.
Технология объединения нескольких накопителей в логические блочные устройства для повышения производительности и/или отказоустойчивости в зависимости от RAID-уровня.
RAID 0 — массив минимум из двух дисков с чередованием данных без избыточности. Отказ любого участника делает весь логический том недоступным.
RAID 1 — уровень RAID с зеркалированием данных на двух или более дисках. Полезная ёмкость равна ёмкости наименьшего участника, а доступ сохраняется, пока исправна хотя бы одна копия.
Комбинированный уровень: чередование (RAID 0) поверх зеркальных пар (RAID 1). Сочетает высокую скорость и отказоустойчивость, отдавая под избыточность половину ёмкости.
RAID 5 — уровень RAID с чередованием данных и распределённой чётностью, выдерживающий отказ одного диска. Требует минимум трёх дисков.
Уровень RAID с чередованием данных и двойной распределённой чётностью. Выдерживает отказ любых двух дисков; минимум четыре диска.
RAID-уровень — схема размещения данных и избыточности по накопителям массива, определяющая полезную ёмкость, отказоустойчивость и характеристики ввода-вывода.
Процесс восстановления избыточности массива после замены отказавшего диска: контроллер вычисляет и записывает на новый диск недостающие данные из остальных дисков.
Политика кэша RAID-контроллера: запись подтверждается после помещения данных в кэш, а на накопители переносится позже. Кэш требует защиты от потери питания.

Вопросы по теме

Все вопросы и ответы

Можно ли собрать RAID из дисков разной ёмкости?

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

Почему доступная ёмкость RAID меньше расчётной?

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

Можно ли загрузить сервер с RAID 1?

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

Защищает ли RAID от удаления файлов и вирусов?

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

Почему RAID 5 медленно пишет небольшие случайные блоки?

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

Это не означает, что каждая операция записи всегда будет иметь одинаковую задержку. Контроллер и ОС могут объединять запросы и использовать кэш, а защищённый питанием Write-Back кэш способен изменить практический результат. При полной полосовой записи старые данные и чётность читать для пересчёта не требуется. На производительность также влияют размер полосы, тип накопителей и профиль нагрузки.

Можно ли рассчитать время rebuild только по ёмкости диска?

Продолжительность rebuild нельзя надёжно определить по одной цифре ёмкости накопителя. Для оценки нужны как минимум модель и размер дисков, последовательная скорость, объём фактически восстанавливаемой области, текущая прикладная нагрузка и ограничения RAID-контроллера или программной реализации, например mdadm. Существенен и заданный приоритет rebuild: более агрессивное восстановление может сильнее влиять на рабочие сервисы.

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