Сегодня настраивал очередной сервер от 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 ...
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