搭建 GFS 分布式文件系统-----实操 排障集锦:九九八十一难之第十五难!-------------史上最全rsync报错详解 docker系列1---docker隔离和限制技术 Linux系统安全及应用加固———最适合新手学,新手都能看懂!超详细的理论+超详细的实验!呕心沥血之作完成! LAMP架构集成ownCloud搭建私有云盘 Shell脚本正则表达式(一) Linux第一人称侵入进程的好地方 Windows DOS常用命令(持续更新完善) 大数据驱动新材料研发 变革从内而发,一站式大数据平台和多模数据库雄起 雕佛像、打棒球、开飞机、去北极,这个90后程序员有点不一样 12项特色功能构建施工现场“物联网” 400亿美元!英伟达收购Arm 软银套现离场物联网梦醒 卫星物联网再次引发热议,原因在这里 信用飞:航旅行业数字化前景可期,大数据预防砍头息乱象 大数据加持自动驾驶产业发展 上海智能网联汽车公共数据中心揭牌 恒久科技(002808.SZ):子公司闽保信息与鸿达兴业签署智能制造及大数据平台综合应用项目战略合作框架协议 工业平板电脑如何在物联网中发挥作用? 400亿美元!英伟达收购Arm 软银套现离场物联网梦醒 “数字心脏”动态解析消费密码——国家级消费市场大数据联合实验 重庆:大数据智能化牵引产业结构调整质效提升 分析物联网技术在智能家居中的应用场景 国家级消费市场大数据联合实验室在上海先行先试 山西吕梁培训搬迁户成为大数据标注员 昔日贫困户,玩转高科技 知乎热议:2020年程序员是否过剩? 柯建东:宁波抢抓工业物联网新机遇,要做好四个平台建设 旷视:城市物联网的实现,是从超级应用到操作系统的沉淀过程 排障集合———忘记原密码,如何重新修改MySQL登入密码 【Redis】主从复制 网易2021批笔试题解 msf工具之木马程序制作以及伪装 【JAVA】滴滴-2021校招在线笔试-DE数据开发试卷-0913 机器学习13 -- 无监督学习之自监督 2020年全国数学建模大赛 B题部分代码和模型的建立 jumpserver安装(centos) Redis 知识点总结 通过RabitMQ实现分布式事务 高焕堂《嵌入式UML设计》读书笔记_第一章 2020年中国5G在物联网行业:中国通信运营商5G投资达1.23万亿元(可下载) 面试题精选:数据伪造 繁忙的都市(并查集、Kruskal) BFS 力扣 200.岛屿数量 深度操作系统Deepin V20正式版 2020-09-13 【OS】Bankers Algorithm 用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程 后渗透之各种维持权限的后门原理即利用 MIPS Branch Target Buffer动态分支预测(BTB) Oracle实战优化:INSERT ALL关键字的应用 Linux中MySQL数据库的使用②-----数据的基本操作
您的位置:首页 >运维 >

搭建 GFS 分布式文件系统-----实操

文章目录

一、GlusterFS 简介:1.1:GlusterFS特点1.2:GlusterFS术语1.3:模块化堆栈构建 二:GlusterFS工作原理2.1:Gluester工作流程2.1:弹性 HASH 算法: 三:GlusterFS 的卷类型:3.1:分布式卷3.11:创建分布式卷3.2:条带卷3.21:创建条带卷3.3:复制卷3.31:创建复制卷3.4:分布式条带卷3.41:创建分布式条带卷3.5:分布式复制卷3.51:创建分布式复制卷四:GlusterFS部署实操4.1:配置四台节点服务器4.2:修改hosts文件4.3:挂载Gluster文件系统跟修改fstab配置文件4.4:安装GlusterFS4.5:时间同步,每台节点都需要操作4.6:添加加入存储信息池只要一台主机上添加其他节点即可 五:创建各种卷5.1:创建分布式卷5.2:创建复制卷5.3:创建分布式复制卷5.4:破坏测试5.5:访问控制

一、GlusterFS 简介:

GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。

开源的分布式文件系统; 由存储服务器、客户端以及 NFS/Samba 存储网关组成;

mark

1.1:GlusterFS特点

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

1.2:GlusterFS术语

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

1.3:模块化堆栈构建

模块化、堆栈式的架构

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

二:GlusterFS工作原理

2.1:Gluester工作流程

mark

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

2.1:弹性 HASH 算法:

(1)通过 HASH 算法得到一个32位的整数; (2)划分为 N 个连接的子空间,每个空间对应一个 Brick; (3)弹性 HASH 算法的优点: (4)保证数据平均分布在每一个 Brick 中; (5)解决了对元数据服务器的依赖,进而解决了单点故障以及服访问瓶颈。

mark

mark

三:GlusterFS 的卷类型:

3.1:分布式卷

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

mark

特点:

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

3.11:创建分布式卷

创建一个名为dis-volume的分布式卷,文件将根据HASH分布在 server1:/dir1、server2:/dir2和server3:/dir3中
#gluster volume create dis-volume server1:/dir1 server2:ldir2server3:/dir3

3.2:条带卷

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

mark

从多个server中同时读取文件,效率提升

特点:

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

3.21:创建条带卷

创建了一个名为Stripe-volume的条带卷,文件将被分块轮 询的存储在Server1:/dir1和Server2:/dir2两个Brick中
#gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2

3.3:复制卷

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

mark

特点:

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

3.31:创建复制卷

创建名为rep-volume的复制卷,文件将同时存储两个副本,分别 在Server1:/dir1和Server2:/dir2两个Brick中
#gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

3.4:分布式条带卷

分布式条带卷:

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

mark

3.41:创建分布式条带卷

创建了名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷 中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)
#gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server:/dir3 server4:/dir4

server2:/dir2 server3:/dir3 server4:/dir4 14/25,

3.5:分布式复制卷

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

3.51:创建分布式复制卷

创建名为dis-rep的分布式条带卷,配置分布式复制卷时,卷 中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)
# gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

四:GlusterFS部署实操

五台虚拟机:一台作为客户机,另外四台作为节点,每个虚拟机新增4块磁盘(每块磁盘20G) 角色空间大小node1【20.0.0.41】20G×4node2【20.0.0.42】20G×4node3【20.0.0.43】20G×4node4【20.0.0.44】20G×4客户端【20.0.0.45】

分别给四个节点服务器添加磁盘

mark

4.1:配置四台节点服务器

[root@localhost ~]# hostnamectl set-hostname node1[root@localhost ~]# hostnamectl set-hostname node2[root@localhost ~]# hostnamectl set-hostname node3[root@localhost ~]# hostnamectl set-hostname node4'//重启查看分区情况,四台节点服务器一样操作就不一一列举了'[root@node1 ~]# fdisk -l'//关闭所有节点防火墙跟防护功能,否则下面配置查看其他节点服务器会有问题'[root@node1 ~]# systemctl stop firewalld.service [root@node1 ~]# setenforce 0

4.2:修改hosts文件

(当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。),添加主机名和 IP地址

[root@node2 ~]# vim /etc/hosts//::1 localhost localhost.localdomain localhost6 localhost6.localdomain6#下面添加20.0.0.41 node120.0.0.42 node220.0.0.43 node320.0.0.44 node4#把node1的hosts文件远程共享给另外三台节点服务器[root@node1 ~]# scp /etc/hosts root@20.0.0.42:/etc/hosts...省略信息....Are you sure you want to continue connecting (yes/no)? yes '//输入确认'Warning: Permanently added '20.0.0.42' (ECDSA) to the list of known hosts.root@20.0.0.42's password: '//输入对方密码'hosts100%222 122.8KB/s 00:00#一样操作复制到node3/4节点服务器[root@node1 ~]# scp /etc/hosts root@20.0.0.43:/etc/hosts[root@node1 ~]# scp /etc/hosts root@20.0.0.44:/etc/hosts:#一定要去服务器检查配置文件是否正确

4.3:挂载Gluster文件系统跟修改fstab配置文件

