1.背景
GlusterFS使用DHT模块来聚合多台机器的物理存储空间,形成一个单一的全局命名空间,并使用卷(Volume)这一逻辑概念来表示这样的空间。每个卷可以包含一个或多个子卷(Subvolume),子卷也可称为DHT子卷,同样是一个逻辑概念,一个子卷可以是单个brick、一个副本卷(Replica)或一个EC(Erasure Coding)卷,而副本卷和EC卷自身又都是由一组brick构成。而brick则是GlusterFS中的最基本存储单元,表示为一个机器上的本地文件系统导出目录。
2.副本模式
副本模式作为一种高可用数据冗余方式被应用在各个场景,但是2副本天生的问题数据不一致性也是我们需要考虑的因素,而仲裁就可以很好的解决这个问题,并且仲裁功能只保留元数据占用的容量基本可以忽略不记,由此衍生出一种副本仲裁数据复用的方案场景。
2.1双副本模式
下面均以3节点,每节点2块50G盘为例。首先2副本我们需要考虑要跨节点,模型如下:
2.2仲裁模式
此时加入仲裁的场景有多个模式,优先要保证仲裁分布在3个节点。同时关于容量的说明为:每个子卷有3个数据盘,如果有2个做了复用则glus容量识别为25GB,如果1个盘做了复用则glus容量识别为50GB
2.2.1 无序复用
第一种我们直接以三个节点的brick1做为ar复用盘,如下如。(蓝色框表示复用磁盘)这时有个问题可以看到第一个子卷(1brick1+2brick1)同时复用了ar,而(2brick2+3brick2)没有复用ar,按照gluster识别容量方式vol3子卷(2brick2+3brick2)将呈现50GB的容量,而其他两个子卷只呈现25GB的容量,这就导致其哈希值的范围vol3是其余两个的2倍。这时候的数据写入vol3就会成为瓶颈。
2.2.2 有序复用
第二种仲裁复用模式,如下图。此种方式可以看到每个子卷均有磁盘参与仲裁复用,最终3子卷容量均呈现为25GB,前端数据写入的时候数据能较均匀的同时分布到3个子卷,每个盘都能承载写压力。最终性能比较好。
3.实战测试
服务器 |
3节点,每节点2盘,ar与data复用 |
磁盘复用 |
当2+1中指定的有2个是复用的,则容量显示其一半;当只有1个事复用,则容量为整容量 |
卷 |
3*( |