Multiple different filesystems — including disk-based, network, distributed, abstract — arean integral part of every operating system. They are usually written as kernel modules and abstracted to the user via a virtual filesystem switch. In this paper we analyse the feasibility of reimplementing the virtual filesystem switch as a userspace daemon and applicability of this approach in real-life usage. Such reimplementation will require a way to virtualise processes behaviour related to filesystem operations. The problem is non-trivial, as we assume limited capabilities of the VFS switch implemented in userspace. We present a layered architecture comprising of a monitoring process, the VFS abstraction and real filesystem implementations. All working in userspace. Then, we evaluate this solution in four areas: portability, feasibility, usability and performance. Our results demonstrate possible gains in using the userspace-based approach with monolithic kernels, but also underline problems that are encountered in this approach.
[1]
Erez Zadok,et al.
Rapid file system development using ptrace
,
2007,
ExpCS '07.
[2]
Jonathan Lemon.
Kqueue - A Generic and Scalable Event Notification Facility
,
2001,
USENIX Annual Technical Conference, FREENIX Track.
[3]
Ashish Gehani,et al.
Performance and extension of user space file systems
,
2010,
SAC '10.
[4]
Gernot Heiser,et al.
User-Level Device Drivers: Achieved Performance
,
2005,
Journal of Computer Science and Technology.
[5]
Greg Kroah-Hartman,et al.
Linux Device Drivers, 3rd Edition
,
2005
.