1、GlusterFS简介:
GlusterFS是一个开源的分布式文件系统 相关术语如下:
- Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
- Client: 挂载了GFS卷的设备
- Extended Attributes:xattr是一个文件系统的特性,其支持用户或程序关联文件/目录和元数据。
- FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空-
间运行文件系统的代码通过FUSE代码与内核进行桥接。
- GFID:GFS卷中的每个文件或目录都有一个唯一的128位的数据相关联,其用于模拟inode
- Namespace:每个Gluster卷都导出单个ns作为POSIX的挂载点
- Node:一个拥有若干brick的设备
- RDMA:远程直接内存访问,支持不通过双方的OS进行直接内存访问。
- RRDNS:round robin DNS是一种通过DNS轮转返回不同的设备以进行负载均衡的方法
- Self-heal:用于后台运行检测复本卷中文件和目录的不一致性并解决这些不一致。
- Split-brain:脑裂
- Volfile:glusterfs进程的配置文件,通常位于/var/lib/glusterd/vols/volname
- Volume:一组bricks的逻辑集合
2、准备工作:
用三个节点搭建一个glusterfs集群,一个节点作为客户端使用
glusterfs服务器节点: 172.29.41.229 tmaster centos7 172.29.41.231 tslave1 centos7 172.29.41.232 tslave2 centos7 client节点: 172.29.41.163 phn centos7
修改每台机器的hostname(vi /etc/hostname)和hosts文件(vi /etc/hosts),添加主机名到ip的映射
最终的hosts文件应该如下图所示:
使用ping命令检验各个节点是否能够ping通
配置yum源为阿里源(在每个节点中都执行)
//下载阿里源文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
//备份并替换系统的repo文件
cp Centos-7.repo /etc/yum.repo.d/
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
//执行yum源更新命令
yum clean all
yum makecache
3、安装glusterfs
在tmaster、tslave1、tslave2节点安装glusterfs
yum install centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
启动 glusterFS (每个节点上都运行)
systemctl start glusterd.service
systemctl enable glusterd.service
关闭每台机器上的防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
在 tmaster节点上配置,将两个slave节点加入到gluster集群中。
gluster peer probe tmaster
gluster peer probe tslave1
gluster peer probe tslave2
查看集群状态:
gluster peer status
创建数据存储目录(在三个节点上都运行):
mkdir -p /opt/gluster/data
查看volume 状态:
gluster volume info
由于还没有创建volume所以显示的是暂无信息
创建GlusterFS磁盘gtest:
gluster volume create models replica 3 tmaster:/opt/gluster/data tslave1:/opt/gluster/data tslave2:/opt/gluster/data force
replica 3表明存储3个备份,后面指定服务器的存储目录
再次查看volume信息
gluster volume info
启动 models
gluster volume start models
gluster 性能调优:
开启 指定 volume 的配额: (models 为 volume 名称)
gluster volume quota models enable
限制 models 中 / (既总目录) 最大使用 80GB 空间
gluster volume quota models limit-usage / 80GB
设置 cache 大小(此处要根据实际情况,如果设置太大可能导致后面客户端挂载失败)
gluster volume set models performance.cache-size 512MB
开启 异步,后台操作
gluster volume set models performance.flush-behind on
设置 io 线程 32
gluster volume set models performance.io-thread-count 32
设置 回写 (写数据时间,先写入缓存内,再写入硬盘)
gluster volume set models performance.write-behind on
调优之后的volume信息
gluster volume info
部署GlusterFS客户端并mount GlusterFS文件系统(在客户端节点phn上执行)
yum install -y glusterfs glusterfs-fuse
建立挂载点:
mkdir -p /opt/gfsmount
mount命令:mount -t glusterfs tmaster:models /opt/gfsmount/
df 命令检查:df -h
往该目录写入文件,随后查看gluster服务器的存储情况
time dd if=/dev/zero of=/opt/gfsmount/hello bs=100M count=1
查看phn机器上/opt/gfsmount 目录
查看tmaster机器上/opt/gluster/data目录
查看tslave1机器上/opt/gluster/data目录
查看tslave2机器上/opt/gluster/data目录
可以看到gluster服务器的每个节点上都有备份,符合之前设置的3个备份的原则
4、其他命令
查看GlusterFS中所有的volume:
gluster volume list
删除GlusterFS磁盘:
gluster volume stop models
//停止名字为 models 的磁盘
gluster volume delete models
//删除名字为 models 的磁盘