vigía: medir los FS donde hammer gasta, no el del repo

El store de hammer se mudó al volumen harkaq-cosecha (/dev/sdb, bind-mount
sobre ./store, work/sources y work/repos; CARGO_HOME también). Desde eso,
medir `$ROOT` mide /mnt/vvv, que hammer COMPARTE con tawasuyu y que ya no
es donde gasta.

Por qué se movió: tawasuyu repuebla su target a ~62 G/h. El 27/08 se le
liberaron 92,9 GiB con cargo clean, se lanzó la campaña con 64 G libres y
70 min después el disco estaba en 237 MB — la tanda abortó en cosmic-applets
por un disco que no era suyo. El cargo clean sirve para un pico, no para
financiar una campaña larga: el vecino lo recupera entero en una hora.

El vigía ahora toma el mínimo de {STORE, work/sources, CARGO_HOME}. Con
$ROOT veía 46 G y bajando; ahora ve 84 G reales.
This commit is contained in:
Sergio
2026-08-27 02:40:17 +00:00
parent 993fc239e8
commit 483a6ec25a
+15 -5
View File
@@ -49,14 +49,24 @@ SECO=0; [ "${1:-}" = "--seco" ] && SECO=1
# era 138 G libres en el repo y 19 G en `/`, o sea que el vigía habría dado luz verde mientras el que
# se llenaba de verdad era el otro — y llenar `/` no rompe una tanda, rompe la máquina. Se toma el
# MÍNIMO de los dos. Si comparten FS, `df` devuelve lo mismo dos veces y esto es inocuo.
#
# ── 2026-08-27: MIRA DÓNDE SE GASTA, NO DÓNDE ESTÁ EL REPO ──────────────────────────────────────
# Medir `$ROOT` dejó de ser correcto al mudar el store al volumen `harkaq-cosecha`. `$ROOT` es
# /mnt/vvv, que hammer COMPARTE con tawasuyu, y tawasuyu repuebla su target a ~62 G/h: el 27/08 se
# comió los 92 G que se le habían liberado en 70 minutos y el vigía abortó la tanda por un disco
# que hammer ya ni usaba. Un vigía que mide el disco de OTRO no protege la tanda, la mata.
# Ahora se miden los tres sitios donde hammer SÍ crece —store, árboles de fuentes y CARGO_HOME—
# y se toma el mínimo. Si comparten FS, `df` repite el número y esto es inocuo.
CARGO_H="${CARGO_HOME:-$HOME/.cargo}"
avail_gb() { df -BG --output=avail "$1" 2>/dev/null | tail -1 | tr -dc 0-9; }
libre_gb() {
local a b
a=$(avail_gb "$ROOT"); b=$(avail_gb "$CARGO_H")
[ -z "${a:-}" ] && a=999999
[ -z "${b:-}" ] && b=999999
[ "$a" -le "$b" ] && echo "$a" || echo "$b"
local m=999999 v d
for d in "$STORE" "$ROOT/work/sources" "$CARGO_H"; do
[ -e "$d" ] || continue
v=$(avail_gb "$d"); [ -z "${v:-}" ] && continue
[ "$v" -lt "$m" ] && m=$v
done
echo "$m"
}
ts() { date -u +%Y-%m-%dT%H:%M:%SZ; }