Fly Volumes are simple block devices mounted by the guest kernel, it’s not possible for two guest kernels to mount the same block device (at least read-write) at the same time. we don’t sync data between volumes because that’s out of scope for what the product is; for many use cases it wouldn’t make sense, and the complexity (especially between regions) would be huge. you can run your own code to sync data between volumes, or ideally use object storage or a database product instead.
a Fly Machine belongs to a single app. not all fly machines are managed via a fly.toml (indeed, I would say most aren’t) and you can definitely run different images both within the same app (by creating Machines via API and within the same machine using multi-container support. if you’re familiar with kubernetes, you could consider a Fly Machine to be akin to a Pod.
we don’t have downtime data available at the moment, but our reliability team is looking into compiling metrics to be publicly shared.