Изменение размера деградированного RAID-массива (mdadm)
Содержание
- Краткое описание задачи
- Требования и подготовка
- Проверка и удаление неисправного диска
- Уменьшение размера деградированного массива
- Увеличение размера деградированного массива
- Возврат диска в массив и проверка синхронизации
- Частые ошибки и как их избежать
- Плейбук / пошаговая инструкция (SOP)
- Дерево решений (Mermaid)
- Роль‑базовые чек‑листы
- Риск‑матрица и смягчения
- Краткий глоссарий
- Итог
Краткое описание задачи
У нас есть RAID1 /dev/md2 из /dev/sda3 и /dev/sdb3, при этом /dev/sda3 считается неисправным. Требуется изменить размер RAID‑массива (уменьшить или увеличить) в деградированном состоянии, затем вернуть диск и дождаться синхронизации.
Важно: изменение размера массива и файловой системы — рискованная операция. Всегда делайте резервные копии важных данных перед началом.
Требования и подготовка
- Доступ в rescue/Live-систему или возможность загрузиться в режим восстановления.
- Утилиты: mdadm, e2fsck, resize2fs, modprobe.
- Консольный доступ с правами root.
- Достаточное свободное пространство на оставшемся диске (для уменьшения — финальный размер должен помещаться на оставшийся диск).
1. Проверка состояния RAID и удаление диска
Проверим текущий статус массива:
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: Удалим/отметим неисправный диск (/dev/sda3) в mdadm:
mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3Важно: сразу после удаления ОБЯЗАТЕЛЬНО обнулите суперблок на физическом устройстве, которое собираетесь затем заново добавить. Если забыть – система может не загрузиться после изменения размера:
mdadm --zero-superblock /dev/sda32. Подготовка rescue-среды и загрузка модулей
Загрузитесь в rescue или Live‑среду и активируйте ядро модули, если требуется:
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10Затем соберите конфигурацию mdadm и активируйте массивы:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scanПроверьте файловую систему перед изменениями:
e2fsck -f /dev/md23. Уменьшение размера деградированного массива (пример: 40GB → 30GB)
Порядок действий и объяснение:
- Сначала нужно уменьшить файловую систему на массиве так, чтобы она гарантированно помещалась в целевой размер. Для безопасности уменьшите её сильнее, чем целевой размер массива.
- Затем уменьшите само устройство md (/dev/md2) через mdadm (–grow –size). Параметр –size принимает значение в KiB; для 30 GiB это 30 × 1024 × 1024 = 31457280.
- После уменьшения устройства расширьте файловую систему до максимально возможного значения.
Пример команд (в вашем случае):
resize2fs /dev/md2 25G(мы сначала делаем файловую систему 25G, чтобы был запас)
mdadm --grow /dev/md2 --size=31457280(значение в KiB; убедитесь, что оно делится на 64)
Затем расширяем файловую систему до максимально возможного размера:
resize2fs /dev/md2И ещё раз проверяем файловую систему:
e2fsck -f /dev/md2После успешной проверки перезагрузитесь в обычную систему и добавьте диск обратно:
mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3Проверяем статус:
cat /proc/mdstatВы должны увидеть синхронизацию между /dev/sdb3 и /dev/sda3.
4. Увеличение размера деградированного массива
Процедура схожа с уменьшением, но проще в части размеров: можно указать –size=max или конкретный размер в KiB.
Удаляем диск, обнуляем суперблок, загружаемся в rescue и активируем модули (см. выше). Затем увеличиваем:
mdadm --grow /dev/md2 --size=maxПроверка и изменение файловой системы:
e2fsck -f /dev/md2
resize2fs /dev/md2
e2fsck -f /dev/md2Затем в обычной системе добавляем диск обратно:
mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3И снова проверяем cat /proc/mdstat для мониторинга синхронизации.
Частые ошибки и как их избежать
- Забытие mdadm –zero-superblock на возвращаемом диске → диск будет содержать старую метаинформацию и может привести к ошибкам при сборке массива. Всегда выполняйте обнуление.
- Неправильный расчёт размера в KiB (не делится на 64) → mdadm может отклонить запрос. Всегда проверяйте значение.
- Изменение размера без резервной копии → потеря данных при ошибке. Создайте резервную копию.
- Прерывание операции без понимания состояния массива → остановите, восстановите из бэкапа или обратитесь к логам.
Важно: при любых сомнениях отключите автоматическую загрузку нового/старого конфигурационного mdadm и анализируйте /var/log/syslog и output mdadm.
Плейбук / пошаговая инструкция (SOP)
- Оповестите пользователей и запланируйте окно обслуживания.
- Сделайте резервную копию критичных данных.
- Проверка состояния:
- cat /proc/mdstat
- mdadm –detail /dev/md2
- Отметьте и удалите проблемный диск:
- mdadm –manage /dev/md2 –fail /dev/sda3
- mdadm –manage /dev/md2 –remove /dev/sda3
- mdadm –zero-superblock /dev/sda3
- Загрузитесь в rescue и выполните модули/сборку (см. раздел выше).
- e2fsck -f /dev/md2
- resize2fs предварительно (если уменьшаем).
- mdadm –grow –size=…
- resize2fs /dev/md2
- e2fsck -f /dev/md2
- Перезагрузитесь в рабочую систему.
- mdadm –zero-superblock /dev/sda3
- mdadm -a /dev/md2 /dev/sda3
- Мониторинг через cat /proc/mdstat и mdadm –detail /dev/md2
Дерево решений (простое) в формате Mermaid
flowchart TD
A[Диск в RAID деграду] --> B{Хотите уменьшить или увеличить?}
B --> |Уменьшить| C[Сделать резервную копию]
B --> |Увеличить| C
C --> D[Удалить нерабочий диск и obnull superblock]
D --> E[Загрузиться в rescue и проверить FS]
E --> F{Уменьшение?}
F --> |Да| G[resize2fs до <целевого размера с запасом>]
F --> |Нет| H[mdadm --grow --size=max]
G --> I[mdadm --grow --size=]
I --> J[resize2fs до max]
H --> J
J --> K[e2fsck проверки]
K --> L[Перезагрузка и добавление диска обратно]
L --> M[Мониторинг синхронизации] Роль‑базовые чек‑листы
Администратор (перед выполнением):
- Уведомил заинтересованных лиц.
- Проверил наличие и целостность резервных копий.
- Подготовил rescue‑среду и проверил инструменты.
Оператор (в момент выполнения):
- Выполнил команды по порядку и сохранил вывод в лог.
- Проверил /proc/mdstat и mdadm –detail.
- Следил за прогрессом синхронизации после добавления диска.
Риск‑матрица и смягчения
- Риск: Потеря данных при ошибке изменения размера. Смягчение: резервная копия, тест на копии данных.
- Риск: Неверный размер в KiB. Смягчение: выверить расчёт и убедиться, что значение делится на 64.
- Риск: Диск с нестерильным суперблоком случайно воссоединился. Смягчение: всегда запускать –zero-superblock перед добавлением.
Краткий глоссарий
- mdadm — утилита для управления программными RAID в Linux.
- e2fsck — проверка файловых систем ext2/3/4.
- resize2fs — расширение/уменьшение файловой системы ext2/3/4.
- KiB/GiB — килобайты/гибибайты, основаны на степенях 1024.
Факто‑бокс (ключевые числа и формула)
- Пример в статье: уменьшение с 40GB до 30GB.
- Для mdadm –grow размер в KiB: 30 × 1024 × 1024 = 31457280 (значение в статье).
- Правило: значение –size должно быть кратно 64 KiB.
Часто встречающиеся команды (шпаргалка)
cat /proc/mdstat
mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3
mdadm --zero-superblock /dev/sda3
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
e2fsck -f /dev/md2
resize2fs /dev/md2 25G
mdadm --grow /dev/md2 --size=31457280
resize2fs /dev/md2
mdadm --grow /dev/md2 --size=max
mdadm -a /dev/md2 /dev/sda3Итог
Изменение размера деградированного RAID‑массива возможно и относительно прямолинейно при строгом соблюдении порядка действий: удалить и обнулить суперблок проблемного диска, работать в rescue‑среде, проверять и изменять файловую систему до и после изменения размера устройства, и только затем возвращать диск в массив. Соблюдение чек‑листа и мониторинг /proc/mdstat снизят риски.
Важно: если вы не уверены в каждом шаге — выполните операцию сначала на тестовой системе или восстановите данные из резервной копии.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента