千家信息网

KVM+GFS分布式文件系统高可用群集

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,GlusterFS概述GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。开源的分布
千家信息网最后更新 2025年02月04日KVM+GFS分布式文件系统高可用群集

GlusterFS概述

GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。
开源的分布式文件系统;
由存储服务器、客户端以及 NFS/Samba 存储网关组成;

GlusterFS 特点:

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

模块化堆栈架构

模块化,堆栈式的结构通过对模块的组合,实现复杂的功能

GlusterFS工作原理(流程)

弹性 HASH 算法:

通过 HASH 算法得到一个32位的整数;划分为 N 个连接的子空间,每个空间对应一个 Brick;

弹性 HASH 算法的优点:

保证数据平均分布在每一个 Brick 中;解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈。

GlusterFS 的卷类型:

(1)分布式卷:

没有对文件进行分块处理;通过扩展文件属性保存 HASH值;支持的底层文件系统有 ext3 、ext4 、ZFS 、XFS等

特点:

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

(2)条带卷:

根据偏移量将文件分为 N 块(N个条带节点),轮询的存储在每个 Brick Server 节点;存储大文件时,性能尤为突出;不具备冗余性,类似 raid0

特点:

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

(3)复制卷:

同一个文件保存一份或多分副本;复制模式因为要保存副本,所以磁盘利用率较低;多个节点上的存储空间不一致,那么将安装木桶效应取最低节点的容量作为该卷的总容量

特点:

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

(4)分布式条带卷:

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

(5)分布式复制卷:

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

原理:

实验环境

node1 192.168.13.128node2 192.168.13.129node3 192.168.13.130node4 192.168.13.131kvm    192.168.13.133

node节点服务器添加一块硬盘

kvm虚拟机上开启虚拟化功能

1,分别在node节点服务器和kvm服务器上配置本地hosts文件,安装必要的gluster软件

[root@localhost ~]# hostnamectl set-hostname node1[root@localhost ~]# su[root@localhost ~]# hostnamectl set-hostname kvm[root@node1 ~]# vim /etc/hosts   ##修改本地解析文件192.168.13.128 node1192.168.13.129 node2192.168.13.130 node3192.168.13.131 node4192.168.13.133 kvm##所有服务器上关闭防火墙[root@node1 ~]# systemctl stop firewalld.service   ##关闭防火墙[root@node1 ~]# setenforce 0##分别复制配置文件到所有服务器上[root@node1 ~]# scp /etc/hosts root@192.168.13.129:/etc/hosts  [root@node1 ~]# scp /etc/hosts root@192.168.13.130:/etc/hosts [root@node1 ~]# scp /etc/hosts root@192.168.13.131:/etc/hosts [root@node1 ~]# scp /etc/hosts root@192.168.13.133:/etc/hosts ##在所有node节点服务器上挂载,修改yum配置文件[root@node1 ~]# mkdir /gfs[root@node1 ~]# mount.cifs //192.168.100.3/LNMP-C7 /gfs/  ##挂载[root@node1 ~]# cd /etc/yum.repo.d/[root@node1 yum.repos.d]# mkdir bak    ##创建备份目录[root@node1 yum.repos.d]# mv CentOS-* bak/[root@node1 yum.repos.d]# vim abc.repo  ##所有node节点都需要配置yum源[abc]name=abcbaseurl=file:///gfs/gfsrepo   ##挂载目录下的gfsrepo路径gpgcheck=0enabled=1[root@node1 yum.repos.d]# yum clean all && yum makecache ##建立元数据缓存[root@node1 yum.repos.d]# yum install -y glusterfs glusterfs-server gluster-fuse glusterfs-rdma##安装必要的软件[root@node1 yum.repos.d]# systemctl start glusterd   ##开启gluster服务[root@node1 yum.repos.d]# systemctl enable glusterd  ##开机自启动[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com   ##同步时间

2,利用磁盘分区脚本进行分区挂载(所有node节点服务器)

[root@node1 yum.repos.d]# cd /opt/ [root@node1 opt]# vim disk.sh //挂载磁盘脚本,一键操作#! /bin/bashecho "the disks exist list:"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` quitdo        case $VAR in        sda)                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";;        esacdone[root@node1 opt]# chmod +x fdisk.sh   ##添加执行权限[root@node1 opt]# ./fdisk.sh   ##执行脚本[root@node1 opt]# df -hT  ##查看挂载信息

3,创建分布式复制卷

