GlusterFS
This could be a better alternative than NFS. Apparently, aside from simple export-mount, one can do replication (mirroring data on multiple remotes) or distributed storage (storing files on multiple remotes), or combine these two to form a RAID-10 like storage on the network (mirroring of distributed remotes). This example creates 1 server that exports a directory, and a client which mounts it.Download
http://www.gluster.org/http://fuse.sourceforge.net/
Server
install glusterfs./configure --prefix=/usr make && make install
For this example, I'm exporting a dedicated filesystem, but it should work on a regular directory. Create this config file
/etc/glusterfs/glusterfsd.vol
volume posix
type storage/posix
option directory /gfs
end-volume
volume locks
type features/locks
subvolumes posix
end-volume
volume brick
type performance/io-threads
option thread-count 8
subvolumes locks
end-volume
volume server
type protocol/server
option transport-type tcp/server
option auth.addr.brick.allow 10.0.0.*
subvolumes brick
end-volume
type storage/posix
option directory /gfs
end-volume
volume locks
type features/locks
subvolumes posix
end-volume
volume brick
type performance/io-threads
option thread-count 8
subvolumes locks
end-volume
volume server
type protocol/server
option transport-type tcp/server
option auth.addr.brick.allow 10.0.0.*
subvolumes brick
end-volume
Start glusterfsd with service glusterfsd start
Client
Install fuse and then glusterfsfuse
./configure --prefix=/usr --enable-kernel-module --enable-lib --enable-util make && make install modprobe fuse
glusterfs
./configure --prefix=/usr make && make install
Create this config file
/etc/glusterfs/glusterfsd.vol
volume remote1
type protocol/client
option transport-type tcp
option remote-host 10.0.0.26
option remote-subvolume brick
end-volume
volume writebehind
type performance/write-behind
option window-size 4MB
subvolumes remote1
end-volume
volume cache
type performance/io-cache
option cache-size 16MB
subvolumes writebehind
end-volume
type protocol/client
option transport-type tcp
option remote-host 10.0.0.26
option remote-subvolume brick
end-volume
volume writebehind
type performance/write-behind
option window-size 4MB
subvolumes remote1
end-volume
volume cache
type performance/io-cache
option cache-size 16MB
subvolumes writebehind
end-volume
Mount it
glusterfs -f /etc/glusterfs/glusterfs.vol /gfs
Or put it in /etc/fstab then mount with mount -a
fstab
/etc/glusterfs/glusterfs.vol /gfs glusterfs defaults 0 0
Netstat
Just in case you're on a firewall-ed network:tcp 0 0 10.0.0.20:1022 10.0.0.26:6996 ESTABLISHED 21408/glusterfs tcp 0 0 10.0.0.20:1023 10.0.0.26:6996 ESTABLISHED 21408/glusterfs
Very easy!