GFS分布式文件系统

目录

1、GlusterFS概述

■ GlusterFS简介
● 开源的分布式文件系统
● 由存储服务器、客户端以及NFS/Samba存储网关组
● 无元数据服务器成
■ GlusterFS特点
● 扩展性和高性能
● 高可用性
● 全局统一命名空间
● 弹性卷管理
● 基于标准协议
■ GlusterFS术语
● Brick (存储块) :指可信主机池中由主机提供的用于物理存储的专用分区,是GlusterFS中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录
● Volume (逻辑卷) : 一个逻辑卷是一组Brick 的集合。卷是数据存储的逻辑设备,类似于LVM中的逻辑卷。大部分Gluster 管理操作是在卷上进行的
● FUSE (Filesystem inUserspace) :是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码
● VFS:内核空间对用户空间提供的访问磁盘的接口
● Glusterd (后台管理进程) :在存储群集中的每个节点上都要运行
■ 模块化堆栈式架构
● 模块化、堆栈式的架构
● 通过对模块的组合,实现复杂的功能d
■ GlusterFS工作流程
● 客户端或应用程序通过GlusterFS的挂载点VFS访问数据
● Linux系统内核通过VFS API收到请求并处理
● VFS将数据递交给FUSE内核文件系统,fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client(客户机)
● GlusterFS client收到数据后,Client根据配置文件的配置对数据进行处理
● 通过网络将数据传递至远端的GlusterFS server(服务器),并且将数据写入到服务器的存储设备上
■ 弹性HASH算法
● 通过HASH算法得到一个32位的整数
● 划分为N个连续的子空间,每个空间对应一个Brick
● 弹性HASH算法的优点
◆ 保证数据平均分布在每一个Brick中
◆ 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
● 四个Brick节点的GlusterFS卷,平均分配2的32次方的区间的范围空间
● 访问文件时,通过计算该文件的HASH值(key值),从而对应到Brick存储空间

2、GlusterFS的卷类型

■ 分布式卷
■ 条带卷
■ 复制卷
■ 分布式条带卷
■ 分布式复制卷
■ 条带复制卷
■ 分布式条带复制卷

2.1、分布式卷(异地存储)

● 没有对文件进行分块处理
● 通过扩展文件属性保存HASH值
● 支持的底层文件系统有EXT2,EXT4,ZFS,XFS等
● 没有分块处理,文件只能存在一个server中,效率不提升

2.1.1、分布式卷的特点

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

2.1.2、创建分布式卷

● 创建一个名为dis-volume的分布式卷,文件将根据HASH分布在
server1:/dir1、server2:/dir2和server3:/dir3中
例:

#gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3

注:
dis-volume 卷名称,可自定义
server1:/dir1 主机名:/挂载点

2.2、条带卷

● 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
● 存储大文件时,性能尤为突出
● 不具备冗余性,类似Raid0
● 从多个server中同时读取文件,效率提升

2.2.1、条带卷特点

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

2.2.2、创建条带卷

● 创建了一个名为Stripe-volume的条带卷 ,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中
例:

# gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2

注:
stripe 2 条带卷数量

2.3、复制卷(类似raid1)

● 同一文件保存一份或多分副本
● 因为要保存副本,所以磁盘利用率较低
● 若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量

2.3.1、复制卷特点

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

2.3.2、创建复制卷

●创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中
例:

# gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

2.4、分布式条带卷(先做条带卷,后做分布卷)

● 兼顾分布式卷和条带卷的功能
● 主要用于大文件访问处理
● 至少最少需要4台服务器

2.4.1、创建分布式条带卷

●创建了名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)
例:

# gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

2.5、分布式复制卷

● 兼顾分布式卷和复制卷的功能
● 用于需要冗余的情况

2.5.1、创建分布式复制卷

