Объединяю три диска в RAID 5 массив. На этот раз более полная версия от установки дисков до создания файловой системы. Операционная система Oracle Linux.
Установка дисков
Диски объёмом 12.8 ТБ:
Samsung SSD MZPLJ12THALA-00007 — NVMe 12.8 ТБ
Устанавливаю в сервер HP ProLiant DL360 Gen9:
HPE ProLiant DL360 Gen9 — обзор
HP Proliant DL360 Gen9 — установка PCIe NVMe диска
В эту модель сервера можно установить максимум три таких диска. В первый слот понадобится полнопрофильная планка, во второй и третий — укороченная, придётся поработать отвёрткой.
Модели дисков можно посмотреть с помощью команды nvme из пакета nvme-cli:
nvme list
После установки дисков и загрузки сервера выполняем:
lsblk | grep nvme
Видим, что диски определились как nvme0n1, nvme2n1, nvme1n1.
Подготовка GPT разделов
Объём NVMe превышает 2 ТБ, поэтому создадим GPT разделы на дисках, а уже потом объединим их в RAID5 массив. Есть разные способы создать GPT раздел:
Linux — создать GPT раздел более 2 терабайт
Создаём GPT раздел на диске nvme0n1. Я использую fdisk:
[root@db02 ~]# fdisk /dev/nvme0n1
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): g
Building a new GPT disklabel (GUID: 30FC3176-F4BE-4888-A503-0684B1F9ECD6)
Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-25000148958, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-25000148958, default 25000148958):
Created partition 1
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Аналогично создаём GPT раздела на дисках nvme2n1, nvme1n1:
fdisk /dev/nvme2n1
fdisk /dev/nvme1n1
Проверяем что получилось:
lsblk | grep nvme
У нас теперь есть три раздела:
- /dev/nvme0n1p1
- /dev/nvme2n1p1
- /dev/nvme1n1p1
mdadm — создаём RAID5
Я использую б/у диски из другого сервера, поэтому не помешает их почистить:
mdadm --zero-superblock /dev/nvme0n1p1
mdadm --zero-superblock /dev/nvme2n1p1
mdadm --zero-superblock /dev/nvme1n1p1
wipefs --all --force /dev/nvme0n1p1
wipefs --all --force /dev/nvme2n1p1
wipefs --all --force /dev/nvme1n1p1
Проверим какие уже есть массивы:
cat /proc/mdstat
Массивов нет, нам же проще. Создавать будем массив md10.
mdadm --create --verbose /dev/md10 --level=5 --raid-devices=3 /dev/nvme0n1p1 /dev/nvme1n1p1 /dev/nvme2n1p1
или
mdadm --create --verbose /dev/md10 -l 5 -n 3 /dev/nvme0n1p1 /dev/nvme2n1p1 /dev/nvme1n1p1
Массив /dev/md10 создан. Проверим состояние.
mdadm --detail /dev/md10
Состояние массива clean, degraded, recovering. Не пугаемся, всё в порядке. Начинается перестроение массива, но даже в таком состоянии диском можно уже пользоваться.
Создаём mdadm.conf
Чтобы после перезагрузки массив так и остался с названием md10, нужно сделать файл mdadm.conf. Создаём директорию:
mkdir /etc/mdadm
Заполняем конфигурационный файл:
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Конфигурационный файл создан.
cat /etc/mdadm/mdadm.conf
Я перезагружаю сервер, чтобы проверить, что имя массива после перезагрузки md10, но это не обязательно.
Создание файловой системы
Создаём файловую систему EXT4:
mkfs.ext4 -m 0 /dev/md10
Определяем идентификатор UUID:
blkid /dev/md10
В ответ получаем:
/dev/md10: UUID="b1c72884-b7f5-4154-bd99-16dbcaf7bf39" TYPE="ext4"
Создаём директорию /u01 для монтирования:
mkdir /u01
В /etc/fstab добавляем опцию монтирования:
UUID=b1c72884-b7f5-4154-bd99-16dbcaf7bf39 /u01 ext4 defaults 0 0
Монтируем:
mount -a
df -h | grep u01
Теперь в системе есть новая директория на 24 ТБ. Директорией можно пользоваться, но осторожно, так как перестроение ещё не закончилось.
Заключение
Время перестроения можно узнать:
cat /proc/mdstat
Осталось 992 минуты.
После перестроения:
cat /proc/mdstat
mdadm --detail /dev/md10
Теперь массив выдержит выход из строя одного диска.