machines

Machines

A machine boots with 64 vCPU and 8 GiB of memory, and grows to 256 GiB of memory and 1 PiB of disk as its workload needs them. It runs until you stop it, and you only pay for the per-second usage of its resources.

Lifecycle

ix new boots a machine from the base template. Point it at a template or a snapshot to boot from those instead.

$ix new$ix stop app$ix start app$ix rm app

ix stop powers the machine off. Its disk and state survive: ix start brings it back where it left off. A stopped machine is billed for its disk only. ix rm removes the machine and its disk.

Access

There are four ways into a machine, ordered by how broken things are: each one needs less of the machine to be healthy than the one before it.

Shell

$ix shell app

A normal interactive shell. It needs the in-guest agent to be alive. Run a single command with ix shell app -- <command>, and add --noninteractive in scripts: pipes behave, and your command’s exit code passes through unchanged.

Console

$ix console app

ix console attaches to the workload’s own terminal: what the machine’s main process prints and reads. ix shell opens a separate shell beside it.

Serial

$ix serial app

The emulated serial console, terminated on the host. When the guest agent is dead and ix shell hangs, ix serial still answers: this is the kernel rescue line. One attach holder at a time, --force evicts a stale one.

Logs

$ix logs app --lines 50

ix logs reads output the platform already recorded, so it works even when the machine does not answer at all. --follow streams new entries, --since 5m narrows the window, and --stream picks which recording to read: the workload’s stdout, or the kernel and platform streams below it.

Snapshots

A snapshot is the whole machine at one moment, disk and memory, frozen while it runs. Take one before risky work.

$ix snapshot app$ix snapshot ls app

The machine keeps running. Restore a snapshot with ix new: this creates a new machine and leaves the original untouched, so restoring the same snapshot several times gives you several machines from the same point.

$ix new <snapshot-id>
app snapshot 018f…
app-2
app-3

A restore defaults to the snapshot’s own region: snapshots live in one region, like templates. Storage is deduplicated, so a snapshot costs only its unique bytes, billed as disk.

A snapshot arrives in two steps. ix snapshot returns the id once the machine is captured, which is the only part that touches the machine. The disk then copies to the rest of the region in the background, and ix snapshot ls reports the snapshot as capturing until that finishes, then ready, or failed if the copy does not land. Until then it exists on one node only, and only a ready snapshot can be restored: a restore started earlier waits for the copy and then proceeds. Pass --wait-durable when you want ix snapshot itself to return only once the copy has landed.