Hi all,
After seeing lot of basic questions about setting up basic glusterfs mount,
I thought there is a need for solid guide which gives idea about writing a
basic spec file. Outcome is the current document. Please feel free to review
it. Do suggest some improvements.
http://gluster.org/docs/index.php/Install_and_run_GlusterFS_in_10mins
Thanks and Regards,
Amar
------------------------------------------------------------------------
Download:
----------
Get GlusterFS: http://ftp.zresearch.com/pub/gluster/glusterfs/CURRENT
Get Patched Fuse: http://ftp.zresearch.com/pub/gluster/glusterfs/fuse/
- This patched version of fuse is very suited for using with GlusterFS, as:
* this supports higher IO buffer size, which gives increased IO performance.
* it provides flock() syscall, which is not present in regular fuse tarball.
* inode management improvements.
Install:
----------
This document describes the install procedure from source tarball.
In the client machine, install the fuse package. (Make sure that '--prefix' option is set to earlier fuse installation path).
====
# tar -xzf fuse-2.7.0-glfs3.tar.gz
# cd fuse-2.7.0-glfs3
# ./configure --prefix=/usr --enable-kernel-module
# make install > /dev/null
# ldconfig
====
Now make sure that the system has following packages:
* fuse [Just got installed]
* flex
* bison
Now, untar and install the glusterfs package.
====
# tar -xzf glusterfs-1.3.1.tar.gz
# cd glusterfs-1.3.1/
# ./configure --prefix= --disable-ibverbs
# make install > /dev/null
====
Congratulations :) You are done with 'glusterfs' installation.
Execution:
----------
After the installations a majority of problem faced by many people is that, how to get glusterfs working??. To run GlusterFS, you need a volume specification file in short a spec file, which defines the behavior and features for glusterfs. We will start with a barebone spec file (this spec file is very basic and it is just to get the feel of GlusterFS).
** GlusterFS is Distributed Parallel Filesystem (confused?? think it like an N
FS replacement for the time being):
**** Example1 [NFS like]
Assume you have two machines '192.168.0.1' and '192.168.0.2'. Let 192.168.0.1 be server and the latter be client. [NOTE: you can change the IP address in the spec file according to your network configuration or else to test, you can use the systems localhost IP address i.e '127.0.0.1']
-> Server machine: [192.168.0.1]
[NOTE: After editing the file it sould have content as shown by cat command]
====
$ emacs /etc/glusterfs/glusterfs-server.vol
$ cat /etc/glusterfs/glusterfs-server.vol
volume brick
type storage/posix
option directory /tmp/export
end-volume
volume server
type protocol/server
subvolumes brick
option auth.ip.brick.allow *
end-volume
$ glusterfsd -f /etc/glusterfs/glusterfs-server.vol
====
-> Client machine: [192.168.0.2]
====
$ mkdir /mnt/glusterfs
$ emacs /etc/glusterfs/glusterfs-client.vol
$ cat /etc/glusterfs/glusterfs-client.vol
volume client
type protocol/client
option remote-host 192.168.0.1
option remote-subvolume brick
end-volume
$ glusterfs -f /etc/glusterfs/glusterfs-client.vol /mnt/glusterfs
====
Wow, you can see the exported directory '192.168.0.1:/tmp/export' as /mnt/glusterfs in client node :O
**** Example 2 [Clustered FileSystem]
Assume you have 4 machines '192.168.0.1' to '192.168.0.4'. Let 3 machines 192.168.0.1, 192.168.0.2 and 192.168.0.3 be servers and other be client. [NOTE: you can change the IP address in the spec file according to your network, or else, to test on the same machine give '127.0.0.1' and different listen ports]
--> Server1 [192.168.0.1]
====
$ emacs /etc/glusterfs/glusterfs-server.vol
$ cat /etc/glusterfs/glusterfs-server.vol
volume brick
type storage/posix
option directory /tmp/export
end-volume
volume brick-ns
type storage/posix
option directory /tmp/export-ns
end-volume
volume server
type protocol/server
subvolumes brick
option auth.ip.brick.allow *
option auth.ip.brick-ns.allow *
end-volume
$ glusterfsd -f /etc/glusterfs/glusterfs-server.vol
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.2G 7.6G 1.2G 87% /
$
====
--> Server2 [192.168.0.2]
====
$ emacs /etc/glusterfs/glusterfs-server.vol
$ cat /etc/glusterfs/glusterfs-server.vol
volume brick
type storage/posix
option directory /tmp/export
end-volume
volume server
type protocol/server
subvolumes brick
option auth.ip.brick.allow *
end-volume
$ glusterfsd -f /etc/glusterfs/glusterfs-server.vol
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.2G 7.6G 1.2G 87% /
$
====
--> Server3 [192.168.0.3]
====
$ emacs /etc/glusterfs/glusterfs-server.vol
$ cat /etc/glusterfs/glusterfs-server.vol
volume brick
type storage/posix
option directory /tmp/export
end-volume
volume server
type protocol/server
subvolumes brick
option auth.ip.brick.allow *
end-volume
$ glusterfsd -f /etc/glusterfs/glusterfs-server.vol
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.2G 7.6G 1.2G 87% /
$
====
--> Client1 [192.168.0.4]
====
$ mkdir /mnt/glusterfs
$ emacs /etc/glusterfs/glusterfs-client.vol
$ cat /etc/glusterfs/glusterfs-client.vol
volume client1-ns
type protocol/client
option remote-host 192.168.0.1
option remote-subvolume brick-ns
end-volume
volume client1
type protocol/client
option remote-host 192.168.0.1
option remote-subvolume brick
end-volume
volume client2
type protocol/client
option remote-host 192.168.0.2
option remote-subvolume brick
end-volume
volume client3
type protocol/client
option remote-host 192.168.0.3
option remote-subvolume brick
end-volume
volume unify
type cluster/unify
subvolumes client1 client2 client3
option namespace client1-ns
option scheduler rr
end-volume
$ glusterfs -f /etc/glusterfs/glusterfs-client.vol /mnt/glusterfs
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.2G 7.6G 1.2G 87% /
glusterfs 27.7G 22.9G 3.7G 87% /mnt/glusterfs
$
====
:O You already got your cluster file system working
For more details refer Gluster wiki - http://www.gluster.org/docs/index.php/GlusterFS
------------------------------------------------------------------------
_______________________________________________
Gluster-devel mailing list
Gluster-devel@xxxxxxxxxx
http://lists.nongnu.org/mailman/listinfo/gluster-devel