Гид по технологиям

Замена сбойного диска в RAID1 на Linux (software RAID)

• 5 min read • Linux • Обновлено 20 Nov 2025
Замена сбойного диска в RAID1 на Linux
Замена сбойного диска в RAID1 на Linux

Кому полезно

  • Системным администраторам и инженерам DevOps, которые поддерживают серверы с программными RAID1.
  • Любому, кто хочет заменить физический диск без потери данных.

Основные шаги (коротко)

  1. Определить, что диск сбойный (логи, /proc/mdstat).
  2. Пометить разделы сбойного диска как failed и удалить их из md-томов.
  3. Выключить сервер и физически заменить диск.
  4. Скопировать таблицу разделов с рабочего диска на новый диск (sgdisk).
  5. Добавить новые разделы в массивы md и дождаться синхронизации.

1 Предисловие

В примере используются два диска: /dev/sda и /dev/sdb. Разделы /dev/sda1 и /dev/sdb1 образуют RAID1 /dev/md0. Разделы /dev/sda2 и /dev/sdb2 образуют RAID1 /dev/md1. /dev/sdb вышел из строя — мы его заменяем.

2 Как понять, что диск сбойный

Ищите сообщения об ошибках в /var/log/messages или /var/log/syslog. Также выполните:

cat /proc/mdstat

Если массив деградирован, вместо [UU] вы увидите [U_].

Важно: проверяйте SMART-данные (smartctl) на подозрительных дисках, если у вас есть доступ к ним.

3 Удаление сбойного диска из массива

Сначала отметьте разделы сбойного диска как failed, затем удалите их из соответствующих md-томов.

Пример: пометить /dev/sdb1 как failed в /dev/md0

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

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

cat /proc/mdstat

Ожидаемый выход (пример):

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: 

Удаляем /dev/sdb1 из /dev/md0:

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

Повторите те же шаги для /dev/sdb2 (часть /dev/md1):

mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md1 --remove /dev/sdb2

После удаления всех частей выключите систему:

shutdown -h now

Замените физический диск на новый (он должен быть не меньше по ёмкости; даже небольшое уменьшение может помешать восстановлению).

4 Добавление нового диска

После установки нового диска загрузите систему.

  1. Установите gdisk, если он не установлен:
apt-get install gdisk

Для RHEL/CentOS возможно:

yum install gdisk

Для openSUSE:

yast install gdisk
  1. (Опционально) Создайте резервные копии таблиц разделов перед внесением изменений:
sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb
  1. Скопируйте схему разделов с /dev/sda на /dev/sdb:
sgdisk -R /dev/sdb /dev/sda
  1. Сгенерируйте новый GUID для копии, чтобы избежать одинаковых идентификаторов:
sgdisk -G /dev/sdb
  1. Проверка:
sgdisk -p /dev/sda
sgdisk -p /dev/sdb
  1. Добавьте разделы нового диска в массивы md:
mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2

Пример вывода для добавления:

server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1
  1. Наблюдайте за синхронизацией:
cat /proc/mdstat

Во время синхронизации вы увидите прогресс. По окончании оба массива должны показывать [UU].

server1:~# cat /proc/mdstat
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: 

Поздравляем — диск успешно заменён.

Советы по безопасности и совместимости

  • Новый диск должен иметь ≥ объёма старого диска. Если диск чуть меньше — восстановление может не пройти.
  • Если используется LVM поверх md, убедитесь, что PV/PV UUID не конфликтуют.
  • Проверьте GRUB/загрузочную конфигурацию, если диск, заменённый, содержал загрузочную запись.

Когда этот способ не сработает

  • Если таблица разделов /dev/sda нестандартная (скриптовые метки, специфичные UUID), простой копии может быть недостаточно.
  • Если после физической поломки диск оставляет «битые» сектора и mdadm не может корректно пометить устройство как removed — может потребоваться принудительное удаление и ручная правка метаданных.
  • На оборудовании с аппаратным RAID контроллером процедуры отличаются; не применяйте mdadm-инструкции к hardware RAID.

Альтернативные подходы

  • sfdisk или parted можно использовать для копирования таблиц MBR/parted. Для GPT предпочтительнее sgdisk.
  • Клонирование разделов dd или ddrescue — вариант при необходимости точной побитовой копии, но требует аккуратности и времени.
  • Восстановление из резервных копий: если есть бекапы, можно пересоздать массив и восстановить данные.

Ментальные модели и эвристики

  • Модель «потерянный узел» — RAID1 выдерживает потерю одного члена; действуйте быстро, чтобы не оставаться в деградированном состоянии долго.
  • Всегда иметь резервную копию таблицы разделов перед изменением: это минимальный страховочный шаг.

Пошаговый чеклист для инженера (SOP)

  • Проверить логи и /proc/mdstat
  • Пометить разделы сбойного диска как failed
  • Удалить разделы из md-томов
  • Выключить и физически заменить диск
  • Скопировать таблицу разделов sgdisk -R
  • Сгенерировать новый GUID для диска sgdisk -G
  • Добавить разделы в mdadm
  • Мониторить /proc/mdstat до [UU]
  • Проверить целостность данных и сервисов

Критерии приёмки

  • Оба массива md возвращаются в состояние [UU].
  • Все сервисы, использующие массивы, работают нормально.
  • Ведутся мониторинговые метрики (SMART, mdadm alerts) и нет новых ошибок в логах.

Команды-справочник

  • Просмотр состояния RAID: cat /proc/mdstat
  • Пометить как failed: mdadm –manage /dev/mdX –fail /dev/sdYn
  • Удалить из массива: mdadm –manage /dev/mdX –remove /dev/sdYn
  • Добавить в массив: mdadm –manage /dev/mdX –add /dev/sdYn
  • Копия GPT: sgdisk -R /dev/target /dev/source
  • Сгенерировать GUID: sgdisk -G /dev/target
  • Резервная копия таблицы: sgdisk –backup=/path/file /dev/disk

Частые ошибки и как их избежать

  • Ошибка: новый диск чуть меньше. Решение: заранее проверить точный размер в секторах (fdisk -l).
  • Ошибка: забыли сгенерировать новый GUID — два диска имеют одинаковые GUID. Решение: выполнить sgdisk -G.
  • Ошибка: забыли добавить новые разделы в md — массив останется деградированным.

Короткое резюме

Заменить сбойный диск в программном RAID1 можно без потери данных, если правильно пометить разделы как failed, удалить их из массивов, физически заменить диск, скопировать таблицу разделов с рабочего диска (sgdisk) и добавить новые разделы в md. Внимательность к размерам дисков, резервным копиям таблиц и мониторингу синхронизации сводит риск к минимуму.

Важно: тестируйте процедуру на несущестующих в проде системах и поддерживайте актуальные бэкапы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро