Are you trying to install GlusterFS on CentOS 7?
This guide is for you.
GlusterFS aggregates various storage servers over Ethernet or Infiniband RDMA interconnect into one large parallel network file system. It is free software, with some parts licensed under the GNU General Public License(GPL) v3 while others are dual licensed under either GPL v2 or the Lesser General Public License (LGPL) v3. GlusterFS is based on a stackable user space design.
The main advantage of GlusterFS is that it eliminates the metadata and can dramatically improve the performance which will help us to unify data and objects.
Also, its simplicity, elasticity, scalable, flexible features make it one of the best-distributed file systems.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to install GlusterFS.
In this context, we shall look into the steps to install GlusterFS on CentOS 7.
Here, you will learn how to set up GlusterFS Storage on RHEL 7.x and CentOS 7.x. Here, we are considering 4 servers.
For that, we add the below lines in /etc/hosts file as we are considering to have our own DNS servers.
192.xxx.xx.10 server1.com server1
192.xxx.xx.20 server2.com server2
192.xxx.xx.30 server3.com server3
192.xxx.xx.40 server4.com server4
Initially, we set up gluster repo and EPEL repo. For that, we run the below commands
yum install wget
yum install centos-release-gluster -y
yum install epel-release -y
yum install glusterfs-server -y
After setting the gluster repo and EPEL repo, we start and enable the GlusterFS service using the commands,
systemctl start glusterd
systemctl enable glusterd
Then we allow the ports on the firewall so that the servers can communicate and form storage cluster. For that, we run the following commands,
firewall-cmd --zone=public --add-port=24007-24008/tcp --permanent
firewall-cmd --zone=public --add-port=24009/tcp --permanent
firewall-cmd --zone=public --add-service=nfs --add-service=samba --add-service=samba-client --permanent
firewall-cmd --zone=public --add-port=111/tcp --add-port=139/tcp --add-port=445/tcp --add-port=965/tcp --add-port=2049/tcp --add-port=38465-38469/tcp --add-port=631/tcp --add-port=111/udp --add-port=963/udp --add-port=49152-49251/tcp --permanent
firewall-cmd --reload
Now, let's form a trusted storage pool consisting of server 1 and server 2. And then we will create bricks on that and after that, we will create distributed volume.
We run the below command from the server 1 console to form a trusted storage pool with server 2.
gluster peer probe server2.com
Then we check the peer status in server 1 using the command
gluster peer status
For setting up the brick we need to create the logical volumes on the raw disk (/dev/sdb).
For that, we run the below commands on server 1,
pvcreate /dev/sdb /dev/vg_bricks/dist_brick1 /bricks/dist_brick1 xfs rw,noatime,inode64,nouuid 1 2
vgcreate vg_bricks /dev/sdb
lvcreate -L 14G -T vg_bricks/brickpool1
Here, in the last command, the brickpool1 is the name of the thin pool.
Then we create a logical volume of 3GB
lvcreate -V 3G -T vg_bricks/brickpool1 -n dist_brick1
Now we format the logical Volume using xfs file system
mkfs.xfs -i size=512 /dev/vg_bricks/dist_brick1
mkdir -p /bricks/dist_brick1
We then mount the brick using the mount command
mount /dev/vg_bricks/dist_brick1 /bricks/dist_brick1/
If we want to mount it permanently then we add the below line in /etc/fsatb
/dev/vg_bricks/dist_brick1 /bricks/dist_brick1 xfs rw,noatime,inode64,nouuid 1 2
Then we create a directory with brick under the mount point.
mkdir /bricks/dist_brick1/brick
We create the brick 2 in server 2 as similarly, we created brick 1 by running the below commands
pvcreate /dev/sdb ; vgcreate vg_bricks /dev/sdb
lvcreate -L 14G -T vg_bricks/brickpool2
lvcreate -V 3G -T vg_bricks/brickpool2 -n dist_brick2
mkfs.xfs -i size=512 /dev/vg_bricks/dist_brick2
mkdir -p /bricks/dist_brick2
mount /dev/vg_bricks/dist_brick2 /bricks/dist_brick2/
mkdir /bricks/dist_brick2/brick
Then we create a distributed volume using the below command
gluster volume create distvol server1.com:/bricks/dist_brick1/brick server2.com:/bricks/dist_brick2/brick
gluster volume start distvol
We verify the volume status using the following command
gluster volume info distvol
Before mounting the volume using GlusterFS first we have to make sure that the glusterfs-fuse package is installed on the client.
We then log into the client console and run the below command to install glusterfs-fuse
yum install glusterfs-fuse -y
We create a mount for distribute volume
mkdir /mnt/distvol
Now we mount the ‘distvol‘ using below mount command :
mount -t glusterfs -o acl server1.com:/distvol /mnt/distvol/
For permanent mount, we add the below entry in the /etc/fstab file
server1.com:/distvol /mnt/distvol glusterfs _netdev 0 0
We run the df command to verify the mounting status of volume.
df -Th
For replicate volume setup we will use server 3 and server 4. And assume additional disk (/dev/sdb ) for GlusterFS is already assigned to the servers.
We add the server 3 and server 4 in trusted storage pool
gluster peer probe server3.com
gluster peer probe server4.com
We create and mount the brick on server 3. For that, we run the below commands in server 3,
pvcreate /dev/sdb ; vgcreate vg_bricks /dev/sdb
lvcreate -L 14G -T vg_bricks/brickpool3
lvcreate -V 3G -T vg_bricks/brickpool3 -n shadow_brick1
mkfs.xfs -i size=512 /dev/vg_bricks/shadow_brick1
mkdir -p /bricks/shadow_brick1
mount /dev/vg_bricks/shadow_brick1 /bricks/shadow_brick1/
mkdir /bricks/shadow_brick1/brick
For permanent mounting, we run the below command,
/dev/vg_bricks/shadow_brick1 /bricks/shadow_brick1/ xfs rw,noatime,inode64,nouuid 1 2
Similarly, we perform the same steps on server 4 for creating and mounting brick by navigating to server 4 console.
pvcreate /dev/sdb ; vgcreate vg_bricks /dev/sdb
lvcreate -L 14G -T vg_bricks/brickpool4
lvcreate -V 3G -T vg_bricks/brickpool4 -n shadow_brick2
mkfs.xfs -i size=512 /dev/vg_bricks/shadow_brick2
mkdir -p /bricks/shadow_brick2
mount /dev/vg_bricks/shadow_brick2 /bricks/shadow_brick2/
mkdir /bricks/shadow_brick2/brick
We create Replicated Volume using below gluster command.
gluster volume create shadowvol replica 2 server3.com:/bricks/shadow_brick1/brick server4.com:/bricks/shadow_brick2/brick
volume create: shadowvol: success: please start the volume to access data
gluster volume start shadowvol
We verify the Volume info using below gluster command :
gluster volume info shadowvol
Note: One of the limitations in gluster storage is that the GlusterFS server only supports version 3 of the NFS protocol.
We add the below entry in the file “/etc/nfsmount.conf” on both the Storage Servers (Server 3 & Server 4 )
Defaultvers=3
After making the above entry we reboot both servers once. Then we use below mount command to volume “shadowvol”
mount -t nfs -o vers=3 server4.com:/shadowvol /mnt/shadowvol/
For permanent mount, we add the following entry in /etc/fstab file
server4.com:/shadowvol /mnt/shadowvol/ nfs vers=3 0 0
We verify the size and mounting status of the volume using the command
df -Th
For setting up Distribute-Replicate volume we will be using one brick from each server and will form the volume. We will create the logical volume from the existing thin pool on the respective servers.
Create a brick on all 4 servers using following commands
lvcreate -V 3G -T vg_bricks/brickpool1 -n prod_brick1
mkfs.xfs -i size=512 /dev/vg_bricks/prod_brick1
mkdir -p /bricks/prod_brick1
mount /dev/vg_bricks/prod_brick1 /bricks/prod_brick1/
mkdir /bricks/prod_brick1/brick
lvcreate -V 3G -T vg_bricks/brickpool2 -n prod_brick2
mkfs.xfs -i size=512 /dev/vg_bricks/prod_brick2
mkdir -p /bricks/prod_brick2
mount /dev/vg_bricks/prod_brick2 /bricks/prod_brick2/
mkdir /bricks/prod_brick2/brick
lvcreate -V 3G -T vg_bricks/brickpool3 -n prod_brick3
mkfs.xfs -i size=512 /dev/vg_bricks/prod_brick3
mkdir -p /bricks/prod_brick3
mount /dev/vg_bricks/prod_brick3 /bricks/prod_brick3/
mkdir /bricks/prod_brick3/brick
lvcreate -V 3G -T vg_bricks/brickpool4 -n prod_brick4
mkfs.xfs -i size=512 /dev/vg_bricks/prod_brick4
mkdir -p /bricks/prod_brick4
mount /dev/vg_bricks/prod_brick4 /bricks/prod_brick4/
mkdir /bricks/prod_brick4/brick
Now we Create volume with name “dist-rep-vol” using below gluster command :
gluster volume create dist-rep-vol replica 2 server1.example.com:/bricks/prod_brick1/brick server2.example.com:/bricks/prod_brick2/brick server3.example.com:/bricks/prod_brick3/brick server4.example.com:/bricks/prod_brick4/brick force
gluster volume start dist-rep-vol
We verify volume info using below command :
gluster volume info dist-rep-vol
In this volume, first files will be distributed on any two bricks and then the files will be replicated into the remaining two bricks.
Now we Mount this volume on the client machine via gluster
We first create the mount point for this volume :
mkdir /mnt/dist-rep-vol
mount.glusterfs server1.com:/dist-rep-vol /mnt/dist-rep-vol/
Then we add below entry in fstab for permanent entry
server1.com:/dist-rep-vol /mnt/dist-rep-vol/ glusterfs _netdev 0 0
After that we verify the Size and volume using df command :
df -Th
That's it.
This article will guide you on the steps to install and setup #GlusterFS.
GlusterFS is a scalable #network filesystem suitable for data-intensive tasks such as cloud storage and media streaming.
GlusterFS has a client and #server component. Servers are typically deployed as storage bricks, with each server running a glusterfsd daemon to export a local file system as a #volume.
To install GlusterFS:
1. Have at least two nodes. CentOS 7 on two servers named "server1" and "server2".
2. Format and mount the bricks.
3. Installing GlusterFS.
4. #Iptables configuration.
5. Configure the trusted pool.
6. Set up a GlusterFS volume.
7. Testing the GlusterFS volume.