GFS分布式文件系统

GlusterFS概述

  • Gluster File System,开源的分布式文件系统
  • 由存储服务器(Brick Server)、客户端以及NFS/Samba 存储网关组成
  • 无元数据服务器

特点

  • 扩展性和高性能
  • 高可用性
  • 全局统一命名空间
  • 弹性卷管理
  • 基于标准协议

术语

  • Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
  • Volume:卷
  • FUSE:内核文件系统,Filesystem
    Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接
  • VFS:虚拟文件系统
  • Glusterd:Gluster management daemon,要在trusted storage pool中所有的服务器上运行

模块化堆栈式架构

  • 通过对模块的组合,实现复杂的功能
    在这里插入图片描述

工作原理

  • 客户端或应用程序通过GlusterFS的挂载点访问数据
  • linux系统内核通过VFS API收到请求并处理
  • VFS将数据递交给FUSE内核文件系统, fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS
    client端
  • GlusterFS client 收到数据后,client根据配置文件的配置对数据进行处理
  • 通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上
    在这里插入图片描述

GlusterFS的卷类型

分布式卷

  • 没有对文件进行分块处理
  • 通过扩展文件属性保存HASH值
  • 支持的底层文件系统有ext3、ext4、ZFS、XFS等
    在这里插入图片描述
    特点
  • 文件分布在不同的服务器,不具备冗余性
  • 更容易和廉价地扩展卷的大小
  • 单点故障会造成数据丢失
  • 依赖底层的数据保护
创建分布式卷

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

条带卷

  • 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
  • 存储大文件时,性能尤为突出
  • 不具备冗余性,类似Raid0
  • GlusterFS6.1版本之后已弃用stripe模式
    在这里插入图片描述
    特点
  • 数据被分割成更小块分布到块服务器群中的不同条带区
  • 分布减少了负载且更小的文件加速了存取的速度
  • 没有数据冗余
创建条带卷

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

复制卷

  • 同一文件保存一份或多分副本
  • 复制模式因为要保存副本,所以磁盘利用率较低
  • 若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量
    在这里插入图片描述
    特点
  • 卷中所有的服务器均保存一个完整的副本
  • 卷的副本数量可由客户创建的时候决定
  • 至少由两个块服务器或更多服务器
  • 具备冗余性
创建复制卷

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

分布式条带卷

  • 兼顾分布式卷和条带卷的功能
  • 主要用于大文件访问处理
  • 至少最少需要 4 台服务器
    在这里插入图片描述
创建分布式条带卷

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

分布式复制卷

  • 兼顾分布式卷和复制卷的功能
  • 用于需要冗余的情况下
    在这里插入图片描述
创建分布式复制卷

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

GFS平台部署

4台服务器作GFS群集
1台客户机

配置hosts文件,所有主机均进行配置
[root@node1 ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.110.10 node1
192.168.110.15 node2
192.168.110.20 node3
192.168.110.25 node4
[root@node1 ~]# scp /etc/hosts root @192.168.110.15:/etc/hosts
The authenticity of host '192.168.110.15 (192.168.110.15)' can't be established.
ECDSA key fingerprint is SHA256:5MLxTEchmQObJRM4vR38q/FKydtpSmApeG1WEA2ElUE.
ECDSA key fingerprint is MD5:c7:17:1c:2d:9f:72:94:a1:91:9f:8f:13:06:05:1b:9e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.110.115' (ECDSA) to the list of known hosts.
root@192.168.110.15's password: 

在4台node节点中分别添加4块硬盘,每块硬盘大小为20GB

编写脚本进行格式化磁盘
[root@node1 ~]# cd /opt/
[root@node1 opt]# vim disk.sh
#! /bin/bash
echo "the disks exist list:"
##grep出系统所带磁盘
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)
 ##本地磁盘就退出case语句
        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
