Главная / Блог / Создание и настройка RAID массива на сервере

Создание и настройка RAID массива на сервере

настройка raid массива

Один жесткий диск – это единственная точка отказа вашего сервера. Когда он выходит из строя (а это вопрос не «если», а «когда»), проект падает: сайт недоступен, база данных повреждена, данные потеряны. RAID-массив решает эту проблему, объединяя несколько дисков так, чтобы выход из строя одного из них не приводил к остановке сервиса.

Важно: RAID – это не резервная копия. Массив защищает от физической поломки диска, но не от случайного удаления файлов, атаки вирусов или ошибки администратора. Резервное копирование обязательно даже при работающем RAID.

Эта статья – пошаговая инструкция для тех, кто арендовал выделенный сервер и настраивает отказоустойчивый дисковый массив удаленно, без физического доступа к железу, через IPMI или KVM-консоль. Вы узнаете, какой уровень RAID выбрать, как подготовить диски, создать массив, настроить мониторинг и что делать при отказе диска – без лишних шагов и типичных ошибок, которые приводят к переустановке сервера в три часа ночи.

Содержание

Краткий ликбез: какой уровень RAID выбрать под ваши задачи

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

Сравнение основных уровней RAID

УровеньМин. дисковОтказоустойчивостьЧтение / записьДоступное местоИдеальная задача
RAID 121 дискВысокое / Среднее50%Системный раздел, ОС
RAID 531 дискВысокое / Низкое(N−1)/NФайловое хранилище (SSD)
RAID 642 дискаВысокое / Низкое(N−2)/NБольшое файловое хранилище
RAID 104До N/2 дисковОчень высокое / Высокое50%Нагруженные БД, высокий I/O
виды raid

Рекомендации по выбору:

  • Системный диск (ОС, небольшие проекты) – RAID 1: минимум дисков, простое восстановление, надежное зеркалирование.
  • Высоконагруженная база данных – RAID 10: максимальная производительность по чтению и записи, устойчивость к отказам нескольких дисков.
  • Файловое хранилище большой емкости – RAID 6: два диска могут выйти из строя одновременно, что критично при больших объемах, где восстановление массива занимает десятки часов.

Важное примечание о RAID 5: при использовании больших HDD (4 ТБ и более) риск возникновения ошибки чтения во время ребилда (URE – Unrecoverable Read Error) крайне высок. Пока массив восстанавливается после потери одного диска, нагрузка на оставшиеся диски резко возрастает – и второй диск может отказать до завершения синхронизации. Результат: полная потеря данных. Для SSD и NVMe, где время ребилда значительно меньше, предпочтителен RAID 10 – он быстрее восстанавливается и не имеет узкого места в виде расчета четности.

Аппаратный или программный RAID: что выбрать на арендованном сервере

Аппаратный RAID реализован на отдельном контроллере (LSI MegaRAID, Dell PERC и др.) – специализированной плате с собственным процессором и памятью. Программный RAID работает средствами операционной системы: в Linux это mdadm, в Windows Server – Storage Spaces.

Сравнение подходов в контексте аренды сервера

КритерийАппаратный RAIDПрограммный RAID (mdadm)
Зависимость от железаВысокая (привязан к конкретному контроллеру)Отсутствует
Миграция при поломке сервераСложная (нужен идентичный контроллер)Простая (подключение дисков к любому серверу с Linux)
Нагрузка на CPUМинимальнаяНезначительная (современные CPU справляются)
Удобство мониторингаЗависит от вендора и утилит/proc/mdstat, стандартные инструменты
ДоступностьТолько на серверах с контроллеромНа любом тарифе с Linux

Рекомендация: в условиях аренды выделенного сервера делайте ставку на программный RAID с mdadm. Причина не только в доступности, но и в переносимости: если сервер выйдет из строя физически, вы снимаете диски, вставляете их в другой сервер с Linux – и массив пересобирается без каких-либо специальных инструментов. Аппаратный контроллер лишает вас этой гибкости: без идентичной модели контроллера данные на дисках становятся нечитаемыми.

Подготовка к настройке: что сделать ДО создания массива

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

