Русский
Русский
English
Статистика
Реклама

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-массивы: аппаратный и программный. Мы рассмотрим следующие решения:

  • Linux Software RAID.
  • Intel Virtual RAID On CPU.
  • LSI MegaRAID 9460-8i.

Отметим, что решение Intel работает на чипсете, из-за чего возникает вопрос, аппаратное это решение или программное. Так, например, гипервизор VMWare ESXi считает VROC программным и не поддерживает официально.

Linux Software RAID


Программные RAID-массивы в семействе ОС Linux достаточно распространенное решение как в клиентском сегменте, так и в серверном. Все, что нужно для создания массива, утилита mdadm и несколько блочных устройств. Единственное требование, которое предъявляет Linux Software RAID к используемым накопителям, быть блочным устройством, доступным системе.

Отсутствие затрат на оборудование и программное обеспечение очевидное преимущество данного способа. Linux Software RAID организует дисковые массивы ценой процессорного времени. Список поддерживаемых уровней RAID и состояние текущих дисковых массивов можно посмотреть в файле mdstat, который находится в корне procfs:

root@grindelwald:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid10] unused devices: <none>

Поддержка уровней RAID добавляется подключением соответствующего модуля ядра, например:

root@grindelwald:~# modprobe raid456root@grindelwald:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] unused devices: <none>

Все операции с дисковыми массивами производятся через утилиту командной строки mdadm. Сборка дискового массива производится в одну команду:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

После выполнения этой команды в системе появится блочное устройство /dev/md0, которое представляет из тебя виртуальный диск.

Intel Virtual RAID On CPU


Intel VROC Standard Hardware Key
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.

Intel VROC со стандартной лицензией
Настройка массивов производится через Setup Utility при загрузке сервера. На вкладке Advanced появляется пункт Intel Virtual RAID on CPU, в котором можно настроить дисковые массивы.

Создание массива RAID1 на двух накопителях
Технология Intel VROC имеет свои козыри в рукаве. Дисковые массивы, собранные с помощью VROC, совместимы с Linux Software RAID. Это означает, что состояние массивов можно отслеживать в /proc/mdstat, а администрировать через mdadm. Эта особенность официально поддерживается Intel. После сборки RAID1 в Setup Utility можно наблюдать синхронизацию накопителей в ОС:

root@grindelwald:~# cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md126 : active raid1 nvme2n1[1] nvme1n1[0]      1855832064 blocks super external:/md127/0 [2/2] [UU]      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec      md127 : inactive nvme1n1[1](S) nvme2n1[0](S)      10402 blocks super external:imsm       unused devices: <none>

Отметим, что через mdadm нельзя собирать массивы на VROC (собранные массивы будут Linux SW RAID), но можно менять в них диски и разбирать массивы.

LSI MegaRAID 9460-8i


Внешний вид контроллера LSI MegaRAID 9460-8i
RAID-контроллер является самостоятельным аппаратным решением. Контроллер работает только с накопителями, подключенными непосредственно к нему. Данный RAID-контроллер поддерживает до 24 накопителей с интерфейсом NVMe. Именно поддержка NVMe выделяет этот контроллер из множества других.

Главное меню аппаратного контроллера
При использовании режима UEFI настройки контроллера интегрируются в Setup Utility. В сравнении с VROC меню аппаратного контроллера выглядит значительно сложнее.

Создание RAID1 на двух дисках
Объяснение настройки дисковых массивов на аппаратном контроллере является достаточно тонкой темой и может стать поводом для полноценной статьи. Здесь же мы просто ограничимся созданием RAID0 и RAID1 с настройками по умолчанию.

Диски, подключенные в аппаратный контроллер, не видны операционной системе. Вместо этого контроллер маскирует все RAID-массивы под SAS-накопители. Накопители, подключенные в контроллер, но не входящие в состав дискового массива, не будут доступны ОС.

root@grindelwald:~# smartctl -i /dev/sdasmartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (local build)Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org=== START OF INFORMATION SECTION ===Vendor:               AVAGOProduct:              MR9460-8iRevision:             5.14Compliance:           SPC-3User Capacity:        1,999,844,147,200 bytes [1.99 TB]Logical block size:   512 bytesRotation Rate:        Solid State DeviceLogical Unit id:      0x000000000000000000000000000000Serial number:        00000000000000000000000000000000Device type:          diskLocal Time is:        Sun Oct 11 16:27:59 2020 MSKSMART support is:     Unavailable - device lacks SMART capability.

Несмотря на маскировку под SAS-накопители, массивы с NVMe будут работать на скорости PCIe. Однако такая особенность позволяет загружаться с NVMe в Legacy.

Тестовый стенд


Каждый из способов организации дисковых массивов имеет свои физические плюсы и минусы. Но есть ли разница в производительности при работе с дисковыми массивами?

Для достижения максимальной справедливости все тесты будут проведены на одном и том же. Его конфигурация:

  • 2x Intel Xeon 6240;
  • 12x DDR4-2666 16 GB;
  • LSI MegaRAID 9460-8i;
  • Intel VROC Standard Hardware Key;
  • 4x Intel SSD DC P4510 U.2 2TB;
  • 1x Samsung 970 EVO Plus M.2 500GB.

Тестируемыми выступают P4510, из которых одна половина подключена к материнской плате, а вторая к RAID-контроллеру. На M.2 установлена операционная система Ubuntu 20.04, а тесты будут выполняться при помощи fio версии 3.16.

Тестирование


В первую очередь проверим задержки при работе с диском. Тест выполняется в один поток, размер блока 4 КБ. Каждый тест длится 5 минут. Перед началом для соответствующего блочного устройства выставляется none в качестве планировщика I/O. Команда fio выглядит следующим образом:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --iodepth=1 --loops=1000 --runtime=300  --rw=<mode> --filename=<blkdev>

Из результатов 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:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --loops=1000 --runtime=300  --iodepth=<threads> --rw=<mode> --filename=<blkdev>

Производительность измеряется в количестве операций ввода-вывода. Результаты представлены в таблице ниже.

Случайное чтение 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 в своих проектах.

Источник: habr.com
К списку статей
Опубликовано: 17.10.2020 14:04:36
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании selectel

Хранение данных

Компьютерное железо

Накопители

Raid

Nvme

Testing

Контроллеры

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru