init
This commit is contained in:
88
documentation/issues/issue-0.md
Normal file
88
documentation/issues/issue-0.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# 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`.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user