GFS 分布式文件系统搭建

GlusterFS集群的模式

GlusterFS 集群的模式只数据在集群中的存放结构,类似于磁盘阵列中的级别。

1、分布式卷(Distributed Volume)

又称哈希卷,近似于RAID0,文件没有分片,文件根据hash算法写入各个节点的硬盘上,优点是容量大,缺点是没冗余。
在这里插入图片描述

2、复制卷(Replicated Volume)

相当于raid1,复制的份数,决定集群的大小,通常与分布式卷或者条带卷组合使用,解决前两种存储卷的冗余缺陷。缺点是磁盘利用率低。
复本卷在创建时可指定复本的数量,通常为2或者3,复本在存储时会在卷的不同brick上,因此有几个复本就必须提供至少多个brick,当其中一台服务器失效后,可以从另一台服务器读取数据,因此复制GlusterFS卷提高了数据可靠性的同事,还提供了数据冗余的功能。
在这里插入图片描述

3、分布式复制卷(Distributed Replicated Volume)

分布式复制GlusterFS卷结合了分布式和复制Gluster卷的特点,看起来类似RAID10,但其实不同,RAID10其实质是条带化,但分布式复制GlusterFS卷则没有。
在这里插入图片描述

4、条带卷(Striped Volume)

相当于raid0,文件是分片均匀写在各个节点的硬盘上的,优点是分布式读写,性能整体较好。缺点是没冗余,分片随机读写可能会导致硬盘IOPS饱和。
在这里插入图片描述

5、分布式条带卷(Distributed Striped Volume)

当单个文件的体型十分巨大,客户端数量更多时,条带卷已经无法满足需求,此时将分布式与条带化结合起来是一个比较好的选择。其性能与服务器数量有关。

GlusterFS 部署:

环境如下:
操作系统IP主机名硬盘数量(除去系统盘)
centos 7.4192.168.50.139node1sdb(10G) sdc(10G) sdd(10G) sde(10G)
centos 7.4192.168.50.140node2sdb(10G) sdc(10G) sdd(10G) sde(10G)
centos 7.4192.168.50.141node3sdb(10G) sdc(10G) sdd(10G) sde(10G)
centos 7.4192.168.50.144node4sdb(10G) sdc(10G) sdd(10G) sde(10G)
centos 7.4192.168.50.143client
第一步:先将每台虚拟机的各个磁盘挂载好,方便操作,可以使用以下脚本
vim a.sh

#!/bin/bash
#磁盘挂载
echo "the disks exist list:"
fdisk -l | grep '磁盘 /dev/sd[a-z]'
echo "======================================"
PS3="chose which disk you want to create:"
select VAR in `ls /dev/sd* | grep -o 'sd[b-z]' | uniq` quit
do
  case $VAR in
  sda)
        fdisk -l /dev/sda
        break ;;
  sd[b-z])
        #create partitions
echo "n
p



w" | fdisk /dev/$VAR
        #make filesystem
        mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null
        #mount the system
        mkdir -p /data/${VAR}"1" &> /dev/null
        echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
        mount -a &> /dev/null
        break ;;
  quit)
        break ;;
  *)
		echo "wrong disk,please check again" ;;
  esac
 done
第二步:在四台node主机上的操作

(1)修改主机名(node1、node2、node3、node4),并关闭防火墙等。

(2)编辑 hosts 文件,添加主机名和 IP地址:

vim /etc/hosts

......
192.168.50.139 node1
192.168.50.140 node2
192.168.50.141 node3
192.168.50.144 node4

(3)编写 yum 源的库,安装 GlusterFS :

cd /opt/
mkdir /abc
mount.cifs //192.168.10.15/gfs /opt   //远程挂载到本地
cd /etc/yum.repos.d/
mkdir bak  
mv Cent* bak/   //将原来的源都移到新建的文件夹中

vim /etc/yum.repos.d/GLFS.repo   //新建一个源
[GLFS]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1

(3)安装软件包:

yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

(4)开启服务:

systemctl start glusterd.service
systemctl enable glusterd.service 
systemctl status glusterd.service 

第三步:添加存储信任池只要在一台主机上添加其他节点即可

gluster peer probe node2
gluster peer probe node3
gluster peer probe node4

[root@node1 yum.repos.d]# gluster peer status

