glusterfs 是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数 PB 级存储容量和数千客户端,通过网络互联构成一个并行的网络文件系统。具有高可用性、高性能、高可用的特点。(任何一个结点挂掉不影响使用)
glusterfs 支持七种模式的卷,这里使用“分布式复制卷”,最稳定的就是这个卷。分布式复制卷要求至少需要四个存储单元。
一个目录需要挂载一块空的硬盘( /dev/ 下的文件),一个硬盘就是一个存储单元。
首先要在所有结点上创建目录 mkdir -p /gfs/test1 /gfs/test2 ,用于挂载 gfs 的硬盘
原理:在写文件时,由于 replica=2,文件系统会根据哈希算法写两份到整个系统的四个存储单元(brick)中。
当卷的空间不够用时,可以先加 node,然后将 node 加入到 资源池中(已经将 node2 加入到资源池了),在 node 上格式化硬盘,并加入到卷中。如果是复制卷,那么每次应该至少加入两个 brick。
解压之后产生一堆的文件,理论上应该分布在六个 brick 中,实际仍然是 node2 上没有文件,可能是偶然。
1、无元数据设计
GlusterFS设计没有集中或分布式元数据,取而代之的是d性哈希算法。集群中的任何服务器、客户端都可利用哈希算法、路径及文件名进行计算,就可以对数据进行定位,并执行读写访问 *** 作。
结论:
2、服务器间的部署
GlusterFS集群服务器之间是对等的,每个节点服务器都掌握了集群的配置信息。
所有信息都可以在本地查询。每个节点的信息更新都会向其他节点通告,保证节点信息的一致性。
但是集群规模较大后,信息同步效率会下降,非一致性概率会提高。
3、客户端访问
首先程序通过访问挂载点的形式读写数据,对于用户和程序而言,集群文件系统是透明的,用户和程序根本感觉不到文件系统是本地还是远端服务器上。
读写 *** 作会被交给VFS(Virtual File System,虚拟文件系统) 来处理,VFS会将请求交给FUSE内核模块,而FUSE又会通过设备/dev/fuse将数据交给GlusterFS Client。最后经过GlusterFS Client计算,并最终通过网络将请求或数据发送到GlusterFS Servers上。
存储类型介绍详见: Setting Up Volumes - Gluster Docs
在老版本中,共有7种卷类型
在新版本中,共有5种卷类型
共有的卷类型是:
不同的卷类型是:
不过我们不用考虑那么多,因为常规都用 分布式复制卷 ,优点如下
当然Dispersed(纠错卷 类似于RAID5)从3.6开始一直更新到7.x版本,花费了gluster吞对大量心血,想了解的可以看这篇文章
参考 官方:快速部署指南
4台服务器都做以下相同 *** 作
总共创建3个目录,brick1用来挂载sdb,另外两个目录作为本地文件夹
格式化磁盘
挂载磁盘
在任意一台主机上,执行以下命令都可以建立信任池,建立并不需要账号密码,因为默认是将部署环境考虑为安全的可信环境
注意: 一旦信任池建立后,只有在信任池中的节点才能添加新服务器信任池中
只实验GlusterFs的分布式复制卷,其他卷类型有需要的话参考百度自行测试
结论: 可以看出前三个为一个复制集,后三个为一个复制集,所以创建卷的时候,卷的顺序很关键
# 卷扩容(由于副本数设置为2,至少要添加2(4、6、8..)台机器)gluster peer probe10.0.21.243# 加节点
gluster peer probe10.0.21.244# 加节点
gluster volume add-brick gv010.0.21.243:/data/glusterfs10.0.21.244:/data/glusterfs # 合并卷
# 收缩卷(收缩卷前gluster需要先移动数据到其他位置)
gluster volume remove-brick gv010.0.21.243:/data/glusterfs10.0.21.244:/data/glusterfs start # 开始迁移
gluster volume remove-brick gv010.0.21.243:/data/glusterfs10.0.21.244:/data/glusterfs status # 查看迁移状态
gluster volume remove-brick gv010.0.21.243:/data/glusterfs10.0.21.244:/data/glusterfs commit # 迁移完成后提交
# 迁移卷
gluster peer probe10.0.21.245# 将10.0.21.246数据迁移到10.0.21.245先将10.0.21.245加入集群
gluster volume replace-brick gv010.0.21.246:/data/glusterfs10.0.21.245:/data/glusterfs start # 开始迁移
gluster volume replace-brick gv010.0.21.246:/data/glusterfs10.0.21.245:/data/glusterfs status # 查看迁移状态
gluster volume replace-brick gv0 10.0.21.246:/data/glusterfs 10.0.21.245:/data/glusterfs commit # 数据迁移完毕后提交
gluster volume replace-brick gv0 10.0.21.246:/data/glusterfs 10.0.21.245:/data/glusterfs commit -force # 如果机器10.0.21.246出现故障已经不能运行,执行强制提交
gluster volume heal gv0 full # 同步整个卷
本文介绍的是 GlusterFS 最 基础的用法 ,感觉它的最大优点就是文件使用哈希散列,而不需要单独去维护MetaData以避开单点问题,而目录则是所有节点都一致的。节点信息会在变化过程中自动同步!不过增删节点,需要做 Rebalance 数据才会重新分布。
C.在clinet上安装客户端软件:
#yum -y install glusterfs glusterfs-fuse
GlusterFS客户端连接
在客户端client.zhaogang.int上使用mount命令,把服务器上新建的GlusterFS逻辑卷gv0挂载到本地目录/mnt/glusterfs上:
[root@localhost ~]# mkdir /mnt/glusterfs
[root@localhost ~]# mount -t glusterfs 10.0.21.241:/gv0 /mnt/glusterfs
[root@localhost ~]#
确认挂载结果:
[root@localhost ~]# mount -t fuse.glusterfs
10.0.21.241:/gv0 on /mnt/glusterfs type fuse.glusterfs (rw,default_permissions,allow_other,max_read=131072)
如果希望系统重启后可以自动挂载,在/etc/fstab文件中加入此行:
10.0.0.241:/data/gfsdata /mnt/glusterfs glusterfs defaults 0 0
客户端测试连接
client端成功挂载逻辑卷之后,在挂载目录/mnt/glusterfs建立文件以测试GlusterFS是否正常工作。
[root@localhost glusterfs]# cd /mnt/glusterfs/
[root@localhost glusterfs]# touch file1 file2 file3
[root@localhost glusterfs]# ls -l
total 0
-rw-r--r--. 1 root root 0 Aug 29 21:07 file1
-rw-r--r--. 1 root root 0 Aug 29 21:07 file2
-rw-r--r--. 1 root root 0 Aug 29 21:07 file3
因为创建卷gv0的时候使用的是镜像存储(Replicated),所以在gv0上写入的文件应该同时出现在两个服务器的/data/gfsdata目录上。
在server1和server2查看/data/gfsdata/目录,可以看到两个服务器均出现这三个文件:
[root@server1 ~]# cd /data/gfsdata/
[root@server1 gfsdata]# ls -l
total 0
-rw-r--r--. 2 root root 0 Aug 29 21:07 file1
-rw-r--r--. 2 root root 0 Aug 29 21:07 file2
-rw-r--r--. 2 root root 0 Aug 29 21:07 file3
[root@server2 ~]# cd /data/gfsdata/
[root@server2 gfsdata]# ls -l
total 0
-rw-r--r--. 2 root root 0 Aug 29 21:07 file1
-rw-r--r--. 2 root root 0 Aug 29 21:07 file2
-rw-r--r--. 2 root root 0 Aug 29 21:07 file3
自此GlusterFS快速安装过程结束。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)