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.
> 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
A story which may or may not be based on lived experience: one day a Sprite stops booting. JuiceFS is asking object storage for a chunk and getting a 404. We wanted to go fast, so we ran JuiceFS in writeback mode. It records a chunk in its metadata first and uploads the bytes after. If the machine is killed at any time between those two steps, the metadata points at a chunk that doesn’t exist.
So we built a harness that drives fleets of Sprites through write, checkpoint, sleep, wake and restore, over and over, verifying every byte that comes back. We pointed it at 400 JuiceFS Sprites for about 5,000 cycles. A nonzero number of them permanently lost the ability to checkpoint. Well … fuck.
Enter: the Sprites Block Device (SBD). It takes a bucket and presents it to the Linux kernel as a block device, over NBD. The Sprite formats that device as ext4 and mounts it, the same way you’d mount a disk on any Linux box. Duh.
This blog has has a strange vibe like "the last BRAWNDO we made in a bathtub may or may not have killed some customers lmao, try NEW BRAWNDO 2.0 TODAY!" that I didn't realize could work for corporate messaging around an in-house CoW cloud filesystem.
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.