`

СПЕЦИАЛЬНІ
ПАРТНЕРИ
ПРОЕКТА

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Программный NVMe RAID: просто и быстро

+44
голоса

Протокол NVMe придумали, чтобы убрать посредников между SSD и CPU. Без аппаратных RAID-контроллеров серверы получаются производительнее, проще, дешевле.

Перевод серверов на NVMe SSD сдерживает не цена накопителей, а консерватизм пользователей и бремя привычной программной инфраструктуры. Ограничения (и самоограничения) мешают добиваться продуктивности дискового ввода-вывода в серверах приложений и баз данных – ведь источником производительности являются не контроллеры RAID, а ресурсы современных многоядерных процессоров и широких шин доступа к данным на скоростных носителях.

 просто и быстро

Ведущие поставщики серверного оборудования не обсуждают массовое применение NVMe SSD в серверах еще и потому, что с их точки зрения для производительного хранения нужно покупать (дорогостоящие) системы хранения и не забивать себе голову рукоделием. А мы попробуем.

Объективно, организация дисков в массив является самой сложной проблемой хранения. Для NVMe SSD доступны следующие решения:
    • Аппаратные трехрежимные (Tri-Mode) RAID-контроллеры (Broadcom, Microchip, Areca)
    • Полу-программный Intel VROC
    • Программный RAID средствами базовых ОС (Linux, Windows)
    • Сторонние коммерческие или бесплатные программные сборки (например, RAIDIX ERA)
    •
Аппаратные RAID-контроллеры плохи тем, что пропускают поток данных через стек SAS и узкое горло шины (8-16 линий PCIe). При этом стоят немалых денег и неудобны в подключении. Intel VROC требует аппаратных ключей (поди найди) и не дает выигрыша в производительности. Программный RAID уменьшает число потенциальных точек отказа в сервере и зависимость от железа. Насколько он выгоден и производителен, зависит от реализации массива: RAID 10 «расточителен», RAID 5 и 6 «тупят». Но варианты маневра есть.

Как сделать быстро и наименее затратно?

Сравним два программных NVMe RAID: созданный стандартной утилитой Linux mdadm и собранный RAIDIX ERA.

RAIDIX ERA – управляющая утилита, работающая поверх ядра Linux и предоставляющая массив NVMe приложениям сервера в виде блочного устройства. Может использоваться с локальными дисками и удаленными накопителями (NVMe JBOF). Задействует расширенное поле регистров CPU для параллельных вычислений – что мобилизует ресурсы процессора, щадит оперативную память и минимально просаживает производительность в режиме смешанной нагрузки. Лицензия RAIDIX ERA бесплатна для 4 накопителей, это усилило интерес к продукту.

Тестовое ложе

Под установку нескольких NVMe нужна платформа U.2-ready. Мы взяли такую: https://servers.asus.com/products/servers/rack-servers/RS500A-E10-RS12U#Specifications, под один AMD EPYC.

Конфигурация стенда:
    • AMD EPYC 7413P 24 cores 2.65GHz
    • ASUS RS500A-E10-RS12-U
    • 4 x DDR4-3200 32GB reg Samsung {M393A4G40AB3-CWEGQ}
    • 240GB M.2 NVMe SSD Kingston DC1000B {SEDC1000BM8/240G} boot SSD
    • 4 x  960 GB SSD WD Ultrastar SN640 {0TS1849} U.2 SSD
    • Ubuntu 18.04
    • RAIDIX ERA 3.4

 просто и быстро

Производительность дисковой системы замеряли утилитой fio (Flexible I/O tester) для нагрузок с произвольным и последовательным доступом:

 просто и быстро

Четыре NVMe собирали в массивы уровней RAID 10 и RAID 5.

 просто и быстро

Создание RAID-массива утилитой mdadm

Проверка дисков:
cat /proc/mdstat

 просто и быстро

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

 просто и быстро

Видим 4 NVMe SSD. Проверяем наличие разделов на этих дисках (нам не нужны прежние метаданные):
fdisk –l

 просто и быстро

Диски чисты. Собираем их в RAID10:
sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1

 просто и быстро

Контролировать процесс создания массива можно, просматривая содержимое файла /proc/mdstat:
cat /proc/mdstat

 просто и быстро

Видны скорость формирования массива и время до его окончания.

Формирование закончено, RAID md0 сформирован:

 просто и быстро

Создаем и монтируем файловую систему ext4:
sudo mkfs.ext4 -F /dev/md0

 просто и быстро

Создаем точку монтирования:
sudo mkdir -p /mnt/md0

Монтируем файловую систему:
sudo mount /dev/md0 /mnt/md0

Проверяем доступность и объемы дисков:
df -h -x devtmpfs -x tmpfs

 просто и быстро

Чтобы обеспечить автоматическую сборку массива при загрузке, необходимо изменить файл /etc/mdadm/mdadm.conf. Подключить файл и обновить начальную файловую систему RAM возможно командами:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

sudo update-initramfs -u

 просто и быстро

Автоматического монтирования при загрузке можно добиться, добавив новые параметры в файл etc / fstab:
echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

 просто и быстро

Перегружаем систему. Проверяем cмонтированный RAID:

df -h

 просто и быстро

Детальная информация о RAID-массиве по команде:

mdadm -D /dev/md0

 просто и быстро

Массив RAID5 создается точно так же, для начала надо удалить с дисков следы прошлого.

Демонтаж и останов массива:
umount /dev/md0
mdadm -S /dev/md0

Затираем диски:
dd if=/dev/zero of=/dev/nvme0n1 bs=1M count=1024
dd if=/dev/zero of=/dev/nvme1n1 bs=1M count=1024
dd if=/dev/zero of=/dev/nvme2n1 bs=1M count=1024
dd if=/dev/zero of=/dev/nvme3n1 bs=1M count=1024

Далее проверяем доступность дисков для создания RAID и повторяем все описанные шаги.

RAID-массив можно собрать и по-другому, из графической оболочки Webmin.

Создание RAID-массива утилитой RAIDIX ERA

Cоберем RAID 10. Проверяем диски:

lsblk

 просто и быстро

Создаем RAID:
eraraid create -n ERA10 -l 10 -d  /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 -bs 512
eraraid show

 просто и быстро

init_progress – прогресс инициализации: от 0% до 100%.

Используя параметр –e, можно посмотреть расширенную информацию о RAID-массиве:

 просто и быстро

Инициализация RAID заняла намного меньше времени, чем при использовании mdadm.

Создаем точку монтирования:
sudo mkdir -p /mnt/era

Устанавливаем файловую систему xfs:
sudo mkfs.xfs /dev/era_ERA10

Монтируем файловую систему:
sudo mount /dev/era_ERA10 /mnt/era

Проверяем доступность и объем дисков:
df -h -x devtmpfs -x tmpfs

 просто и быстро

RAID 5 строится аналогично RAID 10.

Выборочные тесты

Контрольный прогон RAID-массивов из четырех NVMe SSD показал их более чем пристойную производительность – при том, что для  построения использовались бесплатные утилиты, без тонких настроек. 

 просто и быстро

 

 просто и быстро

Все RAID 10 даже при больших нагрузках произвольного доступа работают с задержками ниже 1 мс. Чем выше интенсивность операций – тем больше раскрывается потенциал RAIDIX ERA.

Cравнили RAID 5 под mdadm и ERA на последовательных операциях ввода-вывода, c размером блока 128К.

 просто и быстро

Производительность чтения примерно одинакова, по скорости записи RAIDIX ERA заметно превосходит оппонента.

Что с того?

Вообще говоря, сравнивать показатели различных реализаций NVMe RAID мы не собирались – таких тестов хватает. Производительности даже скромных программных массивов из четырех SSD достаточно массовым приложениям – и это серьезный аргумент в размывании стереотипов. Следуя принципу бережливости (бритва Оккама: «не следует множить сущее без необходимости»), в серверах с локальными NVMe-дисками можно обходиться без аппаратных контроллеров. Тем более  когда альтернатива бесплатна.

За NVMe будущее, нет сомнений. Избавление от RAID-контроллеров в серверах – часть пути в это, программно-определяемое будущее. Инструменты есть.

Як протидіяти DDoS та цілеспрямованим атакам на інфраструктуру

+44
голоса

Напечатать Отправить другу

Читайте также

 
 

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT