1 год Нам 1 год: −20% на все серверы по коду До конца 14 ч Заказать

PowerDedi

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

Мониторинг и восстановление программного RAID

Проверяйте состояние mdadm, получайте оповещения, безопасно заменяйте вышедший из строя диск и рассчитывайте пулы хранения RAID 6, RAID 10 или RAIDZ2.

Обновлено 25 сентября 2026 г. · 4 мин чтения · 6 разделов

На этой странице 6 разделов
  1. Разметка по умолчанию
  2. Проверка состояния массива
  3. Настройка оповещений
  4. Замена вышедшего из строя диска
  5. Схемы массивов для серверов хранения
  6. Проверка износа дисков и данных SMART

В наших установках Linux используется программный RAID на mdadm: по умолчанию два одинаковых диска объединяются в зеркало (RAID 1). В этом руководстве описаны проверка состояния, оповещения, замена дисков и схемы массивов для серверов хранения. Вам понадобится root-доступ. В примерах используются имена NVMe-устройств вида nvme0n1; диски SATA и SAS отображаются как sda, sdb и т. д.

Разметка по умолчанию

Оба диска получают одинаковую таблицу разделов, и каждая пара разделов образует массив RAID 1, например md0 для /boot и md1 для /. Точный набор зависит от операционной системы и режима загрузки. Чтобы посмотреть свою разметку:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT

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

cat /proc/mdstat
sudo mdadm --detail /dev/md1
md1 : active raid1 nvme1n1p3[1] nvme0n1p3[0]
      998848512 blocks super 1.2 [2/2] [UU]

[UU] означает, что оба компонента массива активны; [U_] — что массив деградировал и работает на одном диске. В выводе mdadm --detail проверьте строку State и поищите компоненты с пометкой faulty или removed.

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

Деградировавшее зеркало продолжает работать, поэтому без оповещений вы можете заметить проблему, только когда откажет второй диск. Укажите mdadm, куда отправлять уведомления, в /etc/mdadm/mdadm.conf (Debian, Ubuntu) или /etc/mdadm.conf (AlmaLinux, Rocky Linux):

MAILADDR root
PROGRAM /usr/local/sbin/raid-alert

Для оповещений на адрес root нужен работающий почтовый агент (MTA), например Postfix с локальной доставкой или пересылкой через вашего почтового провайдера. Необязательная строка PROGRAM запускает ваш скрипт, передавая ему в аргументах название события и имя устройства, — например, чтобы отправить сообщение в чат через вебхук. Перезапустите мониторинг и отправьте тестовое оповещение по каждому массиву:

sudo systemctl restart mdmonitor
sudo mdadm --monitor --scan --oneshot --test

Замена вышедшего из строя диска

  1. Определите вышедший из строя диск и запишите серийные номера обоих дисков:
    cat /proc/mdstat
    lsblk -o NAME,SIZE,MODEL,SERIAL
    sudo smartctl -i /dev/nvme1n1
  2. Пометьте разделы отказавшего диска как сбойные (faulty) и удалите их из всех массивов. Пропустите этот шаг, если диск пропал из системы и mdadm уже показывает его как удалённый (removed).
    sudo mdadm /dev/md0 --fail /dev/nvme1n1p2 --remove /dev/nvme1n1p2
    sudo mdadm /dev/md1 --fail /dev/nvme1n1p3 --remove /dev/nvme1n1p3
  3. Откройте тикет в поддержку и укажите серийный номер диска, который нужно заменить, серийный номер диска, который нужно оставить, а также можно ли выключить сервер на время замены. Замена начинается в течение часа после подтверждения неисправности; см. SLA.
  4. После замены найдите новый пустой диск с помощью lsblk. Скопируйте на него таблицу разделов исправного диска, а затем присвойте копии уникальные GUID:
    sudo sgdisk --replicate=/dev/nvme1n1 /dev/nvme0n1
    sudo sgdisk --randomize-guids /dev/nvme1n1
  5. Добавьте новые разделы в массивы и следите за перестроением:
    sudo mdadm /dev/md0 --add /dev/nvme1n1p2
    sudo mdadm /dev/md1 --add /dev/nvme1n1p3
    watch -n 10 cat /proc/mdstat
  6. Сделайте новый диск загрузочным. В системах с BIOS выполните sudo grub-install /dev/nvme1n1 (в AlmaLinux и Rocky Linux — grub2-install). В системах с UEFI, где раздел EFI не входит в массив, скопируйте его с исправного диска командой sudo dd if=/dev/nvme0n1p1 of=/dev/nvme1n1p1 bs=4M.

