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.
In previous research, we have developed a device driver that provides protection for file systems against misbehaving disk drivers. We call it the “filter driver.” The filter driver employs two main techniques to achieve this: checksumming (for detection of problems) and mirroring (for recovery from problems). Each of the two can be turned on and off independently. See our paper about the filter driver for all the details.
The mirroring part is basically a very limited form of block-based software RAID: essentially it is RAID1 across two disks. We would like to extend the filter driver to support several other RAID configurations: RAID1 on more than two disks; RAID0; RAID4; and, possibly RAID5. We have good reasons for this: first of all, it would turn the filter driver into a full-fledged block-based software RAID solution which would be great for MINIX3, and second, it allows us to perform a fair comparison between this block-based RAID solution and our own file-based RAID solution.
If you are interested, please come and talk to us!