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

Заполните форму запроса слева или отправьте описание вашей задачи на почту get@work-system.ru

При отправке письма на почту укажите номер телефона вашего специалиста для обсуждения аналогов оборудования в случае необходимости

RAID-массив: что это такое и какой уровень выбрать

При проектировании сервера или системы хранения выбор уровня RAID определяет, переживёт ли инфраструктура отказ диска без остановки бизнес-процессов и какую реальную скорость получат приложения. Ошибка на этом этапе обходится дорого: неверно подобранный уровень RAID либо снижает производительность базы данных, либо оставляет компанию без данных при обычном выходе диска из строя. В этой статье разбираем механику RAID, различия между аппаратной и программной реализацией и даём практические критерии выбора уровня под конкретную нагрузку — от 1С и MS SQL до видеонаблюдения. Коротко: для 1С и СУБД — RAID 10, для архивов — RAID 5 или RAID 6, для видеонаблюдения — RAID 6 или RAID 60, для кэшей — RAID 0. Дальше — почему именно так.

Содержание

Что такое RAID-массив и зачем он нужен

RAID (Redundant Array of Independent Disks — избыточный массив независимых дисков) — это способ объединить несколько физических накопителей в один логический диск, который операционная система и приложения видят как единое устройство хранения. Термин появился в 1987 году в статье исследователей Калифорнийского университета в Беркли Дэвида Паттерсона, Гарта Гибсона и Рэнди Катца «A Case for Redundant Arrays of Inexpensive Disks», где акроним RAID расшифровывался как «избыточный массив недорогих дисков» (Inexpensive) — авторы противопоставляли такие массивы дорогим монолитным дисковым системам класса SLED (Single Large Expensive Drive). Позже, когда в серверных массивах стали использовать дорогие накопители корпоративного класса, буква I закрепилась за словом Independent — «независимых». Формулировка сменилась, а суть — объединение дисков ради надёжности и скорости — осталась прежней.

Логическая единица, которую RAID-массив предоставляет серверу, называется LUN (Logical Unit Number) — виртуальный идентификатор в протоколе SCSI, за которым скрывается RAID-группа, том или область на дисках внутри системы хранения. Для операционной системы LUN выглядит как обычный жёсткий диск, хотя физически это массив из нескольких накопителей с заданной схемой избыточности.

Ключевое отличие RAID-массивов от простого объединения дисков (JBOD, spanning) — именно в избыточности. При spanning данные просто последовательно заполняют один диск за другим, и отказ любого накопителя означает потерю всех данных на нём без возможности восстановления. RAID, за исключением уровня 0, изначально проектируется так, чтобы отказ одного или нескольких дисков не приводил к потере информации. Отсюда и две цели, которые технология решает одновременно: отказоустойчивость хранения и рост производительности за счёт параллельной работы нескольких дисков.

Как работает RAID: чередование, зеркалирование и контроль чётности

