Global File System
------------------

http://sources.redhat.com/cluster/

GFS is a cluster file system. It allows a cluster of computers to
simultaneously use a block device that is shared between them (with FC,
iSCSI, NBD, etc).  GFS reads and writes to the block device like a local
file system, but also uses a lock module to allow the computers coordinate
their I/O so file system consistency is maintained.  One of the nifty
features of GFS is perfect consistency -- changes made to the file system
on one machine show up immediately on all other machines in the cluster.

GFS uses interchangable inter-node locking mechanisms, the currently
supported mechanisms are:

  lock_nolock -- allows gfs to be used as a local file system

  lock_dlm -- uses a distributed lock manager (dlm) for inter-node locking
  The dlm is found at linux/fs/dlm/

Lock_dlm depends on user space cluster management systems found
at the URL above.

To use gfs as a local file system, no external clustering systems are
needed, simply:

  $ mkfs -t gfs2 -p lock_nolock -j 1 /dev/block_device
  $ mount -t gfs2 /dev/block_device /dir

If you are using Fedora, you need to install the gfs2-utils package
and, for lock_dlm, you will also need to install the cman package
and write a cluster.conf as per the documentation.

GFS2 is not on-disk compatible with previous versions of GFS, but it
is pretty close.

The following man pages can be found at the URL above:
  fsck.gfs2	to repair a filesystem
  gfs2_grow	to expand a filesystem online
  gfs2_jadd	to add journals to a filesystem online
  gfs2_tool	to manipulate, examine and tune a filesystem
  gfs2_quota	to examine and change quota values in a filesystem
  gfs2_convert	to convert a gfs filesystem to gfs2 in-place
  mount.gfs2	to help mount(8) mount a filesystem
  mkfs.gfs2	to make a filesystem
