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

Программный или аппаратный RAID: что выбрать для Linux-сервера

Сравнение mdadm, ZFS RAID-Z и аппаратного RAID для Linux: производительность записи, переносимость, восстановление и требования к контроллеру.

11 минут
Средний
Схема выбора между mdadm, ZFS RAID-Z и аппаратным RAID-контроллером
Для простого Linux-сервера обычно достаточно программного RAID на mdadm: он управляется штатной подсистемой Linux MD, а метаданные на дисках позволяют сравнительно легко перенести массив на другой совместимый сервер. ZFS с RAID-Z выбирают ради функций самой ZFS — контроля целостности, снимков и управления пулом. Аппаратный RAID оправдан, когда нужны возможности конкретного контроллера, прежде всего исправный защищённый кэш при чувствительной к задержкам синхронной записи; универсально лучшего варианта нет.

mdadm, ZFS RAID-Z и аппаратный RAID: ключевые различия

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

КритерийmdadmZFS с RAID-ZАппаратный RAID
Что видит ОСОтдельные диски и MD-устройствоОтдельные диски, объединённые в пул ZFSОдин или несколько логических дисков контроллера
Метаданные и переносимостьМетаданные RAID хранятся на дисках; обычно собираются Linux MD на совместимой системеСведения о пуле на дисках; требуется совместимая реализация ZFS и поддержка функций пулаФормат зависит от контроллера; часто нужен контроллер совместимого семейства
Кэш записиИспользует кэш ОС и накопителей; отдельного защищённого кэша контроллера нетИспользует собственный ARC и механизмы ZFS; синхронная запись журналируется через ZIL, при необходимости — на отдельном SLOG-устройствеМожет иметь защищённый Write-Back кэш
Доступ к состоянию дисковОбычно прямой, через средства ОСОбычно прямой, через HBA/JBODЗависит от модели, режима, драйвера и прошивки
ОбслуживаниеМониторинг MD, дисков и файловой системы средствами LinuxМониторинг пула, дисков, scrubs и совместимости функцийДополнительно нужны мониторинг контроллера, кэша, батареи или суперконденсатора
Типичные задачиЗеркало или иной простой массив для файлового сервера, загрузочного тома, обычных сервисовФайловое хранилище, где нужны функции и модель целостности ZFSВМ или БД с подходящим профилем синхронной записи, а также платформы с требованиями к контроллеру

Когда достаточно программного RAID на mdadm

mdadm — практичный выбор для сервера с несколькими SATA или SAS HDD/SSD, если не требуются функции ZFS и защищённый кэш RAID-контроллера. Он подходит для простого файлового сервера, зеркала системного тома, небольших прикладных сервисов и многих конфигураций с SSD, где задержка самих накопителей уже мала.

Суперблоки MD записываются на участки самих дисков. Поэтому после отказа сервера диски обычно можно подключить к другому Linux-хосту и собрать массив средствами MD, если доступны все необходимые участники, не повреждены метаданные и новая система поддерживает формат суперблока. Не следует без проверки рассчитывать на такую же переносимость для внешних метаданных или форматов, зависящих от платформы.

Если выбран mdadm, создание массива, настройка автосборки и проверка состояния описаны в статье «Как создать и настроить программный RAID в Linux с mdadm». Выбор уровня массива и расчёт его ёмкости — в материале «Как выбрать RAID 0, 1, 5, 6 или 10: ёмкость и отказоустойчивость».

Чем ZFS RAID-Z отличается от mdadm

RAID-Z — не вариант mdadm и не прямое название аппаратного RAID 5 или RAID 6. Это схема vdev внутри ZFS. Сама ZFS объединяет функции файловой системы и менеджера томов: ведёт контрольные суммы данных и метаданных, умеет регулярно проверять пул процедурой scrub, поддерживает снимки и имеет собственные процедуры замены накопителей и восстановления данных.

Для ZFS обычно дают прямой доступ к физическим накопителям через HBA либо JBOD. Размещать пул поверх одного RAID-тома аппаратного контроллера обычно не следует: ZFS теряет сведения об отдельных дисках, не может самостоятельно видеть их отказы и управлять заменой, а два независимых слоя управления избыточностью усложняют диагностику и восстановление. Исключения требуют проектирования под конкретное оборудование, а не являются обычной схемой.

