setup-host takes 'dir' storage — every clone is a full disk copy, and cloning is the whole point #29
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:cli
scope:drill
scope:host
scope:installer
scope:templates
scope:tiers
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/box#29
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
host/setup-host.shbootstraps the storage pool with:--minimalpicks thedirbackend. Confirmed on a live host:driver=dir pool=default.dirhas no copy-on-write. Soincus copy— which is whatclaudebox new --fromruns — physically copies the VM'sroot.img: several GB once Docker, Node and Claude Code are installed. On the drill host a single clone took minutes, and every clone pays the same cost again, in both time and disk.Why this cuts at the heart of the tool
From the README, the reuse story is the product:
claudebox snapshot work authedclaudebox new --name feature --from work/authedOn a CoW backend (btrfs, zfs, lvm-thin), that clone is near-instant and near-free: it shares blocks with its source and only diverges on write. On
dirit is a full disk copy every single time. The feature still works — it is just slow enough and expensive enough that "clone forever" stops being an attractive thing to do, which is the one workflow claudebox exists to make attractive.The disk cost compounds: N clones of one snapshot = N full copies on
dir, ≈ 1 copy plus deltas on CoW.Proposal
setup-host.shshould create the pool deliberately rather than take--minimal's default:dironly as an explicit fallback, and when it is chosen, say so: print that clones will be full copies, because the user's mental model of the tool ("cloning is cheap") is now wrong and nothing tells them.Sketch:
(Exact wiring needs care:
incus admin init --minimalalso sets up the default profile's root device, so replacing it means doing that explicitly. Sizing the loop file is a judgement call — the VM root device is pinned at 60GiB inbin/claudebox, though sparse.)Migration
Existing hosts are on
dirand cannot be converted in place. Either leave them (it works, it is just slow) or document the rebuild:teardown-host.sh→ recreate the pool → re-mint. Not urgent; this is a performance and disk-cost bug, not a correctness one.Provenance
Found while running the drill for the #15 audit — the clone step sat for minutes and the storage driver explained why. Same host, same session, that surfaced the daemon wedge (#26) and the clone-identity collision (#27).