Короткий ответ

Rebuild не стартует, пока контроллер не считает новый диск членом того же DG, что vd0. Три проверки: (1) нет ли Foreign на вставленном диске, (2) State = пригоден к rebuild (не UBad, не меньший размер, не WD/4Kn конфликт), (3) политика auto-rebuild / hot spare включена. Не лечите это create vd и не import foreign, пока не поняли, чей это metadata.

Сначала состав degraded и слот. Потом эта статья.

Симптомы и как отличить

Типичная картина:

  • старый Failed извлечён, новый в том же 252:3;
  • vd0 остаётся Dgrd часами;
  • новый PD: UGood, UBad, Foreign или JBOD;
  • HPE: диск Unassigned, LD не в Recovering.
ВидноНе «забыли нажать rebuild»
Rbld 1–99%идёт, просто медленно
Copyback после spareэто не rebuild на новый слот, spare ещё в DG
Диск не в инвентареконтроллер не видит
ZFS resilver 0другой стек: zpool status tank

Возможные причины

  1. Foreign metadata на б/у диске.
  2. Auto-rebuild выключен, hot spare нет — диск так и останется UGood.
  3. Ёмкость меньше оригинального member.
  4. UBad: новый диск сразу с media error или не прошёл prepare.
  5. Несовместимый сектор (512n vs 4Kn) / SAS vs SATA в этом VD.
  6. Rebuildrate = 0 или контроллер в CC/patrol, очередь отложила rebuild (реже).
  7. HPE: диск не в той array (A/B), add drives ушёл бы в другой LD.

Диагностика

1. Состояние PD и VD

storcli /c0/vall show
storcli /c0/eall/sall show
storcli /c0 show all | grep -iE 'rebuild|foreign|auto'

Ищите Auto Rebuild, Foreign Config, State нового слота. storcli /c0/v0 show rebuild — если «No rebuild» / пусто, процесса нет.

2. Foreign

storcli /c0/fall show

Preview (если поддерживает ваша версия):

storcli /c0/fall import preview

Смотрите, какой DG/VD предлагает foreign. Если это конфиг другого сервера — вам не import, а очистка foreign на этом диске.

3. Размер и интерфейс

Сравните Size нового и соседей Onln. Модель: SAS 12G vs SATA в одном DG — зависит от контроллера; многие MegaRAID это запрещают.

4. HPE

ssacli ctrl slot=0 show config
ssacli ctrl slot=0 ld all show detail
ssacli ctrl slot=0 pd all show detail

Статус LD должен стать Recovering после появления диска в том же bay. Если диск Unassigned и LD Interim Recovery — контроллер не подхватил member.

Политика:

ssacli ctrl slot=0 show | grep -i rebuild

5. Ubuntu видит два диска вместо одного VD

Значит вы смотрите не hardware rebuild, а mdadm/ZFS. cat /proc/mdstat и zpool status tank — не смешивайте инструкции.

Решение

Сценарий A. Foreign на новом диске, vd0 живой

Нужно убрать чужие метаданные с вставленного диска, не трогая Onln члены.

Типичный путь MegaRAID: storcli /c0/fall delete очищает foreign таблицу. После диск должен стать UGood. Затем auto-rebuild либо явное включение в missing row DG.

Не делайте create vd r5 ... на оставшихся дисках плюс новый.

Сценарий B. UGood, foreign нет, auto-rebuild off

Включите политику (синтаксис storcli: set autorebuild=on на контроллере) либо назначьте диск spare / replace missing согласно man вашей версии. GUI контроллера: «Mark as global hot spare» на время, либо Replace.

Проверьте rebuild rate не нулевой:

storcli /c0 show rebuildrate

0 означает «не тратить I/O на rebuild» — процесс не двинется под нагрузкой и иногда не стартует.

Сценарий C. UBad сразу после вставки

Другой слот / другой диск. Если в другом bay диск Onln, а в этом любой диск UBad — backplane. Если диск UBad в любом слоте — брак, RMA.

Сценарий D. HPE не Recovering

Reseat в том же 1I:1:3. Подтвердите, что это не expand (add drives как увеличение n дисков). Для missing member замена в тот же bay. Firmware Smart Array и диск — из матрицы HPE.

Сценарий E. ZFS resilver не стартует

Это не storcli. После zpool replace tank OLD NEW должен появиться resilver. Если устройство NEW уже в пуле или OPEN — ошибка CLI. Force import здесь ни при чём.

Как проверить, что проблема устранена

storcli /c0/v0 show rebuild
storcli /c0/eall/sall show

Появился Rbld и процент растёт между двумя снятиями с интервалом 5–10 минут. VD ещё Dgrd — это нормально до конца. HPE: Rebuilding с процентом.

Нет новых Foreign после delete.

Если не помогло

  • Процент есть, но 0.01%/час — переходите к статье про долгий rebuild (нагрузка, URE, huge HDD).
  • Контроллер требует reboot для принятия PD — спланируйте, vd0 на одном диске риска (RAID 1/5).
  • JBOD mode на контроллере: диск отдан ОС, RAID его не возьмёт, пока не снять JBOD.
  • Несовместимый 4Kn: только диск того же logical sector, что DG.

Профилактика

  • Новые диски — wipe только если точно б/у с чужим RAID; на новых enterprise foreign редкость.
  • Держать autorebuild on + хотя бы один GHS.
  • Не таскать диски между серверами «как запас» без очистки foreign на стенде.
  • Документировать, что vd0 = какие слоты.

FAQ

Можно ли import foreign «на всякий случай»?

Нет, если vd0 уже на этом контроллере. Import нужен, когда переставили все диски массива на новый контроллер и VD пропал.

Delete foreign сотрёт vd0?

Команда целится в foreign table. Опасность — ошибиться контроллером /c1 vs /c0 или импортировать вместо delete. Смотрите fall show до любой destructive.

Почему HPE пишет «waiting for rebuild» без процента?

Часто CC/expand в очереди или rebuildpriority=low при 100% VM. Проверьте, что диск уже member, не Unassigned.

Нужен ли тот же firmware диска?

Желательно из списка совместимости. Смешение «какой купили в магазине» на SAS RAID — частый UBad.

storcli start rebuild — безопасно?

start rebuild на конкретном PD, который уже в DG и Offln, — штатный пинок. start rebuild не заменяет create array. Не запускайте на единственном живом диске RAID 0.