GlusterFS概述
GlusterFS简介
- GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据
GlusterFS特点
拓展性和高性能
- GlusterFS利用双重特性来提供几TB至数PB的高扩展存储解决方案。Scale-Out架构允许通过简单地增加资源来提高存储容量和性能,磁盘、计算和I/O资源都可以独立增加,支持10GbE和InfiniBand等高速网络互联。Gluster弹性哈希(ElasticHash)解除了GlusterFS对元数据服务器的需求,消除了单点故障和性能瓶颈,真正实现了并行化数据访问。
高可用性
- lusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。自我修复功能能够把数据恢复到正确的状态,而且修复是以增量的方式在后台执行,几乎不会产生性能负载。GlusterFS没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT3、ZFS)来存储文件,因此数据可以使用各种标准工具进行复制和访问。
全局统一命名空间
弹性卷管理
- 数据储存在逻辑卷中,逻辑卷可以从虚拟化的物理存储池进行独立逻辑划分而得到。存储服务器可以在线进行增加和移除,不会导致应用中断。
- 逻辑卷可以在所有配置服务器中增长和缩减,可以在不同服务器迁移进行容量均衡,或者增加和移除系统,这些操作都可在线进行。文件系统配置更改也可以实时在线进行并应用,从而可以适应工作负载条件变化或在线性能调优
GlusterFS术语
- Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
- Volume:一组bricks的逻辑集合
- FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接
- 模块化、堆栈式的架构,通过对模块的组合,实现复杂的功能
- 一个GFS群集由一台master服务器(有备份),多台chunk服务器组成,客户端,架构上比较简单
- chunkserver:数据存储节点,文件被分割为固定大小的chunk,每个chunk被唯一标识,默认情况下chunk存储3个副本
- chunk:每个·文件至少存储为一个chunk,每个chunk以普通的Linux文件存储,chunk尺寸大小选择是一个关键的设计参数,默认为64MB,每个chunk有全局64位唯一标识符
- GFS文件系统是可以被多个用户同时访问,一般情况下,Application和chunkserver是可以在同一台机子上,主要的数据流量是通过Application和hunkserver之间,由于数据访问的是本地减少了Application和master之间的交互访问,减少了master的负荷量,提高了master的利用性能
- master中保存着三类元数据(metadata):文件名和块的名字空间、从文件到块的映射、副本位置。所有metadata都放在内存中。操作日志的引入可以更加简单、可靠地更新master的信息
- master作为GFS的控制和神经系统,副本为master的备份,chunk主要用和用户交换数据,网络中的主机瘫痪,不会对整个系统造成大的影响,替换上去的主机会自动重建数据。即使master的瘫痪,也会有shadow作为替补,并且shadow在一定的时候也会充当master来提供控制和数据交换。
GFS的卷类型
- 分布式卷:没有对文件进行分块处理,通过扩展文件属性保存HASH值,支持的底层文件系统有ext3,ext4、ZFS、XFS
- 条带卷:根据偏移量将文件分为N块(N个条带节点),轮询的存储在每个Brick server节点;存储大文件时,性能尤为突出;不具备冗余性,类似raid 0
- 复制卷:同一文件保存一份或多份副本;复制模式因为要保存副本,因此磁盘利用率较低,多个节点上的存储空间不一致,那么将按照木桶效应取最低值,作为该卷的总容量
- 分布式条带卷:兼顾分布式和条带卷的功能;主要用于大文件访问处理,至少需要4台服务器
- 分布式复制卷:兼顾分布式卷和复制卷的功能;用于需要冗余的情况下
GFS集群部署
实验部署
- 四台虚拟机部署集群,一台虚拟机作为客户端client测试,每台节点服务器四块磁盘
四个节点环境
角色 | IP地址 | 系统 | 磁盘空间 |
node1 | 192.168.179.155 | Centos7.6 | 20G*4 |
node2 | 192.168.179.128 | Centos7.6 | 20G*4 |
node3 | 192.168.179.148 | Centos7.6 | 20G*4 |
node4 | 192.168.179.162 | Centos7.6 | 20G*4</ |