FlashStore Against Crimson: Two Rewrites Of The Same OSD
Crimson is Ceph’s own rewrite of the OSD, in C++ on the Seastar framework, with a new native store called SeaStore; FlashStore is croit’s rewrite, in Rust, with a store of its own. Both are in preview and both are aimed at NVMe and fast networks. This compares them as Ceph 21.2.0 Umbrella ships Crimson, from Ceph’s source and documentation and croit’s ceph-rust snapshot: where each comes from and under what licence, why Rust meets the Five Eyes memory-safety guidance and C++ does not, why Crimson needs its own pools and an experimental flag while FlashStore drops into existing pools, why Umbrella has no way to turn an existing pool into a Crimson pool so the data has to be copied, what each tells the monitor at boot, Seastar reactors against pinned polling cores, the fact that a default Crimson OSD still runs BlueStore, SeaStore’s onode, OMAP and LBA trees against FlashStore’s one tree per shard, the order each commits a write in, SeaStore’s segment cleaner, and what hardware and pools each will take.