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
相关推荐
传而习乎8 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary9 分钟前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
我们的五年17 分钟前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
爱吃青椒不爱吃西红柿‍️37 分钟前
华为ASP与CSP是什么?
服务器·前端·数据库
IT果果日记39 分钟前
ubuntu 安装 conda
linux·ubuntu·conda
Python私教41 分钟前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
羑悻的小杀马特1 小时前
环境变量简介
linux
小陈phd1 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
运维&陈同学1 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
是阿建吖!2 小时前
【Linux】进程状态
linux·运维