Все уровни RAID построены на комбинации трёх базовых механизмов — чередования, зеркалирования и контроля чётности. RAID-контроллер (аппаратный чип или программный драйвер ОС) выступает посредником между операционной системой и физическими накопителями: он разбивает поступающие данные на блоки, распределяет их по дискам согласно алгоритму выбранного уровня и предоставляет системе единый логический том. Для приложения этот процесс полностью прозрачен — оно обращается к тому как к обычному диску, не зная, на какой физический накопитель фактически попадёт конкретный блок данных.
Чередование данных (striping)
Чередование распределяет блоки данных поочерёдно по всем дискам массива: первый блок — на диск 0, второй — на диск 1 и так далее. Поскольку операции чтения и записи выполняются параллельно на нескольких накопителях, IOPS и пропускная способность массива растут пропорционально числу дисков — формула для RAID 0 выглядит как IOPS_массива = IOPS_диска × N, а штраф на запись (write penalty) равен 1, то есть операция не дублируется. Это самый быстрый вариант RAID, но избыточности он не создаёт: чередование без зеркалирования или чётности не переживает отказ ни одного диска.
Зеркалирование данных (mirroring)
Зеркалирование записывает идентичные копии данных на пару дисков. При отказе одного накопителя контроллер продолжает читать данные со второго диска мгновенно и прозрачно для приложений — переключение не требует остановки сервиса, а RTO (время восстановления доступа) практически нулевое. Плата за эту простоту — двойные затраты на ёмкость: полезный объём массива равен объёму одного диска независимо от того, сколько копий в него добавлено.
Контроль чётности (parity) и восстановление после отказа диска
В уровнях с чётностью контроллер вычисляет контрольную сумму по данным (обычно операцией XOR) и хранит её либо на выделенном диске (RAID 3 и RAID 4), либо распределяет между всеми дисками массива (RAID 5 и RAID 6). Распределённая чётность устраняет узкое место выделенного диска, поэтому именно RAID 5 и RAID 6 стали промышленным стандартом, а RAID 3 и RAID 4 практически не применяются. Исторически первым уровнем с защитой от ошибок был RAID 2 — побитовое чередование с кодом Хэмминга. Он не прижился из-за сложности реализации: аналогичные механизмы давно встроены в контроллеры самих жёстких дисков, и сегодня RAID 2 встречается разве что в исторических справочниках.

При отказе диска массив переходит в режим ребилда: контроллер читает весь оставшийся объём данных и чётности, чтобы восстановить содержимое утраченного накопителя. Операция тяжёлая — в RAID 5 при случайной записи производительность падает на 10–25% от уровня RAID 0/10, так как каждая логическая запись превращается в четыре физические операции (два чтения и две записи для пересчёта чётности), а во время самого ребилда нагрузка на оставшиеся диски и без того максимальная.

Именно в этот момент проявляется главный риск RAID 5 на дисках большой ёмкости — вероятность встретить неисправимую ошибку чтения (URE, Unrecoverable Read Error) во время ребилда, которая равносильна отказу второго диска и полной потере массива. В публичных datasheet производителей корпоративных HDD — Seagate Exos, WD Ultrastar, Toshiba Enterprise Capacity — точное значение URE обычно не приводится: вендоры указывают вместо него MTBF на уровне 2,0–2,5 млн часов и AFR (годовую вероятность отказа) около 0,35–0,45%. По независимым расчётам на основе среднеотраслевого показателя URE — порядка одной ошибки на 12,5 ТБ прочитанных данных, по оценкам технических сообществ, включая форум TrueNAS, — вероятность такой ошибки прямо зависит от объёма чтения при ребилде: он равен (N − 1) × S для RAID 5 и растёт с числом дисков и их ёмкостью. Так, для массива из семи SATA-дисков по 2 ТБ ребилд читает около 12 ТБ, и вероятность встретить неисправимую ошибку достигает 62%; для тех же семи дисков по 22 ТБ объём чтения вырастает до 132 ТБ, а вероятность URE приближается к 100%. Собственно, это и есть ключевая причина, почему на дисках большой ёмкости RAID 5 всё чаще заменяют на RAID 6.

Аппаратный и программный RAID-контроллер: в чём разница

