GFS分布式文件系统

GFS分布式文件系统

gfs glusterFS 开源的分布式的文件系统

存储服务器 客户端 以及网络(NFS/samba)网关

传统式(老的)分布式元服务系统,元服务器保存存储节点的目录树信息

一旦元服务器故障,所有的存储节点全部失效。

现在gfs取消了元服务器机制 ,数据横向扩展能力更强。可靠性更强。存储效率更高。

工作性质: raid作区分。磁盘几余整列,本机的磁盘几余

GFS:是把多个不同服务器上的不同硬盘组合起来,形成一个卷(基于网络的虚拟磁盘),实现文件系统冗余(核心)

GFS特点:

1、扩展性更强,高性能

2、高可用,可以自动对文件进行复制。确保数据总是可以访问。硬件故障也可以正常访问。

3、全局统一的命名空间,所有的节点都在一个分支的管理之下。客户端访问节点即可。

4、弹性卷,类似于LVM,不同硬盘上的的不同分区,组成一个逻辑上的硬盘。

不同的服务器上的不同硬盘分区,组成一个卷。可以动态扩容。

5、基于标准协议,GFS存储服务支持:NFS,FTP HTTP 以及GFS协议。应用程序可以直接使用数据,不而要任何修改。

GFS组件和术语

|----------------------|---------------------------------------------------------------|
| BRICK(存储块) | 存储服务器提供的用于物理存储的专用分区,GFS的基本储存单元,也是对外提供的一个存储目录。 是由服务器和目录的绝对路径组成 |
| volume逻辑卷 | 一个逻辑卷就是一组brick的集合。类似于LVM,我们管理GFS就是管理这些卷。 |
| FUSE:GFS 的内核模块 | 允许用户创建自己的文件系统。 |
| VFS接口 | 内核空间对用户提供的访问磁盘的接口。虚拟端口。 |
| 服务端glusterd(在后台管理进程) | 服务端在每个节点上都要运行。glusterd(在后台管理进程) |

工作流程:


客户端--写入-->VFS---->FUSE--/dev/fuse-->GFS的客户端---->GFS的服务端---->VFS(2)---->xfs、ext

复制代码
/dev/fuse 
FUSE判断数据是在GFS的挂载目录写入的,通过/dev/fuse转给GFS客户端来处理

GFS的客户端
根据用户配置,把数据条带化/镜像化处理再通过网络转发GFS服务端

GFS的服务端
接收到数据之后,通过VFS写入到文件系统之中

VFS(2)
和不同服务器上的不同节点通信,实现数据传输

xfs、ext
不同服务器上的不同硬盘分区

分布式卷的特点: 文件数据通过HASH算法分布到设置的所有BRICK SERVER上,GFS的默认卷。属于raid0,没有容错机制。

GFS的卷类型:

分布式卷---raid0
条带卷(没了)
复制卷(镜像化)---raid1
分布式复制卷(工作中用)---raid10

分布式卷的特点

文件数据通过HASH的算法分布式布到设置的所有BRICK SERVER上。GFS的默认卷。属于

在分布式卷模式下,没有对文件进行分块,直接存储在某个server的节点上。存取效率也没有提高。直接使用本地文件系统进行存储

分布式卷的特点: 文件数据通过HASH算法分布到设置的所有BRICK SERVER上,GFS的默认卷。属于raid0,没有容错机制。

复制卷

类似于raid 1,文件会同步在多个brick server上。读性能上升,写性能稍差。

坏一个节点不影响数据,但要保存副本,磁盘利用率50%

分布式复制卷

两两复制,文件会在组内同步。不同的组之间数据未必同步

实验

声明

node1 node1:192.168.10.10
node2 node2:192.168.10.50
node3 node3:192.168.10.100
node4 node4:192.168.10.101
客户端: 任选 192.168.10.80

/dev/sdb1 /data/sbd1

/dev/sdc1 /data/sdc1

