skip to content
Архитектура в курилке

Программный RAID на Ubuntu server

/ чтиво на 2 минуты

Содержание

Проблематика

В целом это не тянет на полноценный гайд, а скорее просто набор команд, без особого объяснения, которые я решил сохранить на будущее. Оно заработало у меня, но не факт, что взлетит у Вас, но это можно использовать как неплохую отправную точку.

Работаем с RAID-ами в терминале

Для настройки воспользуемся консольной утилитой mdadm

Устанавливаем по классике:

Terminal window
sudo apt-get update
sudo apt-get install -y mdadm

Проверяем, что все работает нормально:

Terminal window
mdadm --version

Чистим существующие RAID-ы

Информацию об активных массивах можно в файле /proc/mdstat

Terminal window
cat /proc/mdstat

Если массив смонтирован, то

Terminal window
sudo umount /dev/md0

Удалить существующий размонтированный массив можно командой:

Terminal window
sudo mdadm --stop /dev/md0

В идеале еще зачистить superblock-и всех дисков, которые были задействованы в массиве:

Terminal window
sudo mdadm --zero-superblock /dev/sda
sudo mdadm --zero-superblock /dev/sdb

После чего обновляем initramfs, чтобы система после перезагрузки не пыталась заново поднять несуществующие массивы:

Terminal window
sudo update-initramfs -u

Готово! Можно заново создавать!

Создаем новый массив

В целом создание любого массива с mdadm выглядит так:

Terminal window
sudo mdadm --create --verbose <имя массива> --level=<уровень> --raid-devices=<кол-во дисков> <путь/к/диску/1> <путь/к/диску/2> ... <путь/к/диску/n>

Рассмотрим на примере RAID 10 - он и быстрый, и в целом отказоустойчивый. В целом команды легко подменяются и для любого другого типа массивов.

Находим необходимые нам диски:

Terminal window
lsblk

В данном случае, рассмотрим, что разворачиваем на дисках: /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd:

Terminal window
sudo mdadm --create --verbose --level=10 --raid-devices=4 /dev/sd[a-d]

Готово! Можно проверить наличие RAID-а через /proc/mdstat:

Terminal window
cat /proc/mdstat

Или через сам mdadm:

Terminal window
sudo mdadm --detail /dev/md0

Монтируем готовый RAID

После создания RAID-а необходимо создать на нем файловую систему (в данном случае ext4, но может быть и любая другая совместимая):

Terminal window
sudo mkfs.ext4 -F /dev/md0

Ну и теперь просто монтируем:

Terminal window
sudo mkdir -p /mnt/md0
sudo mount /dev/md0 /mnt/md0

Проверяем, что оно взлетело и новое место доступно и видно:

Terminal window
df -h

Сохраняем массивы

Для того, чтобы после перезагрузки все массивы заново собирались, информация о них должна быть в /etc/mdadm/mdadm.conf.

Получить информацию о существующих массивах и записать их в этот файл можно одной строчкой:

Terminal window
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Далее нужно обновить initramfs, чтобы массив был доступен на ранних этапах загрузки системы (вроде не сильно обяхательный параметр, но лучше запилить):

Terminal window
sudo update-initramfs -u

Теперь лучше добавить запись о монтировании массива в /etc/fstab:

Terminal window
echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Вы великолепны! Массивы настроен и будет работать после всех перезагрузок.

Заключение

В целом в статье описано все необходимое для того, чтобы развернуть на скорую руку RAID 10 на Ubuntu Server.

Может сюда же залетят настройки и примеры других массивов, может их сравнения - кто знает.