160 likes | 867 Views
Introduction to FUSE. Why Listen to Me?. I’ve built two FUSE file systems (I’ve already made all of the mistakes): OLFS: http://code.google.com/p/olfs NOFS: http://code.google.com/p/nofs Have built several hobby and small operating systems
E N D
Why Listen to Me? • I’ve built two FUSE file systems (I’ve already made all of the mistakes): • OLFS: http://code.google.com/p/olfs • NOFS: http://code.google.com/p/nofs • Have built several hobby and small operating systems • Worked at Purdue University on virtual memory in the Linux kernel and taught the undergraduate Operating Systems labs. • Have worked professionally on networked, embedded, and distributed systems for 5+ years (I’ve come to understand what not to do).
FUSE Architecture • Implemented as a Linux Kernel Module. • Re-routes calls to the VFS layer from user programs to a special file /dev/fuse • A userland program can then use libfuse to read and write /dev/fuse • Calls exposed by libfuse are meant to mimic (mostly) those available to userland programs in UNIX
Building a FUSE File System • What language do I develop in? • C#, Python, Perl, C, C++, • any language that can call in to C • Stateful vs. Stateless • FUSE file systems are a service. • Consider complexity and performance. • Very important question for network and distributed file systems (cache coherence problem) • Access to resources • Each access to a disc or network can involve context switches and affect performance
What to Understand / Skills to Have Before Starting • Good working knowledge of C programming in UNIX and associated file manipulation methods (read, write, lstat, lseek, etc..) • Good understanding of locking and concurrency. • A general understanding of operating systems topics. • Good unit testing and debugging skills. • Patience
My Quick Plug • Find the FUSE framework to be too complex or difficult? Don’t want to invest time in learning systems programming? • Try NOFS! http://code.googlecode.com/p/nofs