# 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`: ```yaml 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`. ---