Mostly correct… Under high load, both will be running simultaneously. (This is the topic of the auto-scaling/auto-stop link up above.)
Very little. A stopped Machine costs you only the RootFS fee, which is typically less than $0.15/month. (Last I checked, the dashboard lists the RootFS size that’s used in this calculation, but it’s not much larger than your uncompressed Docker image.)
It’s pretty frequent. The Fly.io platform will migrate your Machine to a different underlying physical host, without you asking, which involves a shutdown for a while, and each deploy also stops the Machine for varying amounts of time.
Moreover, congestion can cause a Machine to not be able to start until an auto-migration can happen, and in the past some people have found their (single-Machine) app offline for multiple hours. Volumes can exacerbate this, although the details aren’t really documented. (Last I heard, volumes prevented auto-migration entirely, but I get the impression that’s been relaxed recently.)
A non-obvious shortcut for this is to use the right-arrow key (→ cursor key on the keyboard) in fly m stop’s interactive list to select all.
You don’t want that final line, as there are is no "disk" process. (That would appear in a [processes] stanza.)
Volume attachment can be verified with fly m list externally and via df -h from within SSH.
Volumes are an advanced feature of Fly.io, in my opinion, and it’s best to avoid them if you can. I know you wanted to minimize changes within the app, but Managed Postgres (or another managed database externally) is really the only beginner-friendly database option on the Machines platform.
(Or, if all you need is a key-value store, then maybe Tigris would work? I don’t know Deno KV at all,
.)
Volumes are not shared between Machines, and they’re tied to the underlying physical host, so when that hardware dies, which it will someday, then you will lose all that data.
(In some niches, people find a loosely acceptable middle ground in using streaming backups like Litestream. Then permanent data loss is avoided, but there’s still a manual app-rescue emergency every so often.)