Найти в Дзене
Записки сисадмина

RAID массивы. Разбираем, как это работает в Linux. mdadm.

Нужно больше золота, милорд. А вместе с золотом нужно больше дискового пространства. Мы тут недавно разговаривали про устройство дисков, но не затронули, что же делать, если выбранного диска катастрофически не хватает. Если у вас дома стоит компьютер с SSD на 1ТБ, вы, скорее всего, не познаете боли от нехватки места (если только вы не геймер, или контент мэйкер). А если вдруг вам в компанию нужен сервер samba, cdn, либо у вас сервер со здоровенной СУБД? Предположим, вы рассчитали, что вам нужно 10ТБ дискового пространства. Окей, покупаем себе диск на 10ТБ и радуемся жизни. Или нет? А что будем делать в случае внезапного отказа этого диска? Ну бывает ведь такое, ничто не вечно. А на диске важные данные были. Время восстановления 10ТБ из бэкапа представили? А ведь все это время наша система будет простаивать. Если это cdn сервер - на нашем сайте не будет картинок, если samba - наши пользователи потеряют доступ к своим файлам. В данном случае нам на помощь приходит технология RAID, позвол
Оглавление

Нужно больше золота, милорд. А вместе с золотом нужно больше дискового пространства. Мы тут недавно разговаривали про устройство дисков, но не затронули, что же делать, если выбранного диска катастрофически не хватает. Если у вас дома стоит компьютер с SSD на 1ТБ, вы, скорее всего, не познаете боли от нехватки места (если только вы не геймер, или контент мэйкер). А если вдруг вам в компанию нужен сервер samba, cdn, либо у вас сервер со здоровенной СУБД?

Предположим, вы рассчитали, что вам нужно 10ТБ дискового пространства. Окей, покупаем себе диск на 10ТБ и радуемся жизни. Или нет?

А что будем делать в случае внезапного отказа этого диска? Ну бывает ведь такое, ничто не вечно. А на диске важные данные были.

Время восстановления 10ТБ из бэкапа представили? А ведь все это время наша система будет простаивать. Если это cdn сервер - на нашем сайте не будет картинок, если samba - наши пользователи потеряют доступ к своим файлам.

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

RAID (Redundant Array of Independent Disks) — избыточный массив независимых дисков. RAID объединяет несколько физических накопителей в единую логическую структуру, обеспечивая отказоустойчивость, повышение производительности или их комбинацию.

В этой статье мы рассмотрим основные уровни RAID, их особенности и сферы применения.

Уровни RAID

RAID 0 (Страйпинг)

  • Принцип работы: Данные разбиваются на блоки и распределяются между дисками. При записи чередует блоки (часть пишет на один диск, часть - на другой). Если использовать диски разного размера, при создании будет опираться на размер меньшего (например, при сборке RAID0 из диска на 120gb и диска на 250gb, размер рейда будет 240gb).
  • Преимущества: Максимальная производительность (чтение/запись ускоряются за счет параллельной работы дисков).
  • Недостатки: Нет избыточности — выход одного диска приводит к потере всех данных. Считается самым ненадежным рейдом из всех.
  • Минимальное количество дисков: 2.
  • Сфера применения: Обработка временных данных (рендеринг видео, кэширование), где важна скорость, а не надежность.

RAID 1 (Зеркалирование)

  • Принцип работы: Данные дублируются на каждый диск в массиве.
  • Преимущества: Высокая отказоустойчивость — при отказе одного диска данные сохраняются на другом. Также, может повыситься скорость чтения, если приложение умеет читать с двух разных дисков асинхронно.
  • Недостатки: Низкая эффективность использования пространства (50%).
  • Минимальное количество дисков: 2.
  • Сфера применения: Хранение критически важных данных (финансовые записи, базы данных).

RAID 5 (Чередование с распределенной четностью)

  • Принцип работы: Данные и контрольные суммы (четность) распределяются по всем дискам. При отказе одного накопителя информация восстанавливается через оставшиеся данные и четность.
  • Преимущества: Баланс между производительностью, надежностью и эффективностью использования места.
  • Недостатки: Снижение скорости записи из-за расчета четности. Риск потери данных при выходе двух дисков одновременно. Советую выбирать разные диски для сборки данного типа (разные производители, разные месяцы выпуска), так как вероятность одновременного отказа нескольких дисков из одной партии велика.
  • Минимальное количество дисков: 3.
  • Сфера применения: Файловые серверы, веб-хостинги.

