Files
Hrankin, Aleksandr (contracted) f243f440c3 init
2026-02-19 11:34:13 +00:00

3.7 KiB
Raw Permalink Blame History

Bug Report: cloud-init расширение root-диска ломается из-за «рандомного» имени диска (/dev/sda не всегда root)

TL;DR

Скрипт в terraform cloud-init жёстко использует /dev/sda, но система не всегда назначает root-диск как sda. Иногда root оказывается на sdc (или другом), из‑за чего runcmd частично/полностью не выполняет расширение LVM и файловой системы.


Контекст

В cloud-init используется runcmd, который расширяет разделы и LVM на диске /dev/sda:

runcmd:
  - |
    set -euxo pipefail

    # растянуть extended + LVM partition до конца диска
    growpart /dev/sda 2 || true
    growpart /dev/sda 5 || true
    parted -s /dev/sda "resizepart 2 100%" "resizepart 5 100%" || true
    partprobe /dev/sda || true

    # растянуть PV -> LV(root) -> FS
    pvresize /dev/sda5
    lvextend -l +100%FREE -r /dev/vg0/root

Симптомы

  • После первого бута rootраздел не расширен (LVM/FS остаются маленькими).
  • В cloud-init status --long возможны ошибки в scripts-user / runcmd (если команды без || true падают).
  • Скрипт «работает в большинстве случаев», но иногда ломается без изменений в конфиге.

Наблюдение (доказательство)

Одинаковая VMлогика, но rootдиск получает разные имена.

Случай A (работает): root на sda

sda  30G  disk
├─sda1  /boot
└─sda5
  └─vg0-root  /
sdb 150G disk
sdc 150G disk

Случай B (ломается): root на sdc

sda 150G disk
sdb 150G disk
sdc  30G  disk
├─sdc1 /boot
└─sdc5
  └─vg0-root  /

Причина (root cause)

Имена /dev/sdX не гарантированы: порядок обнаружения дисков может меняться (особенно в VM/Proxmox при разных контроллерах/порядке подключения).
Скрипт предполагает, что root всегда на /dev/sda, но когда root на /dev/sdc, команды growpart/pvresize применяются к не тому диску.


Ожидаемое поведение

Скрипт должен определять реальный диск, на котором смонтирован /, и работать с ним (а не с фиксированным /dev/sda).


Фактическое поведение

Скрипт работает только когда root-диск случайно оказывается sda. При других раскладах расширение не происходит.


Влияние

  • Интермиттентный (рандомный) фейл на bootstrap VM.
  • На части VM root остаётся маленьким → проблемы при установке пакетов/логах/кэше и т.д.
  • Сложно диагностировать, т.к. «иногда всё ок».

Почему сейчас не фикшу

Баг проявляется редко и не хочу тратить время на стабильное авто‑определение диска прямо сейчас.
В большинстве случаев root всё же назначается на sda.