Тема оповещения обычно скучная: событие DegradedArray на /dev/md0. Один диск программного RAID в Linux выпал из массива, сервер работает, и возникает соблазн отложить всё до следующей недели. Не откладывайте. У деградировавшего массива RAID не осталось избыточности для хранящихся на нём данных, а оставшиеся диски нередко того же возраста и той же модели, что и только что отказавший. Это руководство показывает, как спокойно заменить вышедший из строя диск в mdadm в типичном массиве RAID 1, 5, 6 или 10, не превратив отказ диска в потерю данных.
Шаг 1: проверьте состояние RAID в Linux, прежде чем что-либо трогать
Начните с чтения того, что сообщает система. Файл /proc/mdstat даёт краткую сводку по каждому массиву; здоровое зеркало из двух дисков показывает [UU], а деградировавшее — [U_]. Подробности даёт mdadm --detail /dev/md0: он перечисляет каждое устройство-участник с его состоянием (active, faulty, removed или spare) и показывает, идёт ли синхронизация или восстановление. Отметьте, какие разделы к какому массиву относятся, потому что на многих серверах на одних и тех же дисках находятся отдельные массивы для /boot, swap и данных.
Затем убедитесь в резервных копиях. Перестроение читает каждый блок на оставшихся дисках, и именно в этот момент второй слабый диск склонен отказать. Если последняя резервная копия устарела или не проверялась, сначала скопируйте важные данные в надёжное место.
Шаг 2: определите сбойный диск по серийному номеру
Имена устройств вроде /dev/sdb могут меняться между перезагрузками, а если вынуть не тот диск из деградировавшего зеркала, закончится всё плохо. Всегда определяйте сбойный диск по серийному номеру. Ссылки в /dev/disk/by-id содержат модель и серийный номер, а smartctl -i /dev/sdb из пакета smartmontools тоже выводит серийный номер. Запишите его, а затем сверьте с наклейкой на самом диске или со сведениями об отсеке от вашего хостинг-провайдера.
Пока smartctl открыт, проверьте оставшиеся диски командой smartctl -a. Переназначенные или ожидающие секторы на уцелевшем диске меняют план: скопируйте данные до перестроения, а не надейтесь, что перестроение завершится.
Шаг 3: исключите сбойный диск из массива
Если mdadm уже пометил диск как неисправный, исключите его из массива. Если диск отказывает, но ещё активен, сначала пометьте его как неисправный. Для каждого массива, который использует этот диск:
- mdadm /dev/md0 --fail /dev/sdb1, только если он ещё не помечен как неисправный
- mdadm /dev/md0 --remove /dev/sdb1
Повторите это для каждого раздела этого диска в других массивах, например /dev/md1. После этого диск можно заменить: на горячую, если оборудование это поддерживает, или после плановой остановки. На арендованных серверах откройте тикет с серийным номером и попросите провайдера заменить именно этот диск.
Ещё лучше: замена отказывающего диска через mdadm --replace
Если диск лишь выдаёт предупреждения, можно вообще избежать периода деградации. Добавьте новый диск в массив как запасной, затем выполните mdadm /dev/md0 --replace /dev/sdb1 --with /dev/sdc1. mdadm копирует данные на новый диск, пока старый остаётся в массиве, и только потом помечает старый как неисправный. Избыточность сохраняется всё время, поэтому mdadm --replace — предпочтительный путь всякий раз, когда в сервере есть место ещё для одного диска.
Шаг 4: замените вышедший из строя диск в mdadm и запустите перестроение
Заменяющий диск должен быть не меньше заменяемого. Скопируйте схему разделов с исправного участника, а не создавайте её вручную:
- Диски GPT: sgdisk --replicate=/dev/sdb /dev/sda копирует таблицу разделов с sda на новый sdb, а sgdisk --randomize-guids /dev/sdb затем присваивает новому диску собственные идентификаторы.
- Старые диски MBR: sfdisk -d /dev/sda | sfdisk /dev/sdb делает то же самое.
Перед нажатием Enter дважды проверьте направление копирования, потому что если перепутать устройства, таблица разделов исправного диска будет перезаписана. Затем добавьте каждый новый раздел в его массив командой mdadm /dev/md0 --add /dev/sdb1, и перестроение mdadm запустится само.
Шаг 5: следите за перестроением и восстановите загрузчик
cat /proc/mdstat показывает ход восстановления и ожидаемое время окончания. Время перестроения RAID зависит в основном от размера дисков и загруженности сервера, потому что ядро ограничивает скорость перестроения, оставляя ресурсы для обычной работы; пределы задаются в /proc/sys/dev/raid/speed_limit_min и speed_limit_max. На больших дисках перестроение может идти много часов, поэтому по возможности отложите тяжёлые задачи, например полные резервные копии.
Если сервер загружается с массива, новому диску тоже нужен загрузчик. Иначе сервер не запустится в следующий раз, когда откажет другой диск. В системах BIOS это значит выполнить grub-install на новом диске; в системах UEFI нужно заново создать системный раздел EFI на новом диске, скопировать его содержимое и добавить загрузочную запись в прошивке. Наконец, проверьте, что мониторинг по-прежнему следит за массивом и что письма с оповещениями доходят до реального человека.
Типичные ошибки при управлении программным RAID
- Повторное создание массива командой mdadm --create, чтобы «починить» его. На массиве с данными это может их уничтожить; почти всегда правильная команда — собрать массив из существующих участников.
- Извлечение не того диска, потому что доверились именам устройств, а не серийным номерам.
- Забытые остальные массивы на том же диске, из-за чего swap или /boot остаются в деградированном состоянии.
- Ни горячего резерва, ни оповещений, поэтому первый отказ остаётся незамеченным до второго. Горячий резерв позволяет mdadm начать перестроение в тот же момент, когда участник выходит из строя.
Большинство этих ошибок восходят к исходной настройке RAID в Linux. Оповещения, загрузчик на каждом диске и письменная заметка о схеме — всё это часть аккуратной настройки mdadm RAID — превращают замену диска в рутинное обслуживание.
Часто задаваемые вопросы: замена вышедшего из строя диска в mdadm
Можно ли пользоваться сервером, пока массив перестраивается?
Да. Массив остаётся в сети всё время, только работает медленнее. Риск в данных: пока перестроение не закончено, отказ другого участника может вывести массив из строя, поэтому свежая резервная копия — прежде всего.
Перестроение постоянно перезапускается или останавливается с ошибками чтения. Что делать?
Ошибка чтения на уцелевшем диске означает, что источник перестроения тоже выходит из строя. Прекратите запись в массив, скопируйте данные или снимите образы дисков и планируйте восстановление отсюда, а не форсируйте перестроение.
Обязательно ли, чтобы новый диск был той же модели?
Нет, но он должен быть не меньше по размеру. Смешивание очень разных типов дисков в одном массиве может ограничить скорость всего массива скоростью самого медленного участника.
Столкнулись с деградировавшим массивом на сервере в Лос-Анджелесе или в другом месте Калифорнии? Наша услуга создания и управления программным RAID охватывает замену дисков, перестроение и восстановление, и большая часть работы выполняется удалённо после того, как вы или ваш хостинг-провайдер установили новый диск. Если после перестроения выяснится, что резервным копиям тоже нужно внимание, посмотрите нашу услугу резервного копирования данных и аварийного восстановления. Свяжитесь с нами, прислав вывод mdadm --detail для каждого массива, и мы вместе с вами определим следующий безопасный шаг.




