Добавить в корзинуПозвонить
Найти в Дзене

RAID10 из четырёх NVMe дисков на сервере Dell

Делаем конфетку из... того что есть. А есть у нас сервер Dell PowerEdge R640 с операционной системой Ubuntu Server. В сервере стоят два NVMe диска, которые собраны в RAID1 с помощью программного RAID контроллера PERC S140. SATA контроллер был переведён в режим RAID Mode, опция NVMe Settings установлена в RAID. И RAID1 из двух дисков NVMe 3.84 TB KCD5XLUG3T84 прекрасно работал. SSD Dell EMC NVMe 3.84 TB — KCD5XLUG3T84 Потом место кончилось. Было принято решение приобрести ещё два диска такого же объёма и сделать RAID10 из четырёх NVMe дисков. Диски были куплены, немного другой модели — Dell KCD61LUL3T84. Приступил я к задаче и наткнулся на две проблемы. Проблема первая Новые диски оказались не Dell. Опа, вот тебе и раз! Диск, которого не существует — Dell KCD61LUL3T84 NVMe 3.84 TB Ну ладно, пусть не Dell, однако, программный контроллер PERC S140 отказался видеть новые диски. А в iDRAC Bus Protocol оказался PCIe, в то время как прежние два диска — NVMe. Я честно не знаю в чём именно здес
Оглавление

Делаем конфетку из... того что есть.

А есть у нас сервер Dell PowerEdge R640 с операционной системой Ubuntu Server. В сервере стоят два NVMe диска, которые собраны в RAID1 с помощью программного RAID контроллера PERC S140. SATA контроллер был переведён в режим RAID Mode, опция NVMe Settings установлена в RAID. И RAID1 из двух дисков NVMe 3.84 TB KCD5XLUG3T84 прекрасно работал.

SSD Dell EMC NVMe 3.84 TB — KCD5XLUG3T84

Потом место кончилось. Было принято решение приобрести ещё два диска такого же объёма и сделать RAID10 из четырёх NVMe дисков. Диски были куплены, немного другой модели — Dell KCD61LUL3T84. Приступил я к задаче и наткнулся на две проблемы.

Проблема первая

Новые диски оказались не Dell. Опа, вот тебе и раз!

Диск, которого не существует — Dell KCD61LUL3T84 NVMe 3.84 TB

Ну ладно, пусть не Dell, однако, программный контроллер PERC S140 отказался видеть новые диски. А в iDRAC Bus Protocol оказался PCIe, в то время как прежние два диска — NVMe.

-2

Я честно не знаю в чём именно здесь разница между NVMe и PCIe, но подозреваю, что новые диски работают как-то иначе.

— А это хорошо или плохо?
— Это иначе.

Проблема вторая

Программный контроллер PERC S140 в Linux не поддерживает RAID10. Опа, вот тебе и два!

На самом деле я это знал заранее. Единственный вариант в данном случае — разобрать программный контроллер PERC S140 и собрать RAID10 с помощью mdadm. Была, конечно, мысль собрать два RAID1, а потом объединить их в RAID0 с помощью mdadm. Но нафига тогда PERC S140 использовать, если в mdadm можно сразу собрать RAID10 из четырёх дисков? Смысл в этом был бы, если была существенная разница между NVMe и PCIe, но, повторюсь, я не знаю в чём здесь именно разница, да и новые диски в принципе не хотят работать как NVMe, только PCIe, чем бы оно ни было.

Итак, план работ такой:

  1. Разбираем RAID1 в PERC S140.
  2. Отключаем PERC S140.
  3. Собираем RAID10 из четырёх NVMe дисков с помощью mdadm.

Разбираем RAID1 в PERC S140

Загружаемся в BIOS.

-3

F2 при загрузке.

-4

Device Settings.

-5

DELL EMC PERC S140 Configuration Utility.

-6

Controller Management.

-7

Virtual Disk Management.

-8

Select Virtual Disk Operations.

-9

Выбираем RAID1 массив, который нужно удалить. В моём случае он один. Delete Virtual Disk(s).

-10

Подтверждаем удаление галкой Confirm. YES.

-11

RAID1 удалён.

Приведём в порядок диски.

-12

Возвращаемся в Controller Management.

-13

После удаления массива появляются новые опции. Выбираем Convert to Non-RAID Disk.

