Изменение размера деградированного RAID массива /dev/md2
Введение
Этот документ описывает, как безопасно уменьшать и увеличивать RAID-массив /dev/md2 в состоянии degraded (деградированный), когда один из дисков (/dev/sda3) не работает. Примеры команд сохранены в виде блоков кода. Опишите свои действия пошагово и проверяйте состояние после каждой критической операции.
Короткое определение: degraded — RAID-массив работает с отсутствующим или неисправным членом и требует осторожных действий при изменении структуры.
Содержание
- Уменьшение размера деградированного массива
- Увеличение размера деградированного массива
- Проверки и расчёты
- Контрольные списки и ролевая разбивка
- Риски и способы их смягчения
- Критерии приёмки и контроль качества
Входное состояние (пример)
Вывод /proc/mdstat показывает, что md2 — RAID1, активен, но один из членов отсутствует:
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1]
4594496 blocks [2/1] [_U]
md1 : active raid1 sda2[0] sdb2[1]
497920 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
144448 blocks [2/2] [UU]
unused devices:
server1:~# В этом примере /dev/sda3 отсутствует, а /dev/sdb3 — единственный активный член md2.
1. Общая предосторожность
Важно: прежде чем изменять размер массива, убедитесь, что у вас есть свежая резервная копия ключевых данных. Любая ошибка при манипуляциях с разделами и файловой системой может привести к потере данных.
Важно: всегда выполняйте обнуление суперблока (mdadm –zero-superblock) на диске, который вы временно удаляете, чтобы система не пыталась автоматически воссоздать старую конфигурацию при загрузке.
2. Уменьшение размера деградированного массива (/dev/md2)
Шаг 1 — отметить и удалить проблемный член массива
mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3Шаг 2 — обнулить суперблок на /dev/sda3 (обязательно)
mdadm --zero-superblock /dev/sda3Важно: если забыть этот шаг, при следующей загрузке диск может быть повторно распознан как часть старого массива и вызвать проблемы.
Шаг 3 — загрузиться в rescue-систему и подключить нужные модули
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10Шаг 4 — обновить конфигурацию mdadm и активировать массивы
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scanШаг 5 — проверить файловую систему на /dev/md2
e2fsck -f /dev/md2Шаг 6 — подготовка к уменьшению размера
В примере исходный размер md2 — 40GB. Требуется уменьшить до 30GB. Чтобы не переполнить файловую систему, сначала уменьшаем её до безопасного маржа (например, 25GB), затем уменьшаем сам RAID до 30GB и снова расширяем файловую систему вплоть до максимально возможного размера в новом массиве.
resize2fs /dev/md2 25GШаг 7 — перевод размера RAID в KiBytes и выполнение mdadm –grow
30 GB в KiBytes: 30 × 1024 × 1024 = 31457280 KiB. Значение должно делиться на 64.
mdadm --grow /dev/md2 --size=31457280Шаг 8 — расширить файловую систему до доступного пространства на новом массиве
resize2fs /dev/md2Шаг 9 — финальная проверка файловой системы
e2fsck -f /dev/md2Шаг 10 — загрузка в нормальную систему и добавление /dev/sda3 обратно
mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3Затем проверьте статус синхронизации:
cat /proc/mdstatВ норме вы должны увидеть, что /dev/sdb3 и /dev/sda3 синхронизируются.
3. Увеличение размера деградированного массива (/dev/md2)
Процедура почти идентична удалению: отметьте и удалите /dev/sda3, обнулите суперблок, загрузитесь в rescue, подключите модули и активируйте массивы.
mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3
mdadm --zero-superblock /dev/sda3Подключение модулей и активация массивов — те же команды, что и в разделе уменьшения.
Шаг увеличить сам массив до максимально возможного размера:
mdadm --grow /dev/md2 --size=maxЗатем выполните проверку и изменение размера файловой системы:
e2fsck -f /dev/md2
resize2fs /dev/md2
e2fsck -f /dev/md2После этого загрузитесь в обычную систему и добавьте /dev/sda3 обратно:
mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3Проверьте синхронизацию через cat /proc/mdstat.
4. Контрольные списки (роль-based)
Инженер смены:
- Убедиться в наличии резервной копии и согласовании окон работ.
- Выполнить fail/remove и zero-superblock.
- Контролировать e2fsck и resize2fs.
Оператор (после работ):
- Проверить /proc/mdstat и скорость ресинхронизации.
- Проверить логи dmesg и syslog на предмет ошибок.
DevOps/архитектор:
- Утвердить новый размер и подтвердить, что служебные скрипты/мониторинг учитывают изменения.
5. Риски и смягчение
- Риск: потеря данных при ошибочном изменении файловой системы. Смягчение: резервные копии перед операцией, тест на копии данных.
- Риск: забыть обнулить суперблок — система может попытаться примонтировать старую конфигурацию. Смягчение: всегда выполнять mdadm –zero-superblock и проверять вывод.
- Риск: неверный расчёт KiB. Смягчение: проверять арифметику (GB → KiB = GB × 1024 × 1024) и делимость на 64.
6. Критерии приёмки
- /proc/mdstat показывает режим [UU] после завершения ресинхронизации.
- e2fsck завершён без ошибок.
- Файловая система монтируется и проходит базовые тесты целостности (чтение/запись небольших файлов).
- Мониторинг не фиксирует новых ошибок в логе ядра, SMART-данные дисков в норме.
7. Полезные подсказки и альтернативы
Альтернативы:
- Если доступен резервный диск, вместо изменения размера массива можно временно заменить /dev/sda3 новым диском и дождаться ресинхронизации.
- Для LVM над RAID: изменение размера можно выполнять на уровне PV/VG/LV с учётом блоков и резервов.
Когда этот способ не подходит:
- Если файловая система не поддерживает онлайн-изменение размера в требуемом направлении или содержит недопустимые структуры — сначала экспортируйте данные.
Ментальные модели:
- Сначала защитите данные → затем работайте с суперблоками → затем меняйте размер RAID → затем корректируйте файловую систему.
8. Чек-лист перед работой
- Снят бэкап критичных данных.
- Согласовано окно обслуживания.
- Имеется доступ в rescue-систему.
- Проверены SMART-данные дисков.
- Записаны текущие параметры mdadm (mdadm –detail).
9. Короткий глоссарий
- mdadm — утилита управления программными RAID в Linux.
- zero-superblock — команда для удаления метаданных RAID на устройстве.
- resize2fs — инструмент изменения размера файловых систем ext2/3/4.
- e2fsck — проверка и восстановление файловых систем ext.
10. Быстрые команды (шпаргалка)
# Пометить и удалить проблемный диск
mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3
# Обнулить метаданные на диске
mdadm --zero-superblock /dev/sda3
# В rescue: подключить модули и активировать массивы
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
# Проверка и изменение FS
e2fsck -f /dev/md2
resize2fs /dev/md2 25G # пример уменьшения FS перед shrink
mdadm --grow /dev/md2 --size=31457280
resize2fs /dev/md2 # расширяем FS до нового предела
# Добавить диск обратно
mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3
# Проверить статус
cat /proc/mdstat11. Резюме
Следуйте строгой последовательности: пометка/удаление диска, обнуление суперблока, работа в rescue, проверка файловой системы, изменение размера RAID и финальная проверка. Всегда начинайте с резервной копии и проверяйте /proc/mdstat после каждого шага.
Примечание: если вы не уверены в шагах, выполните процедуру на тестовой среде или обратитесь к опытному администратору.
Похожие материалы
Herodotus: механизм и защита Android‑трояна
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить