Linux--GlusterFS 分布式文件系统群集

  1. GlusterFS简介

GlusterFS 是一个开源的分布式文件系统,同时也是 Scale-Out 存储解决方案 Gluster 的核心,在存储数据方面具有强大的横向扩展能力,通过扩展不同的节点可以支持数PB级别的存储容量。 GlusterFS借助TCP/P或InfiniBand RDMA网络将分散的存储资源汇聚在一起,统一提供存储服务,并 使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间以及无元的设计,可为各种不同的数据负载提供优异的性能。

GlusterFS 主要由存储服务器(Brick Server)、客户端及NFS/ Samba存储网关(可选,根据需要 选择使用)组成。GlusterFS架构中最大的设计特点是没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。传统的分布式文件系统大多通过元服务器来存储元 数据,元数据包含存储节点上的目录信息,目录结构等,这样的设计在浏览目录时效率非常高,但是也存在一些缺陷,如单点故障,一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储系统也将崩溃,而 GlusterFS 分布式文件系统是基于无元服务器的设计,数据横向扩展能力强, 具备较高的可靠性及存储效率。GlusterFS 支持TCP/IP和 InfiniBandRDMA高速网络互联,客户端可通过原生GlusterFS协议访问数据,其他没有运行GlusterFS 客户端的终端可通过NFS/CIFS标准协议通过存储网关访问数据。

  1. GlusterFS的特点

> 扩展性和高性能。GlusterFS 利用双重特性来提供高容量存储解决方案。

> 高可用性。

> 全局统一命名空间。

> 弹性卷管理。

> 基于标准协议。

  1. GlusterFS 术语

> Brick (存储块):指可信主机池中由主机提供的用于物理存储的专用分区。是GlusterFS 中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。存储目录的格式由服务器和目录的绝对路径构成,表示方法为SERVER.EXPORT,如192,168.1.4:/date/mydir/。

> Volume(逻辑卷): 一个逻辑卷是一组Brick的集合。卷是数据存储的逻辑设备,类似于 LVM 中的逻辑卷。大部分 Gluster管理操作是在卷上进行的。

> FUSE (Filesystern inl Jserspace),是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码。

> VFS:内核空间对用户空间提供的访问磁盘的接口。

> Glusierd(后台管理进程),在存储群集中的每个节点上都要运行。

13.3 GlusterFS 的卷类型

GlusterFS 支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷和分布式条带复制卷,这七种卷可以满足不同应用对高性能,高可用的需求。

基本卷:

> 分布式巻(Distribute volume):文件通过HASH 算法分布到所有Brick Server 上,这种卷是 Glusterf的基础,以文件为单位根据HASH 算法散列到不同的Brick,其实只是扩大了磁盘空 间,如果有一块磁盘损坏,数据也将丢失,属于文件级的RAID 0,不具有容错能力。

> 条带卷(Stripe volume);类似RAIDO,文件被分成数据块并以轮询的方式分布到多个Brick Server上,文件存储以数据块为单位,支持大文件存储。文件越大,读取效率越高。

> 复制卷(Replica volume),将文件同步到多个Brick上,使其具备多个文件副本,属于文件 级RAID1,具有容错能力。因为数据分散在多个Brick中。所以读性能得到很大提升,但写 性能下降

> 分布式条带卷(Distribute Stripe volume), Brick Server 数最是条带数(数据块分布的Brick 数量)的倍数,兼具分布式卷和条带卷的特点。

> 分布式复制卷(Distribute Replica volume)Brick Server 数量是镜像数(数据副本数量)的 倍数,兼具分布式卷和复制卷的特点。

> 条带复制巻(Stripe Replica volume),类似RAID 10,同时具有条带巻和复制卷的特点。

> 分布式条带复制卷(Distribute Stripe Replicavolume):三种基本卷的复合卷,通常用于类Map Reduce应用。

分布式卷 具有如下特点:

> 文件分布在不同的服务器,不具备冗余性。

> 更容易且廉价地扩展卷的大小。

