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
#允许所有网段可以访问这个卷
相关推荐
小灰灰要减肥18 分钟前
装饰者模式
java
张铁铁是个小胖子30 分钟前
MyBatis学习
java·学习·mybatis
刚学HTML1 小时前
leetcode 05 回文字符串
算法·leetcode
Yan.love1 小时前
开发场景中Java 集合的最佳选择
java·数据结构·链表
椰椰椰耶1 小时前
【文档搜索引擎】搜索模块的完整实现
java·搜索引擎
大G哥1 小时前
java提高正则处理效率
java·开发语言
AC使者1 小时前
#B1630. 数字走向4
算法
指尖上跳动的旋律1 小时前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
冠位观测者1 小时前
【Leetcode 每日一题】2545. 根据第 K 场考试的分数排序
数据结构·算法·leetcode
一勺菠萝丶2 小时前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker