一、GlusterFS 概述;
概述:GlusterFS(Google File System)是一个开源的分布式文件系统,Gluster 借助 TCP/IP 网 络将存储资源分散存储在网络的不同节点,在通过汇聚为客户端提供统一的资源访问,在存 储方面具有很强大的横向扩展能力,通过扩展不同的节点可以支持 PB 级别的存储容量; Bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB
特点:
扩展性与高性能:通过 Scale-out 架构可以增加存储节点的方式来提高容量和性能(磁盘、 计算、I/O 资源都可以独立增加),Gluster 弹性哈希(Elastic Hash)解决了 Gluster 服务对元 数据服务器的依赖,Gluster 采用弹性哈希算法来确定数据在 chunk 节点中的分布情况,无 须元数据服务器,实现了存储的横向扩展,改善了元数据服务器节点的压力以及单点故障;
高可用性:GlusterFS 通过配置不同类型的卷,可以对数据进行自动复制(类似于 RAID1), 即使某节点故障,也不影响数据的访问;
通用性:GlusterFS 没有设置独立的私有数据文件系统,而是采用以往的 ext4、ext3 等,数 据可以通过传统的磁盘访问方式被客户端所访问;
弹性卷管理:GlusterFS 通过将数据存储在逻辑卷上,逻辑卷从逻辑存储池进行独立逻辑划 分,逻辑存储池可以在线进行增加和删除,不会导致业务中断,逻辑卷的数量可以根据实际 需求进行自行增加和缩减;
二、GlusterFS 存储架构;
专业术语:
Brick(存储块):存储池中节点对外提供存储服务的目录; Volume(逻辑卷):一个逻辑卷时一组 Brick 的集合,卷是数据存储的逻辑设备,类似 LVM 中的逻辑卷,大部分 GlusterFS 管理操作都是在逻辑卷上进行的; FUSE(用户空间文件系统):是一个内核模块,用户自行创建挂载的的文件系统; VFS(接口):内核空间对用户空间提供的访问磁盘的接口; Glusterd(后台管理进程):在存储集群中的每个节点上都要运行;
三、GlusterFS 工作原理; 数据访问程:
1. 首先是在客户端,用户通过 glusterfs 的 mount point 来读写数据, 对于用户来说, 集群 系统的存在对用户是完全透明的, 用户感觉不到是操作本地系统还是远端的集群系统。
2. 用户的这个操作被递交给 本地 linux 系统的 VFS 来处理。
3. VFS 将数据递交给 FUSE 内核文件系统:在启动 glusterfs 客户端以前, 需要想系统注册 一个实际的文件系统 FUSE,如上图所示,该文件系统与 ext3 在同一个层次上面,ext3 是对 实际的磁盘进行处理,而 fuse 文件系统则是将数据通过/dev/fuse 这个设备文件递交给了 glusterfs client 端。所以我们可以将 fuse 文件系统理解为一个代理。
4. 数据被 fuse 递交给 Glusterfs client 后,client 对数据进行一些指定的处理(所谓的指定, 是按照 client 配置文件据来进行的一系列处理, 我们在启动 glusterfs client 时 需 要 指 定 这 个 文 件 , 其 默 认 位 置 :/etc/glusterfs/client.vol)。
5. 在 glusterfs client 的处理末端,通过网络将数据递交给 Glusterfs Server,并且将数据写入 到服务器所控制的存储设备上。
四、GlusterFS 卷的类型; 分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷、分布式条带复 制卷;
1. 分布式卷
分布式卷是 GlusterFS 的默认卷,在创建卷时,默认选项是创建分布式卷。在该模式下,并 没有对文件进行分块处理,文件直接存储在某个 Server 节点上。由于使用本地文件系统, 所以存取效率并没有提高,反而会因为网络通信的原因而有所降低,另外支持超大型文件也 会有一定的难度,因为分布式卷不会对文件进行分块处理,一个文件要么在 Server1 上,要 么在 Serve2 上,不能分块同时存放在 Sever1 和 Server2 上;
特点:
文件分布在不同的服务器,不具备冗余性; 更容易且廉价地扩展卷的大小; 单点故障会造成数据丢失; 依赖底层的数据保护;
创建方法:
[root@gfs ~]# gluster volume create dis-volume server1:/dir1 server2:/dir2
Creation of dis -volume has been successful Please start the volume to access data
2.条带卷
Stripe 模式相当于 RAIDO,在该模式下,根据偏移量将文件分成 N 块,轮询地存储在每个 Brick Server 节点。节点把每个数据块都作为普通文件存入本地文件系统中,通过扩展属性记录总 块数(Stripe-count) 和每块的序号(Stripe-index),在配置时指定的条带数必须等于卷中 Brick 所包含的存储服务器数,在存储大文件时,性能尤为突出,但是不具备冗余性;
特点:
数据被分割成更小块分布到块服务器群中的不同; 分布减少了负载且更小的文件提高了存取速度; 没有数据冗余;
创建方法:
[root@gfs ~]# gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
create of Stripe -volume has been successful please start the volume to access data
3.复制卷
也称为 AFR(AutGilePepliatio)相当于 RAD1,即同一文件保存一份或多份副本。每个节点上 保存相同的内容和目录结构。复制模式因为要保存副本,所以磁盘利用率较低,复制卷时, 复制数必须等于