Linux: A Self-Stabilizing Replication File System

Submitted by Jeremy
on October 21, 2003 - 12:56pm

Nir Tzachar recently announced the availability of a new filesystem referred to as srFS, or the "Self-Stabilizing Replication File System". According to the project's home page:

"srFS is a global file system designed to be distributed geographicly over multiple locations and provide a consistent, high available and durable infrastructure for information."

Among the available publications about srFS, an implementation report [pdf] describes a self stabilizing system as "a system that can automatically recover following the occurrence of (transient) faults. The idea is to design a system which can be started in an arbitrary state and still converge to a desired bahavior." The project is divided into two components, a kernel module for the stable 2.4 kernel, and a user-space caching daemon written in Java, communicating with each other via a character device. Nir's full announcement email follows.


From: Nir Tzachar [email blocked]
To:  linux-fsdevel
Subject: srfs - a new file system.
Date: Mon, 20 Oct 2003 11:12:07 +0200 (IST)

hello all.

We're proud to announce the availability of a _proof of concept_ file
system, called srfs. ( http://www.cs.bgu.ac.il/~srfs/ ).
a quick overview: [from the home page]
srfs is a global file system designed to be distributed geographicly over
multiple locations and provide a consistent, high available and durable
infrastructure for information.

Started as a research project into file systems and self-stabilization in
Ben Gurion University of the Negev Department of Computer Science, the
project aims to integrate self-stabilization methods and algorithms into
the file (and operation) systems to provide a system with a desired
behavior in the presence of transient faults.

Based on layered self-stabilizing algorithms, provide a tree replication
structure based on auto-discovery of servers using local and global IP
multicasting. The tree structure is providing the command and timing
infrastructure required for a distributed file system.

The project is basically divided into two components:
1) a kernel module, which provides the low level functionality, and
   disk management.
2) a user space caching daemon, which provide the stabilization and
   replication properties of the file system.
these two components communicate via a character device.

more info on the system architecture can be find on the web page, and
here: http://www.cs.bgu.ac.il/~tzachar/srfs.pdf

We hope some will find this interesting enough to take for a test drive,
and wont mind the latencies ( currently, the caching daemon is a bit slow.
hopefully, we will improve it in the future. )
anyway, please keep in mind this is a very early version that only works,
and keeps the stabilization properties. no posix compliance whatsoever...

the code contains several hacks and design flaws that we're aware of,
and probably many that we're not... so please be gentle ;)

if someone found this interesting, please contact us with ur insights.
cheers,
the srfs team.

p.s I would like to thank all members of this mailing list (fsdevel), for
ur continual help with problems we encountered during the development.
thanks guys (and girls???).

========================================================================
nir.


From: Eric Sandall [email blocked] Subject: Re: srfs - a new file system. Date: Mon, 20 Oct 2003 14:00:38 -0700 This sounds fairly similar to Coda[0], which is already in development and use. -sandalle [0] http://www.coda.cs.cmu.edu/ -- PGP Key Fingerprint: FCFF 26A1 BE21 08F4 BB91 FAED 1D7B 7D74 A8EF DD61 http://search.keyserver.net:11371/pks/lookup?op=get&search=0xA8EFDD61 -----BEGIN GEEK CODE BLOCK----- Version: 3.12 GCS/E/IT$ d-- s++:+>: a-- C++(+++) BL++++VIS>$ P+(++) L+++ E-(---) W++ N+@ o? K? w++++>-- O M-@ V-- PS+(+++) PE(-) Y++(+) PGP++(+) t+() 5++ X(+) R+(++) tv(--)b++(+++) DI+@ D++(+++) G>+++ e>+++ h---(++) r++ y+ ------END GEEK CODE BLOCK------ Eric Sandall | Source Mage GNU/Linux Developer [email blocked] | http://www.sourcemage.org/ http://eric.sandall.us/ | SysAdmin @ Inst. Shock Physics @ WSU http://counter.li.org/ #196285 | http://www.shock.wsu.edu/ ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.
From: Nir Tzachar [email blocked] Subject: Re: srfs - a new file system. Date: Tue, 21 Oct 2003 14:07:04 +0200 (IST) > > This sounds fairly similar to Coda[0], which is already in development and use. > not at all. coda is not self stabilizing at all. srfs is also a totally distributed file system -> see the doc. bye ======================================================================== nir.

