using oxide's "crucible" storage system on arch linux (haphazardly)

because oxide stuff is just... cool??? they make cool stuff. idk

hello. i’m back with another bad idea ^-^
i found this thing called crucible. i’m going to run it in my home lab… forever.

this is probably inadvisable but i have been meaning to set up Ceph for a while and this is a little more wacky, which suits my more recent approach to sysadmin a little more :3

charlotte. what the hell is crucible

crucible is the storage system built by oxide computer company. it looks pretty neat.

oxide have this very specific allure to me for a couple reasons:

just look at this computer:

photo of the oxide rack
photo of the oxide rack. it looks sick as hell
(img src: uhh i got this image from twitter. why are there not really any photographs of the oxide rack on the official website? there are only renders)

how does it work

chat. i do not work at oxide. but i have the code >:3

so here is what is up to the best of my knowledge:

whiteboard drawing of an architecture diagram of a mirrored networked storage system
picture i found on an oxide site which demonstrates the crucible architecture as used in the rack
(img src: i'm not sure. maybe adam from oxide?)

ok so how are you going to do it

alright. here’s what i’m looking to try at home:

i have two servers in my homelab that i will use for this. one is older and has an 8TB HDD array. one is newer and has a 16TB NVMe SSD array:

both are running arch and using btrfs which is very different from the helios/zfs production setup that crucible is really made for. (this is most of the reason that i do not want to run the management agent)

and obviously, we miss out on fault tolerance here because all the data lives on one machine on only a handful of disks. but later, a much more competent, richer, and more motivated future me will expand this system to a distributed group of mirrors.
thanks future me <3

anyway, here’s the plan:

so that’s like… a few layers of indirection. but it should be fine since a loopback socket is pretty much a pipe… right? let’s find out!!

oh yeah and between the two servers is like a 8ms network boundary (i have two home ISPs with separated networks) i hope that doesn’t kill perf lol

doing the thing

find out next episode when i finish this blog post