Number of Peers: 3

Hostname: node2
Uuid: 86e94693-aaaf-4eb9-91d6-edce0489e4f7
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: 1ee7a579-4a0e-493e-8709-d8234b8bb858
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: b98e1eb0-3639-47be-a767-3a3df125443a
State: Peer in Cluster (Connected)

第四步:GlusterFS 卷的创建

(1)创建分布式卷:

[root@node1 yum.repos.d]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
volume create: dis-vol: success: please start the volume to access data

  //利用node1和node2上的两块磁盘创建;dis-vol为磁盘名;force表示强制
     
[root@node1 yum.repos.d]# gluster volume start dis-vol 
volume start: dis-vol: success

[root@node1 yum.repos.d]# gluster volume info  dis-vol 
Volume Name: dis-vol
Type: Distribute
Volume ID: a50b1612-8e67-46b5-b2fa-2894337b74cb
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

(2)创建条带卷:

[root@node1 yum.repos.d]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: stripe-vol: success: please start the volume to access data

[root@node1 yum.repos.d]# gluster volume start stripe-vol 
volume start: stripe-vol: success

[root@node1 yum.repos.d]# gluster volume info stripe-vol 
Volume Name: stripe-vol
Type: Stripe
Volume ID: da81b00a-0e98-43d9-b55a-726c758ecef9
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1
Brick2: node2:/data/sdc1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

(3)创建复制卷:

[root@node1 yum.repos.d]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: rep-vol: success: please start the volume to access data

[root@node1 yum.repos.d]# gluster volume start rep-vol 
volume start: rep-vol: success

[root@node1 yum.repos.d]# gluster volume info rep-vol 
Volume Name: rep-vol
Type: Replicate
Volume ID: fa5bd0c7-5d8d-49da-a25d-9d3fb0592fe3
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/data/sdb1
Brick2: node4:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

(4)创建分布式条带卷(至少4个节点):

[root@node1 yum.repos.d]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
volume create: dis-stripe: success: please start the volume to access data

[root@node1 yum.repos.d]# gluster volume start dis-stripe 
volume start: dis-stripe: success

[root@node1 yum.repos.d]# gluster volume info dis-stripe 
 
Volume Name: dis-stripe
Type: Distributed-Stripe
Volume ID: 6dc5d7c3-76ed-437d-b5fe-e0b875c0de18
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdd1
Brick2: node2:/data/sdd1
Brick3: node3:/data/sdd1
Brick4: node4:/data/sdd1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

(5)创建分布式复制卷(至少4个节点):

[root@node1 yum.repos.d]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: dis-rep: success: please start the volume to access data

[root@node1 yum.repos.d]# gluster volume start dis-rep 
volume start: dis-rep: success

[root@node1 yum.repos.d]# gluster volume info dis-rep 
 
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: dd2c8b19-d63b-42aa-be66-ca760335d0a0
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sde1
Brick2: node2:/data/sde1
Brick3: node3:/data/sde1
Brick4: node4:/data/sde1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

(6)查看创建的卷

[root@node1 yum.repos.d]# gluster volume list
dis-rep
dis-stripe
dis-vol
rep-vol
stripe-vol

第五步:客户端配置

(1)关闭防火墙

(2)配置安装 GFS 源:

cd /opt/
mkdir /abc
mount.cifs //192.168.10.15/gfs /opt   //远程挂载到本地
cd /etc/yum.repos.d/
mkdir bak  
mv Cent* bak/   //将原来的源都移到新建的文件夹中

vim /etc/yum.repos.d/GLFS.repo   //新建一个源
[GLFS]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum -y install glusterfs glusterfs-fuse   //安装软件包

(3)修改 hosts文件:

vim /etc/hosts

192.168.50.139 node1
192.168.50.140 node2
192.168.50.141 node3
192.168.50.144 node4

(4)创建临时挂载点:

mkdir -p /text/dis   //递归创建一个挂载点
mount.glusterfs node1:dis-vol /text/dis/         //挂载分布式卷

mkdir /text/strip
mount.glusterfs node1:stripe-vol /text/strip/     //挂载条带卷

mkdir /text/rep
mount.glusterfs node3:rep-vol /text/rep/          //挂载复制卷

