felhom-agent v0.120.0 merges the two data volumes into one, and step_grows computed two numbers while the install call passed both — so this had to change with the agent or every install would have provisioned a half-sized box. The 80/20 split is summed (226 = 184+42), so a standard appliance keeps exactly the 250 G it had, no longer split by a wall. The size still comes from the physical disk: step_grows already read the thin pool's free space, and the merge only collapsed its two outputs into one. --sysdata-grow is deprecated but still honoured, because the agent folds a hand-passed value in rather than dropping it.
This commit is contained in:
@@ -1,3 +1,19 @@
|
||||
## host-install: one data volume, derived from the disk (2026-08-03, R-165)
|
||||
|
||||
**Forced by a census, not planned.** `felhom-agent` v0.120.0 merges the appliance's two data volumes
|
||||
into one (decision D-a). `step_grows` computed **two** numbers and the install call passed both, so
|
||||
this script had to change with the agent or every install would have provisioned a half-sized box.
|
||||
|
||||
- **`step_grows` computes ONE total.** The old 80/20 docker-vs-sysdata split is summed: `226` where it
|
||||
was `184 + 42`, `106` where it was `84 + 22`, `46` where it was `34 + 12`. **A standard appliance
|
||||
keeps exactly the capacity it had — 250 G — it is simply no longer split by a wall.**
|
||||
- **The size still comes from the physical disk.** `step_grows` already read the thin pool's real free
|
||||
space (`lvs /dev/pve/data`); the merge only collapsed its two outputs into one. This is what makes
|
||||
the merge safe to ship: an unflagged install does **not** get the golden's 24 G base.
|
||||
- **`--sysdata-grow` is DEPRECATED but still honoured.** It is no longer auto-computed (set to 0), and
|
||||
a hand-passed value still counts because the agent **folds** it into the single volume's grow rather
|
||||
than dropping it — so an operator reproducing an old command line gets the same total.
|
||||
|
||||
## CI — a Gitea Actions runner, and a red run that reaches a person (2026-08-02, R-168)
|
||||
|
||||
**No version bump anywhere: nothing in the product repos is compiled, built or deployed by this.**
|
||||
|
||||
@@ -115,8 +115,8 @@
|
||||
# (default: appliance → island 169.254.253.1:8443; byo → vmbr0 IP:8443)
|
||||
# --no-island appliance only: keep the historical LAN bind instead of the R-50 island
|
||||
# --rootfs-grow N grow OS rootfs by N GiB (default: auto-compute)
|
||||
# --datavol-grow N grow Docker-data vol by N GiB (default: auto-compute)
|
||||
# --sysdata-grow N grow user-data vol by N GiB (default: auto-compute)
|
||||
# --datavol-grow N grow the single data volume by N GiB (default: auto-compute from the pool)
|
||||
# --sysdata-grow N DEPRECATED (R-165): added to --datavol-grow; there is one volume now
|
||||
#
|
||||
# Guest cap (appliance: optional — protect a SHARED host's other guests; byo: BOTH REQUIRED —
|
||||
# the only noisy-neighbor protection on a host you do not own; needs agent >= v0.52.0):
|
||||
@@ -1772,23 +1772,34 @@ step_token() {
|
||||
#-------------------------------------------------------------------------------
|
||||
step_grows() {
|
||||
log_step "3/8 compute volume grows"
|
||||
# Golden base: rootfs 32G + Docker-data 16G + user-data 8G (build-golden.sh).
|
||||
# Golden base since build-golden.sh v3.0.0 (R-165): rootfs 32G + ONE data volume 24G. The separate
|
||||
# 8G user-data volume was MERGED AWAY — one volume, one free-space figure, no ceiling — so there is
|
||||
# one number to compute here instead of two.
|
||||
#
|
||||
# THE SIZE IS DERIVED FROM THE PHYSICAL DISK, which is what makes the merge safe to ship: an
|
||||
# unflagged install does NOT get the golden's 24G, it gets a share of the thin pool's real free
|
||||
# space. (Before R-165 this same block already did the deriving; the merge only collapsed its
|
||||
# 80/20 docker-vs-sysdata split into a single total.)
|
||||
if [[ -z "$ROOTFS_GROW$DATAVOL_GROW$SYSDATA_GROW" ]]; then
|
||||
local free_gib
|
||||
free_gib=$(lvs --noheadings --units g -o lv_size,data_percent /dev/pve/data 2>/dev/null | awk '{gsub(/[^0-9.]/,"",$1); used=$2; print int($1*(100-used)/100)}' 2>/dev/null || echo 0)
|
||||
# Reserve headroom; split the rest ~ docker 80% / sysdata 20%; rootfs stays golden.
|
||||
# Reserve headroom; the totals below are the pre-merge pair SUMMED, so an appliance gets the
|
||||
# same capacity it did before — it is simply no longer split by a wall.
|
||||
ROOTFS_GROW=0
|
||||
if [[ "${free_gib:-0}" -ge 300 ]]; then
|
||||
DATAVOL_GROW=184; SYSDATA_GROW=42 # reproduces the standard 200G/50G appliance
|
||||
DATAVOL_GROW=226 # 184+42 -> the standard 250G appliance (was 200G+50G)
|
||||
elif [[ "${free_gib:-0}" -ge 150 ]]; then
|
||||
DATAVOL_GROW=84; SYSDATA_GROW=22
|
||||
DATAVOL_GROW=106 # 84+22
|
||||
else
|
||||
DATAVOL_GROW=34; SYSDATA_GROW=12 # minimal floors
|
||||
DATAVOL_GROW=46 # 34+12 — minimal floor
|
||||
fi
|
||||
log_info " auto-computed from ~${free_gib} GiB free"
|
||||
SYSDATA_GROW=0
|
||||
log_info " auto-computed from ~${free_gib} GiB free (ONE volume since R-165)"
|
||||
fi
|
||||
ROOTFS_GROW="${ROOTFS_GROW:-0}"; DATAVOL_GROW="${DATAVOL_GROW:-0}"; SYSDATA_GROW="${SYSDATA_GROW:-0}"
|
||||
log_info " grows: rootfs +${ROOTFS_GROW}G (->$((32+ROOTFS_GROW))G), docker +${DATAVOL_GROW}G (->$((16+DATAVOL_GROW))G), sys_drive +${SYSDATA_GROW}G (->$((8+SYSDATA_GROW))G)"
|
||||
# A hand-passed --sysdata-grow is still ACCEPTED and still counts: the agent folds it into the one
|
||||
# volume (bringup.go 4b), so an operator reproducing an old command line gets the same total.
|
||||
log_info " grows: rootfs +${ROOTFS_GROW}G (->$((32+ROOTFS_GROW))G), data +$((DATAVOL_GROW+SYSDATA_GROW))G (->$((24+DATAVOL_GROW+SYSDATA_GROW))G, ONE volume)"
|
||||
_state_mark grows
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user