##添加存储信任池,只要在一台主机上添加其他三台节点即可[root@node1 opt]# gluster peer probe node2 [root@node1 opt]# gluster peer probe node3[root@node1 opt]# gluster peer probe node4[root@node1 opt]# gluster volume create models replica 2 node1:/data/sdb1 node2:/data/sdb1 node3:/data/sdb1 node4:/data/sdb1 force##创建分布式复制卷gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force//创建分布式卷gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force//创建条带卷gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force//创建复制卷gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force//创建分布式条带卷[root@node1 opt]# gluster volume start models ##启动分布式复制卷

4,在kvm服务器上挂载创建好的分布式复制卷

[root@kvm ~]# mkdir /abc[root@kvm ~]# mount.cifs //192.168.100.3/iOS /abc/[root@kvm ~]# cp /abc/CentOS-7-x86_64-DVD-1708.iso /opt/ &  ##将centos7镜像复制到/opt/进行后台运行[root@kvm ~]# cd /etc/yum.repo.d/[root@kvm yum.repos.d]# mkdir bak    ##创建备份目录[root@kvm yum.repos.d]# mv CentOS-* bak/[root@kvm yum.repos.d]# scp -r root@192.168.13.128:/gfs/gfsrepo /  ##复制gfs源到根目录下[root@kvm yum.repos.d]# vim abc.repo  ##所有node节点都需要配置yum源[abc]name=abcbaseurl=file:///gfsrepo   ##源文件的路径gpgcheck=0enabled=1[root@kvm yum.repos.d]# umount /abc/  ##centos镜像复制完成后解挂载[root@kvm yum.repos.d]# yum install -y glusterfs glusterfs-fuse  ##安装必要的软件[root@kvm yum.repos.d]# mv bak/* ./   ##释放原有的yum源[root@kvm yum.repos.d]# rm -rf bak/[root@kvm yum.repos.d]# yum list    ##yum列表更新[root@kvm yum.repos.d]# mkdir /kvmdata   ##创建挂载点[root@kvm yum.repos.d]# mount.glusterfs node1:models /kvmdata ##将分布式复制卷挂载到挂载点中[root@kvm yum.repos.d]# df -hT  ##可以看出原来一共是160G现在是80G

5,在kvm服务器上部署虚拟化平台

[root@kvm ~]# yum groupinstall "GNOME Desktop" -y   ##桌面环境yum install qemu-kvm -y   ##kvm内核yum install qemu-kvm-tools -y ##调试工具yum install virt-install -y  ##命令行工具yum install qemu-img -y   ##组件,创建磁盘,启动虚拟机yum install bridge-utils -y ##网络支持工具yum install libvirt -y ##虚拟机管理工具yum install virt-manager -y ##图形化管理虚拟机[root@kvm ~]# egrep '(vmx|svm)' /proc/cpuinfo   ##看cpu是否支持[root@kvm ~]# lsmod | grep kvm   ##检查kvm是否安装[root@kvm ~]# systemctl start libvirtd   ##开启服务[root@kvm ~]# systemctl status libvirtd[root@kvm ~]# systemctl enable libvirtd  ##开启自启[root@kvm ~]# cd /etc/sysconfig/network-scripts/[root@kvm network-scripts]# vim ifcfg-ens33 ##末行添加BRIDGE=br0[root@kvm network-scripts]# cp -p ifcfg-ens33 ifcfg-br0  ##复制配置文件为桥接[root@kvm network-scripts]# vim ifcfg-br0TYPE=Bridge    ##桥接模式BOOTPROTO=static  ##静态NAME=br0     ##名字为br0DEVICE=br0IPADDR=192.168.13.133   ##ip地址NETMASKE=255.255.255.0   ##子网掩码GATEWAY=192.168.13.1   ##网关[root@kvm network-scripts]# service network restart   ##重启网卡[root@kvm network-scripts]# cd /kvmdata/  ##切换到GFS挂载点[root@kvm kvmdata]# mkdir kgc_disk kgc_iso  ##创建文件系统目录及镜像目录[root@kvm kvmdata]# cp /opt/CentOS-7-x86_64-DVD-1708.iso kgc_iso/ &##将镜像文件复制到镜像目录中

6,用kvm的图形化界面进行操作

[root@kvm ~]# virt-manager 








7,查看node节点服务器磁盘上的信息

[root@node1 ~]# cd /data/sdb1/  ##分布在各个node节点服务器上[root@node1 sdb1]# lskgc_disk  kgc_iso

谢谢阅读!

0