Distributed Replicated Storage Across Four Storage Nodes With GlusterFS On CentOS 5.4 - Page 2
3 Setting Up The GlusterFS Clientclient1.example.com: GlusterFS isn't available as a package for CentOS 5.4, therefore we have to build it ourselves. First we install the prerequisites: yum groupinstall 'Development Tools' yum groupinstall 'Development Libraries' yum install libibverbs-devel fuse-devel Then we load the fuse kernel module... modprobe fuse ... and create the file /etc/rc.modules with the following contents so that the fuse kernel module will be loaded automatically whenever the system boots: vi /etc/rc.modules
Make the file executable: chmod +x /etc/rc.modules Then we download the GlusterFS 2.0.9 sources (please note that this is the same version that is installed on the server!) and build GlusterFS as follows: cd /tmp At the end of the ./configure command, you should see something like this: [...] make && make install Check the GlusterFS version afterwards (should be 2.0.9): glusterfs --version [root@client1 glusterfs-2.0.9]# glusterfs --version Then we create the following two directories: mkdir /mnt/glusterfs Next we create the file /etc/glusterfs/glusterfs.vol: vi /etc/glusterfs/glusterfs.vol
Make sure you use the correct server hostnames or IP addresses in the option remote-host lines! That's it! Now we can mount the GlusterFS filesystem to /mnt/glusterfs with one of the following two commands: glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs or mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs You should now see the new share in the outputs of... mount [root@client1 ~]# mount ... and... df -h [root@client1 ~]# df -h (The size of the distributed storage is calculated by replication1 + replication2, where both replication volumes are as big as the smallest brick.) Instead of mounting the GlusterFS share manually on the client, you could modify /etc/fstab so that the share gets mounted automatically when the client boots. Open /etc/fstab and append the following line: vi /etc/fstab
To test if your modified /etc/fstab is working, reboot the client: reboot After the reboot, you should find the share in the outputs of... df -h ... and... mount
4 TestingNow let's create some test files on the GlusterFS share: client1.example.com: touch /mnt/glusterfs/test1 Now let's check the /data/export directory on server1.example.com, server2.example.com, server3.example.com, and server4.example.com. You will notice that replication1 as well as replication2 hold only a part of the files/directories that make up the GlusterFS share on the client, but the nodes that make up replication1 (server1 and server2) or replication2 (server3 and server4) contain the same files (mirroring): server1.example.com: ls -l /data/export [root@server1 ~]# ls -l /data/export server2.example.com: ls -l /data/export [root@server2 ~]# ls -l /data/export server3.example.com: ls -l /data/export [root@server3 ~]# ls -l /data/export server4.example.com: ls -l /data/export [root@server4 ~]# ls -l /data/export Now we shut down server1.example.com and server4.example.com and add/delete some files on the GlusterFS share on client1.example.com. server1.example.com/server4.example.com: shutdown -h now client1.example.com: rm -f /mnt/glusterfs/test5 The changes should be visible in the /data/export directory on server2.example.com and server3.example.com: server2.example.com: ls -l /data/export [root@server2 ~]# ls -l /data/export server3.example.com: ls -l /data/export [root@server3 ~]# ls -l /data/export Let's boot server1.example.com and server4.example.com again and take a look at the /data/export directory: server1.example.com: ls -l /data/export [root@server1 ~]# ls -l /data/export server4.example.com: ls -l /data/export [root@server4 ~]# ls -l /data/export As you see, server1.example.com and server4.example.com haven't noticed the changes that happened while they were down. This is easy to fix, all we need to do is invoke a read command on the GlusterFS share on client1.example.com, e.g.: client1.example.com: ls -l /mnt/glusterfs/ [root@client1 ~]# ls -l /data/export Now take a look at the /data/export directory on server1.example.com and server4.example.com again, and you should see that the changes have been replicated to these nodes: server1.example.com: ls -l /data/export [root@server1 ~]# ls -l /data/export server4.example.com: ls -l /data/export [root@server4 ~]# ls -l /data/export
5 Links
|



Recent comments
17 hours 38 min ago
1 day 3 hours ago
1 day 3 hours ago
1 day 5 hours ago
1 day 7 hours ago
1 day 9 hours ago
1 day 17 hours ago
1 day 21 hours ago
1 day 21 hours ago
1 day 21 hours ago