I just love saying that... "Gluster Cluster". GlusterFS is a networked file system that can automatically provide redundancy and failover across multiple servers. Essentially it's RAID or mirroring for server storage. You don't want to use it for small files - like a web server - but for network storage in an enterprise environment.
Setting up Gluster is actually really simple. It has one requirement in Ubuntu which is that you install "nfs-common". I actually use Puppet to deploy the core GlusterFS system on servers and clients automatically.
Once a Gluster server cluster is running, a client mounts a share pretty much like any other network filesystem. The initial mount requires that the server in the mount command be available, but after the mount is made, that server could effectively go offline and data still be available to the clients through the other "bricks" in the file sharing system. A brick is a physical server that provides a GlusterFS share. It takes at least two bricks to provide a redundant Gluster filesystem.
In my own circumstances, I'm using mirroring with Gluster, but it also supports a RAID5-like mode with striping across multiple servers. With mirroring, I experience slightly slower writes than with NFS, but still better than a CIFS / SAMBA share. Reading from my mirror volumes is nearly twice as fast as from a single CIFS share. For my situation where files are 20k+ in size and rarely ever change, it's a perfect match.
We have noticed a few issues with Gluster in strange circumstances. Writing an image file directly to a Gluster share using libtiff has a good chance of creating a bad file. Writing the same file to /tmp and then copying it to the Gluster share works perfectly.
Anyone needing a clustering high-availability filesystem should consider checking out GlusterFS.