ZFS, Linux и память

Способ поставки ZFS и статус поддержки зависят от дистрибутива и его версии: в одних системах пакеты доступны в подключаемом репозитории, в других — через внешний репозиторий или сборку модуля. Это связано в том числе с лицензированием CDDL у OpenZFS и GPL у ядра Linux. Перед внедрением проверяют документацию именно используемого выпуска ОС, поддерживаемую версию OpenZFS и правила обновления ядра. ECC-память — распространённая рекомендация для хранилища, где важна целостность данных в памяти, но не универсальное обязательное требование ZFS; единой нормы объёма RAM для всех пулов также нет.

Когда аппаратный RAID и защищённый кэш оправданы

Аппаратный RAID имеет смысл не потому, что он автоматически быстрее software RAID Linux, а когда его свойства нужны конкретной нагрузке. Главное из них — защищённый кэш записи. При исправной защите контроллер может подтвердить запись после помещения данных в кэш и позже записать их на диски. Это способно заметно уменьшить задержку мелких случайных и синхронных записей, особенно на HDD и при ограниченной глубине очереди.

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

Для базы данных или хоста виртуализации аппаратный RAID может быть обоснован, если приложение часто выполняет fsync/flush, контроллер корректно обрабатывает flush и FUA, а защищённый кэш исправен и наблюдается мониторингом. Для нескольких SSD или NVMe-накопителей необходимость такого контроллера не следует предполагать заранее: многие локальные NVMe подключаются по PCIe и могут вообще не находиться за традиционным SAS/SATA RAID-контроллером.

Защита кэша — обязательное условие безопасного Write-Back

Исправный BBU может поддерживать питание DRAM-кэша при сбое питания. В другой архитектуре суперконденсатор даёт энергию, чтобы перенести грязный кэш в энергонезависимую память. Это защищает только данные, уже принятые кэшем контроллера; модуль не заменяет ИБП, резервные копии и проверку восстановления.

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

Восстановление после отказа сервера или контроллера

ВариантЧто обычно требуется для импортаОсновные ограничения
mdadmПодключить диски к совместимой Linux-системе и собрать массив по суперблокамНужны доступные участники массива и поддержка формата метаданных; действия выполняют осторожно, без создания нового массива поверх старого
ZFSПодключить устройства и импортировать пул совместимой реализацией ZFSВерсия должна поддерживать версию пула и активированные feature flags; должны быть доступны требуемые vdev
Аппаратный RAIDПодключить диски к контроллеру того же или совместимого семейства и проверить импорт конфигурацииСовместимость поколений и процедура зависят от производителя; может потребоваться импорт Foreign Configuration

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

Выбор по сценариям

Файловый сервер и простое зеркало

1. Файловый сервер и простое зеркало
Применение:Несколько HDD или SSD, обычная файловая нагрузка, важны понятное обслуживание и возможность перенести диски в другой Linux-сервер.
Почему:Обычно выбирают mdadm. Он не требует RAID-контроллера и оставляет ОС прямой доступ к дискам.
Прозрачные метаданные на накопителяхПростой мониторинг средствами LinuxМеньшая зависимость от конкретного контроллера

ZFS-хранилище

1. ZFS-хранилище
Применение:Нужны контрольные суммы, scrub, снимки, репликация средствами ZFS и управление хранилищем как единым пулом.
Почему:Используют ZFS с RAID-Z и прямым подключением дисков через HBA или JBOD. Совместимость ZFS с дистрибутивом и план обновлений проверяют до запуска.
Интегрированная модель контроля целостностиУправление пулом и заменой устройств средствами ZFSНет скрытия отдельных дисков за RAID-томом контроллера

Виртуальные машины или база данных с синхронной записью

1. Виртуальные машины или база данных с синхронной записью
Применение:Много мелких fsync-записей, а измерения показывают, что задержку ограничивает дисковая подсистема.
Почему:Рассматривают аппаратный RAID с рабочим защищённым Write-Back кэшем либо иной стек, подтверждённый тестами приложения. Контролируют состояние модуля защиты и правила обработки flush/FUA.
Потенциально меньшая задержка подтверждённых записейСредства управления массивом конкретной серверной платформы

Сервер с NVMe

