The Modify-on-Access (Mona) File System

Overview

The Modify-on-Access (Mona) file system is an active file system that cooperates with processes to accomplish tasks. Mona uses modular streaming operations, transformations, to transparently perform actions on behalf of a user process during a read or write. As a result, the Mona file system extends the capabilities of conventional file systems which passively transfer data through streams between kernel buffers and secondary storage.

A transformation, the basic unit of computation performed by the Mona file system, is an arbitrary operation on a stream of data. The file system transforms data when it is accessed. On a read, the file system applies transformations to data before presenting it to a user process. Similarly, it applies transformations to data before writing it to disk. Compression is a simple and obvious use of transformations. On input, the read transformation decompresses data as it is read from the file and on output, the write transformation compresses data. As a result, the Mona file system provides transparently compressed files which hide details of the compression from users who access a compressed file as though it were a normal file.

The Mona file system supports kernel-resident and user-defined extensions, enabling it to be efficient and flexible. Common, trusted operations reside within kernel transformations that execute quickly and incur minimal overhead relative to a base file system. A kernel-resident identity transformation (functionally equivalent to the base file system) adds an overhead of 3--5\%. Arbitrary user-defined operations execute in user space, providing extensibility without endangering system security.

The Mona file system is the first component of a suite of system software designed for a collaborative memory system in which the memory system and intelligent peripheral devices collaborate with a host processor to accomplish tasks. Related projects include a Mona virtual memory system and a Mona peripheral device.

Future work

There are several opportunities for improvement to the Mona file system.  Current work on the system focuses on broadening the suite of available transformations and developing support for intelligent peripheral devices.

Availability

Mona can be downloaded as a patch to the 2.4.1 kernel source tree. Please consult the documentation for this release.

Additional Information

For more information on the Mona file system, read the following articles:

Journal Articles:

Conference and Workshop Proceedings:

Technical Reports:

Dissertations and Theses:

Support

Support for our work is/has come from the following
Disclaimer

The following are included in partial fulfillment of terms of NSF award.