-14

Выбираем тип интерфейса NVMe.

-15

Отмечаем галкой диски, которые раньше были в RAID1. Apply Changes.

-16

Нам говорят, что данные с дисков удалятся. Подтверждаем конвертацию. Yes.

-17

Готово.

-18

Диски стали Non-RAID.

Отключаем PERC S140

Заходим в главное меню BIOS.

-19

Переходим в раздел System BIOS.

-20

NVMe Settings.

-21

NVMe mode устанавливаем как Non RAID. OK.

-22

Back.

-23

Переходим к SATA Settings.

-24

Embedded SATA меняем с RAID Mode на AHCI Mode.

-25

OK.

-26

Back.

-27

Finish.

-28

Подтверждаем изменения. Yes.

-29

Изменения сохранены. OK.

-30

Finish.

-31

Выходим и перезагружаем сервер. Yes.

-32

Для проверки можно снова зайти в BIOS и убедиться что пункт DELL EMC PERC S140 Configuration Utility отсутствует.

-33

В iDRAC все четыре диска теперь выглядят одинаково, Bus Protocol — PCIe. Уж не знаю, хуже это чем NVMe или точно так же.

-34

Собираем RAID10 из четырёх NVMe дисков с помощью mdadm

Дальше работаем в операционной системе Ubuntu Server. Пакет для работы с nvme — nvme-cli:

apt-get install nvme-cli

Список дисков:

nvme list
-35

Первые два диска в списке новые. Вторые два старые. Проверим, если ли какие-то разделы.

lsblk | grep nvme
-36

Да, на новых дисках есть разделы, даже разбираться не буду, просто всё удалю с помощью fdisk. Чистим первый диск.

fdisk /dev/nvme0n1
d
d
d
w
-37
lsblk | grep nvme
-38

Разделов на первом диске больше нет. Чистим второй диск.

fdisk /dev/nvme1n1
d
d
d
w
-39
lsblk | grep nvme
-40

Разделы на всех дисках удалены.

Я планирую на каждом диске создать один GPT раздел и уже четыре полученные раздела добавить в RAID10 массив. GPT разделы создаю с помощью fdisk, сначала на первом диске.

fdisk /dev/nvme0n1
g
n
w
-41

Повторяю процедуру для всех остальных дисков.

На старых дисках даже предупреждение выводится, что размер диска большой, и раздел DOS нельзя применять для использования всего объёма диска.

-42
lsblk | grep nvme
-43

Теперь у нас имеется четыре раздела, которые мы будем использовать в mdadm:

  • /dev/nvme0n1p1
  • /dev/nvme1n1p1
  • /dev/nvme2n1p1
  • /dev/nvme3n1p1

Проверим, есть ли уже массивы.

cat /proc/mdstat
-44

Массивов нет.

Создаём RAID10 массив /dev/md127 из четырёх разделов на NVMe дисках:

mdadm --create --verbose /dev/md127 -l 10 -n 4 /dev/nvme0n1p1 /dev/nvme1n1p1 /dev/nvme2n1p1 /dev/nvme3n1p1
-45

RAID10 массив создан.

cat /proc/mdstat
-46

Появилось устройство md127, массив в состоянии rsync. 619 минут до завершения.

Детальная информация о массиве:

mdadm --detail /dev/md127
-47

Чтобы после перезагрузки массив так и остался с названием md127, нужно сделать файл mdadm.conf. Создаём директорию:

mkdir /etc/mdadm

Заполняем конфигурационный файл:

echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
-48

Перезагружаю сервер для проверки.

-49

После перезагрузки название массива подцепилось правильное. Только синхронизация остановилась в состоянии resync=PENDING. Пнём:

mdadm --readwrite /dev/md127

После этого синхронизация продолжится.

На этом я закончу ковырять сервер. Задача по созданию RAID10 массива из четырёх NVMe дисков выполнена. Файловую систему потом накатят другие сисадмины.

Дополнительно

Что ещё можно сделать? Например, можно увеличить скорость синхронизации, поскольку у нас быстрые NVMe диски. Синхронизацию мне удавалось ускорить в семь раз.

mdadm — увеличиваем скорость синхронизации массива

Источник:
https://internet-lab.ru/mdadm_raid10_4nvme

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.