Что такое nvme raid mode в биосе
RAID-массивы на NVMe
В данной статье мы расскажем про разные способы организации RAID-массивов, а также покажем один из первых аппаратных RAID-контроллеров с поддержкой NVMe.
Все разнообразие применений технологии RAID встречается в серверном сегменте. В клиентском сегменте чаще всего используется исключительно программный RAID0 или RAID1 на два диска.
В этой статье будет краткий обзор технологии RAID, небольшая инструкция по созданию RAID-массивов с помощью трех разных инструментов и сравнение производительности виртуальных дисков при использовании каждого из способов.
Что такое RAID?
Википедия дает исчерпывающее определение технологии RAID:
RAID (англ. Redundant Array of Independent Disks — избыточный массив независимых (самостоятельных) дисков) — технология виртуализации данных для объединения нескольких физических дисковых устройств в логический модуль для повышения отказоустойчивости и производительности.
Конфигурация дисковых массивов и используемые при этом технологии зависят от выбранного уровня RAID (RAID level). Уровни RAID стандартизированы в спецификации Common RAID Disk Data Format. Она описывает множество уровней RAID, однако самыми распространенными принято считать RAID0, RAID1, RAID5 и RAID6.
RAID0, или Stripes, — это уровень RAID, который объединяет два или более физических диска в один логический. Объем логического диска при этом равен сумме объемов физических дисков, входящих в массив. На этом уровне RAID отсутствует избыточность, а выход из строя одного диска может привести к потере всех данных в виртуальном диске.
Уровень RAID1, или Mirror, создает идентичные копии данных на двух и более дисках. Объем виртуального диска при этом не превышает объема минимального из физических дисков. Данные на виртуальном диске RAID1 будут доступны, пока хотя бы один физический диск из массива работает. Использование RAID1 добавляет избыточности, но является достаточно дорогим решением, так как в массивах из двух и более дисков доступен объем только одного.
Уровень RAID5 решает проблему дороговизны. Для создания массива с уровнем RAID5 необходимо как минимум 3 диска, при этом массив устойчив к выходу из строя одного диска. Данные в RAID5 хранятся блоками с контрольными суммами. Нет строгого деления на диски с данными и диски с контрольными суммами. Контрольные суммы в RAID5 — это результат операции XOR, примененной к N-1 блокам, каждый из которых взят со своего диска.
Хотя RAID-массивы повышают избыточность и предоставляют резервирование, они не подходят для хранения резервных копий.
После краткого экскурса по видам RAID-массивов можно переходить к устройствам и программам, которые позволяют собирать и использовать дисковые массивы.
Виды RAID-контроллеров
Существует два способа создать и использовать RAID-массивы: аппаратный и программный. Мы рассмотрим следующие решения:
Отметим, что решение Intel® работает на чипсете, из-за чего возникает вопрос, аппаратное это решение или программное. Так, например, гипервизор VMWare ESXi считает VROC программным и не поддерживает официально.
Linux Software RAID
Программные RAID-массивы в семействе ОС Linux — достаточно распространенное решение как в клиентском сегменте, так и в серверном. Все, что нужно для создания массива, — утилита mdadm и несколько блочных устройств. Единственное требование, которое предъявляет Linux Software RAID к используемым накопителям, — быть блочным устройством, доступным системе.
Отсутствие затрат на оборудование и программное обеспечение — очевидное преимущество данного способа. Linux Software RAID организует дисковые массивы ценой процессорного времени. Список поддерживаемых уровней RAID и состояние текущих дисковых массивов можно посмотреть в файле mdstat, который находится в корне procfs:
Поддержка уровней RAID добавляется подключением соответствующего модуля ядра, например:
Все операции с дисковыми массивами производятся через утилиту командной строки mdadm. Сборка дискового массива производится в одну команду:
После выполнения этой команды в системе появится блочное устройство /dev/md0, которое представляет из тебя виртуальный диск.
Intel® Virtual RAID On CPU
Intel® Virtual RAID On CPU (VROC) — это программно-аппаратная технология для создания RAID-массивов на базе чипсетов Intel®. Данная технология доступна в основном для материнских плат с поддержкой процессоров Intel® Xeon® Scalable. По умолчанию VROC недоступен. Для его активации необходимо установить аппаратный лицензионный ключ VROC.
Стандартная лицензия VROC позволяет создавать дисковые массивы с 0, 1 и 10 уровнями RAID. Премиальная версия расширяет этот список поддержкой RAID5.
Технология Intel® VROC в современных материнских платах работает совместно с Intel® Volume Management Device (VMD), которая обеспечивает возможность горячей замены для накопителей с интерфейсов NVMe.
Настройка массивов производится через Setup Utility при загрузке сервера. На вкладке Advanced появляется пункт Intel® Virtual RAID on CPU, в котором можно настроить дисковые массивы.
Технология Intel® VROC имеет свои «козыри в рукаве». Дисковые массивы, собранные с помощью VROC, совместимы с Linux Software RAID. Это означает, что состояние массивов можно отслеживать в /proc/mdstat, а администрировать — через mdadm. Эта «особенность» официально поддерживается Intel. После сборки RAID1 в Setup Utility можно наблюдать синхронизацию накопителей в ОС:
Отметим, что через mdadm нельзя собирать массивы на VROC (собранные массивы будут Linux SW RAID), но можно менять в них диски и разбирать массивы.
LSI MegaRAID 9460-8i
RAID-контроллер является самостоятельным аппаратным решением. Контроллер работает только с накопителями, подключенными непосредственно к нему. Данный RAID-контроллер поддерживает до 24 накопителей с интерфейсом NVMe. Именно поддержка NVMe выделяет этот контроллер из множества других.
При использовании режима UEFI настройки контроллера интегрируются в Setup Utility. В сравнении с VROC меню аппаратного контроллера выглядит значительно сложнее.
Создание RAID1 на двух дисках
Объяснение настройки дисковых массивов на аппаратном контроллере является достаточно тонкой темой и может стать поводом для полноценной статьи. Здесь же мы просто ограничимся созданием RAID0 и RAID1 с настройками по умолчанию.
Диски, подключенные в аппаратный контроллер, не видны операционной системе. Вместо этого контроллер «маскирует» все RAID-массивы под SAS-накопители. Накопители, подключенные в контроллер, но не входящие в состав дискового массива, не будут доступны ОС.
Несмотря на маскировку под SAS-накопители, массивы с NVMe будут работать на скорости PCIe. Однако такая особенность позволяет загружаться с NVMe в Legacy.
Тестовый стенд
Каждый из способов организации дисковых массивов имеет свои физические плюсы и минусы. Но есть ли разница в производительности при работе с дисковыми массивами?
Для достижения максимальной справедливости все тесты будут проведены на одном и том же сервере. Его конфигурация:
Тестируемыми выступают P4510, из которых одна половина подключена к материнской плате, а вторая — к RAID-контроллеру. На M.2 установлена операционная система Ubuntu 20.04, а тесты будут выполняться при помощи fio версии 3.16.
Тестирование
В первую очередь проверим задержки при работе с диском. Тест выполняется в один поток, размер блока 4 КБ. Каждый тест длится 5 минут. Перед началом для соответствующего блочного устройства выставляется none в качестве планировщика I/O. Команда fio выглядит следующим образом:
Из результатов fio мы берем clat 99.00%. Результаты приведены в таблице ниже.
Случайное чтение, мкс | Случайная запись, мкс | |
---|---|---|
Диск | 112 | 78 |
Linux SW RAID, RAID0 | 113 | 45 |
VROC, RAID0 | 112 | 46 |
LSI, RAID0 | 122 | 63 |
Linux SW RAID, RAID1 | 113 | 48 |
VROC, RAID1 | 113 | 45 |
LSI, RAID1 | 128 | 89 |
Помимо задержек при обращении к данным, хочется увидеть производительность виртуальных накопителей и сравнить с производительностью физического диска. Команда для запуска fio:
Случайное чтение 1 поток, IOPS | Случайная запись 1 поток, IOPS | Случайное чтение 128 потоков, IOPS | Случайная запись 128 потоков, IOPS | |
---|---|---|---|---|
Диск | 11300 | 40700 | 453000 | 105000 |
Linux SW RAID, RAID0 | 11200 | 52000 | 429000 | 232000 |
VROC, RAID0 | 11200 | 52300 | 441000 | 162000 |
LSI, RAID0 | 10900 | 44200 | 311000 | 160000 |
Linux SW RAID, RAID1 | 10000 | 48600 | 395000 | 147000 |
VROC, RAID1 | 10000 | 54400 | 378000 | 244000 |
LSI, RAID1 | 11000 | 34300 | 229000 | 248000 |
Заключение
Использование аппаратных решений для создания дисковых массивов из двух дисков выглядит нерационально. Тем не менее, существуют задачи, где использование RAID-контроллеров оправдано. С появлением контроллеров с поддержкой интерфейса NVMe у пользователей появляется возможность использовать более быстрые SSD в своих проектах.
Варианты создания RAID на NVMe SSD. Сравнение производительности
Этот раздел адресуется тем, кто планирует систему со скоростным хранилищем большой емкости. Когда требуемый объем содержит группу NVMe SSD, объединенных в RAID массив.
Рассмотрим варианты объединения NVMe SSD в RAID и производительность каждого решения.
Доступны четыре варианта построения системы:
— программный средствами ОС;
— программно-аппаратный Intel VROC;
— аппаратный контроллер Broadcom MegaRAID;
— программно-определяемое хранилище (SDS).
Сценарии использования накопителя или массива NVMe SSD накопителей приведены в отдельной заметке.
В общей «картине» системы хранения не стоит забывать, что скоростные возможности интерфейса — это важный, но только один из множества параметров, влияющих на общую производительность.
Корпоративное основное хранилище ОБЯЗАНО быть защищенным избыточностью — это не обсуждается. Другое дело — что цена (в широком смысле, не только «стоимость») защищенности должна рассматриваться в комплексе. Принцип всех времен и народов: «Быстро, дешево, надежно — выбери два из трех!» никто не отменял.
Варианты строительства RAID массива из накопителей NVMe существенно различаются по стоимости реализации и производительности.
В нашем случае, когда подсистема NVMe является скоростной частью системы хранения сервера или группы серверов, производительность ставится во главу угла. Иначе — зачем вообще городить огород?
Максимальную скорость NVMe накопители показывают при непосредственном подключении к хост-контроллеру.
Без особенных потерь происходит объединение накопителей в RAID0, базирующееся на драйверах хост-контроллера или функциях операционной системы.
Производительность в RAID0 растет практически пропорционально количеству накопителей.
Не удивительно, что накопители в RAID0 представляются в тестах производительности систем в маркетинговых материалах, поскольку позволяют показать «красивые» цифры.
Однако, в реальной жизни организациям чаще требуется основное хранилище с защитой от потери данных. А это значит — RAID1, 5, 6, 50, 60.
Итак, смотрим плюсы-минусы вариантов, приняв во внимание предыдущие рассуждения об требуемом уровне RAID.
Показатели производительности подсистемы NVMe
В разных тестах используются SSD различных производителей и разные платформы тестирования. Но информационная база сейчас не настолько обширна, чтобы собрать воедино данные по всем вариантам использования конкретного накопителя. Приходится пользоваться тем — что есть. Важно понимать качественные изменения параметров.
В качестве показателей производительности для NVMe SSD и подсистемы NVMe в целом принят ряд метрик, показывающих скоростные характеристики для различных сценариев нагрузки (параметры и методики их измерения описаны в спецификации SNIA):
— IOPS (Input/Output Operations Per Second) — количество операций ввода/вывода в секунду. Это показатель скорости системы на случайных коротких запросах. Он зависит от размера блока, внутреннего устройства накопителя и настроек хост-контроллера;
— средняя и максимальная задержка передачи. Время, затраченное подсистемой хранения на получение запроса и подготовку ответа. Во многом определяется внутренним устройством контроллера накопителя. Средняя задержка замеряется на блоках трех размеров (8KiB, 4KiB, 0.5KiB) и в трех соотношениях чтение/запись (100/0, 65/35, 0/100) при глубине очереди =1;
— пропускная способность системы. Показатель скорости последовательного чтения/записи. Измеряется на операциях с блоками большого размера — 128k и 1m. Этот параметр больше относится к тестированию накопителей и показывает максимальную скорость выдачи последовательных данных без ограничений со стороны интерфейса. В тестах пропускная способность рассматривается с точки зрения влияния на нее программного обеспечения.
Эти показатели относятся к «синтетическим» тестовым системам. Группа тестовых программ пытается привязать показатели производительности к реальному применению. Они эмулируют «средние по больнице» сценарии, например, для баз данных или нагрузку, создаваемую пулом виртуальных машин.
Отдельный NVMe SSD
Нам нужна отправная точка. Какая-то печка, от которой можно плясать.
Показатели тестов скорости Intel SSD DC D3700 Series взяты у коллег из Рэйдикс (https://habr.com/ru/company/raidix/blog/420837/).
Тестировался 800GB SSD в 2.5″ исполнении с интерфейсом PCIe 3.0 2×2. В основе — MLC технология флеш.
В таблице измерение IOPS 800GB Intel DC D3700 Series накопителя.
Значения IOPS убывают почти пропорционально размеру блока передаваемых данных (391 000 — 1 700). Генерируемый при этом поток данных, который является произведением этих величин, остается, практически, постоянным.
Динамика кривой убывания IOPS при увеличении доли запросов на запись (391 000 — 84 000) менее крутая, но приводит к снижению показателя в 4,6 раза. Это объясняется внутренней логикой и процессами чтения/записи собственно накопителя SSD и к интерфейсу не имеет отношения.
Block size / R/W | 0/100 | 5/95 | 35/65 | 50/50 | 65/35 | 95/5 | 100/0 |
4k | 84 018 | 91 394 | 117 272 | 133 059 | 175 087 | 281 131 | 390 969 |
8k | 42 603 | 45 736 | 58 980 | 67 321 | 101 357 | 171 317 | 216 551 |
16k | 21 619 | 22 835 | 29 704 | 33 821 | 52 553 | 89 731 | 108 347 |
32k | 10 929 | 11 322 | 14 787 | 16 811 | 26 578 | 47 185 | 50 671 |
64k | 5 494 | 5 672 | 7 343 | 8 286 | 13 130 | 23 884 | 27 249 |
128k | 2 748 | 2 805 | 3 618 | 4 295 | 6 507 | 11 998 | 13 631 |
1m | 352 | 355 | 451 | 685 | 830 | 1 574 | 1 703 |
Для более наглядного представления, данные выведены в диаграмме:
IOPS одиночного NVMe накопителя
Задержка также зависит от размера блока и соотношения Чтение/Запись, но масштаб изменений значительно меньше.
Средняя задержка накопителя 800GB Intel DC D3700 Series в зависимости от размера блока и доли запросов на чтение в миллисекундах:
Block size/ R/W | 100/0 | 65/35 | 0/100 |
4k | 0,027 | 0,072 | 0,099 |
8k | 0,030 | 0,093 | 0,122 |
16k | 0,047 | 0,137 | 0,164 |
Средняя задержка одиночного NVMe накопителя
Максимальная задержка в миллисекундах:
Block size/ R/W | 100/0 | 65/35 | 0/100 |
4k | 1,510 | 4,715 | 6,985 |
8k | 1,409 | 4,312 | 7,000 |
16k | 1,106 | 4,644 | 7,007 |
Пропускная способность подсистемы с одним NVMe SSD:
1MB последовательная запись — 634 MBps.
1MB последовательное чтение — 1707 MBps.
128kB последовательная запись — 620 MBps.
128kB последовательное чтение — 1704 MBps.
Теперь мы представляем как размер блока и соотношение Чтение/Запись влияют на скоростные показатели накопителя NVMe. В дальнейшем можно рассматривать сокращенные результаты испытаний (чтобы не загромождать обилием цифр), а в некоторых случаях оценочно экстраполировать результаты неполных испытаний на сочетание параметров, с которым тесты не проводились.
Группа из 12 NVMe SSD (JBOD)
Еще одна отправная точка — несколько накопителей не объединенных ни в какой массив. Она нужна для сравнения производительности. JBOD — группа накопителей без чередования (в отличие от RAID0), в котором единое логическое пространство распределено по жёстким дискам последовательно.
Сравнительные результаты по показателю IOPS для одного NVMe SSD и группы из 12 приведены в таблице и показаны на диаграмме ниже:
Чтение/запись 4k | 0/100 | 5/95 | 35/65 | 50/50 | 65/35 | 95/5 | 100/0 |
12xNVMe | 1 363 079 | 1 562 345 | 1 944 105 | 2 047 612 | 2 176 476 | 3 441 311 | 4 202 364 |
1xNVMe | 84 018 | 91 394 | 117 272 | 133 059 | 175 087 | 281 131 | 390 969 |
Производительность одного и двенадцати NVMe SSD, IOPS для операций блоками 4k
Пропускная способность NVMe подсистемы из 12 накопителей практически линейно увеличивается пропорционально их числу:
1MБ последовательная запись — 8612 MBps.
1MБ последовательное чтение — 20481 MBps.
128Kб последовательная запись — 7500 MBps.
128Kб последовательное чтение — 20400 MBps.
Программные RAID средствами ОС и файловой системы
Стоимость решения: низкая (бесплатно).
ОС: Linux.
Производительность: приемлемая (RAID0, преимущественное чтение), невысокая-низкая (RAID5, 6, высокая доля записи).
Применение: хранилище временной информации, кэш системы, основное хранилище небольшой емкости с защитой зеркалом (RAID1, RAID10).
Производительность программных реализаций RAID массива рассмотрена в заметке «Сравнение производительности программных RAID«.
Решения, построенные на утилите mdadm операционной системы Linux и на встроенных средствах файловой системы ZFX самые дешевые. По производительности только RAID0 mdadm можно рекомендовать для использования в качестве кэш или временного накопителя и RAID6 mdadm для основного хранилища с 90-100% долей операций чтения.
Решение на Intel VROC
Стоимость решения: низкая.
ОС: Linux, Windows.
Производительность: средняя (RAID0, 1, 10), невысокая (RAID5).
Применение: хранилище временной информации, кэш системы, основное хранилище.
Это не очень дорогое (15 — 30 тысяч рублей) программное решение на уровне драйвера. Позволяет формировать RAID0, 1, 10 (стандартная конфигурация) или в том числе RAID5 (премиум).
На диаграмме ниже представлены результаты тестов системы из 24 NVMe SSD Ultrastar DC SN620, объединенных в RAID5 при помощи Intel VROC.
IOPS для 24 NVMe SSD Ultrastar DC SN620, объединенных в RAID5 при помощи Intel VROC, 4k
Показатель IOPS очень резко (в восемь раз) падает при соотношении Чтение/Запись 90/10. Еще в три раза — при увеличении доли записи до 30%.
Еще одно исследование производительности NVMe системы представлено на StorageReview
Испытывалась система с восемью Intel DC P4510 NVMe SSD под управлением Intel VROC.
В презентации другие системы координат и другое представление результатов.
Вывод, выведенный изданием: «Intel VROC реализован хорошо и обеспечивает ожидаемые результаты на хорошо спроектированной платформе».
При этом, правда, в резюме умалчиваются достижения в RAID5, поскольку они невысоки.
Ниже — один из слайдов с итогами теста «SQL 90-10» (чтение-запись)
Результаты тестов производительности VROC с ресурса https://www.storagereview.com/intel_virtual_raid_on_cpu_vroc_review/
RAID массив на SAS/SATA/NVMe контроллере
Стоимость решения: невысокая.
ОС: Linux, Windows.
Производительность: сравнима с решением на VROC.
Применение: основное хранилище с защитой (RAID5, RAID6).
Контроллеры Broadcom описаны в разделе Оборудование. MegaRAID допускает прямое подключение до 4 накопителей или большее количество через коммутатор. Его имеет смысл ставить в систему в двух случаях: 1) сервер не поддерживает NVMe интерфейс; 2) не хочется забирать мощности центральных процессоров для непрофильной загрузки.
Для реализации решения помимо собственно контроллера (30 — 70 тыс. руб.) требуется корпус или корзина в корпус для установки SSD выбранного форм-фактора (как правило, U.2, но есть решения даже для M.2 накопителей — корзины ICY DOCK, например) и набор соответствующих кабелей.
Тестов производительности контроллера Broadcom в паре с NVMe накопителями практически не опубликовано. Мы представляем сравнительные тесты с VROC: Сравнение производительности Tri-Mode Broadcom MegaRAID 9460-16i и Intel VROC.
Про уровень производительности новых контроллеров от самого производителя известно лишь очень общее: «задержка снижена на 50%, производительность увеличена на 60% по сравнению с предыдущим поколением контроллеров». (https://www.broadcom.com/solutions/enterprise-storage/nvme)
Программно-определяемое хранилище (SDS).
Стоимость решения: высокая.
ОС: Linux, Windows.
Производительность: высокая.
Применение: Масштабируемое основное хранилище большой емкости с защитой данных от потери. Высокоскоростное хранилище для группы серверов.
Программно-определяемое хранилище — отдельная обширная тема. Она рассматривается в разделе Программно-определяемое хранилище.
SDS использует мощности современных процессоров и распределение нагрузки между узлами. За счет этого SDS может показывать производительность, значительно превышающую возможности аппаратных дисковых контроллеров.
С учетом того, что аппаратных NVMe RAID контроллеров, мягко говоря, немного, приходится меряться с тем — что есть.
Есть сравнительные тесты RAIDIX ERA компании Рэйдикс с программными RAID на сервере с 12х Intel DC D3700 SSD (материалы Flash Memory Summit 2018)
IOPS для системы из 12шт Intel DC D3700
RAIDZ (аналог RAID6 в файловой системе ZFS)
RAID6 средствами mdadm Linux
RAID5 средствами mdadm Linux
RAID6 средствами RAIDIX ERA
Суммарная предельная скорость 12 накопителей — аппаратный предел
Подробно тесты и результаты описаны в упоминавшемся уже отчете на habr, на основе которых мы сравнивали программные RAID.
На следующей диаграмме — сравнение того же RAIDIX ERA с Intel VROC на сервере с 24х Ultrastar DC SN620 3.2TB объединенных в RAID5.
IOPS для 24х Ultrastar DC SN620 в RAID5
RAIDIX ERA RAID5, 4k
Intel VROC RAID5, 4k
Некоторые тесты производительности различных решений на NVMe SSD приводятся в NVMe хранилище. Тесты производительности.