Saturday, September 13, 2008

zfs-fuse 0.5.0 released

Hi,

After resyncing the ZFS code in zfs-fuse to OpenSolaris build 98, I have (finally!) decided to make a new release.

I know that going from 0.4.0_beta1 to 0.5.0 is not the most logical thing to do.

However, if you consider that 0.4.0_beta1 was released more than 18 months ago and if you consider all the improvements that have been made since then, it makes a little more sense :-)

(By the way, if you still running 0.4.0_beta1... please, please, please upgrade *now* - serious bugs have been fixed).

This release brings us up-to-date with ZFS pool version 13 (try "zpool upgrade -v").
You can read about any zfs-fuse specific fixes or enhancements in the CHANGES file, although I'm sure I missed a few things.

One thing to mention is that there's no development going on in zfs-fuse in terms of missing features (the ones in the STATUS file). At the moment you can only expect bug fixes and ZFS code updates.

For those of you who have not been following zfs-fuse development closely, please be assured that if you are using IDE, SATA or SCSI disks, you no longer need to disable the write caches of your devices (thanks to Eric Anopolsky).

However, that is only true if you use raw disks or partitions as your vdevs -- if you use LVM, EVMS or other devices (such as loop devices), the disks' write caches still should be manually disabled to avoid potential problems.

If you want peace of mind you can check your syslog right after zfs-fuse starts to do any I/O - zfs-fuse will notify you if it can't flush the write cache.

Enjoy!

21 comments:

Rajgopal V said...

Hey.. Seriously.. Great work... Great work...
I'm new to linux programming... So, I've one question for you-why did u choose fuse for zfs...? Why not write a kernel level file system...?

wizeman said...

Thanks rajgopal.

I chose FUSE as opposed to a kernel-level implementation because this project originally started as a Google Summer of Code program.

This meant that I had to reach a reasonable set of goals for the project in only 3 months time and there couldn't be any licensing controversies (if I wanted to have my project approved).

Also, I did not have any kernel-level programming experience.

Nowadays, it's just way too much work for me to do it on my spare time...

Scramblejams said...

Congratulations! Fantastic work. And, great to know the project is still alive. I have high hopes of chucking ext3 entirely some day soon.

Since it appears from the STATUS file that new features aren't coming until 0.6.0, does your statement that you're not working on missing features mean there's no progress towards 0.6.0 currently foreseen?

Rajgopal V said...

Hmmm... hey wizeman.. I'm doing my engineering final year.. For my project, i've choosen to write a file system.. it would be "VERY" helpful if u help me out.. as i said i'm new to linux programming. so don't know exatly where to start.. please contact me --

raja.fire@gmail.com.

for now, i'm leaning linux kernel and file system basics... also, i'm going through the CODE of your ZFS-FUSE first version...

regomodo said...

Good to hear something again. Well done on the effort so far, it is much appreciated. Who knows, maybe zfs-fuse can be the one that has expandable raidz pools?

Alex said...

Sweet. I thought this project was dead. Can't wait to try out the new version.

Ron said...

Thank you for all your work. I have been running zfs on external USB drives with Ubuntu for some time now.

Anonymous said...

cc1: warnings being treated as errors
cmd/zdb/zdb.c: In function 'zdb_dump_block_raw':
cmd/zdb/zdb.c:2007: error: ignoring return value of 'write', declared with attribute warn_unused_result
scons: *** [cmd/zdb/zdb.o] Error 1
scons: building terminated because of errors.

Anonymous said...

Keep up the *great* work.

BTW, you should create the 0.5x branch in the hg repository ;).

krichard said...

i'm trying for the first time zfs-fuse,
my scons compilation attempts in fedora 9 gives -

"zfs-fuse/fuse.h:31:32: error: fuse/fuse_lowlevel.h: No such file or directory"

the file fuse_lowlevel.h is not in the downloaded zfs-fuse-0.5.0.tar.bz2

thanks for any help on this.

Anonymous said...

