Fedora 15: a NFSv4 to glusterfs migration HOW-TO

Dr. Michael J. Chudobiak mjc at avtechpulse.com
Thu Aug 25 12:27:28 UTC 2011


As detailed in another thread, we upgraded a few test machines on our 
LAN to Fedora 15 (with gnome-shell and firefox), with user folders 
served from a NFSv4 server (F14 originally, then F15).

It just didn't work. The F15 desktops would freeze frequently. And 
worse, this would freeze ALL desktops on the LAN intermittently, as the 
NFS server struggled with client flakiness.

When it did work, Firefox would lose authenticated logins randomly, 
presumably due to corruption of its cookies.sqlite file. sqlite and NFS 
seems to be a nightmare, for both NFSv3 and NFSv4.

Moving from a NFSv4 server to a glusterfs server solved all of these 
problems, and sped up boot times significantly too. glusterfs looks 
intimidating at first, because of all its fancy replicating features and 
what-not, but it turns out to be trivially easy to set up a simple 
server than will replace 95% of the NFS installations out there.

Luckily, you can easily point both the NFS daemon and the glusterfs 
daemon at the same export folder, so you can migrate clients slowly over 
time.

This HOW-TO is intended to document the process. There are other similar 
HOW-TOs out there, but they are all a little out-of-date or don't show 
how to enable locking correctly, which is critical for Firefox.

In this example, we export the server's /fileserver folder, and mount it 
on /fileserver on the clients. In my server, /fileserver was already 
being served by the NFSv4 server, which is fine.

--------------------------------------------
1. On the server:
- yum install glusterfs-server

--------------------------------------------
2. On each client:
- yum install glusterfs-fuse
- mkdir /etc/glusterfs/
- mkdir /fileserver

--------------------------------------------
3. On the server, edit the volume configuration file
(/etc/glusterfs/glusterfsd.vol) so that it looks like this:

volume raw
   type storage/posix
   option directory /fileserver
end-volume

volume brick
   type features/posix-locks
   subvolumes raw
end-volume

volume server
   type protocol/server
   option transport-type tcp
   subvolumes brick
   option auth.addr.brick.allow *
end-volume


The first stanza selects the basic folder to export.

The second stanza adds file locking to it. This is required to support 
Firefox, and some other applications.

The third stanza authorizes everyone to access this file-locked export 
over the network.

There is also a /etc/glusterfs/glusterfsd.vol file on the system, for 
configuring the management interface. For this simple installation it 
does not need to be modified.

--------------------------------------------
4. Restart the server services:
- service glusterd restart
- service glusterfsd restart

I believe the first service is a management service, and the second is 
the actual file-export service.
--------------------------------------------

--------------------------------------------
5. On the client, create the /etc/glusterfs/glusterfs.vol configuration 
file, which should look like this:

volume client
   type protocol/client
   option transport-type tcp
   option remote-host 192.168.0.3  # use YOUR server IP here
   option remote-subvolume brick
end-volume


--------------------------------------------
6. On the client, add this line to the end of /etc/rc.d/rc.local:

mount -t glusterfs /etc/glusterfs/glusterfs.vol /fileserver

--------------------------------------------
7. On the client, reboot, and check /var/log/messages for errors. On one 
machine, we had an selinux problem that was flagged in the logs. We had 
to manually create the logging file using:

touch /var/log/glusterfs/fileserver.log; reboot

--------------------------------------------
8. On the client, see if you can access the files in /fileserver. If 
not, read the /var/log/glusterfs/* files on both the client and the server.

At this point, everything should work!



Weird things and gotchas:

A. You need the file-locking option to make Firefox work properly.

B. LibreOffice wouldn't start on one system, until we did:
rm ~/.libreoffice
rm ~/.openoffice.org

C. selinux prevented the creation of log files on one client, which 
prevented the filesystem from mouting. The manual fix noted above fixed 
that.

D. This HOWTO mounts the glusterfs from /etc/rc.d/rc.local, which is the 
last step in the boot process. In theory, you can mount it from 
/etc/fstab or using autofs. However, we found that autofs mounting just 
didn't work - not sure why. fstab mounting didn't work either - I 
suspect it occurred too early in the boot process. /etc needs to be up 
and running so glusterfs can read the config file, and I don't think the 
current init/systemd files handle this correctly. There are some Debian 
bug reports about this that you can google.


I hope this is useful to someone, and that we can finally drive a stake 
through the heart of NFS...


- Mike


More information about the users mailing list