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

Восстановление RAID1: замена сбойного диска и проверка

7 min read Linux Обновлено 11 Oct 2025
Замена сбойного диска в RAID1 и восстановление
Замена сбойного диска в RAID1 и восстановление

Введение

Этот пошаговый гид показывает, как заменить сбойный жёсткий диск в программном RAID1 (mdadm) и убедиться, что массив корректно восстановлен. Описанные шаги включают симуляцию отказа, копирование таблицы разделов, очистку метаданных RAID, повторное добавление диска и установку загрузчика GRUB.

Кому полезно: системным администраторам и инженерам, поддерживающим серверы на базе Linux с программным RAID.

Важно: в примерах используется /dev/sda и /dev/sdb; адаптируйте имена устройств под вашу систему. Все команды выполняются с правами root.

Требования и предосторожности

  • Наличие физического доступа к машине (или удалённого KVM/iLO) для замены диска.
  • Резервная копия важных данных перед выполнением операций на разделе/диске.
  • mdadm должен быть установлен и настроен.
  • Убедитесь, что у вас есть доступ к загрузчику и возможность переустановить GRUB.

Важно: если вы работаете в виртуальной среде, имена дисков могут отличаться (например, /dev/vda, /dev/vdb).

Быстрая схема действий

  1. Симулируйте отказ диска (или физически извлеките диск).
  2. Убедитесь, что массив деградировал (cat /proc/mdstat).
  3. Скопируйте таблицу разделов с исправного диска на новый (sfdisk).
  4. Очистите старые суперкблоки RAID на новом диске (mdadm –zero-superblock).
  5. Добавьте разделы нового диска в массив (mdadm -a).
  6. Дождитесь синхронизации.
  7. Установите GRUB на оба диска.

1. Симуляция отказа диска

Вы можете смоделировать отказ диска программно, не извлекая физически диск. В примере предполагается отказ /dev/sdb. Команды для пометки разделов как failed и удаления из массива:

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

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

Если вы предпочитаете полностью выключить систему и вынуть диск, можно также выполнить:

shutdown -h now

После замены или перемещения дисков загрузите систему. Она должна стартовать в деградированном состоянии без потери данных.

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

Проверьте статус RAID:

cat /proc/mdstat

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

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2]
4989940 blocks super 1.2 [2/1] [U_]

md0 : active raid1 sda1[2]
248820 blocks super 1.2 [2/1] [U_]

unused devices:
root@server1:~#

В этом выводе видно, что массивы md0 и md1 работают в режиме raid1, но в каждом массиве отсутствует один из зеркалирующих устройств ([U_] значит один диск отсутствует).

Проверьте таблицу разделов, чтобы увидеть, как система видит диски и md-устройства:

fdisk -l

В документации приведён подробный пример вывода fdisk, который показывает, что /dev/sdb не содержит таблицы разделов после симуляции сбоя.

3. Копирование таблицы разделов с рабочего диска на новый

Если новый диск пуст или у него нет корректной таблицы разделов, копируем её со здорового носителя. Команда ниже считывает разметку /dev/sda и записывает на /dev/sdb:

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Пример вывода команды (в оригинале):

root@server1:~# sfdisk -d /dev/sda | sfdisk –force /dev/sdb
Checking that no-one is using this disk right now …
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
OK

Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 499711 497664 fd Linux raid autodetect
/dev/sdb2 501758 10483711 9981954 5 Extended
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
/dev/sdb5 501760 10483711 9981952 fd Linux raid autodetect
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition table

Re-reading the partition table …

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
root@server1:~#

Примечание: предупреждения о границах цилиндров обычно можно игнорировать на современных системах; важно, что sfdisk успешно записал новую таблицу.

4. Очистка старых суперблоков RAID

Если на новом диске ранее существовали метаданные RAID, их нужно удалить, иначе mdadm может отказать в добавлении раздела.

mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb5

Это гарантирует, что разделы будут распознаны как чистые и готовы для добавления в массив.

5. Добавление нового диска в массив

Добавьте соответствующие разделы нового диска в массивы md0 и md1:

mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb5

Затем снова проверьте статус:

cat /proc/mdstat

Пример прогресса синхронизации (в оригинале):

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[3] sda5[2]
4989940 blocks super 1.2 [2/1] [U_]
[========>…………] recovery = 44.7% (2233024/4989940) finish=0.2min speed=159501K/sec

md0 : active raid1 sdb1[3] sda1[2]
248820 blocks super 1.2 [2/2] [UU]

unused devices:
root@server1:~#

Подождите завершения синхронизации. Повторяйте cat /proc/mdstat до появления состояния [UU] в обоих массивах.

6. Установка загрузчика на оба диска

После успешной синхронизации обязательно установите загрузчик на оба физических диска, чтобы система могла загрузиться даже если один диск будет удалён:

grub-install /dev/sda
grub-install /dev/sdb

После этого перезагрузите систему и убедитесь, что всё загружается нормально.

