User Tools

Site Tools


Active Block Layer Extensions (ABLE)



The Active Block Layer Extensions (ABLE) project presents a new approach to realizing self-managing storage systems. It makes two contributions. First, it creates an evolvable block layer software infrastructure that substantially reduces the complexity involved in building self-managing storage systems by raising the level of abstraction for their development. Second, it develops a novel theory of storage extensions that provides a logic framework for analyzing extensions developed at the block layer. This theory allows system administrators to make well-reasoned configuration and deployment choices for their systems that accurately reflect system priorities. The software infrastructure substantially reduced the complexity for each of the five storage extensions that we developed, and across each of the five complexity metrics that we used.

The theoretical framework develops nine basic rules that help analyzing a stack of storage extensions. An examination of several instances of the use of these rules with concrete extensions provides a illustration and informal validation of the theory.


Recent years have seen innovation by the storage research community in developing storage self-management extensions. Often, these provide critical improvements in meeting the manifold storage system goals of reliability, performance, power-savings, etc., hence, are acknowledged successes within the research community. However, fundamental challenges remain when translating storage self-management into practice. These challenges constrain adoption of these ideas in commodity systems, and thus diminish their impact on productions storage environments.

Based on our experiences developing and deploying storage self-management extensions, we have identified two broad factors holding back large-scale adoption of self-managing storage systems. First, the operating system, the typical development environment for self-management extensions, is a complex building block which makes extensions extremely difficult to develop and validate. Second, reasoning about how deployed extensions affect the stored data and access it is an undeveloped science; consequently, administrators find themselves ill-equipped to make sound deployment decisions and thus much rather choose not to deploy what they don't understand. Addressing these challenges, we believe, will help developers and administrators by mitigating the complexities of their respective roles, thus accelerating the rate of development and adoption of storage self-management extensions.

The Active Block Layer Extensions (ABLE) project develops theory and systems infrastructure that, when put together, comprehensively address the challenges outlined above. ABLE advocates and supports self-management extensions that are built at the block layer, and thus export a logical block interface to storage clients (e.g. file systems) for accessing an underlying (local or remote) block device. Block layer extensions automatically inherit several desirable characteristics such as access to both process and device context of I/O operations, a clean interface with a simple data consistency contract to build upon, file-system independence and accessibility, I/O scheduling services, and easy arbitration of storage resources. We examine these motivating reasons in detail in The Case for Active Block Layer Extensions.

The ABLE project makes two contributions. First, an evolvable block-layer software infrastructure that implements a suite of block layer primitive functionality commonly used by self-management extensions as an in-kernel library (see Figure below). These primitives represents a radical improvement in the level of abstraction for developing self-management extensions, thus aiding developers build robust self-management extensions faster. The software infrastructure also provides a central point for evolving, examining, and validating block layer primitives by the larger storage research and development communities. Second, a novel theory of block layer extensions that provides a logic framework for understanding how storage extensions affect the data path. This theory enables modeling and classifying the behavior of individual extensions and analyzing the influence of extension aggregates on data and data accesses. When put into practice, this theory can guide administrators make sound deployment decisions for multiple self-management extensions that accurately reflect high-level defined policies. Note that extensions are assumed to be ``well-behaved'' in that each extension ensures block consistency for data that it handles.

ABLE Architecture

For further detail in the design and implementation of ABLE, please refer to the paper(s) below.


  • Write Policies for Host-side Flash Caches|
    Ricardo Koller, Leonardo Marmol, Raju Rangaswami, Swaminathan Sundararaman, Nisha Talagala, and Ming Zhao
    Proceedings of the USENIX Conference on File and Storage Technologies, February, 2013.
  • The Case for Active Block Layer Extensions
    Jorge Guerra, Luis Useche, Medha Bhadkamkar, Ricardo Koller, and Raju Rangaswami
    Proceedings of International Workshop on Storage and I/O Virtualization, Performance, Energy, Evaluation and Dependability (SPEED), February, 2008.

Acknowledgement of Support

This work is supported by the National Science Foundation under grant CNS-0747038 and by the Department of Energy under grant DE-FG02-06ER25739.

projects/able/start.txt · Last modified: m/d/Y H:i by raju