GlusterFS介绍
GlusterFS是一个开源的分布式文件系统,同时也是Scale-Out存储解决方案Gluster的核心,在存储方面具有横向扩展能力,通过扩展不同的节点可以支持数PB级别的存储容量。
GlusterFS借助TCP/IP或lnfiniBand RDMA网络将分散的存储资源汇聚在一起,统一提供存储服务,并使用单一全局命名空间来管理数据。
GlusterFS基于可堆叠的用户空间以及无元的设计,可为各种不同的数据负载提供优异的性能。
GlusterFS服务群集的组成:
主要由存储服务器(Brick Server)、客户端(NFS/Samba存储网关)。GlusterFS架构中最大的特点是没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息,目录结构等。这样的设计在浏览目录时效率非常高,但是也存在风险和缺陷,如单点故障,一旦元数据服务器出现故障,即使节点具备再高的沉余性,整个存储系统也将崩溃,而GlusterFS分布式文件系统是基于无元服务器的设计,数据横向扩展能力强,具备较高的可靠性以及存储效率。
GlusterFS的设计结构:
GlusterFS的特点:
扩展性和高性能:GlusterFS利用双重特点来提高容量存储解决方案。
Scale-Out架构通过增加存储节点的方式来提供高存储容量和性能(磁盘、计算和I/O资源都可以独立增加)支持10GbE和InfinitiBand等高速网络互连。
Gluster弹性哈希(Elastic Hash)解决了GlusterFS对元数据服务器的依赖,GlusterFS采用弹性哈希算法在存储池中定位数据,放弃了传统的通过数据服务器定位数据。
高可用性:GlusterFS通过配置某些类型的存储卷,可以对文件进行自动复制,即使某个节点出现故障,也不影响数据的访问。当数据出现不一致时,自动修复功能能够把数据恢复到正确的状态。
全局统一命名空间:全局统一命名空间将所有的存储资源聚合成一个单一的虚拟存储池,对用户和应用屏蔽了物理存储信息。
弹性卷管理:GlusterFS通过将数据存储在逻辑卷中,逻辑卷从逻辑存储池进行独立逻辑划分,逻辑存储池可以在线进行增加和移除,不会导致业务中断。
基于标准协议:Gluster存储服务支持NFS、CIFS、HTTP、FTP、SMB及Gluster原生协议,完全与POSIX标准兼容。现有应用程序不需要做任何修改就可以对Gluster中的数据进行访问,也可以使用专用API进行访问(效率更高),这在公有云环境中部署Gluster时非常有用。
GlusterFS术语:
Brick(存储块):指可信主机池由主机提供的用于物理存储的专用分区,是Gluster中的基本卷。
Volume(逻辑卷):一个逻辑卷是一组Brick的集合。卷是数据存储的逻辑设备,类似于LVM中的逻辑卷。
FUSE(Filesystem inUserspace):是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码。
VFS:内核空间对用户空间提供的访问磁盘的接口。
Glusterd:在存储群集中的每个节点上都需要运行。
GlusterFS的工作原理:
- 客户端或应用程序通过GlusterFS的挂点访问数据。
- Linux系统内核通过VFS API收到请求处理。
- VFS将数据传递交给FUSE内核文件系统,并向系统注册一个实际的文件系统FUSE,而FUSE文件系统则是将数据通过/dev/Fuse设备文件传递交给了GlusterFS client端。可以将FUSE文件系统理解为一个代理。
- GlusterFS Clinet收到数据后,Client根据配置文件对数据处理进行处理。
- 经过GlusterFS Client处理后,通过网络将数据传递至远端的ClusterFS Server并且将数据写入服务器存储设备。
HASH分布图:
通过HASH定位文件:
GlusterFS的卷类型:
分布式卷(Distribute Volume):文件通过HASH算法分布到所有Brick Server上,这种卷是Glusterf的基础;以文件单位根据HASH算法散列到所有Brick Server上,这种卷是Glusterf的基础;以文件单位根据HASH算法散列到不同的Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件及的RAID 0,不具有容错能力。
条带卷(Stripe volume):类似RAID0,文件被分为数据块并以轮询的方式分布到多个Brick Server上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高。
复制卷(Replica volume):将文件同步到多个Brick上,使其具备多个文件副本,属于文件级RAID1,具有容错能力,因为数据分散在多个Brick中,所以读性能得到很大提升,但写性能下降。
分布式条带卷(Distribute Stripe volume):Brick Server数量是条带数(数据块分布的Brick数量)的倍数。兼具分布式卷和条带卷的特点。
分布式复制卷(Distribute Replica volume):Brick Server数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。
条带复制卷(Stripe Replica volume):类似RAID 10,同时具有条带卷和复制卷的特点。
分布式条带服务制卷(Distribute Stripe Replicavolume):三种基本卷的复合卷,通常用于类MapReduce应用。
案列实施:
准备环境:
操作系统为CentOS7。
搭建一个GlusterFS群集环境,需要至少四台服务器。并且每台服务器至少四块磁盘。
所有的服务器需要关闭Selinux和防火墙。
配置hosts文件:
在所有节点上修改hosts文件,以便于四个节点的解析。(这里以node1为列)
创建分区并挂载到相应的文件路径下:
这里创建的文件名称是为了便于记忆新添加的磁盘空间大小。
创建分区并格式化创建好的分区:
设置为永久性挂载:
其他的节点以上配置均为相同。
在各节点上安装软件:
- 添加节点
在node1上面执行操作,添加node1~node4。
添加完毕之后检查一下:
每个节点输出的结果为:“State:Peer in Cluster(Connected)”则表示正常
创建卷:
创建分布式卷:
将node1和node2节点上的e6文件目录挂载的分区创建为分布式分区。
查看创建的结果:
启动分布式分区:
创建条带卷:
将node1和node2上d5分区创建成条带卷。
使用命令查看一下:
指定类型为stripe,数值为2,而且后面跟了2个Brick Server。所以创建的是条带卷
创建复制卷:
启动复制卷:
创建分布式复制卷:
查看创建的分布式复制卷:
启动分布式复制卷:
创建分布式条带卷:
查看分布式条带卷:
启动分布式条带卷:
部署Gluster客户端:
准备环境:需要关闭Selinux和防火墙
安装软件包:
创建挂载目录:
为了便于记忆,我在这里创建的目录也和卷组同名。
(DS代表分布式条带卷;DR代表分布式复制卷)
修改hosts文件:
挂载Gluster文件系统:
………省略部分内容
GlusterFS一些维护命令:
查看卷的名称:
查看所有的卷的信息:
查看卷的状态:
停止一个卷
|