The flexibility provided by hardware virtualization allows administrators to rapidly create, destroy, and migrate systems across physical hosts. Unfortunately, the storage systems upon which these virtual machines depend are not nearly as flexible. Although the block device interface is simple and intuitive, block devices themselves must generally be implemented in the operating system kernel, an environment which is neither simple nor portable. We propose Block Mason, a new framework to support the safe and rapid development of virtual block devices. Block Mason allows users to build small, reusable block processing elements in user space, and to connect them together into powerful composite modules using a simple declarative graph language. Although the environment emphasizes simplicity for developers and end users, it includes built-in support for powerful operations like live reconfiguration and dependency tracking.
Dutch T. Meyer, Brendan Cully, Jake Wires, Norman