1. Сервер с NVMe
Применение:Накопители подключены по PCIe, а требуются высокая параллельность и прямое управление устройствами.
Почему:Сначала проверяют топологию PCIe, возможности платформы и необходимость аппаратного RAID. Традиционный SAS/SATA контроллер не предполагают подходящим для NVMe без подтверждения поддержки конкретной моделью.
Нет покупки контроллера по неверному предположению о совместимостиМожно выбрать mdadm, ZFS или платформенный RAID по фактической топологии

Что проверить у RAID-контроллера до выбора

  • Поддерживает ли именно эта модель нужные типы накопителей: SATA, SAS и, если требуется, NVMe; для NVMe также проверяют интерфейс, бэкплейн и режим работы контроллера.
  • Есть ли настоящий режим JBOD/HBA для прямой передачи дисков ОС, а не только создание одиночных RAID 0-томов.
  • Передаются ли S.M.A.R.T., серийные номера, идентификаторы устройств и диагностические команды в нужном режиме. Это зависит от контроллера, драйвера, прошивки и типа диска.
  • Поддерживаются ли TRIM/UNMAP для SSD в выбранном режиме и по всему пути от ОС до накопителя. Заявление о поддержке интерфейса само по себе не подтверждает передачу этих команд.
  • Как контроллер обрабатывает flush/FUA, какие политики применяет к кэшу дисков и допускает ли включённый write cache на накопителях без Power Loss Protection.
  • Как реализована защита кэша: BBU или суперконденсатор с энергонезависимой памятью, как контролируется её состояние, какова процедура замены и что происходит при отказе.
  • Какие контроллеры и поколения совместимы при аварийном импорте массива, поддерживается ли импорт Foreign Configuration и как именно он выполняется по документации производителя.

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

Ни mdadm, ни ZFS, ни аппаратный контроллер не защищают от всех ошибок администратора, повреждения данных приложением, удаления файлов или аварии всей системы. Возможность восстановить данные проверяют отдельно от возможности собрать RAID-массив.

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

