LUFS: ex ftpfs, sshfs, etc

Reading time: 2 – 4 minutes

LUFS

is enabling you to mount into your file hierarchy a remote computer’s file

system, which is accessible by various means (ftp, ssh, etc.). Then, the access

to the remote files will be completely network transparent. In other words,

you’ll be able to read/modify remote files as if they were local, watch

movies/listen to MP3s from FTP/SSH/Gnutella servers without copying them

locally.

The reason for the

userspace stuff: there are operations only suited for userspace

(cryptography for example) and implementing them in kernel would be

bloat.

The reason for the kernel

stuff: I think it’s important to keep the file system access point at

the lowest level in order to allow all the applications to use it.

Consider KDE: it implements its own virtual file system, a great one,

but only KDE applications can take advantage of it. So does GNOME, MC

and others. Suddenly we have lots of overlapping userspace file

system implementations, a real waste…

Communication between the

kernel module and the daemon is done through UNIX domain sockets.

This makes LUFS best suited for networked file systems, where this

indirection overhead (userspace <-> kernel <-> userspace)

is small compared to the speed penalty due to the network itself.

LUFS can be regarded as

doing the same job as the VFS (virtual file system switch) in the

kernel: it is a switch, distributing the file system calls to its

supported file systems. With a big difference: LUFS file systems are

implemented in userspace. This would be a drawback for local file

systems where the access speed is important, but proves to be a huge

advantage for networked file systems where the userland

flexibility is most important.

This flexibility allowed

for implementation of SSHFS for example, in a pretty straightforward

manner, using the already existing openssh

infrastructure. Lots of other “exotic” file systems are in the

planning phase: socketfs, httpfs, webdavfs, freenetfs, etc. Just

imagine mounting a freenet file system and accessing all the goodies

as they were local…