RAID можно реализовать тремя способами: выделенным аппаратным контроллером, средствами операционной системы (программный RAID) или встроенным чипом на материнской плате, который выполняет часть функций аппаратно, но перекладывает вычисления на CPU хоста (так называемый fake-RAID, например Intel RST или AMD RAIDXpert). Стоит ли переплачивать за отдельную плату, если ОС и так умеет собирать массив? Разница между вариантами — не формальность, а вопрос производительности сервера под нагрузкой и надёжности при внезапном отключении питания.
Аппаратный RAID-контроллер
Аппаратный контроллер — это отдельная плата с собственным процессором, памятью и логикой вычисления чётности, независимая от операционной системы: массив остаётся консистентным даже при смене ОС, а сервер не тратит ресурсы CPU на RAID-операции. Такие контроллеры — Broadcom/LSI MegaRAID, Dell PERC, HPE Smart Array — поддерживают горячую замену дисков (hot-swap) и оснащаются защищённым от потери данных кэшем записи. Классическая реализация — BBU (Battery Backup Unit): литий-ионная батарея удерживает данные в кэше до 72 часов до восстановления питания. Современный подход — FBWC (Flash Backed Write Cache), у Broadcom реализованный как технология CacheVault: при потере питания суперконденсатор даёт энергию ровно на то, чтобы за секунды скопировать содержимое кэша из DRAM в энергонезависимую флеш-память, после чего данные сохраняются без ограничения по времени и без необходимости менять батарею. Обратная сторона аппаратного RAID — стоимость контроллера и привязка к конкретной модели: при выходе контроллера из строя для корректного чтения конфигурации массива нужен полностью совместимый контроллер той же линейки.
Программный RAID-контроллер
Программный RAID (Linux mdadm, Windows Storage Spaces, ZFS) реализуется драйвером операционной системы и не требует отдельного оборудования, но перекладывает вычисление чётности и управление массивом на CPU сервера. Программный RAID 5 заметно повышает загрузку процессора по сравнению с RAID 0/1, а RAID 6 из-за двойной чётности нагружает CPU ещё сильнее — из-за расчёта двух независимых контрольных сумм падение производительности записи у RAID 6 может достигать половины от уровня RAID 5. Восстановление массива после сбоя зависит от состояния самой ОС: если система не загружается, доступ к настройкам массива усложняется. У ZFS, кстати, своя реализация чётности — RAID-Z1, RAID-Z2 и RAID-Z3, аналоги RAID 5/6 с одной, двумя и тремя контрольными суммами соответственно, но без классической проблемы write hole за счёт транзакционной модели copy-on-write. Отдельно стоит fake-RAID — чип на материнской плате, отвечающий только за разбивку данных на страйпы: вычисления паритета и управление по-прежнему выполняет CPU через драйвер ОС. У fake-RAID собственный, часто недокументированный формат хранения, драйверы обычно доступны только под Windows, а из-за отсутствия защиты от silent data corruption риск потери данных при отказе диска заметно выше, чем в полноценных реализациях. Для серверных задач его лучше не использовать вовсе.

Уровни RAID: сравнение по отказоустойчивости, производительности и полезной ёмкости

Выбор уровня RAID — это всегда компромисс между тремя параметрами: сколько дисков может одновременно отказать без потери данных, сколько реальной ёмкости остаётся доступной после резервирования и насколько сильно операции с чётностью замедляют запись. Таблица ниже сводит эти параметры для всех практически применяемых уровней RAID (S — ёмкость одного диска, N — число дисков в массиве, для вложенных уровней G — число групп, M — дисков в группе).
Уровень
Мин. число дисков
Полезная ёмкость
Допустимых отказов
Write penalty
RAID 0
2
N × S
0
1x (без штрафа)
RAID 1
2
S
N − 1
2x
RAID 5
3
(N − 1) × S
1
4x
RAID 6
4
(N − 2) × S
2
6x
RAID 10
4 (чётное)
(N / 2) × S
по одному в каждой зеркальной паре
2x
RAID 50
6
G × (M − 1) × S
по одному в каждой группе RAID 5
наследует от RAID 5
RAID 60
8
G × (M − 2) × S
по два в каждой группе RAID 6
наследует от RAID 6
Базовые уровни — RAID 0, 1, 5 и 6
RAID 0 требует минимум 2 диска, отдаёт под данные всю ёмкость массива и не переживает отказ ни одного накопителя — подходит только для некритичных данных, где важна максимальная скорость. Общее правило: производительность массива без выделенного канала на диск ограничена самым медленным накопителем в группе — и это касается не только RAID 0. RAID 1 тоже собирается от 2 дисков, полностью зеркалирует данные и переживает отказ N − 1 дисков ценой того, что полезная ёмкость равна размеру одного накопителя. RAID 5 хорош как компромисс: минимум 3 диска, распределённая чётность, полезная ёмкость (N − 1) × S и защита от отказа одного диска, но, как показано выше, на больших ёмкостях риск второго отказа во время ребилда делает этот уровень всё менее подходящим. RAID 6 требует уже 4 диска, использует двойную распределённую чётность и переживает одновременный отказ двух дисков — за счёт этого он стал стандартом для крупных массивов на HDD большой ёмкости.
Комбинированные (вложенные) уровни — RAID 10, 50 и 60
RAID 10 сочетает зеркалирование и чередование: диски объединяются в зеркальные пары (RAID 1), а поверх пар применяется striping (RAID 0). Минимум — 4 диска, и их количество обязательно должно быть чётным, поскольку массив строится из целых зеркальных пар. Важно не путать RAID 10 с RAID 01 (0+1): в RAID 01 данные сначала чередуются, а потом весь страйп целиком зеркалируется — отказ одного диска выводит из строя всю страйп-группу, тогда как в RAID 10 отказ диска затрагивает только его зеркальную пару. При одинаковом числе дисков RAID 10 отказоустойчивее, поэтому именно он стал стандартным выбором. RAID 50 объединяет несколько массивов RAID 5 чередованием — минимум 6 дисков (две группы по 3), что даёт защиту от отказа одного диска в каждой отдельной группе при более высокой производительности записи, чем у одиночного RAID 5. RAID 60 работает по той же логике на базе RAID 6 — минимум 8 дисков (две группы по 4) — и применяется в основном на крупных дисковых полках, где нужно пережить отказ до двух дисков в каждой группе одновременно.