В sgdisk --replicate=TARGET SOURCE перезаписывается диск, указанный после знака равенства. Перепутаете их местами — и сотрёте таблицу разделов единственного исправного диска. Так же внимательно относитесь к if= (источник) и of= (приёмник) в dd.

По умолчанию перестроение идёт со скоростью примерно до 200 МБ/с — это ограничение задано в /proc/sys/dev/raid/speed_limit_max. Получается примерно 1,4 часа на терабайт и больше суток для диска на 22 ТБ. На сервере с NVMe ограничение можно поднять командой sudo sysctl -w dev.raid.speed_limit_max=2000000.

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

Серверы хранения сочетают 4, 12 или 24 жёстких диска по 22 ТБ с двумя накопителями NVMe. Держите операционную систему на NVMe-зеркале, а массив для данных собирайте из жёстких дисков. Поскольку перестроение диска на 22 ТБ занимает больше суток, используйте двойную чётность (RAID 6 или ZFS RAIDZ2) или зеркала, но не RAID 5.

ДискиКонфигурацияПолезный объёмВыдерживает
4 × 22 ТБRAID 10 или два зеркала ZFS44 ТБ (40 ТиБ)Один диск в каждой паре
4 × 22 ТБRAID 6 или RAIDZ244 ТБ (40 ТиБ)Любые два диска
12 × 22 ТБRAID 6 или RAIDZ2220 ТБ (200 ТиБ)Любые два диска
12 × 22 ТБRAID 10132 ТБ (120 ТиБ)Один диск в каждой паре
24 × 22 ТБДве группы RAID 6 или RAIDZ2 по 12 дисков440 ТБ (400 ТиБ)Два диска в каждой группе
24 × 22 ТБТри группы RAIDZ2 по 8 дисков396 ТБ (360 ТиБ)Два диска в каждой группе

Объёмы указаны без учёта накладных расходов файловой системы, а такие утилиты, как df, показывают значения в ТиБ. RAID 10 даёт лучшую производительность случайного ввода-вывода, а RAID 6 и RAIDZ2 переживают отказ любых двух дисков и, начиная с 12 дисков, дают больше места. Больше групп меньшей ширины — это более быстрое перестроение и более высокая производительность ценой части ёмкости. Не заполняйте пулы ZFS больше чем примерно на 80%.

В ZFS свободные разделы на NVMe могут также ускорить пул; предусмотрите их при установке операционной системы:

  • Устройство cache (L2ARC) расширяет кэш чтения за пределы ОЗУ. Избыточность ему не нужна: если оно откажет, пул продолжит работу.
  • Vdev типа special хранит метаданные и, при желании, мелкие файлы на флеш-памяти, что ускоряет обход каталогов и работу с мелкими файлами. Его потеря означает потерю всего пула. При двух накопителях NVMe он может быть только зеркалом из двух устройств, которое переживает один отказ, тогда как RAIDZ2 — два, поэтому zpool отказывается принимать такое несоответствие, если не добавить -f. Используйте его, только если этот компромисс вас устраивает.

Проверка износа дисков и данных SMART

sudo smartctl -a /dev/nvme0
sudo smartctl -H -A /dev/sda

У накопителей NVMe следите за Percentage Used — долей израсходованного заявленного ресурса записи (100% не означает, что накопитель вышел из строя), а также за Available Spare, Media and Data Integrity Errors и Critical Warning, значение которого должно быть 0x00. На жёстких дисках рост значений Reallocated_Sector_Ct, Current_Pending_Sector или Offline_Uncorrectable означает, что диск нужно заменить до того, как он откажет. Демон smartd из пакета smartmontools постоянно проверяет эти значения и может присылать вам уведомления по электронной почте; в AlmaLinux и Rocky Linux включите его командой sudo systemctl enable --now smartd.

Похожие руководства

Все руководства