● 创建名为dis-rep的分布式条带卷,配置分布式复制卷时,卷中Brick所包含的存储服务器数必须是复制卷数的倍数(>=2
例:

# gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

2.6、gfs卷的类型总结

● 分布式卷:存储brick不在一个区域范围,某一个区域内brick坏了,不影响另一个区域的brick。
● 条带式卷:多个brick形成一个整体,这个整体内的任意一块brick坏了,整个条带卷不可用。
● 复制卷:多个brick形成一个整体,这个整体内的每块brick都有完整文件的副本,因此,复制卷内任意一块brick坏了,不影响复制卷使用。

3、GlusterFS部署

群集环境拓扑图
在这里插入图片描述
群集环境设备配置
node 1 :192.168.140.10
node 2: 192.168.140.20
node 3 :192.168.140.30
node 4 :192.168.140.40
Client : 192.168.140.50
卷类型
在这里插入图片描述

3.1、部署流程

3.1.1、node1节点上添加映射

[root@node1 ~]# vi /etc/hosts    

在这里插入图片描述

3.1.2、node1节点上设置免密登录

[root@node1 ~]# ssh-keygen -t rsa
[root@node1 ~]# ssh-copy-id 192.168.140.20
[root@node1 ~]# ssh-copy-id 192.168.140.30
[root@node1 ~]# ssh-copy-id 192.168.140.40
[root@node1 ~]# ssh-copy-id 192.168.140.50

在这里插入图片描述

3.1.3、node1上进行映射文件拷贝

[root@node1 ~]# scp /etc/hosts root@192.168.140.20:/etc/
[root@node1 ~]# scp /etc/hosts root@192.168.140.30:/etc/
[root@node1 ~]# scp /etc/hosts root@192.168.140.40:/etc/
[root@node1 ~]# scp /etc/hosts root@192.168.140.50:/etc/

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.1.4、所有节点和客户机添加gfsrepo软件包,开启同步会话

[root@node1 ~]# ls -lh

在这里插入图片描述

3.1.5、关闭防火墙,创建gfs.repo文件

[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
[root@node1 ~]# cd /etc/yum.repos.d
[root@node1 yum.repos.d]# vi gfs.repo
添加
[gfs]
name=gfs
baseurl=file:///root/gfsrepo
gpgcheck=0       #无验证
enabled=1          #立即启用
[root@node1 yum.repos.d]# cd
[root@node1 ~]# yum clean all      #清除缓存
[root@node1 ~]# yum makecache      #建立缓存

在这里插入图片描述

3.1.6、断开客户机,同步所有节点安装软件包

[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
注:
glusterfs :软件
glusterfs-server: 服务
glusterfs-fuse :文件系统
glusterfs-rdma :rdma协议
[root@node1 ~]# systemctl start glusterd.service          #开启服务
[root@node1 ~]# systemctl enable glusterd.service       #服务自启动
[root@node1 ~]# systemctl status glusterd.service        #查看服务状态

在这里插入图片描述

[root@node1 ~]# ntpdate ntp1.aliyun.com    #与阿里云时间服务器做同步
[root@node1 ~]# crontab -e                            #创建任务计划
*/30 * * * * /usr/sbin/ntpdate ntp1.ailyun.com
每30分钟
分钟 小时 日期 月 星期
[root@node1 ~]# which ntpdate

在这里插入图片描述

3.1.7、关闭同步会话,选择node1作为信任池中的信任端

[root@node1 ~]# gluster peer probe node2
[root@node1 ~]# gluster peer probe node3
[root@node1 ~]# gluster peer probe node4
[root@node1 ~]# gluster peer status              #查看信任关系

在这里插入图片描述

3.1.8、所有节点添加四个5G硬盘,重启,开启同步会话

[root@node1 ~]# fdisk -l           #查看磁盘信息

在这里插入图片描述

[root@node1 ~]# mkfs.ext4 /dev/sdb     #磁盘格式化
[root@node1 ~]# mkfs.ext4 /dev/sdc
[root@node1 ~]# mkfs.ext4 /dev/sdd
[root@node1 ~]# mkfs.ext4 /dev/sde

在这里插入图片描述

3.1.9、创建挂载点,并进行挂载

[root@node1 ~]# mkdir {/b1,/c1,/d1,/e1}              #创建挂载点
[root@node1 ~]# mount /dev/sdb /b1                   
[root@node1 ~]# mount /dev/sdb /c1
[root@node1 ~]# mount /dev/sdb /d1
[root@node1 ~]# mount /dev/sdb /e1
[root@node1 ~]# df -Th                                #查看挂载情况

在这里插入图片描述

3.2、启动服务,查看状态

[root@node1 ~]# systemctl start glusterfsd.service
[root@node1 ~]# systemctl status glusterfsd.service

在这里插入图片描述

3.3、关闭会话同步,开始创建卷

3.3.1、在node1上选择node1和node2的b1挂载点创建分布式卷

[root@node1 ~]# gluster volume create dis-vol node1:/b1 node2:/b1 force        #强制创建
[root@node1 ~]# gluster volume info dis-vol    #查看卷的详细信息
[root@node1 ~]# gluster volume start dis-vol   #开启卷
[root@node1 ~]# gluster volume status dis-vol   #查看卷的状态

在这里插入图片描述

3.3.2、在node1上选择node1和node2的c1挂载点创建条带卷

[root@node1 ~]# gluster volume create stripe-vol stripe 2 node1:/c1 node2:/c1 force              #强制创建条带卷
[root@node1 ~]# gluster volume info stripe-vol         #查看卷的详细信息
[root@node1 ~]# gluster volume start stripe-vol        #开启卷
[root@node1 ~]# gluster volume status stripe-vol      #查看卷的状态

在这里插入图片描述

3.3.3、在node1上选择node3和node4的b1挂载点创建复制卷

[root@node1 ~]# gluster volume create rep-vol replica 2 node3:/b1 node4:/b1 force
[root@node1 ~]# gluster volume info rep-vol 
[root@node1 ~]# gluster volume start rep-vol 
[root@node1 ~]# gluster volume status rep-vol

在这里插入图片描述

3.3.4、在node1上选择node1,node2,node3,node4的d1挂载点创建分布式条带卷

[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/d1 node2:/d1 node3:/d1 node4:/d1 force
[root@node1 ~]# gluster volume info dis-stripe
[root@node1 ~]# gluster volume start dis-stripe
[root@node1 ~]# gluster volume status dis-stripe 

在这里插入图片描述

3.3.5、在node1上选择node1,node2,node3,node4的e1挂载点创建分布式复制卷

[root@node1 ~]# gluster volume create dis-replica replica 2 node1:/e1 node2:/e1 node3:/e1 node4:/e1 force
[root@node1 ~]# gluster volume info dis-replica 
[root@node1 ~]# gluster volume start dis-replica 
[root@node1 ~]# gluster volume status dis-replica

在这里插入图片描述

[root@node1 ~]# gluster volume list         #查看卷的列表

在这里插入图片描述

3.4、启动客户机,安装程序,创建挂载点进行挂载

[root@client ~]# yum -y install glusterfs glusterfs-fuse
[root@client ~]# mkdir {/dis,/stripe,/replica,/dis-stripe,/dis-replica}   #创建挂载点
[root@client ~]# mount.glusterfs node1:dis-vol /dis
[root@client ~]# mount.glusterfs node1:rep-vol /replica
[root@client ~]# mount.glusterfs node1:stripe-vol /stripe
[root@client ~]# mount.glusterfs node1:dis-stripe /dis-stripe
[root@client ~]# mount.glusterfs node1:dis-replica /dis-replica

在这里插入图片描述

3.5、客户机上创建文件进行测试

[root@client ~]# dd if=/dev/zero of=/demo1.log bs=40M count=1
[root@client ~]# dd if=/dev/zero of=/demo2.log bs=40M count=1
[root@client ~]# dd if=/dev/zero of=/demo3.log bs=40M count=1
[root@client ~]# dd if=/dev/zero of=/demo4.log bs=40M count=1
[root@client ~]# dd if=/dev/zero of=/demo5.log bs=40M count=1

在这里插入图片描述

[root@client ~]# ls -lh
[root@client ~]# cd /
[root@client /]# ls -lh

在这里插入图片描述

[root@client /]# cp demo* /dis
[root@client /]# cp demo* /dis-replica
[root@client /]# cp demo* /dis-stripe
[root@client /]# cp demo* /stripe
[root@client /]# cp demo* /replica
[root@client /]# cd
[root@client ~]# cd /
[root@client /]# cd /dis
[root@client dis]# ls -lh

在这里插入图片描述

3.5.1、在node1和node2的b1上查看分布式卷的文件分布

[root@node1 ~]# cd /b1
[root@node1 b1]# ls -lh

在这里插入图片描述

[root@node2 ~]# cd /b1
[root@node2 b1]# ls -lh

在这里插入图片描述

3.5.2、在node1和node2的c1上查看条带卷文件分布

[root@node1 b1]# cd /c1
[root@node1 c1]# ls -lh

在这里插入图片描述

[root@node2 b1]# cd /c1
[root@node2 c1]# ls -lh

在这里插入图片描述

3.5.3、在node3和node4的b1上查看分布式卷文件分布

[root@node3 ~]# cd /b1
[root@node3 b1]# ls -lh

在这里插入图片描述

[root@node4 ~]# cd /b1
[root@node4 b1]# ls -lh

在这里插入图片描述

3.5.4、在node1、node2、node3和node4的d1上查看分布式条带卷文件分布

[root@node1 c1]# cd /d1
[root@node1 d1]# ls -lh

在这里插入图片描述

[root@node2 c1]# cd /d1
[root@node2 d1]# ls -lh

在这里插入图片描述

[root@node3 b1]# cd /d1
[root@node3 d1]# ls  -lh

在这里插入图片描述

[root@node4 b1]# cd /d1
[root@node4 d1]# ls -lh

在这里插入图片描述

3.5.5、在node1、node2、node3和node4的e1上查看分布式复制卷文件分布

[root@node1 d1]# cd /e1
[root@node1 e1]# ls -lh

在这里插入图片描述

[root@node2 d1]# cd /e1
[root@node2 e1]# ls -lh

在这里插入图片描述

[root@node3 d1]# cd /e1
[root@node3 e1]# ls  -lh

在这里插入图片描述

[root@node4 d1]# cd /e1
[root@node4 e1]# ls -lh

在这里插入图片描述

3.6、关闭node2,进行破坏性实验,查看效果

3.6.1、查看分布式卷

[root@client dis]# ls -lh

在这里插入图片描述
总结:node2的关闭,导致node2上分布式文件的5号文件无法被读取

3.6.2、查看条带卷

[root@client dis]# cd /stripe
[root@client stripe]# ls -lh

在这里插入图片描述
总结:因为node2存放了条带卷文件一半数据,所以node2关闭,导致条带卷文件无法被有效读取

3.6.3、查看复制卷

[root@client stripe]# cd /replica
[root@client replica]# ls -lh

在这里插入图片描述
总结:因为有备份,所以node2的关闭不会导致数据的无法读取

3.6.4、查看分布式条带卷

[root@client replica]# cd /dis-stripe
[root@client dis-stripe]# ls -lh

在这里插入图片描述
总结:因为node2上存放着1-4号文件 ,node2的关闭导致1-4号文件无法读取,只剩5号文件可正常读取

3.6.5、查看分布式复制卷

[root@client dis-stripe]# cd /dis-replica/
[root@client dis-replica]# ls -lh

在这里插入图片描述
总结:因为备份,所以文件齐全

3.7、先暂停分布式卷,再删除,查看效果(用node1进行实验)

[root@node1 ~]# gluster volume list                #查看卷列表
[root@node1 ~]# gluster volume stop dis-vol        #停止分布式卷
[root@node1 ~]# gluster volume status dis-vol      #查看分布式卷状态
[root@node1 ~]# gluster volume delete dis-vol       #删除分布式卷

在这里插入图片描述

3.7.1、客户机查看效果

[root@client ~]# df -Th

在这里插入图片描述

3.8、访问控制

3.8.1、设置拒绝客户机访问复制卷(用node1进行实验)

[root@node1 ~]# gluster volume set rep-vol auth.reject 192.168.140.50

在这里插入图片描述

3.8.2、客户机上查看效果

[root@client ~]# df -Th

在这里插入图片描述

[root@client ~]# tail -f /var/log/glusterfs/replica.log   #查看日志信息

在这里插入图片描述

4、总结:

支持FUSE,比MooseFS更加庞大
无单点故障问题
支持回收站
模块化堆叠式架构
对文件系统格式有要求,ext3/ext4/zfs被正式支持
需要以root用户身份运行(gfs需要创建不同属主的文件,所以必须root权限)
不可以在线扩容(不能umount时增加存储节点)
分布存储以文件为单位,条带化分布存储不成熟

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值