Как выбрать уровень RAID под задачу — от баз данных до видеонаблюдения

Универсального «лучшего» уровня RAID не существует — выбор определяется профилем нагрузки: соотношением чтения и записи, чувствительностью к задержке и требованиями к полезной ёмкости. Какой уровень поставить под 1С, а какой — под архив видеонаблюдения? Ниже — сводная таблица для быстрой ориентации, а после неё разбор каждого сценария подробнее.
Нагрузка
Рекомендуемый уровень
Альтернатива
Ключевая метрика
1С, MS SQL Server, PostgreSQL (OLTP)
RAID 10
RAID 5 на SSD с кэшем от 2 ГБ
Write penalty 2x, задержка записи < 0,5 мс
Файловый сервер, архив
RAID 5 (небольшие массивы)
RAID 6 (крупные массивы)
Полезная ёмкость (N − 1) × S
NVR/VMS, видеонаблюдение от 8 дисков и от 20 ТБ
RAID 6 / RAID 60
RAID 10 (до 8 камер)
Stripe 64–256 КБ, защита от 2 отказов
Кэш, scratch-пространство, буферы рендеринга
RAID 0
Write penalty 1x, максимальный IOPS
Для OLTP-нагрузок — баз данных 1С, MS SQL Server, PostgreSQL — оптимален RAID 10. Транзакционные системы генерируют много мелких случайных операций записи, а RAID 10 не имеет штрафа на пересчёт чётности: как общий инженерный ориентир, массивы RAID 10 на корпоративных NVMe-накопителях дают 200 000–500 000 IOPS на запись с задержкой 50–200 мкс, SATA SSD в той же схеме — 40 000–80 000 IOPS при задержке 0,1–0,5 мс, тогда как HDD на 7200 об/мин обеспечивают лишь 100–200 IOPS при задержке 5–15 мс, что для активной OLTP-нагрузки неприемлемо. Похожий эффект подтверждён и на облачных СХД: по данным Amazon Web Services (AWS), переход с gp3 на io2 Block Express на OLTP-нагрузке PostgreSQL снизил среднюю задержку ввода-вывода с 1,67 до 0,39 мс.

