GFS分布式文件系统简介及部署

目录

一、GFS概述

1、文件系统

①、文件系统组成

②、文件系统的作用

③、专业术语

二、GFS特点

三、GFS工作原理

四、GFS卷

1、GFS卷类型

2、三大基本卷的特点

①、分布式卷

②、条带卷

③、复制卷

五、部署GFS集群

1、部署节点集群

2、部署客户端

3、正常测试

4、破坏性测试

①、分布式卷数据(可查看,但缺少node2的demo5.log)

②、条带卷(不可查看,不具备冗余)

③、复制卷(可查看 ,有冗余)

④、分布式条带卷(不可查看,不具备冗余)

⑤、分布式复制卷(可查看 ,有冗余)

六、gluster命令

总结

工作原理

GFS特点


一、GFS概述

1、文件系统

①、文件系统组成

  • 文件系统接口(API)
  •  对对象管理的软件集合
  •  对象及属性

②、文件系统的作用

  • 从系统角度来看,文件系统是对文件存储设备的空间进行组织和备份
  •  负责文件存储并对存入的文件进行保护和检索的系统
  •  具体地说,它负责为用户建立文件、存入、读出、修改、转储文件、控制文件的存储

③、专业术语

【1】Brick(块存储服务器)实际存储用户数据的服务器

【2】Volume本地文件系统的"分区"

【3】FUSE用户空间的文件系统(类别EXT4),”这是一个伪文件系统“,用户端的交换模块

【4】VFS(虚拟端口)内核态的虚拟文件系统,用户是提交请求给VFS 然后VFS交给FUSH,再交给GFS客户端,最后由客户端交给远端的存储

【5】Glusterd(服务)是运行再存储节点的进程(客户端运行的是gluster client)GFS使用过程中整个GFS之间的交换由Gluster client 和glusterd完成
 

二、GFS特点

  • 【1】扩展性和高性能
  • 【2】高可用性
  • 【3】全局统一命名空间
  • 【4】弹性卷管理
  • 【5】基于标准协议

三、GFS工作原理

【1】外来请求通过挂载点时,linux 系统内核通过VFS接口,把请求发送到FUSE
【2】FUSE将数据交给内存的/dev/fuse,然后递交到GFS客户端
【3】GFS客户端对数据进行处理,并通过网络协议(如TCP、IB等),传输到GFS服务端
【4】GFS服务端接收到数据后,通过VFS接口,对数据进行相应的转存处理
 

四、GFS卷

1、GFS卷类型

  •  分布式卷
  •  条带卷
  •  复制卷
  •  分布式条带卷
  •  分布式复制卷
  •  条带复制卷
  •  分布式条带数据卷

2、三大基本卷的特点

①、分布式卷

  • 文件分布在不同的服务器,不具备冗余性
  •  更容易和廉价地扩展卷的大小
  •  单点故障会造成数据丢失
  •  依赖底层的数据保护

②、条带卷

  • 数据被分割成更小块分布到块服务器群中的不同条带区
  •  分布减少了负载且更小的文件加速了存取的速度
  •  没有数据冗余

③、复制卷

  • 卷中所有的服务器均保存一个完整的副本
  •  卷的副本数量可由客户创建的时候决定
  •  至少由两个块服务器或更多服务器
  •  具备冗余性

五、部署GFS集群

节点名称 ip地址 磁盘 挂载点
Node1节点 192.168.163.4 /dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1
/data/sdb1
/data/sdc1
/data/sdd1
/data/sde1
Node2节点 192.168.163.5 /dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1
/data/sdb1
/data/sdc1
/data/sdd1
/data/sde1
Node3节点 192.168.163.6 /dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1
/data/sdb1
/data/sdc1
/data/sdd1
/data/sde1
Node4节点 192.168.163.7 /dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1
/data/sdb1
/data/sdc1
/data/sdd1
/data/sde1

1、部署节点集群

#关闭防火墙
systemctl stop firewalld
setenforce 0

#磁盘分区,并进行挂载
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

cd /opt
chmod +x fdisk.sh
./fdisk.sh

