High-Availability Storage Cluster With GlusterFS On Ubuntu

1. Introduction

Original article: http://blogama.org

In this tutorial I will show you how to install GlusterFS in a scalable way to create a storage cluster, starting with 2 servers on Ubuntu 8.04 LTS server. Files will be replicated and splitted accross all servers which is some sort of RAID 10 (raid 1 with < 4 servers). With 4 servers that have each 100GB hard drive, total storage will be 200GB and if one server fails, the data will still be intact and files on the failed server will be replicated on another working server.

GlusterFS is a clustered file-system capable of scaling to several peta-bytes. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system. Storage bricks can be made of any commodity hardware such as x86-64 server with SATA-II RAID and Infiniband HBA.


2. Installation

First you need to install some software:

sudo su

apt-get install sshfs build-essential flex bison byacc vim wget

Now we need to install fuse from source:

cd /root/
wget http://europe.gluster.org/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz
tar -zxvf fuse-2.7.4glfs11.tar.gz
cd /root/fuse-2.7.4glfs11

Next we compile fuse:

make && make install

Next we will install GlusterFS:

Get the same exact version, otherwise there is good chances it wont work. I tried with 2.0.0rc1 and 1.3.12 and there was some issues (1.4.0rc7 works fine).

cd /root/
wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.0rc2.tar.gz
tar -zxvf glusterfs-2.0.0rc2.tar.gz
cd /root/glusterfs-2.0.0rc2/

Take a minute break and compile:

make && make install

For some reasons, libraries are going in the wrong directory so we need to (if someone has a clean fix to this please post it!):

cp /usr/local/lib/* -R /usr/lib/

Next we create some folders that will be used later on:

mkdir /mnt/glusterfs
mkdir /data/
mkdir /data/export
mkdir /data/export-ns
mkdir /etc/glusterfs/


3. Servers configuration

Before you go further, you need to know that GlusterFS works in a client/server way. What we will do is to make our servers both client and server for GlusterFS.

Lets start with the server configuration file ON ALL SERVERS:

vi /etc/glusterfs/glusterfs-server.vol

and make it look like this:

# file: /etc/glusterfs/glusterfs-server.vol
volume posix
  type storage/posix
  option directory /data/export
volume locks
  type features/locks
  subvolumes posix
volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
volume posix-ns
  type storage/posix
  option directory /data/export-ns
volume locks-ns
  type features/locks
  subvolumes posix-ns
volume brick-ns
  type performance/io-threads
  option thread-count 8
  subvolumes locks-ns
volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow *
  option auth.addr.brick-ns.allow *
  subvolumes brick brick-ns

Now do:

glusterfsd -f /etc/glusterfs/glusterfs-server.vol

to start the server daemon.

Share this page:

3 Comment(s)

Add comment

Please register in our forum first to comment.


By: Mike Glass

For whatever reason my system would only

When configuring with --prefix= I got the error:

libtool: install: error: cannot install `libglusterfsclient.la' to a directory not ending in /usr/lib

 to fix this I did this:

./configure --prefix=/usr --sysconfdir=/etc --datadir=/var

 This might be a slightly cleaner solution then the aforementioned one if you want to keep your files in order.

By: Anonymous

You have to regenerate configure by running ./autogen first.

By: Anne Oni Mouse

For some reasons, libraries are going in the wrong directory so we need to (if someone has a clean fix to this please post it!) ... That's ./configure, you have to tell it where to put libraries... try --prefix=