GFS 分布式文件系统:
GFS glusterfs 开源的分布式的文件系统。
存储服务器 客户端 网络(NFS/samba)网关。
传统式老的分布式元服务器,元服务器保存存储节点的目录数信息。
一旦元服务器故障,所有的存储节点全部失效。
现在GFS取消了元服务器机制,数据横向扩展能力更强。可靠性更强。存储效率也更高。
GFS的特点:
1,扩展性更高,性能更强
2,高可用,可用自动对文件进行复制。多次复制。确保数据总是可用访问。哪怕硬件故障也能正常访问
3,全局统一的命名空间。所有节点都在一个分支的管理之下。客户端访问分支节点即可。
4,弹性卷,类似LVM。不同硬盘上的不同分区,组成一个逻辑上的硬盘。
不同服务器上的不同的硬盘分区,组成一个卷。可用动态的扩容。
5,基于标准协议,GFS存储访问支持,NFS FTP HTTP以及自身GFS协议。应用程序可用直接使用数据,不需要任何修改。
GFS的组件和术语:
1,BRICK(存储块),存储服务器提供的用于物理存储的专用分区,GFS当中的基本存储单元。也是对外提供的存储目录。 服务器和目录的绝对路径组成
server:dir
192.168.233.10:/opt/gfs
node1:/opt/gfs
2,volume 逻辑卷 一个逻辑卷就是一组brick的集合。类似于lvm,我们管理GFS,就是管理这些卷。
3,FUSE:GFS的内核模块,允许用户创建自己的文件系统。
4,VFS:内核空间对用户提供的访问磁盘的接口。虚拟端口。
5,服务端在每一个存储节点上都要运行。glusterd(后台管理进程)
工作流程:
GFS的卷有那些类型:
分布式卷,也是GFS的默认卷类型
条带卷(没了)
复制卷(镜像化)
分布式复制卷(工作中使用)
分布式卷的特点:文件数据通过HASH算法分布到设置的所有BRICK SERVER上。GFS的默认卷。属于raid0,没有容错机制。
在分布式卷的模式下,没有对文件进行分块,自己存储在某个server节点上。存取效率也没有提高。直接使用本地2文件系统艰辛存储
复制卷:类似于raid 1,文件会同步在多个brickserver上。读性能上升了,写性能较差
复制卷具备冗余,坏一个节点不影响数据,但是要保存副本,磁盘利用率50%
分布式复制卷:两两复制,文件会在组内同步。不同的组之间数据未必同步。
实验
环境:
systemctl stop firewalld
setenforce 0
四台服务器
node1 磁盘:/dev/sdb1 挂载点 /data/sdb1
/dev/sdc2 /data/sdb2
/dev/sdd3 /data/sdb3
node2 磁盘:/dev/sdb1 挂载点 /data/sdb1
/dev/sdc2 /data/sdb2
/dev/sdd3 /data/sdb3
node3 磁盘:/dev/sdb1 挂载点 /data/sdb1
/dev/sdc2 /data/sdb2
/dev/sdd3 /data/sdb3
node4 磁盘:/dev/sdb1 挂载点 /data/sdb1
/dev/sdc2 /data/sdb2
/dev/sdd3 /data/sdb3
客户端
自动磁盘分区的一个脚本,可以自动挂载
vim fdisk.sh
#!/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'
通过脚本创建磁盘分区并挂载。
修改主机名:
hostnamectl set-hostname node1 2 3 4
做主机映射:
vim /etc/hosts
安装官网源
yum -y install centos-release-gluster
cd /etc/yum.repos.d/
mkdir repo.bak
mv * repo.bak/
cd repo.bak/
mv CentOS-Gluster-9.repo /etc/yum.repos.d/
cd ..
yum clean all && yum makecache
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
yum -y install glusterfs glusterfs-fuse
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service
添加节点到存储信任池中
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
在每个Node节点上查看群集状态
gluster peer status
分布式卷
在node1上创建
gluster volume create fbs node1:/data/sdb1 node2:/data/sdb1 force
gluster volume create: 创建新卷 默认就是分布式
fenbushi:卷名,唯一不可重复
node1:/data/sdb1 node2:/data/sdb1 挂载点
force:强制创建
#启动新建分布式卷
gluster volume start fbs
#查看创建分布式卷信息
gluster volume info fbs
开一台客户端
安装客户端组件
yum -y install glusterfs glusterfs-fuse
存储服务节点做映射
在跟目录中创建一个test目录
和文件系统做一个挂载:
mkdir -p /test/fenbushi
mount.glusterfs node1:fbs /test/fenbushi/
写入测试:
作业,停止节点,关闭服务之后,不删除现有卷的情况下,能否继续恢复正常读写功能。如果不能如何恢复。
复制卷:
gluster volume create fzj replica 2 node2:/data/sdc1 node3:/data/sdc1 force
gluster volume start fzj
gluster volume info fzj
reolica 2
设置复制策略,2是两两复制
要注意存储节点,不能比存储节点多,否则创建失败
写入测试:
mkdir -p /test/fuzhi
mount.glusterfs node1:fzj /test/fuzhi/
分布式复制卷
gluster volume create fbsfzj replica 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
gluster volume start fbsfzj
gluster volume info fbsfzj
分布式复制卷是最常用的分布式存储方式。根据策略。存储文件时还是分布式的存储方式,分开存储,但是会艰辛复制,所有也拥有冗余的功能,但是磁盘利用率只有50%
写入测试:
mkdir -p /test/fbfuzhi
mount.glusterfs node1:fbsfzj /test/fbfuzhi/
故障恢复;分布式复制卷
如何查看所有卷的状态
gluster volume status
删除卷:
如果是运行状态要先停在删。
gluster
停止卷
gluster volume stop fbs
不停止不能删除
gluster volume delete fbs
客户端查看节点状态
节点不能删除的,直接挂起就可以了
对卷进行访问控制
安装
禁止某些主机来访问指定卷
指向网段:
通过挂载的方式执行。
总结:
GFS分布式存储系统:
1,分布式卷
2,分布式复制卷(重点)
工作性质:和raid做分区(本机的磁盘冗余)。
GFS是把多个不同服务器上的不同硬盘组合起来,形成一个卷(基于网络的虚拟磁盘),实现的是文件系统冗余