RAID 5 и RAID 6 для таких задач обычно избегают: write penalty 4x и 6x соответственно снижает случайную запись в разы. Согласно эталонному руководству Dell Technologies по консолидации SQL Server-нагрузок, задержка записи на LUN с журналом транзакций не должна превышать десятых долей миллисекунды — именно поэтому под 1С и высоконагруженные СУБД закладывают RAID 10 c флеш-накопителями, а RAID 5 допустим только на SSD с аппаратным контроллером и кэшем от 2 ГБ. Тот же расчёт применим и при развёртывании частного облака для нескольких изолированных нагрузок на одном кластере.

В наших проектах по развёртыванию отказоустойчивых кластеров 1С и СУБД — например, при построении инфраструктуры для логистического оператора с растущим потоком заявок на перевозки — расчёт конфигурации дисковой подсистемы был одним из первых шагов проектирования: без верного соотношения IOPS и полезной ёмкости кластер попросту не выдержал бы плановую нагрузку.

Для файловых серверов и архивов, где приоритет — ёмкость, а не задержка, типичный выбор — RAID 5 на небольших массивах или RAID 6 на крупных, где важна защита от второго отказа при длительном хранении. В проекте для ОАК (Объединённая авиастроительная корпорация) наша команда перевела архивное хранилище на полки высокой плотности — до 120 дисков 3,5″ по 20 ТБ в 8 юнитах — и заменила Supermicro на отечественное Контролшифт из-за ограничений поставок: объём хранения архивов вырос вдвое, а расходы на масштабирование снизились на 30%. Для госсектора и финансовых заказчиков доступность контроллеров часто не менее критична, чем сам выбор уровня RAID.

Видеонаблюдение и другие системы с почти непрерывной последовательной записью (NVR/VMS) — отдельный случай: отказоустойчивость здесь важнее, чем на файловом сервере, потому что двойной отказ дисков в RAID 5 означает полную потерю архива. Для массивов от 8 дисков и объёмов хранения от 20 ТБ стандартный выбор — RAID 6 или RAID 60: они переживают отказ двух дисков одновременно и дают более высокую скорость последовательной записи за счёт меньшей доли ёмкости, отведённой под избыточность. Размер полосы (stripe) для видеопотоков задают крупным — 64–256 КБ, это оптимизирует последовательную запись, а не случайный IOPS. Например, при интеграции видеонаблюдения для Группы ГАЗ мы рассчитывали подсистему именно под непрерывную запись, а не под пиковый IOPS. RAID 10 в видеонаблюдении оправдан на компактных системах до 8 камер или там, где критична скорость доступа нескольких операторов к архиву — но за это придётся отдать половину суммарной ёмкости дисков.

Для некритичных и временных данных — кешей, буферов рендеринга, scratch-пространства — RAID 0 остаётся оправданным выбором: терять здесь особо нечего, а вот скорость важна.

Типичные ошибки при выборе и эксплуатации RAID-массива

RAID спасёт данные при пожаре в серверной или атаке шифровальщика? Нет — и это первая, самая частая ошибка в расчётах на RAID. Массив защищает только от отказа диска: при случайном удалении файлов, шифровании данных вирусом-вымогателем, сбое самого RAID-контроллера или физическом повреждении сервера избыточность не спасает данные, потому что операция удаления или шифрования применяется одновременно ко всем дискам массива. Полноценная стратегия защиты данных строится на сочетании RAID, резервного копирования и метрик RPO/RTO: RPO — максимально допустимый объём потери данных, выраженный во времени до последней точки восстановления, RTO — максимально допустимое время простоя сервиса до полного возврата к работе.

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

Третья ошибка — смешивание дисков разной скорости или типа (HDD и SSD) в одном массиве. Производители RAID-контроллеров технически допускают такую конфигурацию на современных контроллерах с поддержкой Tri-Mode (одновременная работа с SAS, SATA и NVMe), но не рекомендуют её для продуктивных систем: как уже отмечено выше, скорость ограничена самым медленным диском, а полезная ёмкость — объёмом самого маленького накопителя. Для разных типов нагрузки правильнее строить отдельные массивы: SSD — для быстрых данных, HDD — для архивного хранения.

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

Часто задаваемые вопросы о RAID-массивах