> 单点故障会造成数据丢失。

> 依赖底层的数据保护。

条带卷 具有如下特点

> 数据被分割成更小块分布到块服务器群中的不同条带区。

> 分布减少了负载且更小的文件加速了存取的速度。

> 没有数据冗余。

复制卷 具有如下特点

> 卷中所有的服务器均保存一个完整的副本。

> 卷的副本数最可由客户创建的时候决定。

> 至少有两个块服务器或更多服务器。

> 具备冗余性。

部署配置实验

实验环境

虚拟机 4台 centos7.9

网卡NAT模式 数量 1

组件包

Glusterfs Glusterfs-server Glusterfs-fuse Glusterfs-rdma

|----------|-----------------|-------|
| 设备 | IP | 备注 |
| Centos01 | 192.168.161.111 | Node1 |
| Centos02 | 192.168.161.112 | Node2 |
| Centos03 | 192.168.161.113 | Node3 |
| Centos04 | 192.168.161.114 | Node4 |

|----------|-----------------|------------|
| Centos04 | 192.168.161.115 | Node5(客户机) |

IP以上方的为主

初始化配置

搭建一台yum安装源,安装httpd服务,所有机器同步操作(除客户机外)

复制代码
[root@node6 ~]# hostnamectl set-hostname node1
[root@node6 ~]# bash

[root@node1 ~]# vim /etc/hosts(用于域名解析)     或    cat << EOF >> /etc/hosts
                                         192.168.161.111 node1
192.168.161.111 node1                    192.168.161.112 node2
192.168.161.112 node2                    192.168.161.113 node3
192.168.161.113 node3                    192.168.161.114 node4
192.168.161.114 node4                    EOF                  
                                         
                                                                               
[root@node1 ~]# yum -y install httpd

[root@node1 ~]# systemctl start httpd

上传组件包至/var/www/html/站点目录

安装createrepo工具 生成yum源信息文件repo

复制代码
[root@node1 ~]# yum -y install createrepo

[root@node1 ~]# cd /var/www/html/gfs-9/

[root@node1 gfs-9]# createrepo ./

[root@node1 gfs-9]# ls

[root@node1 ~]# systemctl restart httpd

[root@node01 ~]# vim /etc/yum.repos.d/local.repo 

[gfs-9]
name=Zabbix
baseurl=http://192.168.161.111/gfs-9
enabled=1
gpgcheck=0


[local]
name=CnetOS 7.3
baseurl=file:///mnt/
enabled=1
gpgcheck=0

[root@node01 ~]# yum repolist  //检查yum源是否正常可用

磁盘初始化及自动挂载

复制代码
[root@node1 ~]# fdisk /dev/sdb 

n   //新建分区

p   //选择创建的为主分区,后面操作默认 直接回车即可

w   //保存退出

[root@node1 ~]# fdisk /dev/sdc   //以下三个磁盘都和上面操作一样

[root@node1 ~]# fdisk /dev/sdd

[root@node1 ~]# fdisk /dev/sde   //node3 node4无需创建

[root@node1 ~]# mkfs.xfs /dev/sdb1

[root@node1 ~]# mkfs.xfs /dev/sdc1

[root@node1 ~]# mkfs.xfs /dev/sdd1

[root@node1 ~]# mkfs.xfs /dev/sde1  //node3 node4无需创建

安装GFS

