mdadm, ZFS RAID-Z и аппаратный RAID: ключевые различия
Сравнение относится к типичным Linux-конфигурациям. Возможности аппаратного RAID определяются конкретной моделью контроллера и его прошивкой.
| Критерий | mdadm | ZFS с 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 и память
Когда аппаратный RAID и защищённый кэш оправданы
Аппаратный RAID имеет смысл не потому, что он автоматически быстрее software RAID Linux, а когда его свойства нужны конкретной нагрузке. Главное из них — защищённый кэш записи. При исправной защите контроллер может подтвердить запись после помещения данных в кэш и позже записать их на диски. Это способно заметно ум еньшить задержку мелких случайных и синхронных записей, особенно на HDD и при ограниченной глубине очереди.
На последовательной записи, асинхронной нагрузке, быстрых SSD с собственной защитой от потери питания или при упоре в сеть, CPU и приложение преимущество контроллерного кэша может быть небольшим. Измерять его нужно на целевой конфигурации: с размером блока, глубиной очереди, долей синхронных операций, типом накопителей и политиками кэша. Нельзя переносить результаты теста одного контроллера на другой.
Для базы данных или хоста виртуализации аппаратный RAID может быть обоснован, если приложение часто выполняет fsync/flush, контроллер корректно обрабатывает flush и FUA, а защищённый кэш исправен и наблюдается мониторингом. Для нескольких SSD или NVMe-накопителей необходимость та кого контроллера не следует предполагать заранее: многие локальные NVMe подключаются по PCIe и могут вообще не находиться за традиционным SAS/SATA RAID-контроллером.
Защита кэша — обязательное условие безопасного Write-Back
Аппаратный RAID без исправной защиты нельзя считать эквивалентом контроллера с защищённым Write-Back. При неисправной батарее или суперконденсаторе разные модели могут перейти в кэш со сквозной записью, запретить Write-Back либо действовать согласно заданной политике. Конкретный режим, предупреждения, возможность принудительного Write-Back и последствия такой настройки проверяют по документации контроллера и его утилите управления. Принудительное небезопасное кэширование ради скорости создаёт риск потери подтверждённых записей при отключении питания или отказе.
Восстановление после отказа сервера или контроллера
| Вариант | Что обычно требуется для импорта | Основные ограничения |
|---|---|---|
| mdadm | Подключить диски к совместимой Linux-системе и собрать массив по суперблокам | Нужны доступные участники массива и поддержка формата метаданных; действия выполняют осторожно, без создания нового массива поверх старого |
| ZFS | Подключить устройства и импортировать пул совместимой реализацией ZFS | Версия должна поддерживать версию пула и активированные feature flags; должны быть доступны требуемые vdev |
| А ппаратный RAID | Подключить диски к контроллеру того же или совместимого семейства и проверить импорт конфигурации | Совместимость поколений и процедура зависят от производителя; может потребоваться импорт Foreign Configuration |
Переносимость mdadm и ZFS не означает гарантированное восстановление при любом повреждении: состояние дисков, избыточность, шифрование, доступность ключей и действия при аварии остаются критичными. У аппаратного массива заранее полезно документировать модель контроллера, версию прошивки, конфигурацию логических дисков и процедуру импорта, указанную производителем.
Выбор по сценариям
Файловый сервер и простое зеркало
1. Файловый сервер и простое зеркало
ZFS-хранилище
1. ZFS-хранилище
Виртуальные машины или база данных с синхронной записью
1. Виртуальные машины или база данных с синхронной записью
Сервер с NVMe
1. Сервер с NVMe
Что проверить у 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 не заменяет резервное копирование
Термины в статье
- Аппаратный RAID
- Реализация RAID, в которой специализированный контроллер формирует логические диски и выполняет операции массива. Наличие и защита кэша зависят от модели.
- Грязный кэш
- Грязный кэш содержит изменённые блоки, ещё не записанные в постоянное хранилище. Такие блоки нельзя безопасно отбросить до их сброса.
- Защита от потери питания
- Защита от потери питания — функция SSD, сохраняющая данные и метаданные из энергозависимого кэша при внезапном отключении питания за счёт накопленной энергии.
- Кэш со сквозной записью
- Кэш со сквозной записью — режим, в котором кэш не подтверждает запись раньше нижележащего хранилища и не оставляет подтверждённые данные только в своей энергозависимой памяти.
- Кэширование записи
- Кэширование записи — временное размещение записываемых данных в быстрой памяти перед их передачей в нижестоящее хранилище для снижения задержки и оптимизации ввода-вывода. Момент подтверждения записи и гарантия её сохранности зависят от политики кэша и всех уровней стека хранения.
- Логический диск
- Логический диск — блочное устройство, которое RAID-контроллер или программная RAID- подсистема предоставляет хосту как отдельный накопитель.
- Метаданные RAID
- Метаданные RAID — служебные записи на дисках или контроллере, описывающие состав, уровень, состояние и параметры RAID-массива для его распознавания и сборки.
- Программный RAID
- RAID, реализованный ОС или другим программным стеком хоста без отдельного аппаратного RAID-контроллера. Использует вычислительные ресурсы сервера.
- Суперконденсатор
- Накопитель энергии высокой мощности, пр именяемый для кратковременного питания кэша RAID-контроллера. При сбое питания он сохраняет данные до записи во флеш-память.
- Физический диск
- Физический диск — отдельный HDD, SSD или иной накопитель, распознанный RAID-контроллером как член массива либо как независимое устройство.
- Хост виртуализации
- Хост виртуализации — физический сервер или вычислительная система, на которой работает гипервизор и размещаются виртуальные машины; его CPU, память, сеть и хранилище распределяются между гостями.
