CORFU* is a novel storage cluster design that pools a farm of flash units and exposes it to clients as a single, global shared-log. CORFU utilizes flash to break the seeming tradeoff between consistency and performance, providing both strong consistency guarantees and high throughput. Our implementation is carried mostly by a client-side library, thus relieving the service from any IO bottlenecks; a CORFU cluster of 40 flash units can drive roughly 1 million 4-KByte IOPS.
A shared log is a powerful abstraction, which empowers high-performance, in-memory distributed applications that derive coordination and reliability from a common source. We demonstrate this through TOFU*, a distributed key-value store built over CORFU, which supports multi-key transactions.
Our client-heavy design relieves the need to place expensive machines and controllers between flash and clients. To demonstrate the feasibility of directly attached CORFU storage units to a network, we built a prototype FPGA-based flash unit which attaches directly to a 1Gbps NIC, and consumes an order of magnitude less energy than a PC-attached SSD.
* CORFU stands for Clusters of Raw Flash Units; it is also the name of a Greek resort island near Paxos.
* TOFU stands for Transactions over CORFU.
CORFU team: Mahesh Balakrishnan, John Davis, Dahlia Malkhi, Vijayan Prabhakaran, Ted Wobber
Thanks: Phil Bernstein, Ken Eguro, Jeremy Elson, Ed Nightingale, Colin Reid, Michael Wei, Ming Wu