Redundant NFS with ZFS

Attila Nagy bra at fsn.hu
Tue Jan 22 06:51:58 PST 2008


Hello,

I have some machines running FreeBSD as redundant NFS servers (using CARP).
The way they work is the following:
- I have a master (content) machine on which I maintain an UFS 
filesystem image on an UFS
- I have this image mounted through md
- there are (any) number of NFS servers, one that is the master (from 
the client PoV) and the others as slaves
- everytime I need changes in the content of the image, I make them, 
then do a mount -o ro -u /nfs and issue an rsync to the NFS  (slave) 
servers, then I switch over the master and do a sync to there too

This works wonderfully, although the image distribution is slow and 
painful (thanks to rsync).

With ZFS there is a more simple oppurtunity: make snapshots on the 
content master and distribute them via zfs send&receive.
However there's a little problem: the fsids are not in sync and the 
clients get stale NFS filehandle errors.

This is solved in the current scenario by distributing whole UFS images 
with their static fsids, but I don't know how it would be possible with ZFS.

Currently I see two possibilities:
- changing the NFS server, so it can be manually set (like in Linux, 
where it's possible to give an fsid parameter in exports)
- synchronize ZFS fsids across the machines

The second would be perfect for me, I just couldn't figure out how could 
I do this (a cursory glance on the ZFS source didn't result a clean and 
simple solution).

Any ideas on this?

(I've seen some discussions on this topic in a ZFS list, but there was 
no solution, just a little misunderstanding with shared storages and Sun 
clusters)

Thanks,

-- 
Attila Nagy                                   e-mail: Attila.Nagy at fsn.hu
Free Software Network (FSN.HU)                 phone: +3630 306 6758
http://www.fsn.hu/



More information about the freebsd-fs mailing list