8
INTRODUCTION TO FUSE

Introduction to FUSE

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

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

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).

Your Best Friend

Your Other Friends

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