GFS分布式文件系统集群(实例!!!)
发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,GlusterFS概述 开源的分布式文件系统 由存储服务器、客户端以及NFS/Samba存储网关组成 无元数据服务器(数据传输组件RDMA)GlusterFS特点 扩展性、高性能、高可用性 全局统一命
千家信息网最后更新 2024年11月30日GFS分布式文件系统集群(实例!!!)
GlusterFS概述
开源的分布式文件系统 由存储服务器、客户端以及NFS/Samba存储网关组成 无元数据服务器(数据传输组件RDMA)
GlusterFS特点
扩展性、高性能、高可用性 全局统一命名空间 弹性卷管理---->云的特性:水平(实例数)、垂直(硬件性能)ECS(虚拟)、OSS和RDS(裸金属) 基于标准协议
GlusterFS术语
Brick(节点) Volume(卷) FUSE(用户端交互模块) VFS(虚拟化文件系统) Glusterd(服务)
模块化堆栈式架构
模块化、堆栈式的架构 通过对模块的组合,实现复杂的功能
GlusterFS工作原理
GlusterFS工作流程
弹性HASH算法
通过HASH算法得到一个32位的整数 划分为N个连续的子空间,每个空间对应一个Brick 弹性HASH算法的优点:保证数据平均分布在每一个Brick中解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
GlusterFS的卷类型
1.分布式卷(fastdfs和gfs搭建)
没有对文件进行分块处理通过扩展文件属性保存HASH值支持的底层文件系统有ext3、ext4、 ZFS、 XFS等
分布式卷的特点
●文件分布在不同的服务器,不具备冗余性●更容易和廉价地扩展卷的大小●单点故障会造成数据丢失●依赖底层的数据保护
2.条带卷
●根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个BrickServer节点●存储大文件时,性能尤为突出●不具备冗余性,类似Raid0
条带卷的特点
●数据被分割成更小块分布到块服务器群中的不同条带区●分布减少了负载且更小的文件加速了存取的速度●没有数据冗余
3. 复制卷
●同一文件保存一份或多分副本●复制模式因为要保存副本,所以磁盘利用率较低●多个节点上的存储空间不一致, 那么将按照木桶效应取最低节点的容量●作为该卷的总容量
复制卷的特点
●卷中所有的服务器均保存一个完整的副本●卷的副本数量可由客户创建的时候决定●至少由两个块服务器或更多服务器●具备冗余性
4.分布式条带卷
●兼顾分布式卷和条带卷的功能●主要用于大文件访问处理●至少最少需要4台服务器
5.分布式复制卷
●兼顾分布式卷和复制卷的功能●用于需要冗余的情况下
群集环境
卷类型
卷名称 | 卷类型 | 空间大小 | Brick |
---|---|---|---|
dis-volume | 分布式卷 | 40G | node1(/b1)、node2(/b1) |
stripe-volume | 条带卷 | 40G | node1(/c1)、node2(/c1) |
rep-volume | 复制卷 | 20G | node3(/b1)、node4(/b1) |
dis-stripe | 分布式条带卷 | 40G | node1(/d1)、node2(/d1)、node3(/d1)、node4(/d1) |
dis-rep | 分布式复制卷 | 20G | node1(/e1)、node2(/e1)、node3(/e1)、node4(/e1) |
实验准备
1、为四台服务器服务器每台添加4个磁盘
2、修改服务器的名称
分别修改为node1、node2、node3、node4
[root@localhost ~]#hostnamectl set-hostname node1[root@localhost ~]# su
3、将四台服务器上的磁盘格式化,并挂载
在这里我们使用脚本执行挂载
#进入opt目录[root@node1 ~]# cd /opt#磁盘格式化、挂载脚本[root@node1 opt]# vim a.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 a.sh
将脚本通过scp推送到其他三台服务器上
scp a.sh root@192.168.45.134:/optscp a.sh root@192.168.45.130:/optscp a.sh root@192.168.45.136:/opt
在四台服务器上执行脚本,并完成这个只是样本
[root@node1 opt]# ./a.shthe disks exist list:==================================================1) sdb2) sdc3) sdd4) sde5) quitchose which disk you want to create:1 //选择要格式化的盘Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Device does not contain a recognized partition tableBuilding a new DOS disklabel with disk identifier 0x37029e96.Command (m for help): Partition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039Partition 1 of type Linux and of size 20 GiB is setCommand (m for help): The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.
分别在四个服务器上查看挂载情况
4、设置hosts文件
在第一台node1上修改
#在文件末尾添加vim /etc/hosts192.168.45.133 node1192.168.45.130 node2192.168.45.134 node3192.168.45.136 node4
通过scp将hosts文件推送给其他服务器和客户端
#将/etc/hosts文件推送给其他主机[root@node1 opt]# scp /etc/hosts root@192.168.45.130:/etc/hostsroot@192.168.45.130's password: hosts 100% 242 23.6KB/s 00:00 [root@node1 opt]# scp /etc/hosts root@192.168.45.134:/etc/hostsroot@192.168.45.134's password: hosts 100% 242 146.0KB/s 00:00 [root@node1 opt]# scp /etc/hosts root@192.168.45.136:/etc/hostsroot@192.168.45.136's password: hosts 100% 242 146.0KB/s 00:00
在其他服务器上查看推送情况
关闭所有服务器和客户端的防火墙
[root@node1 ~]# systemctl stop firewalld.service [root@node1 ~]# setenforce 0
在客户端和服务器上搭建yum仓库
#进入yum文件路径[root@node1 ~]# cd /etc/yum.repos.d/#创建一个空文件夹[root@node1 yum.repos.d]# mkdir abc#将CentOS-文件全部移到到abc下[root@node1 yum.repos.d]# mv CentOS-* abc#创建私有yum源[root@node1 yum.repos.d]# vim GLFS.repo[demo]name=demobaseurl=http://123.56.134.27/demogpgcheck=0enable=1[gfsrepo]name=gfsrepobaseurl=http://123.56.134.27/gfsrepogpgcheck=0enable=1#重新加载yum源[root@node1 yum.repos.d]# yum list
安装必要软件包
[root@node1 yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
在其他三台上进行同样的操作
在四台服务器上启动glusterd,并设置为开机自启动
[root@node1 yum.repos.d]# systemctl start glusterd.service [root@node1 yum.repos.d]# systemctl enable glusterd.service
添加节点信息
[root@node1 yum.repos.d]# gluster peer probe node2peer probe: success. [root@node1 yum.repos.d]# gluster peer probe node3peer probe: success. [root@node1 yum.repos.d]# gluster peer probe node4peer probe: success.
在其他服务器上查看节点信息
[root@node1 yum.repos.d]# gluster peer status
创建分布式卷
#创建分布式卷[root@node1 yum.repos.d]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force#检查信息[root@node1 yum.repos.d]# gluster volume info dis-vol#查看分布式现有卷[root@node1 yum.repos.d]# gluster volume list#启动卷[root@node1 yum.repos.d]# gluster volume start dis-vol
在客户端上挂载
#递归创建挂载点[root@manager yum.repos.d]# mkdir -p /text/dis#将刚才创建的卷挂载到刚才创建的挂载点下[root@manager yum.repos.d]# mount.glusterfs node1:dis-vol /text/dis```![在这里插入图片描述](https://img-blog.csdnimg.cn/20191218165913488.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BhcmhvaWE=,size_16,color_FFFFFF,t_70)### 创建条带卷```sql#创建卷[root@node1 yum.repos.d]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force#查看现有卷[root@node1 yum.repos.d]# gluster volume listdis-volstripe-vol#启动条带卷[root@node1 yum.repos.d]# gluster volume start stripe-vol volume start: stripe-vol: success
在客户端挂载
#创建挂载点[root@manager yum.repos.d]# mkdir /text/strip#挂载条带卷[root@manager yum.repos.d]# mount.glusterfs node1:/stripe-vol /text/strip/
创建复制卷
#创建复制卷[root@node1 yum.repos.d]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 forcevolume create: rep-vol: success: please start the volume to access data#开启复制卷[root@node1 yum.repos.d]# gluster volume start rep-vol volume start: rep-vol: success
在客户机挂碍复制卷
[root@manager yum.repos.d]# mkdir /text/rep[root@manager yum.repos.d]# mount.glusterfs node3:rep-vol /text/rep
创建分布式条带
#创建分布式条带卷[root@node1 yum.repos.d]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 forcevolume create: dis-stripe: success: please start the volume to access data#启动分布式条带卷[root@node1 yum.repos.d]# gluster volume start dis-stripe volume start: dis-stripe: success
在客户机上挂载
[root@manager yum.repos.d]# mkdir /text/dis-strip[root@manager yum.repos.d]# mount.glusterfs node4:dis-stripe /text/dis-strip/
创建分布式复制卷
#创建分布式复制卷[root@node2 yum.repos.d]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 forcevolume create: dis-rep: success: please start the volume to access data#开启复制卷[root@node2 yum.repos.d]# gluster volume start dis-rep volume start: dis-rep: success# 查看现有卷[root@node2 yum.repos.d]# gluster volume listdis-repdis-stripedis-volrep-volstripe-vol
在客户端挂载
[root@manager yum.repos.d]# mkdir /text/dis-rep[root@manager yum.repos.d]# mount.glusterfs node3:dis-rep /text/dis-rep/
------------------------上边我们完成了卷的创建和挂载,现在我们来进行卷的测试
首先在客户机上创建5个40M的文件
[root@manager yum.repos.d]# dd if=/dev/zero of=/demo1.log bs=1M count=4040+0 records in40+0 records out41943040 bytes (42 MB) copied, 0.0175819 s, 2.4 GB/s[root@manager yum.repos.d]# dd if=/dev/zero of=/demo2.log bs=1M count=4040+0 records in40+0 records out41943040 bytes (42 MB) copied, 0.269746 s, 155 MB/s[root@manager yum.repos.d]# dd if=/dev/zero of=/demo3.log bs=1M count=4040+0 records in40+0 records out41943040 bytes (42 MB) copied, 0.34134 s, 123 MB/s[root@manager yum.repos.d]# dd if=/dev/zero of=/demo4.log bs=1M count=4040+0 records in40+0 records out41943040 bytes (42 MB) copied, 1.55335 s, 27.0 MB/s[root@manager yum.repos.d]# dd if=/dev/zero of=/demo5.log bs=1M count=4040+0 records in40+0 records out41943040 bytes (42 MB) copied, 1.47974 s, 28.3 MB/s
然后复制5个文件到不同的卷上
[root@manager yum.repos.d]# cp /demo* /text/dis[root@manager yum.repos.d]# cp /demo* /text/strip[root@manager yum.repos.d]# cp /demo* /text/rep[root@manager yum.repos.d]# cp /demo* /text/dis-strip[root@manager yum.repos.d]# cp /demo* /text/dis-rep
查看卷的内容
查看分布式卷
查看条带卷
查看复制卷
查看分布式条带卷
查看分布式复制卷
故障测试
关闭node2服务器观察结果
[root@manager yum.repos.d]# ls /text/dis dis-rep dis-strip rep strip[root@manager yum.repos.d]# ls /text/disdemo1.log demo2.log demo3.log demo4.log[root@manager yum.repos.d]# ls /text/dis-repdemo1.log demo2.log demo3.log demo4.log demo5.log[root@manager yum.repos.d]# ls /text/dis-strip/demo5.log[root@manager yum.repos.d]# ls /text/rep/demo1.log demo2.log demo3.log demo4.log demo5.log[root@manager yum.repos.d]# ls /text/strip/[root@manager yum.repos.d]#
结论:
- 分布卷缺少demo5.log文件 - 条带卷无法访问 - 复制卷正常访问 - 分布式条带卷缺少文件 - 分布式复制卷正常访问
删除卷
要删除卷需要先停止卷,在删除卷的时候,卷组必须处于开启状态
#停止卷[root@manager yum.repos.d]# gluster volume delete dis-vol#删除卷[root@manager yum.repos.d]# gluster volume delete dis-vol
访问控制
#仅拒绝[root@manager yum.repos.d]# gluster volume set dis-vol auth.reject 192.168.45.133#仅允许[root@manager yum.repos.d]# gluster volume set dis-vol auth.allow 192.168.45.133
谢谢阅读!!!
服务
分布式
服务器
文件
条带
客户
数据
节点
客户端
冗余
磁盘
空间
脚本
存储
副本
模块
特点
系统
不同
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全规定 在互联网
如何在服务器中搞24k
电子软件开发实习内容
棋牌手游服务器不一样
江苏服务器工控机驱动
肥西网络技术咨询怎么样
移动执法网络安全
厦门定制软件开发报价单
r软件读取xls数据库
数据库互载均衡
数据库 原理编程与性能
富阳十大软件开发公司
凌云诺服务器注册人满了还能进吗
谷哇网络技术
如何在享受网络安全
市网络安全和信息化工作实施方案
是以信息网络技术为
安全狗服务器 黑名单
计算机网络安全就业前景专科
鹏城实验室网络安全研究中心
朴朴软件开发怎样
邯郸电商软件开发价格
电驴服务器连不上
湘潭县网络安全办工作人员
高校网络安全管理论文提纲
c 远程连接数据库实例
网络安全法的基本原则有什么
上古世纪兽灵男捏脸数据库
第一个使用国产数据库的国企
网络安全法是立法指导思想的