Sistemo v0.5.0: Storage-Driven VM Lifecycle

Every VM now has a tracked root volume. Resize storage, move data between VMs, and preserve disks across deletions. Storage is a first-class citizen.

v0.5.0 is here, and it brings the biggest architectural change since launch. Every VM now has a tracked root volume — storage is no longer a hidden implementation detail, it's a first-class resource you can inspect, resize, detach, and preserve independently of the VM that created it.

What changed

Root volumes

When you deploy a VM, Sistemo now automatically creates a tracked root volume for it. No extra flags needed — it just works.

sistemo vm deploy debian --name web --storage 5GB

That single command creates both the VM and a root volume named web-root with 5 GB of storage.

Volume resize

Need more space? Grow a volume without redeploying. Stop the VM, resize, start it back up.

sistemo vm stop web
sistemo volume resize web-root 10GB
sistemo vm start web

Attach and detach

Data volumes can be moved between VMs. Create a volume once, attach it to whichever VM needs it, detach when done.

sistemo volume create 2G --name appdata
sistemo vm stop web
sistemo vm volume attach web appdata
sistemo vm start web

# later, move it to another VM
sistemo vm stop web
sistemo vm volume detach web appdata
sistemo vm volume attach api appdata
sistemo vm start api

Preserve storage on delete

The new --preserve-storage flag lets you delete a VM while keeping its volumes intact. Rebuild the VM later and reattach the same data.

Volume listing

$ sistemo volume list
NAME         SIZE    STATUS     ATTACHED TO   TYPE
web-root     5.0GB   attached   web           root
appdata      2.0GB   attached   web           data
pgbackup     1.0GB   detached   -             data

Why this matters

Before v0.5.0, a VM's root filesystem was a hidden file buried inside the vms/ directory. When you deleted a VM, the rootfs was deleted with it — no questions asked, no way to recover it.

Now the rootfs is a tracked volume. It shows up in sistemo volume list, it can survive VM deletion, and it can be resized without redeploying. This is how production infrastructure works — we built Sistemo on patterns proven in large-scale VM platforms — and now those patterns are available on your own hardware.

Example workflow

Here's a real workflow that shows the new storage features working together:

# Deploy with custom storage
sistemo vm deploy debian --name web --storage 5GB

# Create and attach a data volume
sistemo volume create 2G --name appdata
sistemo vm stop web
sistemo vm volume attach web appdata
sistemo vm start web

# Resize the root volume
sistemo vm stop web
sistemo volume resize web-root 10GB
sistemo vm start web

# Delete VM but keep data
sistemo vm delete web --preserve-storage
sistemo volume list  # volumes still there

After that last command, both web-root and appdata are still on disk, ready to be attached to a new VM whenever you need them.

Other improvements in v0.5.0

  • Per-IP rate limiting — configurable, defaults to 100 requests per second
  • Graceful daemon shutdown — in-flight operations complete cleanly on SIGTERM
  • Configurable reconciler interval and SSH timeout — tune the daemon to your workload
  • Security hardening — XSS prevention, input validation, daemon URL validation
  • Better error messages — no more raw e2fsck output leaking into the CLI
  • Comprehensive audit logging — every operation is tracked in the history log
  • JSON output — add -o json to list and status commands for scripting
  • Skip confirmation — use -y to skip delete prompts in scripts
  • Command aliases ls for list, rm for delete, show for status
  • Boot from volume — use --volume to deploy a VM from an existing root volume