gfd glusterFS开源的分布式的文件系统
存储服务器 客户端 以及网络(NFS/samba)网关
传统方式的分布式系统元服务器,元服务器保存存储节点的目录树信息
一旦元服务器故障,所有的存储节点全部消失
现在GFS取消了元服务器机制,数据横向扩展能力更强。可靠性更强,存储效率也更高
GFS的特点
1、扩展性更强,高性能
2、高可用,可以自动对文件进行复制,多次复制,确保数据总是可以访问,哪怕是硬件故障也能正常访问
3、全局同一的命名空间,所有节点都在一个分支的管理之下,客户端访问访问分支节点即可
4、弹性卷,类似LVM,不同硬盘上的不同分区,组成一个逻辑上的硬盘
不同服务器上的不同的硬盘分区,组层一个卷,可以动态的扩容
5、基于标准协议,GFS存储服务支持,NFS FTP HTTP 以及GFS协议,应用程序可以直接使用数据,不需要任何修改
GFS的组件和术语
1、BRLCK(存储块),存储服务器提供的用于物理存储的专用分区,GFS当中的基本存储单元,也是对外提供的存储目录
服务和目录的绝对路径组成
server:dir
20.0.0.20:/opt/gfs
2、volume 逻辑卷 一个逻辑卷就是一组brick的集合类似于lvm,我们管理GFS就是管理这些卷
3、FUSE:GFS的内核模块,允许用户创建自己的文件系统
4、VFS:内核空间对用户提供的访问磁盘的接口,虚拟接口
5、服务端在每个存储节点上都要运行,glusterd(后台管理进程)
GFS工作流程图
GFS的卷有哪些类型
分布式卷,也是GFS的默认卷类型
条带卷(没了)
复制卷(镜像化)
分布式复制卷
分布式卷的特点
文件数据通过HASH算法分布到设置的所有BRICK SERVER上,GFS的默认卷,属于raid0,没有容错机制
在分布式卷模式下,没有对文件进行分块,直接存储在某个server的节点上,存取效率也没有提高,直接使用本地文件系统进行存储
复制卷
类似于raid1 文件会同步在多个BRICK server上,读性能上升,写性能稍差
复制卷具备冗余,坏一个节点不影响数据,但是要保存副本,磁盘利用率50%
分布式复制卷
两两复制,文件会在组内同步,不同的组之间数据未必同步
实验
实验环境
四台服务器
服务器 | ip | 磁盘 |
---|---|---|
node1 | 20.0.0.10 | /dev/sdb1 /data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1 |
node2 | 20.0.0.20 | /dev/sdb1 /data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1 |
node3 | 20.0.0.30 | /dev/sdb1 /data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1 |
node4 | 20.0.0.31 | /dev/sdb1 /data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1 |
客户端 | 20.0.0.40 |
配置
防火墙和安全机制
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'
scan
4个node添加硬盘
lsblk 刷新磁盘
运行脚本
sh fdisk.sh
没有挂载上去
mkfs.xfs /dev/没有挂载上的盘
mount -a
修改主机名(4个)
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
hostnamectl set-hostname node4
su
做映射(4个node)
vim /etc/hosts
20.0.0.10 node1
20.0.0.20 node2
20.0.0.30 node3
20.0.0.31 node4
安装节点
官网源
yum -y install centos-release-gluster
清缓存建立元数据
yum clean all && yum makecache
安装服务
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
验证服务是否安装成功
重启服务
查看服务状态
systemctl restart glusterd
systemctl status glusterd
查看版本
glusterd -V
添加节点服务器,形成一个存储信任池
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
gluster peer status
分布卷
创建分布式卷
gluster volume create fenbushi node1:/data/sdb1 node2:/data/sdb1 force
gluster volume create 创建新卷 默认就是分布式卷
fenbushi 卷名,唯一不可重复
node1:/data/sdb1 node2:/data/sdb1 挂载点
force 强制挂载
开启卷
gluster volume start fenbushi
查看卷的信息
gluster volume info fenbushi
客户端
安装主键
yum -y install glusterfs glusterfs-fuse
映射
vim /etc/hosts
临时挂载
mkdir -p /test/fenbushi
mount.glusterfs node1:fenbushi /test/fenbushi
df -h
永久挂载
vim /etc/fatab
node1:fenbushi /test/fenbushi glusterfs defaults,_netdev 0 0
mount -a
df -h
cd /test/fenbushi
touch {1..5}.txt
查看实验结果
cd /data
复制卷
创建卷
gluster volume create fuzhijuan replica 2 node2:/data/sdc1 node3:/data/sdc1 force
replica 2 设置复制策略,2是两两复制,要小于等于存储节点,不能比存储节点多,否则,创建失败
gluster volume start fuzhijuan
查看卷的信息
gluster volume info fuzhijuan
客户端
mkdir -p /test/fuzhijuan
mount.glusterfs node1:fuzhijuan /test/fuzhijuan
touch {1..6}.txt
分布式复制卷
创建卷
gluster volume create fenbufuzhi replica 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
gluster volume start fenbufuzhi
客户端
mkdir -p /test/fenbufuzhi
mount.glusterfs node1:fenbufenzhi /test/fenbufuzhi
df -h
cd /test/fenbufuzhi
touch {1..6}.txt
分布式复制卷是最常用的分布式文件存储方式,根据策略,存储文件时还是分布式的存储方式,分开存储,但是会进行复制,所有也拥有冗余的功能,但是磁盘利用率只有50%
查看所有卷
gluster volume status
删除卷
先停再删
gluster volume stop fenbufuzhi
gluster volume delete fenbufuzhi
客户端如果是永久挂载,取消挂载
查看节点关系
gluster volume status
禁止某主机访问
gluster volume set fenbufuzhi auth.reject 20.0.0.40
客户端访问GFS卷,通过挂载的方式实现
mkdir /test
mount.glusterfs node1:fenbufuzhi /test
允许一个网段访问
gluster volume set fenbufuzhi auth.allow 20.0.0.*