Как создать программный raid в Linux

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

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

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

Чтобы получить raid, потребуется аппаратный контроллер. Это классический способ создания массива, однако, существуют и альтернативные варианты. Если отойти в сторону от классики жанра, то можно попытаться создать программный массив. О том, как это сделать, и пойдет речь в данном материале.

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

  • 1RAID 1 или Mirror (зеркало). В данном случае запись информации происходит в синхронном режиме. Используют как минимум два диска. Если один из используемых жестких дисков потеряет работоспособность, то все данные можно без проблем изъять со второго диска, поскольку они являются так называемыми дубликатами. Примечательно, что объем такого массива будет равен объему наименьшего жесткого диска из всех используемых.
  • 0RAID 0. Его также именуют Stripe. Данному виду массива характерны высокая производительность и низкая отказоустойчивость. Чтобы создать подобный массив, потребуется хотя бы 2 жестких диска. Из недостатков можно отметить по очередность записывания данных на оба диска. Кроме того, текущая информация будет храниться блоками, и если хотя бы один диск выйдет из строя, вся информация будет полностью утеряна. Объем массива будет равен сумме двух объемов используемых дисков.
  • 10RAID 10. Представляет собой некую комбинацию двух предыдущих видов массивов. То есть, 0 и 1. Подобный массив включает в себя минимум четыре жестких диска. Меньшее количество использоваться не может. Объем массива будет равен ½ суммы объемов всех используемых дисков. Основным недостатком такого варианта является высокая стоимость. Как минимум из-за того, что потребуется много дисков.

Существуют и другие виды RAID. Например, RAID 5,6. Мы не станем детализировать их особенности, поскольку в данной статье речь пойдет о создании наиболее простого программного массива.

Подготовка

Пошаговое руководство:

  1. Регулирование массивов в ОС Линукс проходит легче при помощи программы mdadm. Ниже будет представлена команда для установки утилиты на компьютер.

Для Debian и Ubuntu.

# apt install mdadm

Centos 7:

# yum install mdadm

Centos 8:

# dnf install mdadm

Установка mdadm на Centos 8e

ВАЖНО! Если не хватает прав, необходимо добавить sudo в начале строки.

  1. Далее пользователю потребуется подготовить выбранные HDD для их объединения в единый виртуальный диск. Чтобы ознакомиться с перечнем используемых системой жестких дисков необходимо задать:

# fdisk -l

fdisk -lВместо того чтобы поспешно создавать массив на HDD (в этом вопросе есть свои подводные камни и сложности), рекомендуется создавать RAID исключительно на разделы дисков. Теперь нужно выбрать диски для объединения. В нашем примере будут приведены следующие два диска по 100 мегабайт:

  • /dev/sdb
  • /dev/sdc

Создание таблицы разделов.

Для накопителей меньше 2 Терабайт:

# parted /dev/sdb mklabel msdos

# parted /dev/sdc mklabel msdos

Для больших накопителей больше 2 терабайт или компьютеров с UEFI:

# parted /dev/sdb mklabel gpt

# parted /dev/sdc mklabel gpt

Далее необходимо заняться созданием разделов на предпочтенных HDD. Создадим раздел размером 95 мегабайт.

# parted /dev/sdb mkpart primary ext4 20 95MG

И

# parted /dev/sdс mkpart primary ext4 20 95MG

Исходя их указанной команды видно, что мы основали раздел объемом 95 Мегабайт. Процесс подготовки жестких дисков к добавлению массива окончен. Самое время преступить к следующему пункту.

Создание

Рассмотрим синтаксис команды для добавления RAID в Linux. Он представлен ниже:

# mdadm --create /dev/наименование_массива --level=режим_работы --raid-devices=количество_дисков список дисков

Рейд 1:

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

Рейд 1

Рейд 0:

# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc

Сохранение конфигурации массива

Уже сейчас собранный массив работает. Однако, для стабильной работы требуется сохранить конфигурацию Рейд.

# mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf

Если каталога нет.

# mdadm --detail --scan --verbose | sudo tee -a /usr/sbin/mdadm/mdadm.conf

Чтобы при загрузке ОС Линукс автоматически монтировался рейд, необходимо отредактировать файл fstab.

# nano /etc/fstab

/dev/md0 /mnt/ ext4 defaults 0 0

Как посмотреть данные о RAID

Для этих целей есть специальная команда. Задайте в терминале следующий текст:

$ cat /proc/mdstat

Основные данные о массиве в Линукс появятся на экране. Если информации недостаточно, потребуется детализировать данные. Это можно сделать следующим способом:

$ sudo mdadm --detail /dev/md0

Удаление массива (при необходимости):

$ sudo mdadm --remove /dev/md0

Принцип основания RAID 1 в Линукс осуществляется тем же способом, только значения 0 нужно заменить на 1. К примеру, названия дисков теперь будут прописаны в виде: /dev/sda1 и так далее.

Заключение

Создание программного массива в Linux – вполне выполнимая задача для новичка. Разумеется, такой Рейд будет отличаться от аппаратного массива своей производительностью, но такой вариант объединения нескольких жестких дисков вполне приемлем для полноценной работы.