GlusterFS 分布式文件系统

一,文件简介
1.文件组成
分布式文件系统:开源,KISS ,用户空间
Decentralized, 软件定义存储 , 通用硬件(可立旧)
scale-out扩展,数百节点,数PB数据
适合数据/带宽密集型应用场景
2.特点
最简单的分布式文件系统.
POSIX接口,同时支持NFS/CIFS/FTP协议
简单可靠,社区活跃,广泛实际应用
无中心架构,用户空间设计,模块化扩展
支持Infiniband RDMA传输协议
BIock/File/Object统一存储
极其简便的管理和维护
3.GFS 体系架构
 GFS 架构中有三类角色:客户(client)、主服务器(master server)和数据块服务器(chunk server)。这 三类角色的节点会构成一个 GFS 群,这个群包含一个单个的 Master 节点、多台 Chunk 服务器,多个客户端。
4.  GFS架构的特点
(1)采用单一的 master 节点策略。单一的 master 节点策略能够简化分布式文件系统的设计,可以通过 全局的信息精确定位 chunk 的位置以及进行复制策略,由于只有一个 master,所有的云数据只有一 份,因而不存在元数据的一致性问题。

(2) 采用中心服务器模式。某些分布式文件系统的架构,比如 xFS、GPFS,去掉了中心服务器,只依赖 于分布式算法来保证一致性和关联性。选择中心服务器的方法能够简化设计,增加可靠性,能够灵 活扩展,可以方便的增加 chunk 服务器,并且由于中心服务器可以获知所有子服务器的状态,因而可以很方便的得知各个子服务器的负载状况等。但是中心服务器模式也有一个比较致命的缺点,那 就是单点故障,当单点故障发生在中心服务器时,将导致整个系统的不可用。另外,通过一些具体 的设计能够使分布式文件系统的性能得到保证:

(a)通过由处于中心位置的 Master 服务器保存几乎所有的 Chunk 相关信息、控制 Chunk 的所有变 更记录,能够极大地简化原本非常复杂的 Chunk 分配和复制策略的实现方法,并且方便进行 负载均衡。所谓负载均衡是 master 在所有 chunk 服务期间进行的负载均衡,master 检查副本 的分布情况,然后移走那些剩余空间低于平均值的 chunk 服务器上的副本,从而更好的利用硬 盘空间,平衡系统整体的硬盘使用率。

(b)通过减少 Master 服务器保存的状态信息的数量,将 Master 服务器的状态复制到其它节点,能 够保证了系统的灾难冗余能力。对 Master 服务器状态的更改可以通过预写日志的方式实现持 久化。

© 通过影子 Master 服务器机制保证了系统的扩展能力和高可用性。影子服务器在主 Master 服务 器宕机的时候提供文件系统的只读访问。对于那些不经常改变的文件、或者那些允许获取的 数据有少量过期的应用程序,影子 Master 服务器能够提高读取的效率。

(3)client 和 master 之间只有控制流,而没有数据流,由于控制流只需传送指令和状态,数据量小,这 点能够降低了 master 的负载,提高 master 的速度。

(4)client 与 chunk 服务器之间能够直接传输数据流,同时由于文件被分成多个 chunk 进行分布式存储, 因此 client 可以同时并行访问多个 chunk 服务器,从而提高了系统的 I/O 并行度。
  
二,.部署GlusterFS 群集
关闭防火强,系统安全

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

配置实验环境

node1;	192.168.35.40;	sdb1、sdc1、sdd1、sde1	/data
node2;	92.168.35.10;	sdb1、sdc1、sdd1、sde1	/data
node3;	192.168.35.20;	sdb1、sdc1、sdd1、sde1	/data
node4;	192.168.35.30;	sdb1、sdc1、sdd1、sde1	/data
client;	192.168.35.50 ;    #客户端	 

使用脚本对硬盘进行分区挂载

vim /opt/fdisk.sh
#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
do
   echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
   mkfs.xfs /dev/${VAR}"1" &> /dev/null
   mkdir -p /data/${VAR}"1" &> /dev/null
   echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null
chmod +x /opt/fdisk.sh
cd /opt/
./fdisk.sh

配置/etc/hosts文件(所有节点上操作)

echo "192.168.35.40 node1" >> /etc/hosts
echo "192.168.35.10 node2" >> /etc/hosts
echo "192.168.35.20 node3" >> /etc/hosts
echo "192.168.35.30 node4" >> /etc/hosts
echo "192.168.35.50 client" >> /etc/hosts
cat /etc/hosts

在这里插入图片描述
安装、启动GFS

gfsrepo压缩包上传至opt目录下
unzip gfsrepo.zip
cd /etc/yum.repos.d/
mkdir bak
mv CentOS-* bak
vim gfs.repo		##配置yum本地源
	[glfs]
	name=glfs
	baseurl=file:///opt/gfsrepo
	gpgcheck=0
	enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma		##安装gluster
systemctl start glusterd		##开启gluster服务
netstat -antp | grep glusterd

在这里插入图片描述
进行时间同步

ntpdate ntp1.aliyun.com

----- 添加节点到存储信任池中(在 node1 节点上操作) -----
#只要在一台Node节点上添加其它节点即可

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

#在每个Node节点上查看群集状态

gluster peer status

在这里插入图片描述
创建分布式卷
创建分布式卷,没有指定类型,默认创建的是分布式卷

gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force	

查看卷列表

gluster volume list

启动新建分布式卷

gluster volume start dis-volume

查看创建分布式卷信息

gluster volume info dis-volume

在这里插入图片描述
创建条带卷
指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷

gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
gluster volume start stripe-volume
gluster volume info stripe-volume

在这里插入图片描述
建分布式条带卷
指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷

gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
gluster volume start dis-stripe
gluster volume info dis-stripe

在这里插入图片描述
创建分布式复制卷
指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷

gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
gluster volume start dis-rep
gluster volume info dis-rep	
gluster volume list

在这里插入图片描述
部署 Gluster 客户端
1.安装客户端软件
将gfsrepo 软件上传到/opt目下

cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-fuse

2.创建挂载目录

mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
ls /test

3.配置 /etc/hosts 文件

echo "192.168.35.40 node1" >> /etc/hosts
echo "192.168.35.10 node2" >> /etc/hosts
echo "192.168.35.20 node3" >> /etc/hosts
echo "192.168.35.30 node4" >> /etc/hosts
echo "192.168.35.50 client" >> /etc/hosts

4.挂载 Gluster 文件系统
临时挂载

mount.glusterfs node1:dis-volume /test/dis
mount.glusterfs node1:stripe-volume /test/stripe
mount.glusterfs node1:rep-volume /test/rep
mount.glusterfs node1:dis-stripe /test/dis_stripe
mount.glusterfs node1:dis-rep /test/dis_rep
df -Th  #查询挂载

在这里插入图片描述

卷中写入文件,客户端操作

cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=20	##从/dev/zero内复制文件到opt目录下,命名demo1,大小1M,20次,一共20M
dd if=/dev/zero of=/opt/demo2.log bs=1M count=20
dd if=/dev/zero of=/opt/demo3.log bs=1M count=20
dd if=/dev/zero of=/opt/demo4.log bs=1M count=20
dd if=/dev/zero of=/opt/demo5.log bs=1M count=20
ls -lh /opt

在这里插入图片描述
在这里插入图片描述
查看条带卷文件分布

[root@node1 ~]# ls -lh /data/sdc1

在这里插入图片描述
查看复制卷分布

[root@node3 ~]# ll -h /data/sdb1

在这里插入图片描述
查看分布式条带卷分布

[root@node1 ~]# ll -h /data/sdd1	

在这里插入图片描述

查看分布式复制卷分布
数据没有被分片 有副本 有冗余

[root@node1 ~]# ll -h /data/sde1

在这里插入图片描述

[root@node3 ~]# ll -h /data/sde1

在这里插入图片描述
破坏性测试分布式文件系统
挂起 node2 节点或者关闭glusterd服务来模拟故障

[root@node2 ~]# systemctl stop glusterd.service

在客户端上查看文件是否正常
分布式卷数据查看
在这里插入图片描述
条带卷

[root@localhost text]# cd stripe/					#无法访问,条带卷不具备冗余性
[root@localhost stripe]# ll

在这里插入图片描述
测试复制卷是否正常

[root@localhost rep]# ls -l		#在客户机上测试正常 数据有

在这里插入图片描述
测试分布式条卷是否正常

[root@localhost dis_stripe]# ll						#在客户机上测试正常 没有数据 

在这里插入图片描述
测试分布式复制卷是否正常

[root@localhost dis_and_rep]# ll					#在客户机上测试正常 有数据

在这里插入图片描述
Gluster的其他的维护命令

gluster volume list 	##查看GlusterFS卷
gluster volume info		##查看所有卷的信息
gluster volume status		##查看所有卷的状态
gluster volume stop dis-stripe		##停止一个卷
gluster volume delete dis-stripe		##删除一个卷,注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值