The storage industry has witnessed a tremendous change in both hardware and software fronts over the past decade. Storage hardware landscape is witnessing the birth and adoption of new classes of storage like flash memory-based solid state drives that posses radically different characteristics compared to the traditional disk drives. Storage software, on the other hand, has evolved from simple single disk file systems to feature-rich, sophisticated storage systems like ZFS and Btrfs that support a suite of features like snapshotting, cloning, checksumming, background defragmentation etc.
Our research involves building a next-generation storage stack called Loris, on top of the MINIX 3 operating system. Before we started designing our stack, we analyzed all existing solutions along three different dimensions - reliability, flexibility and heterogeneity. We found that all existing solutions fail to satisfy the requirements of an ideal storage stack. Using the modular, layered network stack as a guiding example, we then designed and implemented the Loris stack which solves all problems faced by existing approaches.
Loris' modularity makes it implement a highly-reliable storage solution that can protect itself from both hardware and software failures. Loris' flexibility makes it possible to deploy a storage stack that can snapshot and clone data in a range of granularities ranging from individual files all the way to file volumes.
As flash-based SSDs grow larger and cheaper, more enterprises have started adopting them in various capacities ranging from dedicated HDD caches to replicated primary storage devices. However, the reliability issues posed by limited number of erase operations continues to be the Achilles' heel of SSDs. Performing wear leveling and reducing random writes are two important techniques that have been adopted by SSD vendors and flash file system designers to reduce the number of erase operations and hence, improve the lifetime of SSDs.
In this project, you will be given a state-of-the-art SSD. Your job is to design and develop a flash-optimized layout algorithm, for our Loris storage stack. If you are interested, please come and talk to us!