Fly.io Replaces Its Homemade Filesystem After Agents Permanently Lost Checkpoints
SBD: We Have a Filesystem at Home
Fly.io's Sprites originally ran on a heavily modified JuiceFS with a SQLite metadata backend, but three separate ledgers—chunks, metadata, and checkpoints—could drift out of sync and silently corrupt disks. A test harness drove 400 Sprites through 5,000 write-checkpoint-restore cycles, and a nonzero number permanently lost the ability to checkpoint. The replacement, the Sprites Block Device, presents a bucket as an NBD block device with metadata stored alongside its blocks, so ext4 handles everything and checkpoints become plain block snapshots.
But spaghetti that comes with a repair kit is gonna leave a weird taste in your mouth, however you cook it.
- dangoodmanUT
I really like fly.io posts, they're usually written in such a way that feels so human. I used to read all of them, because the writing was interesting, and secondarily sometimes the topic was.
Except seeing sentences like this:
> The difference is that a Sprite now stops and says so instead of carrying on with a disk it can’t vouch for
Makes it feel distinctly LLM written. Maybe I'm being RL'd to identify LLM authorship, maybe the author was RL'd to write like that by reading so many Claude-written works, but I'd like to see the humanity of fly.io blog posts come back.
- bennettnate5
> I have unkind things to say about people who make their own pasta
You lost me on the first sentence; my significant other's homemade ravioli is unparalleled. Homemade pasta is a delight to make and tastes so much better than $1 cardboard box pasta
- aftbit
I'll be honest, I don't understand what Sprites are, or why they need their own kind of block device. All of the pain seems to come back to trying to map a linux filesystem running on a block device into an object store. They could just ... not do that?
Here's why they do:
https://fly.io/blog/design-and-implementation/
But it feels like maybe they made the wrong tradeoff here.