/dev/sdd1 /data/sdd1

每台node服务器

############################################################

复制代码
systemctl stop firewalld
setenforce 0
脚本分区
*********************************************

#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
do
   echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
   mkfs.xfs /dev/${VAR}"1" &> /dev/null
   mkdir -p /data/${VAR}"1" &> /dev/null
   echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null

*********************************************

出现加载分区
alias scan='echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan'
修改主机名 node(1-4)
复制代码
hostnamectl set-hostname node1、2、3、4
做映射(在所有的主机)
复制代码
vim /etc/hosts
******************************

192.168.10.50 node1
192.168.10.100 node2
192.168.10.101 node3
192.168.10.102 node4

******************************

yum -y install centos-release-gluster
yum -y install glusterfs glusterfs-server glusterfs-fuse

出现操作以下命令

在cd /etc/yum.repos.d/下创建backup

将所有的文件迁移到backup下,除CentOS-Gluster-9.repo外

复制代码
yum clean all & yum makecache

############################################################

在客户端安装组件
复制代码
systemctl stop firewalld
setenforce 0

yum -y install glusterfs glusterfs-fuse

在hosts做映射
挂载 mount.glusterfs nodel:fenbushi /test/fenbushi
创建分布卷(服务端node1)
复制代码
gluster volume create 节点名 node1:/data/sdb1 node2:/data/sdb1 force
    gluster volume create 创建新卷,默认就是分布式卷
    fenbushi 卷名,唯一不可重复
    node1:/data/sdb1 node2:/data/sdb1 挂载节点
    force 强制挂载
创建复制卷(服务端node1)
复制代码
创建复制卷
gluster volume create fuzhijuan replica 2 node2:/data/sdcl node3:/data/sdcl

replica 2    设置复制策略,2是两两复制,要小于等于存储节点,不能比存储节点多,否则,创建失败。
创建分布复制卷(服务端node1)
复制代码
gluster volume create fenbufuzhishi replica 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force

replica 2 指定2个,给四个是分布式复制

添加节点    gluster peer probe node(1-4)

查看状态    gluster peer status

打开分布式  gluster volume start fenbushi 

停止分布式  gluster volume stop fenbushi

删除分布式  gluster volume stop fenbushi

停节点      gluster peer detach nodel 

指定主机访问控制

复制代码
GFS分布式存储系统
1、分布式卷
2、分布式复制卷 (重点)
工作性质: raid作区分。磁盘几余整列,本机的磁盘几余
GFS:是把多个不同服务器上的不同硬盘组合起来,形成一个卷(基于网络的虚拟磁盘),实现文件系统冗余

拒绝:gluster volume set fenbushi auth.reject 192.168.10.10
允许:gluster volume set fenbushi auth.allow  192.168.10.10
     gluster volume set fenbushi auth.allow 192.168.10.10
#允许所有网段可以访问这个卷
相关推荐
跟着珅聪学java41 分钟前
spring boot +Elment UI 上传文件教程
java·spring boot·后端·ui·elementui·vue
我命由我123451 小时前
Spring Boot 自定义日志打印(日志级别、logback-spring.xml 文件、自定义日志打印解读)
java·开发语言·jvm·spring boot·spring·java-ee·logback
lilye661 小时前
程序化广告行业(55/89):DMP与DSP对接及数据统计原理剖析
java·服务器·前端
想跑步的小弱鸡4 小时前
Leetcode hot 100(day 3)
算法·leetcode·职场和发展
·薯条大王4 小时前
MySQL联合查询
数据库·mysql
战族狼魂4 小时前
CSGO 皮肤交易平台后端 (Spring Boot) 代码结构与示例
java·spring boot·后端
xyliiiiiL5 小时前
ZGC初步了解
java·jvm·算法
杉之6 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
爱的叹息6 小时前
RedisTemplate 的 6 个可配置序列化器属性对比
算法·哈希算法
morris1316 小时前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