Диагностика и восстановление degraded RAID в Linux

06 Oct 2026, 12:58:10
RAID позволяет повысить отказоустойчивость дисковой подсистемы, но выход одного или нескольких накопителей из массива может привести к его переходу в состояние degraded.
Degraded RAID означает, что массив продолжает работать, но один или несколько его компонентов отсутствуют или неисправны. В зависимости от уровня RAID сервер может продолжать работу без потери данных, однако отказ следующего диска может привести к потере массива.
Поэтому при обнаружении degraded RAID важно сначала определить причину, а уже затем выполнять восстановление.

1. Как определить, используется ли программный RAID

В Linux наиболее распространённым вариантом программного RAID является Linux Software RAID (mdadm).
Проверить наличие RAID можно командой:
cat /proc/mdstat
Пример исправного RAID1:
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]

Здесь:
[2/2] [UU]
означает, что оба диска из двух работают.
Пример degraded RAID:
md0 : active raid1 sda1[0]
      1047552 blocks super 1.2 [2/1] [U_]

Здесь:
[2/1] [U_]

означает:
  • [2/1] — в массиве предусмотрено 2 устройства, но активно только 1;
  • [U_] — первый компонент работает, второй отсутствует.

2. Получить подробную информацию о RAID

Для более подробной информации используется:
mdadm --detail /dev/md0
Например:
/dev/md0:
          Version : 1.2
          Raid Device : 2
          Active Devices : 1
          Working Devices : 1
          Failed Devices : 1
          Spare Devices : 0

           State : clean, degraded
Особенно важны параметры: State, Raid Devices, Active Devices, Working Devices, Failed Devices, Spare Devices.
ПолеЧто означает
StateОбщее состояние массива: clean (всё записано, массив в порядке), active (идёт запись), degraded (потеряна избыточность), recovering (идёт восстановление на добавленный диск), resyncing (синхронизация), FAILED (массив потерян). Флаги комбинируются, например clean, degraded.
Raid DevicesСколько устройств должно быть в массиве по его конфигурации. Для RAID1 из двух дисков это 2.
Active DevicesСколько устройств сейчас активно участвуют в массиве и содержат актуальные данные. Если меньше, чем Raid Devices, массив degraded.
Working DevicesСколько устройств исправны (Active плюс запасные диски). Это рабочие компоненты, включая spare.
Failed DevicesСколько устройств помечены сбойными (faulty) и исключены из работы.
Spare DevicesСколько запасных дисков в массиве. Они не хранят данные, пока не понадобятся, и автоматически включаются на место отказавшего.
Если:
State : clean, degraded - массив работает, но находится в degraded-состоянии.

3. Определить, какой диск вышел из RAID

Команда:
mdadm --detail /dev/md0
обычно показывает таблицу устройств:
Number   Major   Minor   RaidDevice State
   0               8          1              0        active sync   /dev/sda1
   1               8         17             1        faulty   /dev/sdb1

В данном случае /dev/sdb1 помечен как: faulty. Это означает, что компонент был исключён из массива. Однако не следует сразу делать вывод, что физический диск неисправен.
Причиной исключения может быть:
  • ошибка чтения/записи;
  • временная проблема с подключением;
  • проблема RAID-контроллера;
  • ошибка кабеля;
  • неисправность диска;
  • сбой питания;
  • ошибка самого массива.

4. Проверить состояние дисков

Сначала необходимо посмотреть, какие накопители вообще присутствуют в системе:
lsblk
Дополнительно:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL
Для SATA/SAS-дисков:
smartctl -a /dev/sda
Для NVMe:
smartctl -a /dev/nvme0
или:
nvme smart-log /dev/nvme0
Особое внимание следует обратить на:
  • Reallocated Sector Count;
  • Current Pending Sector;
  • Offline Uncorrectable;
  • SMART overall-health;
  • ошибки чтения/записи;
  • Media and Data Integrity Errors для NVMe.
Если накопитель показывает явные аппаратные ошибки, повторно добавлять его в RAID без устранения проблемы не следует.

5. Проверить системные сообщения

Причину выхода диска из массива можно попытаться найти в kernel log:
dmesg -T | grep -iE "error|fail|raid|md|ata|scsi|I/O"
Также:
journalctl -k -p warning..alert
Ищите сообщения вроде:
I/O error
ataX: hard resetting link
blk_update_request: I/O error
md/raid1:md0: Disk failure
md0: recovery
Такие сообщения могут помочь определить, был ли причиной сбоя сам накопитель или канал связи с ним (кабель, порт, питание).

6. Проверить состояние RAID в реальном времени

Во время восстановления RAID можно наблюдать за состоянием массива:
watch cat /proc/mdstat
Например:
md0 : active raid1 sda1[0] sdb1[2]
      1047552 blocks [2/1] [U_]
      [=====>...............]  recovery = 25.4%

