This is an old revision of the document!
Csaba Henk
Email: MailTo(soc-chenk)
$ whoami
I'm from Hungary. I graduated at Eötvös Lorand University of Science with an MSC in Mathematics, in 2001. Since then I am a PhD student in Mathematics at the Central European University. My area of research is Foundations.
In the meantime I picked up some computer skills, that's how it can makes sense that I am here. My starting point was the [http://www.linuxfromscratch.org LinuxFromScratch] project, the most fantastic form of self-education I've seen.
I happen to administer a server for a company run by friends. We used to run on Linux but when a new machine has been bought, we wasn't careful enough so we faced with the outrageous Promise PDC20371 RAID controller within the shiny new box. Soon it turned out that the only open source OS which has support for it is FreeBSD 5.x, thus we switched to FreeBSD. That's how I met with the OS.
Since than I pretty much fell in love with FreeBSD, due to its well-known feature set: support for a waste range of third-party software, clean architecture, maintainability, stability.
My primary tool of administration is the [http://www.ruby-lang.org Ruby language]. It features a concise syntax, out-of-box support for most scenes of system administration, powerful, unconstrained semantics. I usually use it via a self-made shell (with full job control, etc.) atop of Irb, the interactive Ruby interpreter. You can find more info on it and other projects of mine at [http://www.creo.hu/~csaba/projects/ my project page].
Ssh based filesystem for FreeBSD
As a [http://code.google.com/summerofcode.html Google Summer of Code 2005] participant, my mission is to implement ssh based networked filesystem for FreeBSD.
Intro
As [http://www.catb.org ESR] says in [http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar The Cathedral and the Bazaar], Every good work of software starts by scratching a developer's personal itch. While I don't yet know how good work will the software be this project will end in, the story has begun by having a personal itch, for sure.
If you got the feeling, you'll know how cool it is when you can mount any remote machine's filesystem via net, given you have (normal, unprivileged) access there. Now I could go on and find the appropriate attributes for this feeling to make you impressed, but heck, I don't wanna waste my time for that, and we are not into literature now, and anyway, you can go and try it by yourself. It doesn't hurt, you just have to install Linux on your computer and one of the additional software listed below. The itch is… this fun is only for Linux. I began to use FreeBSD and I quite like it, but this functionality is not availabe for FreeBSD. FreeBSD users have to live without it. And now, now I suffer from withdrawal symptoms…
So when I heard that Google launches its Summer of Code program I decided to try to get Google pay for me for bringing this functionality to FreeBSD. The first step has been taken successfully… I've been chosen to be a [:SummerOfCode2005:SoC participant at FreeBSD]. So now, shut up and code!
Let's take a look at the Linux front
Well, to be more concrete I tell you that you can get a server-agnostic remote filesystem by building it atop of ssh – the most common remote access protocol in the Unix world these days. Linux users really have a choice:
- [http://shfs.sourceforge.net Shfs] by the Zemljanka core team – a standalone implementation based on direct remote program running capabilities of ssh. This is noteworthy as all the others utilize the sftp subsystem of ssh.
- [http://lufs.sourceforge.net/lufs Lufs (Linux Userland FileSystem)] – a general userspace filesystem framework by Florin Malita, with several concrete filesystems, among them there is one based on ssh. Note that both shfs and Lufs' ssh fs borrows many ideas from an earlier work of Malita, [http://ftpfs.sourceforge.net/home.html FTPfs].
- Miklós Szeredi's [http://fuse.sourceforge.net/ FUSE (Filesystem in Userspace)] is slowly tending towards being the userspace filesystem framework for Linux. It is actively maintained, and, as it is rumored, it will be integrated into the 2.6.13 release of the kernel. It features two implementations of an ssh based networked file system:
- [http://fuse.sourceforge.net/sshfs.html SSHFS] is port of Malita's implementation to FUSE, cleaned up and optimized, by Szeredi himself.
- [http://primates.ximian.com/~sandino/gnomevfs-mount/ Gnomevfs-mount] by Sandino Flores makes it possible to mount various things via Gnome's vfs library. As Gnomevfs supports the
sftpscheme, you can use it for ssh based mounts, too. Gnomevfs-mount also utilizes FUSE as an userspace filesystem backend (well, if I understand correctly, not todays' FUSE, but a FUSE from one generation back, when it has been called [http://www.inf.bme.hu/~mszeredi/avfs/ AVFS (A Virtual File System)]).
Musings as of 27th of June, 2005
I guess I'll make myself familiar mostly with Shfs – its compact and mature, and I have already a basic familiarity with it. The other candidate could be FUSE SSHFS as it is mature enough, too, and I'd bet that code is rather high quality. But understanding a general API and its implementation seems to be much more work than understanding a lean-and-mean implementation. That's why I'd go for Shfs.
I don't know if I should use sftp or direct remote scripting. Maybe I should ask the Shfs guys who are the lone champions of the latter approach why did they go that way.
And/or get a clear picture about the sftp protocol.
By the way, questions… Among [http://netbsd-soc.sourceforge.net NetBSD's SoC projects] I found one which falls into the same category as mine (ie., userspace filesystems):
[http://netbsd-soc.sourceforge.net/projects/userfs Userspace file system hooks for NetBSD]. I asked the guy doing it, Antti Kantee, what his plans are. Not much yet (well, it's not surprise), but he told he's not interested in creating concrete filesystems (at the moment), he is into making the framework.
Update. I've been changing mails with Miroslav Spousta, the man behind Shfs. He was very helpful and he suggested me to use the sftp subsystem – the direct remote scripting they used was an interesting experiment but using stfp is more robust. So that's what I'll do then…