next up previous
Next: Transformations Up: The Modify-on-Access File System: System Previous: The Modify-on-Access File System: System

Introduction

The Modify-on-Access (MonA) file system extends the capabilities of conventional file systems by dynamically transforming data during accesses. Consequently, MonA is an active file system that cooperates with user processes to accomplish tasks. This model contrasts conventional file systems which passively transfer pages of data between kernel buffers and secondary storage.

MonA provides a flexible and efficient interface for adding features to a file system. With MonA, a user has the ability to define unique access semantics for a file that precisely match those required. As a result, the file system may transparently perform actions that previously were inherent to the application, such as file locking. In addition, MonA has the potential to increase the end-to-end performance of applications. Due to caching effects, processing data during transit can be more efficient than fetching data and operating on it at a later time. Furthermore, the MonA file system implements virtual file services and file structures that transparently provide users with functionality not found in traditional file systems. These features have overheads of 3-5% over the base file system and perform better than other methods on end-to-end tests.

When the MonA file system reads data from or writes data to a file, it looks for transformations that are associated with the file's I/O streams and executes any operations that apply. A transformation is an arbitrary operation on a stream of data. On a read, the file system applies transformations to the raw data before presenting it to the user process. Similarly, it applies transformations to the data before writing it to the disk. In this way, operations are pushed out of the application into the file system. Compressed files are a simple and obvious use of transformations. The read transformation decompresses data as it is read from the file and the write transformation compresses.

A privileged user may add transformations directly to the kernel. However, maintaining system security precludes downloading arbitrary user-defined code into the kernel. Consequently, the MonA file system provides an interface to export a transformation outside of the kernel and into user space. Although executing a transformation outside of the kernel is considerably slower than running an equivalent operation within the kernel, the process is fast enough to be sufficient for many applications.

The MonA file system is derived from the ext2 file system [2] and currently supports versions 2.0.27 through 2.0.34 of the Linux kernel. MonA is completely compatible with ext2; consequently, a disk partition formatted for ext2 can be mounted as MonA (or vice versa). Furthermore, the MonA file system is designed as a loadable module and requires only negligible modifications to the kernel, such as registering the file system and exporting kernel variables.2

The remainder of the paper is organized as follows. Section 2 describes transformations in detail. Next, Section 3 presents several applications that MonA currently supports. Section 4 provides an overview of the implementation of the MonA file system. Section 5 discusses the performance of the MonA file system. Section 6 compares MonA to related systems. Section 7 explains future work and summarizes the paper.


next up previous
Next: Transformations Up: The Modify-on-Access File System: System Previous: The Modify-on-Access File System: System
Richard Kendall
1999-02-01