После завершения восстановления должно появиться:
[UU]
а состояние массива должно измениться на normal/clean.

7. Если диск физически исправен

Иногда диск был исключён из массива из-за временной ошибки, но сам накопитель продолжает работать нормально.
В таком случае сначала необходимо удалить его старую запись из RAID:
mdadm /dev/md0 --remove /dev/sdb1
Затем снова добавить:
mdadm /dev/md0 --add /dev/sdb1
После этого начнётся rebuild.
Проверить:
cat /proc/mdstat
Важно: не следует выполнять --remove и --add вслепую. Перед этим необходимо убедиться, что используется правильный RAID, раздел и диск.

8. Если диск неисправен

Общий порядок замены:
  1. Убедиться, что резервная копия актуальна (до начала rebuild — он нагружает оставшиеся диски).
  2. Определить неисправный диск (массив, раздел, серийный номер).
  3. Проверить SMART и логи.
  4. Если диск ещё числится в массиве: --fail, затем --remove.
  5. Физически заменить диск.
  6. Убедиться, что система видит новый диск.
  7. Скопировать разметку.
  8. Добавить раздел в RAID.
  9. Дождаться rebuild.
  10. Восстановить загрузчик на новом диске.
  11. Проверить RAID и конфигурацию.
mdadm /dev/md0 --fail /dev/sdb1
mdadm /dev/md0 --remove /dev/sdb1

Для hot-swap серверов замена может выполняться без выключения, если это поддерживают сервер и дисковая подсистема. В остальных случаях порядок зависит от оборудования.

9. Подготовить новый диск

После установки нового накопителя сначала убедитесь, что Linux его видит:
lsblkНапример:
sda   1.8T
sdb   1.8T

Перед добавлением нового диска в RAID необходимо убедиться, что он имеет подходящий размер и правильную разметку.
Если RAID был создан из разделов, новый диск обычно необходимо разбить аналогичным образом.
Например:
fdisk -l /dev/sdb
Для GPT-разметки можно использовать:
sgdisk -R=/dev/sdb /dev/sda
GPT (sgdisk): в -R= указывается целевой диск, источник — последним аргументом.
Но эту команду нельзя выполнять без проверки устройств: перепутанные /dev/sda и /dev/sdb могут привести к перезаписи данных.
После копирования таблицы разделов необходимо сгенерировать новые GUID разделов:
sgdisk -G /dev/sdb
MBR (sfdisk):
sfdisk -d /dev/sda | sfdisk /dev/sdb
Конкретные команды зависят от структуры исходного массива и разметки дисков.

10. Добавить новый диск в RAID  и восстановить загрузчик

После подготовки раздела:
mdadm --add /dev/md0 /dev/sdb1
Проверить:
cat /proc/mdstat
В процессе восстановления можно увидеть:
md0 : active raid1 sda1[0] sdb1[2]
      976630336 blocks super 1.2 [2/1] [U_]
      [=====>...............] recovery = 28.5%

После завершения:
[UU]
Массив снова становится полностью работоспособным.
Загрузчик. RAID1 защищает данные, но не загрузчик. Если не поставить его на новый диск, то при отказе второго диска сервер не загрузится.
BIOS/MBR или BIOS/GPT:
grub-install /dev/sdb
UEFI: системный раздел (ESP) обычно не входит в RAID. Скопируйте его содержимое на ESP нового диска и создайте запись в UEFI:

efibootmgr -c -d /dev/sdb -p 1 -L "Linux (disk 2)" -l '\EFI\\shimx64.efi'
Точные команды зависят от дистрибутива и схемы разметки.

11. Что такое rebuild

Rebuild — процесс восстановления избыточности RAID.
При восстановлении RAID система читает данные с оставшихся исправных компонентов массива и записывает необходимые данные на новый диск.
Во время rebuild:
  • возрастает нагрузка на диски;
  • увеличивается I/O;
  • производительность сервера может снизиться;
  • процесс может занимать значительное время.
На больших HDD rebuild может занимать много часов или даже больше суток.
Поэтому не стоит считать длительное восстановление автоматически признаком проблемы.

12. Контроль скорости восстановления

Для Linux Software RAID параметры восстановления можно посмотреть:
cat /proc/sys/dev/raid/speed_limit_min
и:
cat /proc/sys/dev/raid/speed_limit_max
Например:
1000
200000

Эти значения влияют на диапазон скорости rebuild/recovery. 
Минимум можно временно поднять, если нужно ускорить процесс:
echo 50000 > /proc/sys/dev/raid/speed_limit_min
На production-сервере не следует без необходимости устанавливать максимальную скорость восстановления: слишком высокая скорость может существенно увеличить нагрузку на дисковую подсистему и ухудшить работу сервисов.  Изменения через /proc пропадают после перезагрузки (для постоянных значений используйте sysctl).