Чек-лист подготовки:

1. Резервное копирование. Прежде чем трогать диски, создайте резервную копию всех данных (подробнее о резервном копировании на сервере). Если сервер уже содержит информацию, используйте rsync для копирования на внешнее хранилище или снимок образа диска через dd на отдельный том. Убедитесь, что копия доступна и читается.

2. Доступ через IPMI/iKVM. Обычного SSH недостаточно: при перезагрузке в процессе настройки вы рискуете потерять управление. Откройте веб-интерфейс IPMI вашего провайдера, запустите удаленную консоль (iKVM или HTML5 KVM) и убедитесь, что она работает. Загрузите ISO-образ Ubuntu Server или Debian через функцию виртуального привода (Virtual Media) – он понадобится, если придется восстанавливать систему.

3. Идентификация дисков. Перед работой четко определите, с какими устройствами вы работаете:

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

Проверьте каждый диск на наличие ошибок – включать в массив диск с уже имеющимися проблемами бессмысленно:

smartctl -a /dev/sda

smartctl -a /dev/sdb

Обратите внимание на поля Reallocated_Sector_Ct, Current_Pending_Sector и Offline_Uncorrectable – ненулевые значения сигнализируют о проблемах.

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

Удалите метаданные файловых систем и RAID:

wipefs -a /dev/sda

wipefs -a /dev/sdb

Обнулите начало и конец диска (где хранятся таблицы разделов и суперблоки):

dd if=/dev/zero of=/dev/sda bs=1M count=10

dd if=/dev/zero of=/dev/sda bs=1M seek=$(( $(blockdev --getsz /dev/sda) * 512 / 1024 / 1024 - 10 ))

⚠️ Осторожно: dd необратимо уничтожает данные. Дважды проверьте имя устройства перед выполнением команды.

Затем удалите таблицу разделов через parted:

parted /dev/sda mklabel gpt

parted /dev/sdb mklabel gpt

Пошаговая настройка программного RAID в Linux (mdadm)

Синхронизация RAID-массива в терминале Linux

Убедитесь, что mdadm установлен:

apt update && apt install -y mdadm

Шаг 1: разметка дисков под RAID

Для каждого диска создаем один раздел типа linux-raid, который займет весь диск. Используем parted в неинтерактивном режиме:

for DISK in /dev/sda /dev/sdb; do

  parted --script $DISK \

    mklabel gpt \

    mkpart primary 1MiB 100% \

    set 1 raid on

done

Проверьте результат:

lsblk /dev/sda /dev/sdb

Вы должны увидеть разделы /dev/sda1 и /dev/sdb1. Именно эти разделы будут использоваться для создания массива – не сами диски целиком.

Шаг 2: создание массива (RAID 1 и RAID 10)

RAID 1 из двух дисков:

mdadm --create /dev/md0 \

  --level=1 \

  --raid-devices=2 \

  /dev/sda1 /dev/sdb1

RAID 10 из четырех дисков:

mdadm --create /dev/md0 \

  --level=10 \

  --raid-devices=4 \

  /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

После создания начнется синхронизация (ребилд). Наблюдайте за прогрессом:

watch cat /proc/mdstat

Вывод будет выглядеть примерно так:

Personalities : [raid1] [raid10]

md0 : active raid1 sda1[0] sdb1[1]

      976630272 blocks super 1.2 [2/2] [UU]

      [==========>………]  resync = 54.3% (530614272/976630272) finish=6.2min speed=119584K/sec

Строка [UU] означает, что оба диска активны. После завершения синхронизации индикатор прогресса исчезнет. Не перезагружайте сервер и не создавайте файловую систему до полного завершения ребилда – это не обязательное требование, но снижает риск при внезапном отключении питания в процессе настройки.

Шаг 3: сохранение конфигурации и создание файловой системы

Сохраните конфигурацию массива в системный файл – без этого после перезагрузки массив может не собраться автоматически:

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

Проверьте, что запись добавилась:

cat /etc/mdadm/mdadm.conf

Обновите initramfs, чтобы система могла собрать массив на этапе загрузки – это критически важно, если массив содержит корневой раздел:

update-initramfs -u

Создайте файловую систему на готовом массиве. Выбор зависит от задачи:

  • XFS – предпочтителен для высоконагруженных систем, баз данных, больших файлов, хорошо масштабируется на многоядерных CPU.
  • ext4 – универсальный выбор, проще в обслуживании, лучше изучен, оптимален для системного раздела.

Для XFS:

mkfs.xfs /dev/md0

Для ext4:

mkfs.ext4 /dev/md0

Шаг 4: автоматическое монтирование

Получите UUID массива – использование UUID надежнее, чем имена устройств (/dev/md0), которые могут меняться:

blkid /dev/md0

Создайте точку монтирования и добавьте запись в /etc/fstab:

mkdir -p /mnt/data

Откройте /etc/fstab и добавьте строку:

UUID=*ваш-uuid-здесь*  /mnt/data  xfs  defaults,noatime,nofail  0  0

Опции:

  • noatime – отключает обновление времени доступа при каждом чтении файла, снижая лишние операции записи.
  • nofail – сервер загрузится даже если массив по какой-то причине недоступен, вместо зависания на этапе монтирования.

Проверьте монтирование без перезагрузки:

mount -a

df -h /mnt/data

Краткая инструкция для Windows Server: Storage Spaces

Если ваш выделенный сервер работает под управлением Windows Server, создание отказоустойчивого массива выполняется через механизм Storage Spaces.

Через Server Manager (GUI):

  1. Откройте Server Manager → File and Storage Services → Storage Pools.
  2. Нажмите Tasks → New Storage Pool, задайте имя пула и выберите диски.
  3. После создания пула нажмите New Virtual Disk, выберите пул.
  4. В мастере выберите тип устойчивости: Mirror (аналог RAID 1, минимум 2 диска) или Parity (аналог RAID 5, минимум 3 диска).
  5. Задайте размер виртуального диска, нажмите Create.
  6. Инициализируйте диск, создайте том и отформатируйте в NTFS или ReFS через стандартный мастер.

Через PowerShell:

Создание пула из всех доступных дисков:

$disks = Get-PhysicalDisk -CanPool $true

New-StoragePool -FriendlyName "RAID-Pool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $disks

Создание виртуального диска Mirror (аналог RAID 1):

New-VirtualDisk -StoragePoolFriendlyName "RAID-Pool" -FriendlyName "VirtualDisk1" -ResiliencySettingName Mirror -UseMaximumSize

Инициализация и форматирование:

Get-VirtualDisk -FriendlyName "VirtualDisk1" | Get-Disk | Initialize-Disk -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS

⚠️ Ограничения: Storage Spaces доступен в Windows Server 2012 и новее, однако расширенные возможности (Storage Spaces Direct, трехстороннее зеркалирование) требуют редакций Datacenter или Standard. Кроме того, при физической замене сервера вы снова столкнетесь с привязкой к Windows-окружению. Для сложных конфигураций и максимальной переносимости Linux с mdadm остается более предсказуемым вариантом.

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

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

Как настроить оповещения на email в mdadm

Откройте файл конфигурации и добавьте адрес для уведомлений:

nano /etc/mdadm/mdadm.conf

Добавьте или измените строку:

MAILADDR admin@yourdomain.com

Убедитесь, что в системе настроен MTA (например, postfix или msmtp для отправки через внешний SMTP). Примените изменения и запустите мониторинг:

systemctl enable mdmonitor

systemctl start mdmonitor

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

mdadm --monitor --test /dev/md0

Если письмо пришло – мониторинг настроен корректно.

Регулярная проверка состояния и SMART

Быстрая проверка состояния всех массивов:

cat /proc/mdstat

Детальная информация по конкретному массиву:

mdadm --detail /dev/md0

Обратите внимание на строку State: значения clean и active – норма; degraded означает, что один или несколько дисков выбыли.

Для автоматического мониторинга здоровья дисков настройте smartd. Откройте /etc/smartd.conf и добавьте строки для каждого диска:

/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m admin@yourdomain.com

/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m admin@yourdomain.com

