Типичная ситуация: на сервере стояли два или больше дисков в программном RAID (mdadm). Вы ставите систему заново, а установщик вместо двух чистых дисков видит один старый массив /dev/md127, «чужой» том LVM или устройство /dev/mapper/.... Разметить диски по-новому не получается, или установщик падает с ошибкой.
Причина почти всегда одна: на дисках остались метаданные старого массива. Это суперблок mdadm, метки RAID от BIOS (Intel RST, Promise и т. п.), подписи LVM или файловых систем, резервная копия GPT в конце диска. Установщик честно находит их и собирает массив обратно.
Самое частое решение: загрузиться в оболочку установщика или в live-систему, остановить массив mdadm --stop, стереть суперблоки mdadm --zero-superblock, затем очистить подписи wipefs -a и таблицу разделов sgdisk --zap-all. После этого диски для любого установщика выглядят пустыми. Все команды ниже уничтожают данные: перед ними убедитесь, что на дисках нет ничего нужного.
Почему установщик видит старый массив
Linux ищет метаданные RAID на каждом блочном устройстве при загрузке. Правила udev вызывают mdadm --incremental, и если на дисках есть суперблок md, массив собирается автоматически, ещё до запуска мастера разметки. Так ведут себя установщик Debian, Subiquity в Ubuntu и Anaconda в AlmaLinux / Rocky Linux.
Где лежат метаданные:
- Суперблок mdadm 1.2 (формат по умолчанию) — в начале раздела или диска, со смещением 4 КиБ.
- Суперблок 0.90 и 1.0 — в конце устройства. Его не убирает удаление таблицы разделов: создали раздел на весь диск заново, и массив «воскрес».
- Метаданные fake-RAID (Intel Matrix/RST — формат IMSM, DDF, старые Promise и NVIDIA) — тоже в конце диска. Современные системы собирают такие массивы через mdadm, раньше это делал dmraid. Именно такой случай был в исходной заметке: CentOS видела устройство
/dev/mapper/pdc_..., то есть метки контроллера Promise. - Подписи LVM, ZFS, файловых систем — внутри разделов. ZFS хранит метки и в начале, и в конце устройства.
- Резервная GPT — в последнем секторе диска. Некоторые утилиты восстанавливают по ней «удалённую» таблицу разделов.
Отсюда правило: удалить разделы мало. Метаданные нужно стирать на каждом уровне: сначала массивы и тома, потом разделы, потом сам диск.
Шаг 1. Получить консоль
Удобнее всего работать из live-системы (Debian Live, Ubuntu Desktop, rescue-образ хостера). Там есть все нужные утилиты. Если под рукой только установщик:
- Debian 12/13 (debian-installer): на любом шаге Ctrl+Alt+F2 (или Alt+F2 в текстовом режиме), Enter — откроется оболочка BusyBox. Возврат — Ctrl+Alt+F1 (графический режим — F5).
- Ubuntu 24.04 Server (Subiquity): меню Help → Enter shell или Ctrl+Alt+F2.
- AlmaLinux / Rocky Linux 9 и 10 (Anaconda): Ctrl+Alt+F2, там tmux с оболочкой root. Возврат в графику — Ctrl+Alt+F6 (в 9.x), в разных релизах номер может отличаться.
Автор исходной статьи в 2017 году действовал так же: запускал установщик CentOS, переходил на вторую консоль и всё делал руками. Подход не устарел.
Шаг 2. Посмотреть, что осталось на дисках
cat /proc/mdstat
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
blkid
Примерно так выглядит диск со старым зеркалом:
Personalities : [raid1]
md127 : active (auto-read-only) raid1 sdb2[1] sda2[0]
976630464 blocks super 1.2 [2/2] [UU]
NAME SIZE TYPE FSTYPE MOUNTPOINTS
sda 931.5G disk
├─sda1 512M part vfat
└─sda2 931G part linux_raid_member
└─md127 931G raid1 LVM2_member
sdb 931.5G disk
├─sdb1 512M part vfat
└─sdb2 931G part linux_raid_member
└─md127 931G raid1 LVM2_member
Подробности о суперблоке на конкретном разделе:
mdadm --examine /dev/sda2
mdadm --detail --scan
Если FSTYPE показывает isw_raid_member или ddf_raid_member — это метаданные fake-RAID контроллера, они стираются через wipefs (шаг 5).
Шаг 3. Отключить LVM поверх массива
Если на массиве был LVM, том держит устройство занятым, и mdadm --stop вернёт ошибку «Device or resource busy». Сначала деактивируйте группу томов:
vgs
vgchange -an имя_группы
Если что-то смонтировано (live-система любит монтировать найденные разделы сама), отмонтируйте: umount /dev/md127p1 или umount -R /mnt/.... Swap на массиве отключается командой swapoff -a.
Шаг 4. Остановить массив и стереть суперблоки
mdadm --stop /dev/md127
mdadm --zero-superblock /dev/sda2 /dev/sdb2
--zero-superblock выполняется для каждого члена массива — раздела или целого диска, смотря из чего массив собирали. Если массивов несколько (например, отдельно /boot и корень), повторите для всех. Проверка:
mdadm --examine /dev/sda2
Ожидаемый ответ — No md superblock detected on /dev/sda2.
Шаг 5. Стереть подписи и таблицу разделов
wipefs из util-linux знает подписи файловых систем, LVM, md, fake-RAID и таблиц разделов. Сначала очищаем разделы, потом сам диск:
wipefs -a /dev/sda2 /dev/sda1
wipefs -a /dev/sdb2 /dev/sdb1
wipefs -a /dev/sda /dev/sdb
Без ключа -a команда только покажет, что нашла. Это удобно для проверки до удаления.
Затем удаляем основную и резервную GPT и MBR:
sgdisk --zap-all /dev/sda
sgdisk --zap-all /dev/sdb
sgdisk входит в пакет gdisk (Debian, Ubuntu, AlmaLinux). Если его нет в установщике, достаточно wipefs -a по диску: он стирает и основную, и резервную GPT.
Для упрямых случаев (ZFS, неизвестные метаданные в конце диска) можно обнулить начало и конец диска. Пример для последних 10 МиБ:
dd if=/dev/zero of=/dev/sda bs=1M count=10
dd if=/dev/zero of=/dev/sda bs=1M count=10 seek=$(( $(blockdev --getsz /dev/sda) / 2048 - 10 ))
Для SSD и NVMe есть blkdiscard /dev/nvme0n1 — он помечает всё содержимое как свободное. Это быстро и полностью уничтожает данные.
Шаг 6. Перечитать таблицу и проверить
partprobe /dev/sda /dev/sdb
lsblk -o NAME,SIZE,TYPE,FSTYPE
blkid /dev/sda /dev/sdb
cat /proc/mdstat
Правильный результат: у дисков нет дочерних устройств, FSTYPE пустой, blkid ничего не выводит, в /proc/mdstat нет активных массивов. Если ядро держит старую разметку, проще всего перезагрузиться и запустить установщик заново.
Шаг 7. Создать новые разделы
Дальше два пути: разметить диски в мастере установщика (обычно удобнее) или руками. Ручной вариант нужен, когда установщик не умеет нужную схему или вы ставите систему через debootstrap.
parted: GPT, UEFI и раздел под RAID
parted -s /dev/sda mklabel gpt
parted -s /dev/sda mkpart ESP fat32 1MiB 513MiB
parted -s /dev/sda set 1 esp on
parted -s /dev/sda mkpart raid 513MiB 100%
parted -s /dev/sda set 2 raid on
Для загрузки в режиме BIOS (Legacy) с GPT вместо ESP нужен маленький раздел BIOS boot размером 1–2 МиБ с флагом bios_grub.
sgdisk: то же одной командой и копия на второй диск
sgdisk -n 1:0:+512M -t 1:EF00 -n 2:0:0 -t 2:FD00 /dev/sda
sgdisk -R /dev/sdb /dev/sda
sgdisk -G /dev/sdb
EF00 — EFI System, FD00 — Linux RAID. -R копирует разметку с sda на sdb, -G даёт второму диску новые GUID. Порядок аргументов в -R легко перепутать: сначала цель, потом источник.
fdisk: интерактивно
В исходной статье разделы создавались в fdisk с MBR и типом fd. Сегодня для новых серверов берите GPT:
fdisk /dev/sda
g # новая таблица GPT
n # новый раздел, размеры по умолчанию или +512M
t # тип раздела: alias "uefi" или "raid"
w # записать
Номера типов в списке fdisk зависят от версии util-linux, поэтому надёжнее вводить алиасы uefi, raid, linux или смотреть список командой L.
Новый массив вручную
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
watch cat /proc/mdstat
На больших дисках начальная синхронизация идёт часами. Автор исходной статьи всегда держал открытым watch cat /proc/mdstat, чтобы видеть прогресс и не гадать, не завис ли процесс. Устанавливать систему на массив можно, не дожидаясь конца синхронизации.
Установщики Debian, Ubuntu и AlmaLinux
| Установщик | Где создаётся RAID | Особенности |
|---|---|---|
| Debian 12/13 (debian-installer) | Разметка «Вручную» → «Настроить программный RAID» | Разделы под массив создаются с назначением «физический том для RAID». Старые массивы показываются в списке, их можно удалить там же. Метаданные fake-RAID иногда мешают — тогда шаги 4–5 из консоли. |
| Ubuntu 24.04 Server (Subiquity) | Custom storage layout → Create software RAID (md) | Для каждого диска нужен свой раздел ESP («Use as boot device» на обоих). Найденные старые md-массивы показываются отдельно, их нужно удалить перед разметкой. |
| AlmaLinux / Rocky 9 и 10 (Anaconda) | Installation Destination → Custom или Blivet-GUI | Для автоматической установки в kickstart есть zerombr и clearpart --all --initlabel. Опция загрузки inst.nodmraid была в 9.x и удалена в 10: fake-RAID теперь обслуживает mdadm. |
После установки проверьте конфигурацию массива в новой системе. В Debian и Ubuntu файл /etc/mdadm/mdadm.conf, в AlmaLinux — /etc/mdadm.conf. Если массив собирался вручную, допишите его и пересоберите initramfs:
# Debian / Ubuntu
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u
# AlmaLinux / Rocky
mdadm --detail --scan >> /etc/mdadm.conf
dracut -f
Без этого массив может получить имя md127 вместо md0, а в худшем случае корень не найдётся при загрузке.
Ошибка «Only RAID0 arrays can contain growable members»
Архивная заметка автора: при установке Fedora 17 на шаге создания программного RAID1 Anaconda выдавала Only RAID0 arrays can contain growable members. Опытным путём выяснилось, что ошибка появлялась только с опцией «Use all available disk space» («Занять всё доступное пространство»). Если задать размеры разделов вручную, проблема пропадала.
Смысл ошибки: член зеркала не может быть «растущим» разделом, который заполняет остаток диска, потому что размеры половинок должны совпадать. В актуальных версиях Anaconda эта ситуация обрабатывается по-другому. Если похожее сообщение всё же встретится, решение то же: фиксированный размер разделов под RAID или ручная разметка из консоли по шагам выше.
Симптом → причина → решение
| Симптом | Причина | Решение |
|---|---|---|
Установщик видит md127 вместо двух дисков | Суперблок mdadm на разделах | mdadm --stop, --zero-superblock, wipefs -a |
Устройство /dev/mapper/pdc_*, isw_* или массив с метаданными imsm | Метки fake-RAID контроллера в BIOS | Выключить RAID в BIOS (режим AHCI), wipefs -a по диску |
mdadm --stop: Device or resource busy | Активный LVM, swap или смонтированная ФС на массиве | vgchange -an, swapoff -a, umount |
| Массив вернулся после удаления разделов | Суперблок 0.90/1.0 в конце устройства | Пересоздать раздел, mdadm --zero-superblock, затем wipefs -a |
| Разметка «возвращается» после перезагрузки | Резервная GPT в конце диска | sgdisk --zap-all |
После установки массив называется md127 | Нет записи в mdadm.conf внутри initramfs | mdadm --detail --scan, update-initramfs -u или dracut -f |
| Only RAID0 arrays can contain growable members | Раздел RAID1 с опцией «занять всё место» (Fedora 17) | Задать размеры разделов вручную |
Если диски достались от старого сервера, перед новой установкой стоит проверить их состояние через SMART. Как это сделать, разобрано в статье Проверка и восстановление дисков в Linux. Если на сервер ставится гипервизор, тот же порядок очистки нужен и для установки Proxmox VE: его установщик с ZFS тоже спотыкается о старые метки md и LVM.
Справка по ключам — в официальной документации: Linux RAID wiki и man-страницы mdadm(8), wipefs(8), sgdisk(8).
Частые вопросы
Можно ли просто удалить разделы в установщике и не трогать суперблоки?
Иногда получается, но не гарантированно. Суперблоки формата 0.90 и 1.0, метки fake-RAID и резервная GPT лежат в конце диска. Удаление разделов их не трогает, и при следующей загрузке массив соберётся снова. Надёжнее один раз пройти шаги со --zero-superblock и wipefs -a.
Нужно ли заполнять весь диск нулями?
Нет. Метаданные занимают несколько мегабайт в начале и в конце устройства. wipefs -a и sgdisk --zap-all убирают всё, что видит установщик. Полная перезапись нужна только при передаче дисков другому владельцу, и для SSD она всё равно не гарантирует удаления данных — там используют secure erase или blkdiscard.
Как сохранить данные со старого массива перед переустановкой?
Соберите массив из live-системы командой mdadm --assemble --scan, смонтируйте его только для чтения и скопируйте данные на другой носитель. Зеркало RAID1 можно собрать и из одного диска: mdadm --assemble --run /dev/md0 /dev/sda2. Стирать метаданные — только после проверки копии.
Что делать с RAID в BIOS (Intel RST)?
Для Linux-сервера лучше переключить контроллер SATA в режим AHCI и использовать обычный mdadm. Метки старого массива удалите в утилите контроллера или через wipefs -a по каждому диску. Fake-RAID усложняет замену дисков и перенос между платформами, а выигрыша в скорости не даёт.
Почему после установки массив называется md127, а не md0?
Массив не описан в mdadm.conf, который попал в initramfs. Система собирает его как «чужой» и даёт первый свободный номер с конца. Добавьте вывод mdadm --detail --scan в конфиг и пересоберите initramfs: update-initramfs -u в Debian и Ubuntu, dracut -f в AlmaLinux. Монтировать по UUID это не мешает, но имена лучше привести в порядок.