13. Проверить результат

После завершения rebuild:
cat /proc/mdstat
Ожидается состояние:
[UU]

Также:
mdadm --detail /dev/md0
Например:
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Это означает, что оба компонента RAID работают.

14. Проверить конфигурацию mdadm  и initramfs

После восстановления полезно убедиться, что конфигурация массива сохранена.
В зависимости от дистрибутива информация может находиться в:
Debian/Ubuntu:  /etc/mdadm/mdadm.conf
RHEL/CentOS/Rocky/Alma: /etc/mdadm.conf

Проверить:
cat /etc/mdadm/mdadm.conf
cat  /etc/mdadm.conf

На некоторых системах конфигурация может формироваться или обновляться через:
mdadm --detail --scanСравните вывод с содержимым файла. Если массив добавлен или изменён, обновите конфигурацию (без дублирования строк ARRAY), затем пересоберите initramfs:
# Debian/Ubuntu
update-initramfs -u
# RHEL-семейство
dracut -f
Полная замена диска, как правило, UUID массива не меняет, но после любых изменений конфигурации initramfs обновлять нужно.
Важно, чтобы система могла корректно собрать RAID после перезагрузки.

15. Если RAID снова становится degraded

Если после добавления диска массив снова исключает его:
[U_]
не следует бесконечно выполнять:
mdadm --addНеобходимо найти причину.
Проверить:
dmesg -T | grep -iE "error|fail|raid|md|ata|scsi|I/O"
и SMART:
smartctl -a /dev/sdX
Возможные причины:
  • неисправный диск;
  • проблема SATA/SAS-линии;
  • неисправный backplane;
  • проблема RAID-контроллера;
  • нестабильное питание;
  • ошибки конкретного порта;
  • повторяющиеся I/O errors.
Если новый диск также быстро исключается из RAID, проблема может находиться не в самом диске.

16. Аппаратный RAID — отдельный случай

Не все RAID-массивы управляются через mdadm.
Если сервер использует аппаратный RAID-контроллер, например:
  • Dell PERC;
  • Broadcom/LSI MegaRAID;
  • HPE Smart Array;
то /proc/mdstat может вообще не показывать физическую структуру массива. В таком случае необходимо использовать инструменты соответствующего контроллера.
Например, для некоторых контроллеров:
storcli /c0 /show
или:
perccli /c0 /show
Конкретная команда зависит от производителя и модели контроллера.
Для аппаратного RAID важно различать: RAID logical volume и physical drives.
Операционная система может видеть один логический диск, тогда как внутри RAID-контроллера работают несколько физических накопителей.

17. Что нельзя делать без проверки

При работе с degraded RAID особенно опасны команды, которые изменяют структуру массива.
Не следует выполнять вслепую:
mdadm --create
mdadm --add
mdadm --remove
mdadm --zero-superblock
или:
mkfsна подозрительном устройстве.
Также нельзя ориентироваться только на имя устройства: /dev/sda, /dev/sdb, /dev/sdc.
Порядок имён может измениться после перезагрузки.
Для идентификации дисков лучше использовать:
lsblk -o NAME,SIZE,MODEL,SERIAL
и проверять серийные номера.

Частые состояния RAID

В /proc/mdstat:
Состояние

Значение

[UU]все компоненты RAID1 работают
[U_]один из двух компонентов отсутствует
recoveryвыполняется восстановление
resyncвыполняется синхронизация
reshape изменение геометрии массива
check плановая проверка массива
В mdadm --detail:
Состояние

Значение

cleanмассив в нормальном состоянии
clean, degradedмассив работает, но потерял избыточность
active syncустройство работает и синхронизировано
faultyустройство помечено как неисправное
removedустройство удалено из массива
spareзапасное устройство

Минимальный набор команд для Linux Software RAID

cat /proc/mdstat
mdadm --detail /dev/md0
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL
dmesg -T | grep -iE "error|fail|raid|md|ata|scsi|I/O"
smartctl -a /dev/sdX

После восстановления:
cat /proc/mdstat
mdadm --detail /dev/md0

Идеальный результат для RAID1:
[UU]
и:
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0

Заключение

Диагностика degraded RAID должна начинаться не с немедленной замены диска, а с определения какой компонент вышел из массива и почему.
Для Linux Software RAID основными инструментами являются cat /proc/mdstat, mdadm, lsblk, smartctl, dmesg и journalctl.
Главное правило — не выполнять операции изменения RAID, пока точно не определены массив, устройство и причина отказа. Ошибка при выборе диска или использовании mdadm --create, mkfs или --zero-superblock может привести к потере данных.