[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` quitdocase $VAR insda)fdisk -l /dev/sdabreak ;;sd[b-z])#create partitionsecho "npw"| fdisk /dev/$VAR#make filesystemmkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null#mount the systemmkdir -p /data/${VAR}"1" &> /dev/nullecho -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstabmount -a &> /dev/nullbreak ;;quit)break;;*)echo "wrong disk,please check again";;esacdone'//增加执行脚本'[root@node1 opt]# chmod +x disk.sh '//远程复制脚本到另外三台服务器'[root@node1 opt]# scp disk.sh root@20.0.0.42:/opt[root@node1 opt]# scp disk.sh root@20.0.0.43:/opt[root@node1 opt]# scp disk.sh root@20.0.0.44:/opt'//执行脚本'[root@node1 opt]# ./disk.sh the disks exist list:磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区===========================================1) sdb2) sdc3) sdd4) sde5) quitchose which disk you want to create: //挨个输出1-4创建分区'//查看挂载'[root@node1 opt]# df -Th文件系统类型容量已用可用 已用% 挂载点....省略信息/dev/sdc1 xfs20G 33M 20G1% /data/sdc1/dev/sdd1 xfs20G 33M 20G1% /data/sdd1/dev/sde1 xfs20G 33M 20G1% /data/s:de1/dev/sdb1 xfs20G 33M 20G1% /data/sdb1

4.4:安装GlusterFS

四个节点相同操作

[root@node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo#清理yum源[root@node1 ~]# yum clean all#获取yum源列表[root@node1 ~]# yum list#安装gluster[root@node1 ~]# yum -y install centos-release-gluster[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma#启动glusterfssystemctl start glusterd.service #查看状态[root@node4 opt]# systemctl status :glusterd.service 

4.5:时间同步,每台节点都需要操作

这边必须关闭防火墙
ntpdate ntp1.aliyun.com

4.6:添加加入存储信息池只要一台主机上添加其他节点即可

[root@node1 ~]# gluster peer probe node2peer probe: success. [root@node1 ~]# gluster peer probe node3peer probe: success. [root@node1 ~]# gluster peer probe node4peer probe: success. #查看所有节点[root@node1 ~]# gluster peer statusNumber of Peers: 3Hostname: node2Uuid: 61ea3244-2d19-48dc-ab1c-e30bd4e7d01dState: Peer in Cluster (Connected)Hostname: node3Uuid: 134437ba-1bce-4d4a-ab62-689f99796dbaState: Peer in Cluster (Connected)Hostname: node4Uuid: 72b81ad1-0428-4488-a146-c8a0d5b466f3State: Peer in Cluster (Connected)

五:创建各种卷

5.1:创建分布式卷

'//在node4创建利用node1和node2上的两块磁盘创建;dis-vol为磁盘名;force表示强制'[root@node4 opt]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 forcevolume create: dis-vol: success: please start the volume to access data#查看卷[root@node4 opt]# gluster volume listdis-vol#启动[root@node4 opt]# gluster volume start dis-vol volume start: dis-vol: success#查看状态[root@node4 opt]# gluster volume info dis-volVolume Name: dis-volType: DistributeVolume ID: 351d5534-d3d1-450b-93c5-beac0a39e757Status: StartedSnapshot Count: 0Number of Bricks: 2Transport-type: tcpBricks:Brick1: node1:/data/sdb1Brick2: node2:/data/sdb1Options Reconfigured:transport.address-family: inetstorage.fips-mode-rchecksum: onnfs.disable: on#如果不想用可以关闭[root@node4 opt]# gluster volume stop dis-vol #删除卷[root@node4 opt]# gluster volume delete dis-vol 

客户端配置

关闭防火墙

配置安装GFS源

[root@client ~]# systemctl stop firewalld.service [root@client ~]# setenforce 01、先下载阿里云yum源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo2、清理yum源:yum clean all3、获取yum源列表:yum list4、安装:yum -y install centos-release-gluster5、安装软件包:yum -y install glusterfs glusterfs-fuse
修改hosts文件
vim /etc/hosts::1 localhost localhost.localdomain localhost6 localhost6.localdomain6#添加四个节点20.0.0.41 node120.0.0.42 node220.0.0.43 node320.0.0.44 node4

创建临时挂载点:

[root@client opt]# mkdir -p /test/dis #递归创建挂载点[root@client opt]# mount.glusterfs node2:dis-vol /test/dis#挂载分布式node2是随意 写 只要是地地址池里面的节点都行[root@node4 opt]# df -Th文件系统类型容量已用可用 已用% 挂载点。。。省略信息node2:dis-vol fuse.glusterfs 40G475M 40G2% /test/dis40G:两个空间20G加起来就是40G
测试卷:创建5个40M的文件
dd if=/dev/zero of=/demo1.log bs=1M count=40dd if=/dev/zero of=/demo2.log bs=1M count=40dd if=/dev/zero of=/demo3.log bs=1M count=40dd if=/dev/zero of=/demo4.log bs=1M count=40dd if=/dev/zero of=/demo5.log bs=1M count=40#跟目录查看5个文件[root@client ~]# cd /[root@client /]# lsbindemo2.logdev libmnt rootsrvusrboot demo3.logetc lib64opt run sysvardemo1.logdemo4.loghomemediaprocsbintmp
创建的5个文件复制到不同的卷上
[root@client /]# cp demo* /test/dis#查看[root@client /]# ls /test/disdemo1.logdemo2.logdemo3.logdemo4.logdemo5.log//查看多大每个都40M-rw-r--r--. 1 root root 40M 9月13 22:45 demo5.log[root@client dis]# pwd/test/dis[root@client dis]# ll -h总用量 200M-rw-r--r--. 1 root root 40M 9月13 22:45 demo1.log-rw-r--r--. 1 root root 40M 9月13 22:45 demo2.log-rw-r--r--. 1 root root 40M 9月13 22:45 demo3.log-rw-r--r--. 1 root root 40M 9月13 22:45 demo4.log-rw-r--r--. 1 root root 40M 9月13 22:45 demo5.log

去node1与node2查看

可以看出每个文件按都是完整的

[root@node1 ~]# cd /data/sdb1[root@node1 sdb1]# ll -h总用量 160M-rw-r--r--. 2 root root 40M 9月13 22:45 demo1.log-rw-r--r--. 2 root root 40M 9月13 22:45 demo2.log-rw-r--r--. 2 root root 40M 9月13 22:45 demo3.log-rw-r--r--. 2 root root 40M 9月13 22:45 demo4.log#node2查看一下[root@node2 opt]# cd /data/sdb1[root@node2 sdb1]# ll -h总用量 40M-rw-r--r--. 2 root root 40M 9月13 22:45 demo5.log

5.2:创建复制卷

[root@node3 opt]# gluster volume create rep-vol replica 2 node3:/data/sdb1 noode4:/data/sdb1 force#查看卷[root@node3 opt]# gluster volume listdis-volrep-vol#启动[root@node3 opt]# gluster volume start rep-vol
客户端挂载
'//创建挂载点'[root@client dis]# mkdir /test/rep-vol//挂载[root@client dis]# mount.glusterfs node2:rep-vol /test/rep-vol/#复制到挂载点[root@client /]# cp demo* /test/rep-vol/#node3节点查看[root@node3 sdc1]# cd /data/sdb1[root@node3 sdb1]# ll -h总用量 200M-rw-r--r--. 2 root root 40M 9月13 23:23 demo1.log-rw-r--r--. 2 root root 40M 9月13 23:23 demo2.log-rw-r--r--. 2 root root 40M 9月13 23:23 demo3.log-rw-r--r--. 2 root root 40M 9月13 23:23 demo4.log-rw-r--r--. 2 root root 40M 9月13 23:23 demo5.log#node4节点查看 [root@node4 opt]# cd /data/sdb1[root@node4 sdb1]# ll -h总用量 200M-rw-r--r--. 2 root root 40M 9月13 23:23 demo1.log-rw-r--r--. 2 root root 40M 9月13 23:23 demo2.log-rw-r--r--. 2 root root 40M 9月13 23:23 demo3.log-rw-r--r--. 2 root root 40M 9月13 23:23 demo4.log-rw-r--r--. 2 root root 40M 9月13 23:23 demo5.log//node3跟node4均保留完整的副本可靠安全的是复制卷 读写速度快的是条带卷

5.3:创建分布式复制卷

[root@node4 ~]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force//开启gluster volume start dis-stripegluster volume info dis-stripe
客户端挂载
[root@client ~]# mkdir /test/dis-rep[root@client ~]# mount.glusterfs node1:dis-rep /test/dis-rep/#查看挂载[root@client ~]# df -Th文件系统类型容量已用可用 已用% 挂载点node1:dis-rep fuse.glusterfs 40G475M 40G2% /test/dis-rep#复制卷到挂载卷[root@client /]# cp demo* /test/dis-rep/#去node1节点查看[root@node1 ~]# cd /data/sde1[root@node1 sde1]# ll -h总用量 160M-rw-r--r--. 2 root root 40M 9月14 09:04 demo1.log-rw-r--r--. 2 root root 40M 9月14 09:04 demo2.log-rw-r--r--. 2 root root 40M 9月14 09:04 demo3.log-rw-r--r--. 2 root root 40M 9月14 09:04 demo4.log#node2节点查看[root@node2 ~]# cd /data/sde1[root@node2 sde1]# ll -h总用量 160M-rw-r--r--. 2 root root 40M 9月14 09:04 demo1.log-rw-r--r--. 2 root root 40M 9月14 09:04 demo2.log-rw-r--r--. 2 root root 40M 9月14 09:04 demo3.log-rw-r--r--. 2 root root 40M 9月14 09:04 demo4.log#node3查看[root@node3 ~]# cd /data/sde1[root@node3 sde1]# ll -h总用量 40M-rw-r--r--. 2 root root 40M 9月14 09:04 demo5.log#node4查看[root@node4 ~]# cd /data/sde1[root@node4 sde1]# ll -h总用量 40M-rw-r--r--.: 2 root root 40M 9月14 09:04 demo5.log

5.4:破坏测试

关闭node2服务器观察结果

[root@client /]# cd /test/[root@client test]# lsdisdis-reprep-vol[root@client test]# ls dis#查看分布卷demo1.logdemo2.logdemo3.logdemo4.log//这边缺少deme05.log[root@client test]# ls dis-rep/#查看复制卷demo1.logdemo2.logdemo3.logdemo4.logdemo5.log#这边是完整的[root@client test]# ls rep-vol/demo1.logdemo2.logdemo3.logdemo4.logdemo5.log #查看分布式复制卷也是完整的

5.5:访问控制

//仅拒绝[root@node1 yum.repos.d]# gluster volume set dis-vol auth.reject 20.0.0.42volume set: success//仅允许[root@node1 yum.repos.d] gluster volume set dis-vol auth.allow 20.0.0.42volume set: success

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。