June 30, 2009 posted by Antti Kantee
At USENIX 2009 I talked about rump file systems.
The paper (pdf,
and slides are available.
Additionally, USENIX members can view a video
of the presentation.
When kernel functionality is desired in userspace, the common
approach is to reimplement it for userspace interfaces. We show
that use of existing kernel file systems in userspace programs is
possible without modifying the kernel file system code base. Two
different operating modes are explored: 1) a transparent mode, in
which the file system is mounted in the typical fashion by using
the kernel code as a userspace server, and 2) a standalone mode,
in which applications can use a kernel file system as a library.
The first mode provides isolation from the trusted computing base
and a secure way for mounting untrusted file systems on a monolithic
kernel. The second mode is useful for file system utilities and
applications, such as populating an image or viewing the contents
without requiring host operating system kernel support. Additional
uses for both modes include debugging, development and testing.
The design and implementation of the Runnable Userspace Meta Program
file system (rump fs) framework for NetBSD is presented. Using
rump, ten disk-based file systems, a memory file system, a network
file system and a userspace framework file system have been tested
to be functional. File system performance for an estimated typical
workload is found to be ±5% of kernel performance. The
prototype of a similar framework for Linux was also implemented
and portability was verified: Linux file systems work on NetBSD
and NetBSD file systems work on Linux. Finally, the implementation
is shown to be maintainable by examining the 1.5 year period it
has been a part of NetBSD.