mkdir /text/dis-str
mount.glusterfs node2:dis-stripe /text/dis-str/    //挂载分布式条带卷

mkdir /text/dis-rep
mount.glusterfs node4:dis-rep /text/dis-rep/        //挂载分布式复制卷

(5)查看挂载信息

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
node1:dis-vol             20G  265M   20G    2% /test/dis
node1:stripe-vol          20G  265M   20G    2% /test/strip
node1:rep-vol             10G  233M  9.8G    3% /test/rep
node1:dis-stripe          40G  330M   40G    1% /test/dis_stripe
node1:dis-rep             20G  265M   20G    2% /test/dis_rep

(6)创建5个40M的文件

dd if=/dev/zero of=/demo1.log bs=1M count=40
dd if=/dev/zero of=/demo2.log bs=1M count=40
dd if=/dev/zero of=/demo3.log bs=1M count=40
dd if=/dev/zero of=/demo4.log bs=1M count=40
dd if=/dev/zero of=/demo5.log bs=1M count=40

(7)复制5个文件到不同的卷上

cp /demo* /test/dis
cp /demo* /test/strip
cp /demo* /test/rep
cp /demo* /test/dis_stripe
cp /demo* /test/dis_rep

第六步 测试

(1)查看分布式卷
每个文件都是完整的

[root@node1 ~]# ll -h /data/sdb1/
总用量 160M
-rw-r--r--. 2 root root 40M 1218 16:22 demo1.log
-rw-r--r--. 2 root root 40M 1218 16:22 demo2.log
-rw-r--r--. 2 root root 40M 1218 16:22 demo3.log
-rw-r--r--. 2 root root 40M 1218 16:22 demo4.log

[root@node2 ~]# ll -h /data/sdb1/
总用量 40M
-rw-r--r--. 2 root root 40M 1218 16:22 demo5.log

(2)查看条带卷
所有文件都被分成各一半进行分布存储

[root@node1 ~]# ll -h /data/sdc1/
总用量 100M
-rw-r--r--. 2 root root 20M 1218 16:23 demo1.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo2.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo3.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo4.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo5.log

[root@node2 ~]# ll -h /data/sdc1/
总用量 100M
-rw-r--r--. 2 root root 20M 1218 16:23 demo1.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo2.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo3.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo4.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo5.log

(3)查看复制卷
所有文件都被完整复制一遍,进行存储

[root@node3 ~]# ll -h /data/sdb1
总用量 200M
-rw-r--r--. 2 root root 40M 1218 16:23 demo1.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo2.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo3.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo4.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo5.log


[root@node4 ~]# ll -h /data/sdb1/
总用量 200M
-rw-r--r--. 2 root root 40M 1218 16:23 demo1.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo2.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo3.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo4.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo5.log

(4)查看分布式条带卷

[root@node1 ~]# ll -h /data/sdd1/
总用量 80M
-rw-r--r--. 2 root root 20M 1218 16:23 demo1.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo2.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo3.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo4.log


[root@node2 ~]# ll -h /data/sdd1/
总用量 80M
-rw-r--r--. 2 root root 20M 1218 16:23 demo1.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo2.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo3.log
-rw-r--r--. 2 root root 20M 1218 16:23 demo4.log


[root@node3 ~]# ll -h /data/sdd1/
总用量 20M
-rw-r--r--. 2 root root 20M 1218 16:23 demo5.log


[root@node4 ~]# ll -h /data/sdd1/
总用量 20M
-rw-r--r--. 2 root root 20M 1218 16:23 demo5.log

(5)查看分布式复制卷

[root@node1 ~]# ll -h /data/sde1/
总用量 160M
-rw-r--r--. 2 root root 40M 1218 16:23 demo1.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo2.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo3.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo4.log


[root@node2 ~]# ll -h /data/sde1/
总用量 160M
-rw-r--r--. 2 root root 40M 1218 16:23 demo1.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo2.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo3.log
-rw-r--r--. 2 root root 40M 1218 16:23 demo4.log


[root@node3 ~]# ll -h /data/sde1/
总用量 40M
-rw-r--r--. 2 root root 40M 1218 16:23 demo5.log


[root@node4 ~]# ll -h /data/sde1/
总用量 40M
-rw-r--r--. 2 root root 40M 1218 16:23 demo5.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值