[root@node1 opt]# chmod +x disk.sh 
[root@node1 opt]# scp disk.sh root@192.168.179.124:/opt
root@192.168.110.15's password: 
disk.sh                                              100% 1020   547.6KB/s   00:00     
[root@node1 opt]# ./disk.sh  #执行脚本格式化新安装的4块硬盘
将原本的源打包到其它文件夹,使用阿里云源安装相关软件包
[root@node1 gfsrepo]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@node1 yum.repos.d]# mkdir bak
[root@node1 yum.repos.d]# mv CentOS-* bak/
[root@node1 yum.repos.d]# ls
bak
[root@node1 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@node1 yum.repos.d]# yum clean all
[root@node1 yum.repos.d]# yum list
[root@node1 yum.repos.d]# yum install centos-release-gluster -y 
[root@node1 yum.repos.d]# yum install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma -y
[root@node1 yum.repos.d]# systemctl start glusterd.service  #开启glusterd服务
[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com   #时间同步
添加入存储信任池只要在一台主机上添加其它节点即可
[root@node1 yum.repos.d]# gluster peer probe node2
peer probe: success. 
[root@node1 yum.repos.d]# gluster peer probe node3
peer probe: success. 
[root@node1 yum.repos.d]# gluster peer probe node4
peer probe: success. 
[root@node1 yum.repos.d]# gluster peer status  #查看所有节点
Number of Peers: 3

Hostname: node2
Uuid: 1491a7f5-9182-4197-8308-32f827ca143a
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: ad89887d-2902-4d8d-a902-ff8cb073e3c3
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: 1905c643-baaa-42a3-a8cf-2878e8d24dd3
State: Peer in Cluster (Connected)

GFS各类型卷部署

分布式卷创建

[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
[root@node1 yum.repos.d]# gluster volume start dis-vol 
volume start: dis-vol: success
复制卷创建

[root@node1 /]# 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 /]# gluster volume start rep-vol 
volume start: rep-vol: success
分布式复制卷创建

[root@node1 /]# 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 /]# gluster volume start dis-rep 
volume start: dis-rep: success

client客户端部署

配置阿里云源,hosts文件

[root@client ~]# cd /etc/yum.repos.d/
[root@client yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@client yum.repos.d]# mkdir bak
[root@client yum.repos.d]# mv CentOS-* bak/
[root@client yum.repos.d]# ls
bak
[root@client yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@client yum.repos.d]# yum clean all
[root@client yum.repos.d]# yum list
[root@client yum.repos.d]# yum install centos-release-gluster -y 
[root@client yum.repos.d]# yum -y install glusterfs glusterfs-fuse
[root@client yum.repos.d]# vim /etc/hosts
192.168.110.10 node1
192.168.110.15 node2
192.168.110.20 node3
192.168.110.25 node4
创建挂载点目录,挂载Gluster文件系统

[root@client yum.repos.d]# mkdir -p /text/{dis-vol,rep-vol,dis-rep}
[root@client yum.repos.d]# mount.glusterfs node1:dis-vol /text/dis-vol/
[root@client yum.repos.d]# mount.glusterfs node1:rep-vol /text/rep-vol/
[root@client yum.repos.d]# mount.glusterfs node1:dis-rep /text/dis-rep/
创建测试文件

[root@client yum.repos.d]# dd if=/dev/zero of=/demo1.log bs=1M count=40
[root@client yum.repos.d]# dd if=/dev/zero of=/demo2.log bs=1M count=40
[root@client yum.repos.d]# dd if=/dev/zero of=/demo3.log bs=1M count=40
[root@client yum.repos.d]# dd if=/dev/zero of=/demo4.log bs=1M count=40
[root@client yum.repos.d]# dd if=/dev/zero of=/demo5.log bs=1M count=40
[root@client /]# ll | grep demo
-rw-r--r--.   1 root root 41943040 9月  14 11:15 demo1.log
-rw-r--r--.   1 root root 41943040 9月  14 11:15 demo2.log
......
将测试文件复制到三个卷中

[root@client /]# cp /demo* /text/dis-vol/
[root@client /]# cp /demo* /text/rep-vol/
[root@client /]# cp /demo* /text/dis-rep/
客户端查看3个卷中文件
[root@client text]# ls
dis-rep  dis-vol  rep-vol
[root@client text]# ll dis-rep/
总用量 204800
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo1.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo2.log
......
[root@client text]# ll dis-vol/
总用量 204800
-rw-r--r--. 1 root root 41943040 9月  14 11:17 demo1.log
-rw-r--r--. 1 root root 41943040 9月  14 11:17 demo2.log
......
[root@client text]# ll rep-vol/
总用量 204800
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo1.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo2.log
......

验证存储形式

分布式验证

[root@node1 ~]# cd /data/sdb1/      
[root@node1 sdb1]# ls                #节点1
demo1.log  demo2.log  demo3.log  demo4.log
[root@node2 yum.repos.d]# cd /data/sdb1/
[root@node2 sdb1]# ls                #节点2
demo5.log  
复制卷验证

[root@node3 yum.repos.d]# cd /data/sdb1/
[root@node3 sdb1]# ls             #节点3
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log
[root@node4 yum.repos.d]# cd /data/sdb1/
[root@node4 sdb1]# ls             #节点4
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log
分布式复制卷验证

[root@node1 sdb1]# cd /data/sde1/
[root@node1 sde1]# ls             #节点1
demo1.log  demo2.log  demo3.log  demo4.log
[root@node2 sdb1]# cd /data/sde1/
[root@node2 sde1]# ls             #节点2
demo1.log  demo2.log  demo3.log  demo4.log
[root@node3 sdb1]# cd /data/sde1/
[root@node3 sde1]# ls             #节点3
demo5.log
[root@node4 sdb1]# cd /data/sde1/
[root@node4 sde1]# ls             #节点4
demo5.log

故障测试

关闭node2服务器观察分布卷及分布式复制卷结果

[root@client text]# ll dis-rep/   #分布式复制卷正常访问
总用量 204800
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo1.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo2.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo3.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo4.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo5.log

[root@client text]# ll dis-vol/     #分布卷缺少demo5.log文件
总用量 163840
-rw-r--r--. 1 root root 41943040 9月  14 11:17 demo1.log
-rw-r--r--. 1 root root 41943040 9月  14 11:17 demo2.log
-rw-r--r--. 1 root root 41943040 9月  14 11:17 demo3.log
-rw-r--r--. 1 root root 41943040 9月  14 11:17 demo4.log
关闭node3查看复制卷

[root@client text]# ll rep-vol/     #复制卷正常访问
总用量 204800
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo1.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo2.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo3.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo4.log
-rw-r--r--. 1 root root 41943040 9月  14 11:18 demo5.log

访问控制

拒绝访问

例:
[root@node1 ~]#  gluster volume set dis-rep auth.reject 192.168.110.30 #拒绝144节点访问分布式复制卷
volume set: success
[root@client text]# ll dis-rep/    #客户端无法访问分布式复制卷
总用量 0
仅允许访问

例:
[root@node1 ~]# gluster volume set dis-rep auth.allow 192.168.110.30
volume set: success
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值