Violin: a framework for extensible block-level storage

In this work we propose Violin, a virtualization framework that allows easy extensions of block-level storage stacks. Violin allows (i) developers to provide new virtualization functions and (ii) storage administrators to combine these functions in storage hierarchies with rich semantics. Violin makes it easy to develop such new functions by providing support for (i) hierarchy awareness and arbitrary mapping of blocks between virtual devices, (ii) explicit control over both the request and completion path of I/O requests, and (iii) persistent metadata management. To demonstrate the effectiveness of our approach we evaluate Violin in three ways: (i) we loosely compare the complexity of providing new virtual modules in Violin with the traditional approach of writing monolithic drivers. In many cases, adding new modules is a matter of recompiling existing user-level code that provides the required functionality. (ii) We show how simple modules in Violin can be combined in more complex hierarchies. We demonstrate hierarchies with advanced virtualization semantics that are difficult to implement with monolithic drivers. (iii) We use various benchmarks to examine the overheads introduced by Violin in the common I/O path. We find that Violin modules perform within 10% of the corresponding monolithic Linux drivers.

[1]  Larry L. Peterson,et al.  Making paths explicit in the Scout operating system , 1996, OSDI '96.

[2]  G. C. Wong,et al.  "Stacking/" Vnodes: A Progress Report , 1993, USENIX Summer.

[3]  Paul W. Schermerhorn,et al.  USENIX Association Proceedings of the FREENIX Track : 2001 USENIX Annual , 2001 .

[4]  Eddie Kohler,et al.  The Click modular router , 1999, SOSP.

[5]  John S. Heidemann,et al.  File-system development with stackable layers , 1994, TOCS.

[6]  Jim Zelenka,et al.  RAIDframe: rapid prototyping for disk arrays , 1996, SIGMETRICS '96.

[7]  John Wilkes,et al.  Traveling to Rome: QoS Specifications for Automated Storage System Management , 2001, IWQoS.

[8]  Larry L. Peterson,et al.  A dynamic network architecture , 1992, TOCS.

[9]  Jim Zelenka,et al.  A cost-effective, high-bandwidth storage architecture , 1998, ASPLOS VIII.

[10]  Erez Zadok,et al.  FIST: a language for stackable file systems , 2000, OPSR.

[11]  Angelos Bilas,et al.  Clotho: Transparent Data Versioning at the Block I/O Level , 2004, MSST.

[12]  Roy Friedman,et al.  A framework for protocol composition in Horus , 1995, PODC '95.

[13]  David Teigland,et al.  Volume Managers in Linux , 2001, USENIX Annual Technical Conference, FREENIX Track.

[14]  Kimberly Keeton,et al.  Automatic design of dependable data storage systems , 2003 .

[15]  Walter Oney,et al.  Programming the Microsoft Windows Driver Model , 1999 .

[16]  Barry Phillips,et al.  Have Storage Area Networks Come of Age? , 1998, Computer.

[17]  Greg Lehey The Vinum Volume Manager , 1999, USENIX Annual Technical Conference, FREENIX Track.

[18]  Robert Grimm,et al.  Application performance and flexibility on exokernel systems , 1997, SOSP.

[19]  Wilson C. Hsieh,et al.  The logical disk: a new approach to improving file systems , 1994, SOSP '93.

[20]  Joel H. Saltz,et al.  Active disks: programming model, algorithms and evaluation , 1998, ASPLOS VIII.

[21]  Jim Gray Storage Bricks Have Arrived , 2002 .

[22]  Jeffrey Katcher,et al.  PostMark: A New File System Benchmark , 1997 .