Members of the Oxide storage team, including Josh, Alan, James, and Matt, discuss Crucible, a block storage service. They talk about the challenges of storing data, building a crash-safe disk representation, starting a new project, and collaboration. They also cover testing system reliability, resolving back pressure issues, and the development and open-sourcing of Crucible.
Read more
AI Summary
AI Chapters
Episode notes
auto_awesome
Podcast summary created with Snipd AI
Quick takeaways
The team utilizes Rust and extensive testing tools to ensure reliability and optimize different parts of the storage system, resulting in improved performance and efficiency.
Authenticated encryption adds complexity to the system, making it challenging to fit encrypted blocks into existing structures, highlighting the importance of security considerations.
Deep dives
The Crucible team begins development of the storage system
Alan and James join the team and start working on implementing the storage system. Alan works on the lowest layers, interacting directly with the bits on disk, while James focuses on simulating different failure modes and testing the system. They utilize Rust and create extensive testing tools to ensure reliability and allow for future refactoring. James demonstrates the ability to boot on Crucible, marking a significant milestone. The team develops a suite of tests, including unit tests and integration tests, to cover different scenarios and failure conditions. Matt joins the team and works on improving performance, leveraging the extensive test suite and Rust's ability to make confident refactorings. They optimize different parts of the system, such as changing the on-disk format and replacing SQLite with raw files for storing metadata. The team continues to iterate and make improvements to make the storage system faster and more efficient.
The challenge of authenticated encryption
Authenticated encryption was deemed necessary due to security concerns, but it added complexity to the system. The encrypted version of a block is still the same size, but additional data is added, making it challenging to fit into existing structures.
The decision to ditch SQLite for simplicity
Two versions of the system were tested—one with SQLite and one without. Both versions performed well, but SQLite was ultimately removed for the sake of simplicity. Even though SQLite was robust and easy to understand, it added unnecessary complexity.
The significance of the volume layer and block IO trait
The volume layer and block IO trait were key abstractions that enabled important functionality. The volume layer allowed for handling multiple sources of block data, such as booting from an image or taking snapshots. It also facilitated features like growing a disk and re-encryption. The block IO trait simplified communication between different parts of the system and allowed for easy integration with other components.
Bryan and Adam are joined by members of the Oxide storage team--Josh, Alan, James, and Matt--to talk about Crucible, the service that provides block storage for VM instances running in the Oxide Rack.
If we got something wrong or missed something, please file a PR! Our next show will likely be on Monday at 5p Pacific Time on our Discord server; stay tuned to our Mastodon feeds for details, or subscribe to this calendar. We'd love to have you join us, as we always love to hear from new speakers!
Get the Snipd podcast app
Unlock the knowledge in podcasts with the podcast player of the future.
AI-powered podcast player
Listen to all your favourite podcasts with AI-powered features
Discover highlights
Listen to the best highlights from the podcasts you love and dive into the full episode
Save any moment
Hear something you like? Tap your headphones to save it with AI-generated key takeaways
Share & Export
Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more
AI-powered podcast player
Listen to all your favourite podcasts with AI-powered features
Discover highlights
Listen to the best highlights from the podcasts you love and dive into the full episode