X

Hetzner: Создание Raid массива, из дополнительных дисков в CentOS 8

Сегодня настраивал очередной сервер от Hetzner-а. У него была конфигурация из 2х пар дисков: 1ая пара SSD по 250 Гб и вторая SATA по 2 Гб. Необходимо было сделать два рейд массива первого уровня, для каждой из пар...

Т.к. сервер покупал абсолютно чистый, то при установке системы первый рейд массив создал прямо во время установки. Про то, как это сделать я уже писал тут: Hetzner: установка CentOS 7 с диском на 3 TB , так что не буду повторяться. Единственное, что стоит заметить, это необходимость исключить вторую пару, просто закомментировав строчки второй пары дисков и выбрав правильный уровень рейда в конфигурации:

...
DRIVE1 /dev/sda
DRIVE1 /dev/sda
# DRIVE2 /dev/sdb
# DRIVE3 /dev/sdc
...
SWRAIDLEVEL 1
...
тут суть в том, что из sda и sdb сразу сделаем рейд и установим на него систему. А рейд из sdc и sdd добавим после. Про это и будет речь в статье.
Итак, система установилась и мы сделали все первоочередные дела (обновили пакеты, защитили авторизацию ssh ключом, настроили файрволл и т.д.).
Проверяем какие у нас есть диски
ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2 /dev/sda3
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3
/dev/sdc /dev/sdd

как видим sdc и sdd остались не размечены, поэтому размечаем их.

Сперва выбираем таблицу разметки. Т.к. у меня 2TB диски, я выбираю GPT.

parted /dev/sdc mklabel gpt
parted /dev/sdd mklabel gpt                           

Далее создаем раздел, я использую все доступное место: от 0% до 100%

parted -a optimal -- /dev/sdc mkpart primary 0% 100%
parted -a optimal -- /dev/sdd mkpart primary 0% 100%

теперь помечаем диски, указывая что они используются в рейде

parted /dev/sdc set 1 raid on
parted /dev/sdd set 1 raid on                         

после этого проверяем появились ли они устройствах

ls /dev/sd*

/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3
/dev/sdc  /dev/sdc1
/dev/sdd  /dev/sdd1

видим, что появились sdc1 и sdd1

Проверяем какой рейд id у нас следующий

ls /dev/md*

/dev/md0  /dev/md1  /dev/md2

в моем случае следующий 3, т.е. устройство назову /dev/md3. Создаю рейд

mdadm --create /dev/md3 --auto md --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md3 started.

Тут система написала нам, что создание массива началось. Для того чтобы диски синхронизировались потребуется некоторое время.

Проверить статус можно так

cat /proc/mdstat

Personalities : [raid1] 
md3 : active raid1 sdd1[1] sdc1[0]
      1953381376 blocks super 1.2 [2/2] [UU]
      [==>..................]  resync = 12.2% (238910464/1953381376) finish=188.8min speed=151328K/sec
      bitmap: 14/15 pages [56KB], 65536KB chunk

Если вы видите, что скорость синхронизации маленькая, то можно проверить лимиты скорости и при необходимости увеличить их. Сперва смотрим какие лимиты установлены

cat /proc/sys/dev/raid/speed_limit_min
1000

cat /proc/sys/dev/raid/speed_limit_max
200000

Далее, увеличиваем их вот так

echo 250000 > /proc/sys/dev/raid/speed_limit_min
echo 500000 > /proc/sys/dev/raid/speed_limit_max

После синхронизации возвращаем обратно

echo 1000 > /proc/sys/dev/raid/speed_limit_min
echo 200000 > /proc/sys/dev/raid/speed_limit_max

Если хочется позалипать в процесс синхронизации дисков, можно сделать это так

watch -n 5 cat /proc/mdstat

Пока массив синхронизировался я занялся настройкой файрвола и забыв о рейде перезагрузил сервер. После перезагрузки, статус синхронизации установился в PENDING

cat /proc/mdstat

Personalities : [raid1] 
md127 : active (auto-read-only) raid1 sdd1[1] sdc1[0]
      1953381376 blocks super 1.2 [2/2] [UU]
       resync=PENDING
      bitmap: 6/15 pages [24KB], 65536KB chunk

а номер массива изменился на md127. Продолжить синхронизацию можно так

mdadm --readwrite /dev/md127

а чтобы переименовать в /dev/md3, ищем его UUID

mdadm --detail /dev/md127 | grep UUID

UUID : a96df874:dd05a3a9:96448f9a:019b43fa

добавляем в mdadm.conf

nano /etc/mdadm.conf

и добавляем по аналогии с существующими записями

ARRAY /dev/md/3  metadata=1.2 UUID=a96df874:dd05a3a9:96448f9a:019b43fa name=rescue:3

после этого обновляем имя и перегенериваем initramfs

mdadm --assemble --update=name --name=3 /dev/md3 /dev/sdc1 /dev/sdd1
dracut --force

дожидаемся синхронизации и перезагружаемся. Проверяем, что диск именуется правильно

ls -al /dev/md*

/dev/md0  /dev/md1  /dev/md2  /dev/md3
/dev/md: 0  1  2  3

После того, как массив будет создан форматируем его в ext4.

mkfs.ext4 /dev/md3

Теперь можно попробовать примонтировать массив в ручном режиме

mkdir -p /mnt/disk-2
mount /dev/md3 /mnt/disk-2

Проверяем что все подмонтировано хорошо и мы можем писать в указанную папку

df -h
echo 123 > /mnt/disk-2/test.txt

Для того, чтобы отмонтировать его выполняем

umount /mnt/disk-2

Теперь можно добавить ему автоматическое монтирование при старте системы. Для этого смотрим UUID диска

blkid /dev/md3

/dev/md3: UUID="022f84a8-56f5-430b-b736-7f83844c8de5" TYPE="ext4"

и добавляем его в /etc/fstab

nano /etc/fstab

и внутрь добавляем

/dev/md/3
UUID=022f84a8-56f5-430b-b736-7f83844c8de5 /mnt/disk-2 ext4 defaults 0 0

теперь осталось только перезагрузиться и проверить что диск автоматически смонтирован в /mnt/disk2

Доугие полезные статьи про Raid массивы на хетцнере

Категории: Linux