Skip to main content

Gecko



Contention-oblivious block storage

Isotope



ACID transactional block storage

Yogurt



Weakly consistent block storage


Overview

Gecko, Isotope, and Yogurt are all block storage systems. They are implemented as Linux device mapper modules and expose a logical block device interface to the user similar to logical volumne manager (LVM) and software RAID. Additional function calls to the system are implemented using ioctl.

Gecko uses a disk array based on a chained-logging design which logs to multiple disk in a round robin manner. The chained-logging systematically separates garbage collection (GC) and logging to take place in different disks so that logging operations are never interfered by (GC). Gecko employs a special caching scheme which the cache follows the tail of the log (where the log entries are appended) to block reads from interfering with the logging operation. Gecko trades off maximum throughput of multiple disk drives for a stable single drive sequential throughput, which in general leads to better performance under real workloads.

Isotope is an ACID transactional block storage system: it supports transactional isolation in addition to atomicity and durability. The transaction support from the block layer enables the transactional features to be used in any layers of the storage stack including and above the block layer (e.g. filesystem, application, etc.). Isotope facilitates transactional application designs and can have a transaction executed across different applications and data abstractions (e.g. reading a file from a filesystem and writing the file content to a key-value store using a transaction.).

Yogurt is a local block storage system that is an instance of StaleStore. StaleStore 1) maintains multiple versions of data; 2) can estimate cost for accessing different data versions; and 3) can support weak distributed consistency (e.g. monotonic reads, read-my-writes, bounded staleness, etc.). Yogurt is based on Gecko's chained-logging design and uses stale data in the log to trade off consistency and performance. It prefers to service reads from the caching layer and disks that are not logging. Distributed applications that are already aware of weak consistency and server applications that can maintain per-client guarantees can take advantage of Yogurt and any form of StaleStore.

People

Ji-Yong Shin (Cornell)
Mahesh Balakrishnan (Yale)
Tudor Marian (Google)
Jakub Szefer (Yale)
Hakim Weatherspoon (Cornell)

Past Collaborators

Lakshmi Ganesh (Facebook)

Code Release

Code for Gecko, Isotope, and Yogurt can be found in the following url:
http://github.com/jyshin/dm-tx.

Publications

  • "Towards Weakly Consistent Local Storage Systems," Ji-Yong Shin, Mahesh Balakrishnan, Tudor Marian, Jakub Szefer and Hakim Weatherspoon, In Proceedings of the ACM Symposium on Cloud Computing (SoCC), Santa Clara, CA, U.S.A., Oct 2016.
    < Slides [ pptx | pdf ] Poster [ pdf ] >
  • "Isotope: Transactional Isolation for Block Storage," Ji-Yong Shin, Mahesh Balakrishnan, Tudor Marian, and Hakim Weatherspoon, In Proceedings of the USENIX Conference on File and Storage Technologies (FAST), Santa Clara, CA, U.S.A., Feb 2016.
    < Slides [ pptx | pdf ] Poster [ pdf ] >
  • "Gecko: Contention-Oblivious Disk Arrays for Cloud Storage," Ji-Yong Shin, Mahesh Balakrishnan, Tudor Marian, and Hakim Weatherspoon, In Proceedings of the USENIX Conference on File and Storage Technologies (FAST), San Jose, CA, U.S.A., Feb 2013.
    < Slides [ pptx | ppt | pdf ] Poster [ pdf ] >
  • "Gecko: A Contention-Oblivious Design for Cloud Storage," Ji-Yong Shin, Mahesh Balakrishnan, Lakshmi Ganesh, Tudor Marian, and Hakim Weatherspoon, In Proceedings of the USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage), Boston, MA, U.S.A., Jun 2012.
    < Slides [ pptx | ppt | pdf ] Poster [ pdf ] >