Related Links:

Ultracool!

Anonymous
on
October 21, 2003 - 3:12pm

Is this kind of a NFS over Bittorrent? (forgive me, I like this stuff, but understand nada, zero, niente...)

Java?

Mind Booster Noori
on
October 22, 2003 - 1:53am

a user space caching daemon, which provide the stabilization and replication properties of the file system.

We hope some will find this interesting enough to take for a test drive, and wont mind the latencies ( currently, the caching daemon is a bit slow. hopefully, we will improve it in the future.)

With a programming language like Java, how can you hope to have an efficient system?

Java?!

Kibble
on
October 22, 2003 - 2:52am

They use java???????? If so, welcome to /dev/null srfs.

can't agree more...

Anonymous
on
October 22, 2003 - 8:53pm

I guess for prototyping, if you must. java's implementation and runtime is just wrong on way too many levels to be really usable.

I don't want to knock a specific language, and am a firm believer in the "no pet languages allowed" motto. But I've just had one too many bad experiences with java('s implementation), and would definately think it's way inappropriate for code at such a low level.

why java

tzachar
on
October 22, 2003 - 3:29am

> With a programming language like Java, how can you hope to have an
efficient system?

well, in essence, ur right.
we used java since development in this language is more rapid than c.
we plan to implement the daemon in c, when the system will be more stable.

Well, I'll wait for that time

Mind Booster Noori
on
October 22, 2003 - 9:24am

Well, I'll wait for that time to come.

okay for prototype

Anonymous
on
October 22, 2003 - 3:53am

They use java for their "proof of concept"; this may actaully be a good thing, because by the time they come to write a C version, they won't make the same design mistakes and the design will be cleaner.

Java

Anonymous
on
October 22, 2003 - 7:22am

Yes, when you decide to throw out the Java one, that probably is fast enough and reliable enough for 99% of the cases, and rewrite it in C, adding in accidental buffer overflows, and potential remote exploits, it will be much better. Instead, why not just optimize the Java one and ship it with a nice secure java.policy file?

Re: Java

Anonymous
on
October 22, 2003 - 12:38pm

Maybe when Java becomes portable. Where's the JRE for the m68k? A stable implementation for Alpha? Or even the latest standard *not* from Sun?

"Java" (as most people use it for "enterprise" systems) is portable like the Win32 API is portable. Its available in its full complement on x86 Linux, x86 Windows and SPARC Solaris (and possibly PowerPC AIX and x86 FreeBSD, if you're stay behind a few versions). Win32/WINE runs reliably on about the same.

And of course, there are like a gazillion differet degrees of Java. J2EE .0, .1, .2, .3, .4, .5. Etc, etc, etc. As opposed to C, where you have ISO C, SuSv3, and GNU/Linux, three complementary levels of C interfaces. Stable, dependable, reliable and open.

There's a reason why the Solaris developers revolted and refused to write their system utilities in Java. The only thing that will save Java as a FOSS language is possibly Parrot (Perl6 VM) or GCJ.

Re: Java

renoX
on
October 23, 2003 - 12:04pm

>There's a reason why the Solaris developers revolted and refused to write their system utilities in Java.

Unfortunately, they didn't won totally, the system management console in Solaris9 (smc) is written in Java :-(
The result?
smc is sllllllloooooooowwww (on modern HW: Sunblade150 with 1GB of RAM)!

(my life)
Before on Solaris8, I used a GUI to define the disk's mirroring (metatool), the interface was strange, ugly but very usefull once you learned it, smc is a pig and it's interface is not functionnal at all!!
The result? I learned the command-line tools and don't use smc.
I've been badly burned by Java in 98-99, and apparently for GUI it haven't improved much since..

this vs. Inter-mezzo?

catfeeder
on
October 22, 2003 - 11:46pm

Aside from the implemenation details being different, what makes this project's end result different than what is being done with Inter-Mezzo?



I'm not asking this as a rhetorical question or to start a flame war, but there is probably something I'm missing; I'm just looking for clarification.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.