У нас есть опыт организации высоконагруженных отказоустойчивых систем. Отказоустойчивость подразумевает избыточность дисковой подсистемы, проще говоря, из дисков нужно собирать RAID массивы. Высокая нагрузка накладывает свои требования. Если мы упираемся в пропускную способность SAS интерфейса, то используем PCIe NVMe диски. Аппаратные RAID контроллеры для NVMe уже есть, но они тоже представляют собой узкое место, выход — программный массив.
С помощью mdadm делаем программный RAID1 массив из двух NVMe дисков на сервере HPE Proliant DL580 Gen9. Операционная система Oracle Linux.
Сервер HPE Proiant DL580 Gen9 — обзор
Устанавливать будем два диска:
Samsung SSD 3.2TB PCIe MZPLJ3T2HBJR-00007
В системе доступно 9 слотов PCIe x16, в которых можно размещать NVMe-накопители, контроллеры, а также полнопрофильные профессиональные видеокарты. Часть слотов в сервере уже занята, но свободные есть. Устанавливаем на диски полнопрофильные планки.
Установка NVMe дисков
Планируем простой сервера и отправляемся в ЦОД. Выключаем сервер, выдвигаем из стойки. Чтобы добраться до PCIe слотов, нужно снять крышку.
Для установки плат винты не нужны, все планки фиксируются одной защёлкой, откидываем её.
В сервер уже установлено 4 NVMe диска, есть свободные слоты. Это была другая задача по созданию RAID10 массива:
HP Proliant DL580 Gen9 — установка PCIe NVMe дисков
Продолжаем. Снимаем заглушки с 5 и 9 слота.
Подготавливаем диски.
Устанавливаем диски.
Красота. Закрываем сервер крышкой, включаем.
В iLO диски отобразились. Дальнейшую работу можно выполнить из дома.
Создаём RAID1 массив из NVMe дисков
После установки дисков и загрузки сервера выполняем:
nvme list
У нас появилось два новых диска:
- /dev/nvme1n1
- /dev/nvme3n1
Их легко вычислить по модели SAMSUNG MZPLJ3T2HBJR-00007 и объёму в 3.2 ТБ.
С помощью команды lsblk тоже можно найти нужные диски:
lsblk
Здесь же становится понятно, что разделов на дисках не существует. Создадим их. С помощью fdisk создаём GPT раздел на диске /dev/nvme3n1.
fdisk /dev/nvme3n1
g
n
w
Ту же операцию проделываем для диска /dev/nvme1n, получаем два раздела:
- /dev/nvme1n1p1
- /dev/nvme3n1p1
Проверяем наличие разделов:
lsblk | grep nvme
Выбираем имя для будущего RAID1 массива.
cat /proc/mdstat
Имена md30 и md0 заняты, будем создавать md1. Создаём RAID1 массив /dev/md1 из двух дисков:
mdadm --create --verbose /dev/md1 -l 1 -n 2 /dev/nvme1n1p1 /dev/nvme3n1p1
Массив собран.
cat /proc/mdstat
Появился новый массив md1, идёт процесс синхронизации, но массивом уже можно пользоваться, хотя ещё есть риск потери данных. Остались детали.
Дополнительные настройки
Создаём mdadm.conf, предварительно удалив предыдущую конфигурацию.
rm /etc/mdadm/mdadm.conf
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Создаём файловую систему EXT4:
mkfs.ext4: mkfs.ext4 -m 0 /dev/md1
Если вам нужно создать файловую систему XFS, то:
mkfs.xfs /dev/md1
Дальше монтируем раздел в нужную директорию и дожидаемся окончания синхронизации массива. До этого момента в бою новый раздел использовать не стоит.