Когда этот метод не подходит

  • Если диски имеют разные размеры и разметка не может быть адекватно перенесена.
  • Если используется LVM поверх RAID с нестандартной конфигурацией — предварительно проверьте метаданные LVM.
  • В случаях аппаратного RAID подходы отличаются и этот метод неприменим.

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

  • Клонирование с помощью dd: можно побитово скопировать диск dd if=/dev/sda of=/dev/sdb bs=64K, но этот метод копирует и UUID, и метаданные, что может потребовать последующей корректировки.
  • Использовать parted вместо sfdisk для гибкой разметки, особенно при GPT.
  • При наличии снимка LVM — восстановление логических томов до добавления в RAID.

Чеклист перед началом работ (роль: инженер)

  • Сделан резерв конфигураций и критичных данных.
  • Зафиксированы имена дисков и UUIDы (lsblk -f, blkid).
  • Проверено состояние массива (cat /proc/mdstat).
  • Подготовлен новый диск и хватает физических/виртуальных портов.
  • Права root и доступ к консоли/консоли управления сервером.

Частые ошибки и пути их устранения

  • sfdisk сообщает об отсутствии msdos signature: нормальное поведение для чистого диска; sfdisk всё равно может записать таблицу.
  • mdadm отказывается добавлять раздел: проверьте, нет ли оставшихся суперблоков (mdadm –examine /dev/sdb1). При необходимости снова выполните –zero-superblock.
  • При установке grub ошибка: проверьте корректность монтирования /boot и наличие необходимых модулей. Используйте –boot-directory, если у вас нестандартная схема.

Быстрый справочник команд (cheat sheet)

  • Проверка RAID: cat /proc/mdstat
  • Просмотр разметки: fdisk -l или lsblk -f
  • Копирование таблицы разделов: sfdisk -d /dev/sda | sfdisk –force /dev/sdb
  • Очистка суперкблока: mdadm –zero-superblock /dev/sdb1
  • Добавление раздела в RAID: mdadm -a /dev/md0 /dev/sdb1
  • Установка GRUB: grub-install /dev/sdb

Решение «что делать если…» (краткая методика)

  1. Если массив не восстанавливается — проверьте mdadm –detail /dev/mdX и dmesg на предмет ошибок.
  2. Если синхронизация идёт медленно — проверьте скорость дисков и загрузку I/O (iostat, iotop).
  3. При проблемах с загрузкой после установки GRUB — загрузитесь с live-USB и выполните chroot для переустановки загрузчика.

Ментальные модели

  • RAID1 = зеркало: данные дублируются; потеря одного диска не ведёт к потере данных, но требует восстановления зеркала.
  • mdadm хранит метаданные в суперкблоках на разделах; перед добавлением раздела в массив суперкблок должен отсутствовать или соответствовать ожидаемому UUID массива.

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

  • Оба массива в состоянии [UU] в выводе cat /proc/mdstat.
  • GRUB установлен на обоих дисках и система способна загрузиться при отсоединении любого из них.
  • Отсутствие ошибок в dmesg и mdadm –detail /dev/mdX.

1‑строчная глоссарий

  • mdadm — утилита управления программными RAID в Linux;
  • суперкблок (superblock) — метаданные RAID, которые сохраняют состояние массива;
  • sfdisk — утилита для работы с таблицей разделов DOS/MBR;
  • GRUB — загрузчик, устанавливаемый в MBR/GPT для загрузки ОС.

Потенциальные риски и рекомендации по смягчению

  • Риск: неправильная разметка нового диска — сделайте снимок (sfdisk -d /dev/sda > layout.sfdisk) перед изменениями.
  • Риск: потеря загрузочной способности — установите GRUB на оба диска до выключения.
  • Риск: длительная синхронизация — выполняйте операции в непиковые часы или ограничьте speed_limit_min/max в /proc/sys/dev/raid/ для контроля влияния на I/O.

Короткое объявление для команды (для рассылки)

Мы заменили сбойный диск в RAID1 на сервере X: диск был помечен как failed, таблица разделов скопирована с /dev/sda на /dev/sdb, суперкблоки очищены, диск добавлен в массив и синхронизирован. GRUB установлен на обоих дисках. Система находится в рабочем состоянии.

Полезные ссылки

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

  • Замена диска в RAID1 — это операция, которую можно безопасно выполнить онлайн при наличии резервных копий и аккуратном следовании шагам.
  • Основные этапы: пометка failed, копирование разметки, очистка суперкблоков, добавление в массив, ожидание синхронизации, установка GRUB.

Важно: всегда адаптируйте команды под вашу конкретную конфигурацию дисков и массивов.

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

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

Встроенный ключ Android для входа в Google на iOS
Безопасность

Встроенный ключ Android для входа в Google на iOS

ADB и Fastboot на Macbook — руководство
Инструменты

ADB и Fastboot на Macbook — руководство

Ошибка 'system repair pending' в Windows — исправление
Windows

Ошибка 'system repair pending' в Windows — исправление

Создать Android‑приложение бесплатно без кода
Мобильная разработка

Создать Android‑приложение бесплатно без кода

Боковая панель для Windows 11/10: MetroSidebar, SideBar, Desktop Sidebar
Windows

Боковая панель для Windows 11/10: MetroSidebar, SideBar, Desktop Sidebar

Восстановление удалённых файлов в Microsoft Teams
Microsoft Teams

Восстановление удалённых файлов в Microsoft Teams