GFS —— 分布式文件系统
文章目录
- 一.概述
- 1.1 文件系统组成
- 1.2 文件系统FS作用
- 1.3 文件系统FS 的挂载使用
- 1.4 分布式文件系统(GFS)组成
- 1.5 分布式文件系统(GFS)特点
- 1. 6 分布式文件系统(GFS)专业术语
- 1.7. 元数据服务器的作用
- 二 模块化堆栈架构
- 2.1 模块部分:
- 三.GFS工作原理
- 3.1 GFS工作流程
- 四.GFS卷类型
- 4.1 分布式卷
- 4.2 条带卷
- 4.3 复制卷
- 4.4 分布式条带卷
- 4.5 分布式复制卷
- 4.6 条带复制卷
- 4.6分布式条带卷
- 五.相关维护命令
- 六.GFS部署
- 6.1 节点进行磁盘分区、挂载
- 6.2 修改主机名,配置/etc/hosts文件
- 6.3其他的维护命令
一.概述
- GlusterFS:开源分布式文件系统,无元数据服务器
- FS:文件系统
1.1 文件系统组成
- 文件系统的接口(API)
- 功能模块(管理、存储的工具):对对象管理的软件集合
- 对象及属性(使用此文件系统的消费者)
1.2 文件系统FS作用
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统;主要负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取
1.3 文件系统FS 的挂载使用
除了根文件系统外,需要先挂载到挂载点后,才可被访问
挂载点即分区设备文件关联的某个目录文件
1.4 分布式文件系统(GFS)组成
存储服务器
客户端
NFS/samba存储网关组成
1.5 分布式文件系统(GFS)特点
- 扩展性和高性能
- 高可用(冗余)
- 全局统一命名空间
- 弹性卷管理(复制卷,条带卷
- 基于标准协议(http https)
1. 6 分布式文件系统(GFS)专业术语
- brick块:实际存储用户数据的服务器
- volume:本地文件系统的分区
- fuse:用户空间的文件系统(伪文件系统),客户端与服务端连接的工具,本地的数据以网络的方式传递,客户端服务端口连接工具客户端请求交给fuse
- VFS:虚拟接口,用户提交请求给VFS,VFS把文件给fuse,再交给GFS客户端,最后客户端交给远端存储
- Glusterd:服务端
1.7. 元数据服务器的作用
- 存储元数据,帮用户定位文件的位置、索引等信息
有元数据服务器文件系统中,如果元数据损坏,会直接导致文件系统不可用( 单点故障-服务器定位)
详见下图:若A宕机,就无法获取数据。
- 而GFS把元数据服务器舍弃了,使用的是数据挂载形式挂载到客户端,挂载的网关是NFS/Samba,实现ABC三台GFS服务器数据共享,即使服务器A宕机,也可以从服务器B/C拿取数据
二 模块化堆栈架构
- 多种功能模块组合在一起,组成堆栈架构
- 模块化、堆栈式架构
- 通过对模块的组合,实现复杂的功能
2.1 模块部分:
- gige:千兆口
- TCP/ip:网络协议
- infiniband:网络协议,tcp,ip具有转发丢失数据包的特征,丢包的几率小
RDMA:负责数据传输,数据传输协议
解决传输中客户端与服务器端数据处理的延迟
posix:可移植系统接口,解决不同操作系统见的移植性
三.GFS工作原理
用户:安装客户端,安装fuse,挂载到服务端,把文件存储进去
- 首先系统调用给vfs(虚拟接口),再将数据给fuse(伪文件系统)连接客户端和服务端
- 再数据保存在虚拟的文件中
- 通过客户端传递数据给服务端
- 服务端使用VFS接口,保存在实际文件系统中
3.1 GFS工作流程
写的过程
GFS客户端服务器
- 需求:将数据保存在GFS文件系统中(客户端在本地发出写请求)
交由VFS的API接受请求–>组合功能模块,将数据交给FUSE(内核伪文件系统)
FUSE可以模拟操作系统,可以对文件系统进行转存,转存的设备位置为: /dev/fuse (用于传输的设备-虚拟设备文件)
/dev/fuse 虚拟设备文件会将数据交给GFS客户端
GFS客户端client会根据配置文件对数据进行处理,然后再通过TCP/IB/rdma网络发送到GFS服务端 - GFS服务端服务器
接收到数据之后
会将数据保存在对应的存储节点上
详见下图
四.GFS卷类型
4.1 分布式卷
- 没有对文件进行分块处理
- 通过扩展文件属性保存HASH值
- 支持的底层文件系统有EXT3、EXT4、ZFS、XFS
特点:
- 文件分开存,没有拆分大小,效率不提升
- 文件分布在不同服务器,不具备冗余
- 单点故障会造成数据丢失
- 依赖底层的数据保护
创建命令
- 创建一个名为dis-volume的分布式卷,文件将根据HASH分布在server1:/dir1、server2:/dir2和server3:/dir3中
gluster volume create dis-volume server1:/dir1 server2:/dir2
4.2 条带卷
大小拆分,轮询存储在每个节点不具备冗余,
特点:
- 数据被分割成更小块分布到块服务器群中的不同条带区
- 分布减少了负载且更小的文件加速了存取的速度
- 没有数据冗余
创建命令
- 创建了一个名为Stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
4.3 复制卷
冗余备份,多个节点存储空间不一致,按木桶效应最小节点存取
至少两个服务器和更多服务器
特点:
- 卷中所有的服务器均保存一个完整的副本
- 卷的副本数量可由客户创建的时候决定
- 至少由两个块服务器或更多服务器
- 具备冗余性
创建命令
- 创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
4.4 分布式条带卷
分布式,条带卷功能
大文件访问处理,至少4台服务器
创建命令
创建了一个名为dis-rep的分布式条带卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制数的倍数(>=2倍)
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
4.5 分布式复制卷
分布式,复制卷功能兼具分布式卷和复制卷的特点
创建命令
创建了一个名为dis-rep的分布式条带卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制数的倍数(>=2倍)
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
4.6 条带复制卷
类似RAID 10,同时具有条带卷和复制卷的特点
4.6分布式条带卷
三种基本卷的复合卷通常用于类Map Reduce应用
五.相关维护命令
命令 | 含义 |
---|---|
gluster volume list | 查看GlusterFS卷 |
gluster volume info | 查看所有卷的信息 |
gluster volume status | 查看所有卷的状态 |
gluster volume stop dis-stripe | 停止一个卷 |
gluster volume delete dis-stripe | 删除一个卷 |
注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则删除不成功 | |
gluster volume set dis-rep auth.allow + IP | 设置卷的访问控制仅拒绝 |
-------- | ----- |
gluster volume set dis-rep auth.allow + IP | 仅允许 |
六.GFS部署
节点名 | IP地址 |
---|---|
Node 1 | 192.168.10.129 |
Node2 | 192.168.10.134 |
Node3 | 192.168.10.130 |
Node4 | 192.168.10.142 |
客户机 | 192.168.10.1 |
关闭防火墙:
systemctl stop firewalld
setenforce 0
6.1 节点进行磁盘分区、挂载
Node1节点:192.168.10.129
Node2节点:192.168.10.134
Node3节点:192.168.10.130
Node4节点:192.168.10.142
vim fdisk.sh
#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
doecho -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/nullmkfs.xfs /dev/${VAR}"1" &> /dev/nullmkdir -p /data/${VAR}"1" &> /dev/nullecho "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/nullchmod +x fdisk.sh
./fdisk.sh
获着
#!/bin/bash
echo "the disks exist list:"
##grep出系统所带磁盘
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` quit
docase $VAR insda)##本地磁盘就退出case语句fdisk -l /dev/sda break ;;sd[b-z])#create partitionsecho "n ##创建磁盘pw" | fdisk /dev/$VAR#make filesystem
##格式化mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null #mount the systemmkdir -p /data/${VAR}"1" &> /dev/null
###永久挂载echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
###使得挂载生效mount -a &> /dev/nullbreak ;;quit)break;;*)echo "wrong disk,please check again";;esac
done
6.2 修改主机名,配置/etc/hosts文件
#以Node1节点为例:
hostnamectl set-hostname node1
suecho "192.168.10.129 node1" >> /etc/hosts
echo "192.168.10.134 node2" >> /etc/hosts
echo "192.168.10.130 node3" >> /etc/hosts
echo "192.168.10.142 node4" >> /etc/hosts
echo "192.168.10.1 client" >> /etc/hosts
----- 安装、启动GlusterFS(所有node节点上操作) -----
#将gfsrepo 软件上传到/opt目录下
#上传gfsrepo.zip 至/opt解压缩
unzip gfsrepo.zip
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
打开配置文件
vim /etc/yum.repos.d/glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
安装
#yum -y install centos-release-gluster #如采用官方 YUM 源安装,可以直接指向互联网仓库
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
解决方法,卸载高版本,重新安装
rpm -e --nodeps glusterfs-api
rpm -e --nodeps glusterfs-libs
rpm -e --nodeps glusterfs-fuse
rpm -e --nodeps glusterfs-cli
yum -y install glusterfs-client-xlators.x86_64
yum -y install glusterfs-api.x86_64
yum install -y glusterfs-cli
如果还有其他软件包版本过高,直接卸载,重新安装即可
启动
systemctl start glusterd.service 开启服务
systemctl enable glusterd.service 开机自启动服务
systemctl status glusterd.service 查看状态
进行时间同步
ntpdate ntp1.aliyun.com
----- 添加节点到存储信任池中(在 node1 节点上操作) -----
#只要在一台Node节点上添加其它节点即可
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
在每个Node节点上查看群集状态
gluster peer status
1.创建分布式卷
#创建分布式卷,没有指定类型,默认创建的是分布式卷
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
#查看卷列表
gluster volume list
#启动新建分布式卷
gluster volume start dis-volume
#查看创建分布式卷信息
gluster volume info dis-volume
2.创建条带卷
#指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷
gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
gluster volume start stripe-volume
gluster volume info stripe-volume
3.创建复制卷
#指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷
gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
gluster volume start rep-volume
gluster volume info rep-volume
4.创建分布式条带卷
#指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷
gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
gluster volume start dis-stripe
gluster volume info dis-stripe
5.创建分布式复制卷
指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷
gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
gluster volume start dis-rep
gluster volume info dis-rep
gluster volume list
---- 部署 Gluster 客户端 -----
1.安装客户端软件
#将gfsrepo 软件上传到/opt目下
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-fuse
2.创建挂载目录
mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
ls /test
3.配置 /etc/hosts 文件
echo “192.168.10.129 node1” >> /etc/hosts
echo “192.168.10.134 node2” >> /etc/hosts
echo “192.168.10.130 node3” >> /etc/hosts
echo “192.168.10.142 node4” >> /etc/hosts
echo “192.168.10.1 client” >> /etc/hosts
4.挂载 Gluster 文件系统
#临时挂载
mount.glusterfs node1:dis-volume /test/dis
mount.glusterfs node1:stripe-volume /test/stripe
mount.glusterfs node1:rep-volume /test/rep
mount.glusterfs node1:dis-stripe /test/dis_stripe
mount.glusterfs node1:dis-rep /test/dis_repdf -Th
----- 测试 Gluster 文件系统 -----
1.卷中写入文件,客户端操作
cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=20
dd if=/dev/zero of=/opt/demo2.log bs=1M count=20
dd if=/dev/zero of=/opt/demo3.log bs=1M count=20
dd if=/dev/zero of=/opt/demo4.log bs=1M count=20
dd if=/dev/zero of=/opt/demo5.log bs=1M count=20
cp demo* /test/dis
cp demo* /test/stripe/
cp demo* /test/rep/
cp demo* /test/dis_stripe/
cp demo* /test/dis_rep/
2.查看文件分布
#查看分布式文件分布
[root@node1 ~]# ls -lh /data/sdb1 #数据没有被分片
[root@node2 ~]# ll -h /data/sdb1
#查看条带卷文件分布
[root@node1 ~]# ls -lh /data/sdc1 #数据被分片50% 没副本 没冗余
root@node2 ~]# ll -h /data/sdc1 #数据被分片50% 没副本 没冗余
#查看复制卷分布
[root@node3 ~]# ll -h /data/sdb1 #数据没有被分片 有副本 有冗余
[root@node3 ~]# ll -h /data/sdd1
root@node4 ~]# ll -h /data/sdd1
root@node4 ~]# ll -h /data/sdd1
#查看分布式复制卷分布
#数据没有被分片 有副本 有冗余
[root@node1 ~]# ll -h /data/sde1
[root@node2 ~]# ll -h /data/sde1
[root@node3 ~]# ll -h /data/sde1
[root@node4 ~]# ll -h /data/sde1
---- 破坏性测试 -----
#挂起 node2 节点或者关闭glusterd服务来模拟故障
[root@node2 ~]# systemctl stop glusterd.service
#在客户端上查看文件是否正常
#分布式卷数据查看
[root@localhost dis]# ll #在客户上发现少了demo5.log文件,这个是在node2上的
#条带卷
[root@localhost text]# cd stripe/ #无法访问,条带卷不具备冗余性
[root@localhost stripe]# ll
#分布式条带卷
[root@localhost dis_and_stripe]# ll #无法访问,分布条带卷不具备冗余性
#分布式复制卷
[root@localhost dis_and_rep]# ll #可以访问,分布式复制卷具备冗余性
若node2修复,加入集群,数据正常
#挂起 node2 和 node4 节点,在客户端上查看文件是否正常
#测试复制卷是否正常
[root@localhost rep]# ls -l #在客户机上测试正常 数据有
测试分布式条卷是否正常
[root@localhost dis_stripe]# ll #在客户机上测试正常 没有数据
#测试分布式复制卷是否正常
[root@localhost dis_and_rep]# ll #在客户机上测试正常 有数据
6.3其他的维护命令
1.查看GlusterFS卷
gluster volume list
2.查看所有卷的信息
gluster volume info
3.查看所有卷的状态
gluster volume status
4.停止一个卷
gluster volume stop dis-stripe
5.删除一个卷,注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则删除不成功
gluster volume delete dis-stripe
6.设置卷的访问控制
#仅拒绝
gluster volume set dis-rep auth.deny 192.168.10.100
#仅允许
gluster volume set dis-rep auth.allow 192.168.10.*
#设置192.168.10.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)
GFS —— 分布式文件系统相关推荐
- GFS分布式文件系统简介及部署——让存储变得更高级
GFS分布式文件系统简介及部署 一.GFS概述 1.文件系统 ①.文件系统组成 ②.文件系统的作用 ③.专业术语 二.GFS特点 三.GFS工作原理 四.GFS卷 1.GFS卷类型 2.三大基本卷的特 ...
- 浅识一下GFS分布式文件系统
GFS分布式文件系统 什么是GFS分布式文件系统 GFS(GlusterFS) 是一个开源的分布式文件系统. 由存储服务器.客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成. 没有 ...
- GFS分布式文件系统
GFS分布式文件系统 前言 GFS是一个可扩展的分布式文件系统,用于大型的.分布式的.对大量数据进行访问的应用.它运行于廉价的普通硬件上,并提供容错功能.它可以给大量的用户提供总体性能较高的服务. G ...
- GlusterFS/GFS 分布式文件系统--理论详解
文章目录 一.文件系统简介 1.组成 2.作用 3.文件系统的挂载使用 二.GFS分布式文件系统概述 1.GFS简介 2.GFS的特点 3.GFS专业术语 4. 模块化堆栈式架构 5. GFS 工作流 ...
- 如何搭建GFS分布式文件系统
如何搭建GFS分布式文件系统 什么是文件系统 文件系统的组成部分 文件系统作用 文件系统的使用 分布式文件系统GFS GFS简介 GFS组成 GFS的特点 GFS专业术语 GFS模块化和堆栈式架构 G ...
- GFS 分布式文件系统从入门到实践
文章目录 一.GlusterFS 概述 1.1 GlusterFS简介 1.2 GlusterFS的特点 (一)扩展性和高性能 (二)高可用性 (三)弹性卷管理 (四)基于标准协议 二.Gluster ...
- 企业级别应用--GFS分布式文件系统(GlusterFS工作原理、弹性 HASH 算法 、GlusterFS卷的类型、 部署GlusterFS)
文章目录 一. GlusterFS 概述 1.1 GlusterFS 简介 与传统分布式相比的优点 1.2 GlusterFS 的特点 扩展性和高性能 高可用性 全局统一命名空间 弹性卷管理 基于标准 ...
- 大点干!早点散----------深入剖析GFS分布式文件系统
文章目录 一.GlusterFS(GFS)介绍 1.GlusterFS 2.GlusterFS特点 3.常用术语 4.GFS的结构 5.弹性HASH算法 6.GlusterFS工作原理 二.Glust ...
- 分布式应用之GFS分布式文件系统
内容预知 前言 1. GlusterFS的相关知识 1.1 GlusterFS简介 1.2 GlusterFS特点 1.3 GlusterFS 术语 1.4 模块化堆栈式架构 1.5 GlusterF ...
最新文章
- 熟人Dubbo 系列1-Dubbo什么
- 如何用Python和BERT做中文文本二元分类?| 程序员硬核评测
- 比特币现金将出新招,推动比特币现金使用
- Python numpy生成矩阵、串联矩阵
- english learning websites
- 间接银团贷款(Indirectly Syndicated Loan/PARTICIPATED)
- 微型计算机广告牌实验报告,微型计算机实验报告1资料.doc
- Linux I2C核心、总线与设备驱动(一)
- Java8 默认方法
- 幼儿学数数的c语言程序,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据...
- 立冬了 广州还是夏天
- VISA 通信command总结
- (十九)论文阅读 | 目标检测之SNIP
- ckeditor5 添加ckeditor5-line-height-plugin插件
- vue大文件下载(下载进度展示)
- 数学连乘和累加运算符号_3,7,5之间加数学运算符号使结果等于8?
- css动画实现跳动的小人
- HTML5 Flash 现状及未来预测
- 计算机可以配置不同的显示系统,为什么Win7系统显卡显示型号和电脑配置型号不一样...
- Android---BaseApplication
热门文章
- 乔布斯当场“复活”,苹果发AirPods 3和地表最强电脑芯片,秀刘海屏Macbook Pro
- .md文件转.pdf文件
- 趣味密码学入门--cryptohack
- 科学解释超级计算机,人工智能、现代科学证明:宇宙是虚拟的,真实世界是超级计算机...
- 自定义 input[type=checkbox]的样式
- 缓存之王 | Redis最佳实践开发规范FAQ
- 亮剑精神---程序人生路
- 语音信号的梅尔频率倒谱系数(MFCC)的原理讲解及python实现
- 2020年—岁月静好,温暖如初
- 开启TX2、Xavier最大性能 Opening the Max performance of TX2、Xavier