7. Установка на программный RAID

Введение

RAID (избыточный массив независимых дисков) — технология виртуализации данных, которая объединяет несколько дисков в логический элемент для повышения надёжности (кроме RAID 0) и увеличения производительности. Чтобы поднять RAID массив вам не понадобится приобретать RAID-контроллер. Такой массив не привязан к железу и в случае необходимости может быть перенесён на другой сервер с ОС Linux.

Важно помнить, что RAID не является заменой резервного копирования и не исключает резервирование данных, так как, в данном случае, защищает только от выхода из строя одного из дисков. Данные же могут потеряны в результате сбоя файловой системы или случайного удаления. К тому же при восстановлении RAID массива есть вероятность выхода из строя второго диска в результате его интенсивного использования.

Для установки Calculate Linux на программный RAID массив, понадобится предварительно разбить один из дисков на разделы, скопировать таблицу разделов на остальные жёсткие диски и создать RAID-массив из одинаковых разделов. В качестве примера создадим RAID 5 массив на трёх дисках /dev/sda, /dev/sdb и /dev/sdc. Вместо RAID 5 вы можете использовать RAID 1 массив состоящий как минимум из двух дисков.

Убедитесь, что вы обновили пакет утилит Calculate до версии 3.5.7.

Создание RAID массива

Для разметки дисков будем использовать классическое разбиение диска принятое в Calculate Linux с выделением разделов подкачки (swap), системного раздела, раздела обновления из образа и раздела с данными включая домашние директории пользователей.

Разметим один из дисков используя утилиту fdisk:

fdisk /dev/sda

# создадим новую таблицу разделов GPT
g <Enter>
# создадим раздел "BIOS boot" 
n <Enter><Enter><Enter> +50M <Enter> t <Enter> 4 <Enter>
# создадим раздел для RAID массива
n <Enter><Enter><Enter><Enter> t <Enter> 2 <Enter> 29 <Enter>
# сохраним изменения и выйдем
w <Enter>

Можно воспользоваться готовым скриптом подставив нужные размеры для разделов подкачки и системного:

DISK=/dev/sda
echo -e "g\nn\n\n\n+50M\nt\n4\nn\n\n\n+n\n\n\n\nt\n5\n29\nw" | fdisk $DISK

Скопируем таблицу разделов на второй диск:

# скопируем таблицу разделов /dev/sda на /dev/sdb
sgdisk -R /dev/sdb /dev/sda
# скопируем таблицу разделов /dev/sda на /dev/sdc
sgdisk -R /dev/sdc /dev/sda
# пересоздадим UUID-таблицы на sdb
sgdisk -G /dev/sdb
# пересоздадим UUID-таблицы на sdc
sgdisk -G /dev/sdc

Соберём диски в RAID 5.

mdadm --create /dev/md0 --level=5 --raid-devices=3 --metadata=1.2 /dev/sda2 /dev/sdb2 /dev/sdc2

Ожидаем завершения сборки массивов:

watch cat /proc/mdstat

Установка системы

Выполним установку на RAID:

cl-install -D /dev/md0

Система установлена! Теперь компьютер можно перезагрузить.

Восстановление

В случае выхода из строя одного из дисков RAID, загрузка системы может происходить намного дольше. Это связано с тем, что загрузчик ждёт когда RAID будет полностью построен.

Для добавления диска в рейд выполним следующие действия:

  • скопируем таблицу разделов на новый диск (с /dev/sda на /dev/sdb)
    sgdisk -R /dev/sdb /dev/sda
    sgdisk -G /dev/sdb
    
  • добавим раздел в массив
    mdadm /dev/md0 -a /dev/sdb2
    
  • ждём когда соберутся массивы
    watch cat /proc/mdstat
    

Примечание: При замене вышедшего из строя диска на диск большего размера, оставшееся место можно так же использовать под новые разделы.

Настройка оповещения

Для того, чтобы своевременно получать информацию о сбоях в работе RAID массива, можно настроить оповещение через электронную почту.

В качестве отправителя почты может быть использован любой SMTP-сервер, например nullmailer, входящий в состав Calculate Linux Desktop. Для его настройки выполним:

emerge --config nullmailer

Затем в файле /etc/nullmailer/remotes укажем SMTP-сервер, через который будут отправляться письма:

smtp.example.org smtp

Запустим демон nullmailer и добавим его в автозапуск:

/etc/init.d/nullmailer start
rc-update add nullmailer

В файле /etc/mdadm.conf укажем почтовый адрес отправителя и получателя:

MAILADDR входящий@почтовый.адрес
MAILFROM исходящий@почтовый.адрес

Отправим тестовое письмо:

mdadm --monitor /dev/md2 --test --oneshot

Постоянные названия RAID дисков

В установленной системе диски будет называться не так как при создании. Для загрузки это не так важно, так как она выполняется по UUID. Если же названия важны, то их можно закрепить в файле /etc/mdadm.conf командой:

mdadm --detail --scan >> /etc/mdadm.conf

Пример /etc/mdadm.conf

ARRAY /dev/md/0 metadata=1.2 name=calculate:0 UUID=70f5926c:34e9e21f:b54b65d6:938a99ab

Также этот файл необходимо помещать в загрузчик ядра, для этого добавим в /etc/dracut.conf.d/mdadm.conf:

mdadmconf="yes" 

И перенастроим загрузку:

cl-setup-boot

Спасибо!