cc1: warnings being treated as errors
cmd/zdb/zdb.c: In function 'zdb_dump_block_raw':
cmd/zdb/zdb.c:2007: error: ignoring return value of 'write', declared with attribute warn_unused_result
scons: *** [cmd/zdb/zdb.o] Error 1
scons: building terminated because of errors.


I have this Error too
Have someone en Idea???

Tomas Thiemel said...

Hi, I have a "small patch" for init script when you use /var/run on tmpfs:

#----------#
--- zfs-fuse.orig 2008-11-17 10:37:31.000000000 +0100
+++ zfs-fuse.new 2008-11-17 10:33:03.000000000 +0100
@@ -18,6 +18,8 @@
start() {
ebegin "Starting ZFS-FUSE"
checksystem || return 1
+ mkdir -p $(dirname $PIDFILE) || return 1 ### /var/run on tmpfs
+ touch $PIDFILE || return 1 ### just to be sure...
start-stop-daemon --start --exec ${EXEFILE} \
--user daemon --group disk -- --pidfile ${PIDFILE}
rv=$?
#----------#

//BR Tomas

Tomas Thiemel said...

Hi, I have a "small patch" (fixed) for init script when you use /var/run on tmpfs:

#----------#
--- zfs-fuse.old 2008-11-17 12:03:07.000000000 +0100
+++ zfs-fuse.new 2008-11-17 12:01:34.000000000 +0100
@@ -18,6 +18,7 @@
start() {
ebegin "Starting ZFS-FUSE"
checksystem || return 1
+ mkdir -p $(dirname $PIDFILE) || return 1 ### /var/run on tmpfs
start-stop-daemon --start --exec ${EXEFILE} \
--user daemon --group disk -- --pidfile ${PIDFILE}
rv=$?
#----------#

//BR Tomas

Daniel Varga said...

Wizeman,
great work on getting ZFS work under linux. I would love to see a kernel space implementation so would the linux community.
I had been thinking on writing an entirely new FS with similar features before I researched the existing ones and found ZFS. More or less that is what I wanted. Thanx for your contribution.

Anonymous said...

Hi there,

Great work on ZFS-Fuse. I wanted to move my Linux mdadm raid5's over to a Soalris host with ZFS but due to a cylinder limit Solaris doesnt seem to be able to see my disks.

Your ZFS-Fuse seems to solve that problem for me.

Do you feel your project is far enough along that ones data is safe and we can rely on the ZFS implementation as it stand at version 0.5?

Thanks for your efforts.

Dmitri said...

You actually need the FUSE developer libraries installed. That's clearly in the instructions.

Anonymous said...

If it's failing to compile and you're getting the "warn_unused_result" error then just edit "src/SConstruct", search for any "-Werror" flags and remove them.

"-Werror" turns warnings into fatal errors. The "warn_ununsed_result" shows up in newer versions of gcc/libc and is relatively harmless. Of course the true fix would be to change the ZFS-FUSE code to not ignore the results of whatever calls are showing warnings.

dalore said...

remove -Werror from CCFLAGS in the SConstruct file

Emmanuel said...

Too bad there are not enough news about this project (september 2008, now jully 2009, almost 1 year).

I have been reading about it in a french linux magazine, and after playing a little with it it's just great !

Now the big question is : is it reliable enough to put important data on it ? Maybe I should just wait until btrfs to be ready instead ?

Anyway congratulations for your amazing work !
(did you know that mac os x is still using version 8 pools, and so it can't import pools created by zfs-fuse since it uses version 13 !!! What a shame, normally zfs support was supposed to be close to perfection on mac os x...).

Emmanuel said...

1 day of testing was enough : I just made a backup 1st of my home dir, then converted it to zfs, and enabled compression on it.

Af first everything seemed to work fine, except that after a while zfs-fuse started to eat all the available ram :
virt = 1560m !
RES = 190m

With it alone I got 179996k of swap on a machine which usually never swaps !

There doesn't seem to be any way to control this ram usage, so it's simply not usable for anything remotely important right now, just for testing...

Too bad !!!

Anonymous said...

Is this a dead project?