Реализация RAID, в которой специализированный контроллер формирует логические диски и выполняет операции массива. Наличие и защита кэша зависят от модели.
Грязный кэш содержит изменённые блоки, ещё не записанные в постоянное хранилище. Такие блоки нельзя безопасно отбросить до их сброса.
Защита от потери питания — функция SSD, сохраняющая данные и метаданные из энергозависимого кэша при внезапном отключении питания за счёт накопленной энергии.
Кэш со сквозной записью — режим, в котором кэш не подтверждает запись раньше нижележащего хранилища и не оставляет подтверждённые данные только в своей энергозависимой памяти.
Кэширование записи — временное размещение записываемых данных в быстрой памяти перед их передачей в нижестоящее хранилище для снижения задержки и оптимизации ввода-вывода. Момент подтверждения записи и гарантия её сохранности зависят от политики кэша и всех уровней стека хранения.
Логический диск — блочное устройство, которое RAID-контроллер или программная RAID-подсистема предоставляет хосту как отдельный накопитель.
Метаданные RAID — служебные записи на дисках или контроллере, описывающие состав, уровень, состояние и параметры RAID-массива для его распознавания и сборки.
RAID, реализованный ОС или другим программным стеком хоста без отдельного аппаратного RAID-контроллера. Использует вычислительные ресурсы сервера.
Накопитель энергии высокой мощности, применяемый для кратковременного питания кэша RAID-контроллера. При сбое питания он сохраняет данные до записи во флеш-память.
Физический диск — отдельный HDD, SSD или иной накопитель, распознанный RAID-контроллером как член массива либо как независимое устройство.
Хост виртуализации — физический сервер или вычислительная система, на которой работает гипервизор и размещаются виртуальные машины; его CPU, память, сеть и хранилище распределяются между гостями.
Ядро Linux — центральный компонент ОС, управляющий аппаратными ресурсами и предоставляющий системные интерфейсы; оно не включает пользовательские утилиты и менеджер пакетов.
Аккумуляторный модуль, поддерживающий питание энергозависимого кэша RAID-контроллера при сбое питания до восстановления питания и записи данных на диски.
Состояние, при котором RAID-контроллер считает найденную на дисках конфигурацию массива не зарегистрированной или не совпадающей с текущей. Её проверяют и импортируют либо очищают.
HBA — адаптер ввода-вывода, соединяющий сервер с накопителями или SAN и не формирующий аппаратные RAID-массивы.
Способ подключения дисков без аппаратного RAID: обычно ОС видит каждый накопитель отдельно. Сам JBOD не обеспечивает избыточность; при необходимости её создаёт программный уровень.
Утилита командной строки Linux для создания, сборки, мониторинга и изменения программных RAID-массивов подсистемы MD.
NVMe — протокол обмена командами с энергонезависимыми накопителями, оптимизированный для параллельного ввода-вывода; локальные NVMe-SSD обычно подключаются по PCIe.
RAID 1 — уровень RAID с зеркалированием данных на двух или более дисках. Полезная ёмкость равна ёмкости наименьшего участника, а доступ сохраняется, пока исправна хотя бы одна копия.
Уровень RAID с чередованием данных и двойной распределённой чётностью. Выдерживает отказ любых двух дисков; минимум четыре диска.
Устройство или модуль, который формирует RAID-массивы из накопителей и предоставляет ОС логические диски, управляя размещением данных, отказами и восстановлением избыточности.
Буфер быстрой памяти между хостом и накопителями RAID, используемый для кэширования чтения и записи. Может снижать задержку и повышать производительность ввода-вывода.
RAID-Z — встроенная в ZFS схема vdev с распределённой чётностью. RAIDZ1, RAIDZ2 и RAIDZ3 выдерживают отказ соответственно одного, двух или трёх накопителей.
S.M.A.R.T. — технология самодиагностики накопителей, собирающая показатели состояния и ошибок. Она помогает выявлять признаки деградации диска до отказа.
SAS — последовательный интерфейс и набор протоколов SCSI для подключения накопителей, поддерживающий адресацию устройств, экспандеры и обычно двухпортовое подключение дисков.
SATA — последовательный интерфейс подключения HDD, SSD и оптических приводов; в обычной прямой схеме один порт контроллера соединён с одним накопителем.
TRIM — операция ATA, которой ОС сообщает SATA SSD, что указанные логические блоки больше не используются; немедленное стирание данных при этом не гарантируется.
Проблема в RAID-массивах, когда данные и паритет не синхронизированы из-за сбоя при записи.
Политика кэша RAID-контроллера: запись подтверждается после помещения данных в кэш, а на накопители переносится позже. Кэш требует защиты от потери питания.
ZFS — файловая система и менеджер томов с пулами хранения, контрольными суммами и копированием при записи, объединяющий управление дисками и данными.

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

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

Нужна ли батарея RAID-контроллеру для безопасного Write-Back?

Да, если контроллер использует DRAM-кэш с Write-Back, его защита обязательна для безопасной работы. BBU поддерживает питание кэша при сбое, а суперконденсатор может сохранить грязные данные в энергонезависимой памяти. Без исправной защиты нельзя считать кэш безопасным: подтверждённые записи могут быть потеряны при отключении питания.

Что будет, если батарея или суперконденсатор RAID-контроллера неисправны?

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

Можно ли собрать ZFS RAID-Z поверх одного RAID-тома контроллера?

Обычно не следует. Если ZFS получает один логический RAID-том вместо отдельных дисков, она не видит состояние накопителей, не может самостоятельно отслеживать их отказы и управлять заменой. Два слоя управления избыточностью также усложняют диагностику и восстановление. Для ZFS обычно используют прямое подключение дисков через HBA или JBOD.

Передаёт ли RAID-контроллер S.M.A.R.T. и TRIM для SSD?

Зависит от конкретного контроллера, драйвера, прошивки, режима работы и типа дисков. Нужно отдельно проверить передачу S.M.A.R.T., серийных номеров и диагностических команд, а для SSD — поддержку TRIM/UNMAP по всей цепочке от ОС до накопителя. Само заявление о поддержке интерфейса этого не гарантирует.

Нужен ли традиционный RAID-контроллер для сервера с NVMe?

Не обязательно. Многие локальные NVMe-накопители подключаются напрямую по PCIe и могут не находиться за обычным SAS/SATA RAID-контроллером. Для такого сервера сначала проверяют топологию PCIe, возможности платформы и потребность в прямом управлении устройствами. Совместимость контроллера с NVMe, бэкплейном и нужным режимом подтверждают для конкретной модели.