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 -- Amar Tumballi Engineer - Gluster Core Team [bulde on #gluster/irc.gnu.org] http://www.zresearch.com - Commoditizing Supercomputing and Superstorage!
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