RAID 10 (1+0: Зеркалирование + Страйпинг)

  • Принцип работы: Диски объединяются в группы RAID 1, которые затем формируют массив RAID 0.
  • Преимущества: Высокая производительность и отказоустойчивость — массив выдерживает отказ нескольких дисков, если они находятся в разных зеркалах. Данные сохранятся даже в случае потери 50% всех дисков (при условии, что каждый из сломанных дисков будет в разных RAID 1).
  • Недостатки: Высокая стоимость (требуется минимум 4 диска, эффективность использования места — 50%).
  • Минимальное количество дисков: 4.
  • Сфера применения: Высоконагруженные базы данных, корпоративные системы.

Реализации RAID: Аппаратная, программная и гибридная

С уровнями RAID все понятно, а как технология реализуется на практике?

  1. Аппаратный RAID использует специализированный контроллер, который управляет массивом. Преимущества: высокая производительность, минимальная нагрузка на процессор. Недостатки: дороговизна и зависимость от конкретного оборудования. Зачастую, при поломке контроллера приходится искать не только такой же по модели, но и схожий по прошивке.
  2. Программный RAID настраивается через ОС (например, Windows Storage Spaces или Linux mdadm). Плюсы: низкая стоимость, и большая гибкость в управлении. Минусы: нагрузка на CPU и меньшая скорость.
  3. Гибридный RAID сочетает элементы обоих подходов, например, использует драйверы для оптимизации. По сути - это интегрированный в материнскую плату аппаратный RAID контроллер. Массив собирается напрямую из UEFI. Недостатки те же, что и у аппаратного RAID.

Выбор реализации зависит от бюджета, требований к производительности и масштаба задачи.

RAID в Linux. mdadm.

В этой статье будем рассматривать только программную реализацию RAID, так как это - единственный способ создать RAID из операционной системы. Все остальные способы реализуются до загрузки ОС, из UEFI.

-2

В Linux за все RAID массивы отвечает утилита mdadm (Multiple Devices Admin).

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

  • Устанавливаем mdadm:

В CentOS, REdhat:

yum install mdadm

В Debian, Ubuntu:

apt install mdadm
  • Проверяем наши диски в системе:
lsblk

Важно понимать: при создании RAID массива, все данные на дисках, которые будут в нем использоваться, удалятся.

  • Создадим RAID массив:

Любой уровень RAID массива создается по шаблону

mdadm --create [имя RAID] --level=[уровень] --raid-devices=[количество дисков] [список дисков через пробел]

Например:

RAID 0

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

RAID 1

mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda /dev/sdb

RAID 5

mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

RAID 10

mdadm --create /dev/md10 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Создание массива займет какое-то время, в зависимости от уровня самого массива, типа и размера дисков. Система выведет вам сообщение, когда все будет готово.

  • Проверяем состояние массива:

Выводим список всех RAID массивов в системе:

-3
cat /proc/mdstat

Проверяем состояние конкретного массива:

-4
mdadm --detail /dev/md127

Видим "State: clean", значит, RAID собран и корректно работает, все диски в нем в состоянии "active sync".

После этого можем создавать на нашем массиве файловую систему и монтировать его.

Управление RAID массивом

  • Мы всегда можем перестраховаться и добавить Spare Disk в наш массив:
mdadm --add /dev/md127 /dev/sdс

В случае выхода из строя /dev/sda, или /dev/sdb, наш новый диск автоматически включится в массив и система запустит синхронизацию. Вышедший из строя диск поместится в состояние "failed", но из массива сам не исключится.

  • Пометить вручную диск как неисправный:
mdadm --manage /dev/md127 --fail /dev/sda

  • Удалить диск из массива:
mdadm --manage /dev/md127 --remove /dev/sda

  • Добавить новый диск в массив:
mdadm --manage /dev/md0 --add /dev/sde

  • Удалить "отвалившиеся" диски из массива:

Если у вас физически умер какой-то из дисков и его контроллер перестал отвечать, либо диск просто вытащили из сервера, он поместится в состояние "detached". Удалить такие диски из массива можно командой:

mdadm --manage /dev/md127 --remove detached

  • Удалить RAID массив:
mdadm -S /dev/md127

Важно: даже если вы расформируете массив, данные о нем все еще останутся на дисках, которые были в массиве. Проверить это можно командой:

-5
mdadm --examine /dev/sda

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

mdadm --zero-superblock /dev/sda /dev/sdb

Это удалит упоминание о RAID с обоих дисков.

Заключение

Утилита mdadm предоставляет полный контроль над программными RAID-массивами в Linux. С её помощью можно создавать высокопроизводительные или отказоустойчивые хранилища, адаптированные под конкретные задачи. Однако помните: даже RAID 10 не гарантирует 100% сохранности данных — регулярное резервное копирование остается обязательным.