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的默认卷类型
条带卷(没了)
复制卷(镜像化)
分布式复制卷
文件数据通过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.*