#配置各个节点的/etc/hosts文件(所有节点操作)
echo "192.168.184.50 node1" >> /etc/hosts
echo "192.168.184.60 node2" >> /etc/hosts
echo "192.168.184.70 node3" >> /etc/hosts
echo "192.168.184.80 node4" >> /etc/hosts

#安装、启动GFS(所有节点操作)
unzip gfsrepo.zip
cd /etc/yum.repos.d/
mv * repos.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-server glusterfs-fuse glusterfs-rdma

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

#添加DNS,进行时间同步
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
ntpdate ntp1.aliyun.com

#添加节点到存储信任池中(在任意一个node中操作)
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4

#在每个node节点上查看群集状态
gluster peer status

========根据以下规划创建卷=========
卷名称 				卷类型				Brick
dis-volume			分布式卷			node1(/data/sdb1)、node2(/data/sdb1)
stripe-volume		条带卷			node1(/data/sdc1)、node2(/data/sdc1)
rep-volume			复制卷			node3(/data/sdb1)、node4(/data/sdb1)
dis-stripe			分布式条带卷		node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)
dis-rep				分布式复制卷		node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)

#创建分布式卷,没有指定类型,默认创建的是分布式卷
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

#指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷
gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
gluster volume start rep-volume
gluster volume info rep-volume

#创建分布式条带卷
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

#创建分布式复制卷
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 

2、部署客户端

cd /opt
unzip gfsrepo.zip 

cd /etc/yum.repos.d/
mv * repos.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

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

echo "192.168.184.50 node1" >> /etc/hosts
echo "192.168.184.60 node2" >> /etc/hosts
echo "192.168.184.70 node3" >> /etc/hosts
echo "192.168.184.80 node4" >> /etc/hosts

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 -h

3、正常测试

#客户端写入数据
cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
dd if=/dev/zero of=/opt/demo5.log bs=1M count=40

ls -lh /opt

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

#查看文件分布
1、查看分布式文件分布
node1:ll -h /data/sdb1
node2:ll -h /data/sdb1
2、查看条带卷文件分布
node1:ll -h /data/sdc1
node2:ll -h /data/sdc1
3、查看复制卷文件分布
node3:ll -h /data/sdb1
node4:ll -h /data/sdb1
4、查看分布式条带卷分布
node1:ll -h /data/sdd1
node2:ll -h /data/sdd1
node3:ll -h /data/sdd1
node4:ll -h /data/sdd1
5、查看分布式复制卷分布
node1:ll -h /data/sde1
node2:ll -h /data/sde1
node3:ll -h /data/sde1
node4:ll -h /data/sde1

4、破坏性测试

node2和node4的服务器进行挂机来模拟故障,然后在客户端上查看其他服务器的文件是否正常

①、分布式卷数据(可查看,但缺少node2的demo5.log)

在这里插入图片描述

 

②、条带卷(不可查看,不具备冗余)

在这里插入图片描述

 

③、复制卷(可查看 ,有冗余)

在这里插入图片描述

 

④、分布式条带卷(不可查看,不具备冗余)

在这里插入图片描述

⑤、分布式复制卷(可查看 ,有冗余)

在这里插入图片描述

 

六、gluster命令

gluster [参数]

常用参数 说明
peer probe 节点 添加节点
peer detach 节点 删除节点
peer status 节点 节点状态
volume start 卷名 启动卷
volume stop 卷名 停止卷
volume delete 卷名 删除卷
volume list 列出卷
volume info 查看卷信息
volume status 查看卷状态

总结

工作原理

【1】外来请求通过挂载点时,linux 系统内核通过VFS接口,把请求发送到FUSE
【2】FUSE将数据交给内存的/dev/fuse,然后递交到GFS客户端
【3】GFS客户端对数据进行处理,并通过网络协议(如TCP、IB等),传输到GFS服务端
【4】GFS服务端接收到数据后,通过VFS接口,对数据进行相应的转存处理

GFS特点

  • 【1】扩展性和高性能
  • 【2】高可用性
  • 【3】全局统一命名空间
  • 【4】弹性卷管理
  • 【5】基于标准协议

你可能感兴趣的:(数据库,服务器)