复制代码
[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

启动GFS服务

复制代码
[root@node1 ~]# systemctl start glusterd

挂载和自动挂载

复制代码
[root@node1 ~]# mount /dev/sdb1 /b3
[root@node1 ~]# mount /dev/sdc1 /c4
[root@node1 ~]# mount /dev/sdd1 /d5
[root@node1 ~]# mount /dev/sde1 /e6

[root@node1 ~]# df -Th

[root@node1 ~]# vim /etc/fstab 

/dev/sdb1  /b3  xfs  defaults  0 0
/dev/sdc1  /c4  xfs  defaults  0 0
/dev/sdd1  /d5  xfs  defaults  0 0
/dev/sde1  /e6  xfs  defaults  0 0 

以上所有机器同步操作

Node1 添加其他节点 node2 node3 node4(以下操作只需在node1操作)

复制代码
[root@node1 ~]# gluster peer probe node2

[root@node1 ~]# gluster peer probe node3

[root@node1 ~]# gluster peer probe node4

查看节点信息

复制代码
[root@node1 ~]# gluster peer status 

创建卷

分布式卷(名为 dis-volume)

复制代码
[root@node1 ~]# gluster volume create dis-volume node1:/e6 node2:/e6 force 

[root@node1 ~]# gluster volume start dis-volume 

[root@node1 ~]# gluster volume info dis-volume

条带卷(暂不支持)(名为 stripe-volume)

复制代码
[root@node1 ~]# gluster volume create stripe-volume stripe 2 node1:/d5 node2:/d5 force

复制卷(名为 rep-volume)

复制代码
[root@node1 ~]# gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force

[root@node1 ~]# gluster volume start rep-volume

[root@node1 ~]# gluster volume info rep-volume 

分布式条带卷(暂不支持)(名为 dis-stripe)

复制代码
[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/b3 node2:/b3 node3:/b3 node4:/b3

分布式复制卷(名为 dis-rep)

复制代码
[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force

[root@node1 ~]# gluster volume start dis-rep 

[root@node1 ~]# gluster volume info dis-rep

[root@node1 ~]# gluster volume list   //查看所有卷

客户端 挂载 GFS磁盘

需提前创建挂载目录

安装客户端软件

复制代码
[root@node5 ~]# yum -y install glusterfs glusterfs-fuse

创建挂载目录

复制代码
[root@node5 ~]# mkdir -p /test/{dis,stripe,rep,dis_and_stripe,dis_and_rep}

[root@node5 ~]# ls /test/

修改 hosts 文件

复制代码
[root@node5 ~]# vim /etc/hosts

192.168.161.111 node1
192.168.161.112 node2        
192.168.161.113 node3 
192.168.161.114 node4 

挂载Gluster 文件系统

复制代码
[root@node5 ~]# mount -t glusterfs node1:dis-rep /test/dis_and_rep/
[root@node5 ~]# mount -t glusterfs node1:dis-volume /test/dis/
[root@node5 ~]# mount -t glusterfs node1:rep-volume /test/rep

[root@node6 ~]# df -h

修改fstab配置文件(自动挂载)

复制代码
[root@node6 ~]# vim /etc/fstab 

node1:dis-volume    /test/dis           glusterfs       defaults,_netdev  0 0
node1:dis-rep       /test/dis_and_rep   glusterfs       defaults,_netdev  0 0
node1:rep-volume    /test/rep           glusterfs       defaults,_netdev  0 0
相关推荐
xmweisi0213 分钟前
Ansible内置模块之package
linux·ansible·rhce·rhca·红帽认证·it培训
xmweisi0214 分钟前
Ansible内置模块之service
linux·ansible·rhce·rhca·红帽认证
大神的风范19 分钟前
从0开始学linux韦东山教程第一三章问题小结(1)
linux·服务器
wgc2k22 分钟前
Java游戏服务器开发流水账(3)游戏数据的缓存简介
服务器·游戏
liuze4081 小时前
使用 docker 安装 nacos3.x
运维·docker·容器
橙色小博1 小时前
Python中的re库详细用法与代码解析
linux·python·正则表达式·php·re
10000hours2 小时前
【SGL】Scatter-Gather List内存传输技术
linux·数据结构·网络协议·list·存储·sgl
某不知名網友2 小时前
linux_进程地址空间(虚拟地址空间)
java·linux·算法
白总Server2 小时前
微软系统 红帽系统 网络故障排查:ping、traceroute、netstat
linux·运维·服务器·microsoft·中间件·架构·github
家庭云计算专家2 小时前
一键设置动态域名+ipv6内网直通访问ssh服务-家庭云计算专家
运维·docker·容器·云计算·ssh·onlyoffice