Portable Userspace Virtual Filesystem Switch

Łukasz Faber, Krzysztof Boryczko

Abstract


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.

Keywords


userspace virtual filesystem; operating systems; ptrace; FUSE

Full Text:

PDF

References


Apple Darwin/OS-X manual. 7th Nov. 1994. Chap. ptrace(2) Mac OS X Developer Tools Manual Page.

Jonathan Corbet, Alessandro Rubini and Greg Kroah-Hartman. Linux Device Drivers, Third Edition. O’Reilly Media, 2005. url: https://lwn.net/Kernel/LDD3/.

Filesystem in Userspace. 2011. url: http://fuse.sourceforge.net/. 2011-09-11.

FUSE Wiki — File systems using FUSE. 2011. url: http://sourceforge.net/apps/mediawiki/fuse/index.php?title=FileSystems (visited on 3rd Nov. 2011).

GIO Reference Manual. Version 2.32.3. The GNOME Project. 2011. url: http://developer.gnome.org/gio/stable/.

J.N. Herder, H. Bos and A.S. Tanenbaum. A lightweight method for building reliable operating systems despite unreliable device drivers. Tech. rep. Vrije Universiteit, Amsterdam, The Netherlands, 2006.

A. Kantee and A. Crooks. “ReFUSE: Userspace FUSE Reimplementation Using puffs”. In: Proc. of the 6th European BSD Conference (EuroBSDCon). 2007.

Alexander Larsson. gvfs status report. 15th Feb. 2007. url: http://mail.gnome.org/archives/gtk-devel-list/2007-February/msg00062.html (visited on 13th Feb. 2012).

Jonathan Lemon. “Kqueue - A Generic and Scalable Event Notification Facility”. In: Proceedings of the FREENIX Track: 2001 USENIX Annual Technical Conference. USENIX Association, 2001, pp. 141–153. isbn: 1880446103. url: http://dl.acm.org/citation.cfm?id=647054.715764.

Ben Leslie et al. “User-Level Device Drivers: Achieved Performance”. In: Journal of Computer Science and Technology 20 (5 2005), pp. 654–664. issn: 1000-9000. doi: 10.1007/s11390-005-0654-4.

Linux Kernel Documentation. Version 3.2.6. 2012. Chap. Filesystems / FUSE. url: http://lxr.linux.no/linux+v3.2.6/Documentation/filesystems/fuse.txt.

Linux Programmer’s Manual, section 2. 31st Aug. 2010. Chap. select(2). url: https://www.kernel.org/doc/man-pages/online/pages/man2/select.2.html.

Linux Programmer’s Manual, section 4. 1st Feb. 2009. Chap. epoll(4). url: https://www.kernel.org/doc/man-pages/online/pages/man4/epoll.4.html.

Linux Programmer’s Manual, section 8. 12th Jan. 2009. Chap. ld.so(8). url: https://www.kernel.org/doc/man- pages/online/pages/man8/ld.so.8.html.

Austin Modine. Linus calls Linux ’bloated and huge’. url: http://www.theregister.co.uk/2009/09/22/linus_torvalds_linux_bloated_huge/ (visited on 9th Dec. 2011).

Aditya Rajgarhia and Ashish Gehani. “Performance and extension of user space file systems”. In: Proceedings of the 2010 ACM Symposium on Applied Computing. ACM. 2010, pp. 206–213.

SCO UnixWare 7 manual, section 2. The SCO Group, Inc. 25th Apr. 2004. Chap. ptrace(2). url: http://uw714doc.sco.com/en/man/html.2/ptrace.2.html.

Richard P. Spillane et al. “Rapid file system development using ptrace”. In: Proceedings of the 2007 workshop on Experimental computer science. ExpCS’07. San Diego, California: ACM, 2007. isbn: 978-1-59593-751-3. doi: 10.1145/1281700.1281722. url: http://doi.acm.org/10.1145/1281700.1281722.

R. Thurlow. RFC 5531 RPC: Remote Procedure Call Protocol Specification: Version 2. 2009.




DOI: http://dx.doi.org/10.7494/csci.2013.14.3.345

Refbacks

  • There are currently no refbacks.