this is really cool! Can you give more details on how blocks, replications, metadata, etc. are being handled?
On a high level it's variable-sized blocks packed into 1GB extents, which are then aggregated into volumes and erasure coded across a set of disks on different machines/racks/rows/etc. We also replicate cross-country in addition to this. Live writes are written into non-erasure-coded volumes and encoded in the background.
The volume metadata on the disks contains enough information to be self-describing (as a safety precaution), but we also have a two-level index that maps blocks to volumes and volumes to disks.
More info to come later.
Also, do you mimic the eventually consistent behaviour of AWS, or do you offer a stronger form of consistency?