Это запускает короткий тест SMART ежедневно и расширенный – еженедельно. Запустите и включите в автозагрузку:

systemctl enable smartd && systemctl start smartd

Что делать, если диск вышел из строя: замена по шагам

Допустим, mdadm --detail /dev/md0 показал, что /dev/sdb1 имеет статус faulty. Последовательность действий:

1. Пометить диск как неисправный (если он еще не помечен автоматически):

mdadm /dev/md0 --fail /dev/sdb1

Схема замены диска в RAID-массиве

2. Удалить диск из массива:

mdadm /dev/md0 --remove /dev/sdb1

3. После физической замены диска (через запрос провайдеру) – разметить новый диск аналогично исходному (шаг 1 основной инструкции) и добавить в массив:

mdadm /dev/md0 --add /dev/sdb1

Массив автоматически начнет синхронизацию (ребилд). Наблюдайте за процессом:

watch cat /proc/mdstat

Во время ребилда сервер продолжает работать в штатном режиме – данные доступны.

Типичные ошибки при настройке RAID (и как их избежать)

  • Создание массива на дисках с данными без резервной копии. mdadm --create необратимо перезаписывает начало диска. Даже если кажется, что данные не нужны – сначала сделайте бэкап.
  • Использование разнородных дисков. Диски разного объема в массиве работают по размеру наименьшего. Диски с разной скоростью снижают производительность всего массива до уровня медленного. Используйте одинаковые модели, купленные в одной партии – по возможности.
  • Забыли сохранить mdadm.conf. Это самая распространенная ошибка. Без записи в /etc/mdadm/mdadm.conf и обновления initramfs массив при перезагрузке может не собраться автоматически или получить другое имя устройства (/dev/md127 вместо /dev/md0).
  • Включение кэша записи на аппаратном контроллере без батарейки (BBU). Кэш записи резко ускоряет операции, но при внезапном отключении питания незаписанные данные теряются, что может привести к повреждению файловой системы. Включайте write cache только при наличии исправной Battery Backup Unit – или используйте режим write-through.

Заключение

Теперь вы не просто создали RAID-массив – вы сделали это осознанно: выбрали уровень под конкретную задачу, подготовили диски, корректно сохранили конфигурацию и настроили мониторинг. Это значит, что при отказе диска вы получите уведомление, поймете что делать и восстановите массив без паники. Продолжайте изучать серверное администрирование – следующие шаги: настройка автоматических резервных копий и мониторинг нагрузки сервера.

Часто задаваемые вопросы

Можно ли создать RAID из дисков разного объема?

Технически – да, mdadm это позволяет. На практике массив будет работать по емкости наименьшего диска: в RAID 1 из 1 ТБ и 2 ТБ вы получите 1 ТБ зеркала. Оставшееся место на большем диске останется неиспользованным.

Нужно ли ждать окончания синхронизации перед использованием массива?

Нет, массив доступен для записи сразу после создания. Но завершить ребилд до перезагрузки – разумная практика, особенно на критичных системах.

Что будет, если пропадет питание во время синхронизации?

mdadm использует суперблоки с информацией о состоянии. После восстановления питания синхронизация продолжится с того места, где остановилась – данные не пострадают.

Можно ли добавить диск в существующий RAID 1 и расширить его до RAID 5?

Напрямую – нет. Изменение уровня RAID требует пересоздания массива. Правильный путь: создать новый массив нужного уровня, перенести данные, пересоздать старый.

Как проверить, что массив действительно пересоберется после перезагрузки?

Выполните reboot и после загрузки проверьте cat /proc/mdstat и mdadm —detail /dev/md0. Если массив в состоянии clean – все настроено правильно.

RAID снижает производительность сервера?

Программный RAID (mdadm) создает незначительную нагрузку на CPU – на современных процессорах она практически незаметна. RAID 10 при этом дает выигрыш в скорости чтения за счет параллельного обращения к дискам.

loader
Продолжая пользоваться нашим веб-сайтом, Вы соглашаетесь с тем, что дата-центр Contell может использовать файлы "cookie" в целях хранения ваших учетных данных, параметров и предпочтений, оптимизации работы веб-сайта.